package store

import (
	"context"
	"time"

	v1 "github.com/pingcap-inc/pchub/model/v1"
	bfao "github.com/pingcap-inc/pchub/model/v1/fao/billing"
)

type CloudProductCostStore interface {
	SyncLatest(ctx context.Context, rids []uint64, after time.Time, news []*v1.CloudProductCost) error
	ListPeriodByResourecIDs(ctx context.Context, after time.Time, rids []uint64) (*[]v1.DailyTotalCost, error)
	GetByCostOrder(ctx context.Context, fao *bfao.BillingFAO, dptIds *[]string, lp *v1.ListParam) (*[]v1.RCost, int64, error)
	GetCostByRIDs(ctx context.Context, rids []uint64, dateRange []string) (*[]v1.RCost, error)
	GetLatest14dByRIDs(ctx context.Context, rids []uint64) ([]*v1.DailyTotalCost, error)
	ListPeriodByResourecID(ctx context.Context, aggr string, lit int, rid uint64) (*[]v1.CostWithDate, error)
	GetMonthlyCostByResourecID(ctx context.Context, m string, rid uint64) (float64, error)
	ListByDateRange(_ context.Context, rid uint64, dateRange []string) (*[]v1.DailyProductCost, error)
	ListDayCostByDateRange(_ context.Context, rid uint64, dateRange []string) (*[]v1.DailyTotalCost, error)
	TotalCost(_ context.Context, rid uint64, dateRange []string) (float64, error)
}
