package networkmetering

import (
	"context"

	"github.com/tidbcloud/metering/pkg/common/models"
)

type NetworkBillingLoader interface {
	LoadAzure(ctx context.Context, timestamp int64) ([]*models.AzureBilling, error)
	LoadAWS(ctx context.Context, timestamp int64) ([]*models.AWSBilling, error)
	LoadGCP(ctx context.Context, timestamp int64) ([]*models.GCPBilling, error)
}
type NetworkBillingStorer interface {
	Load(ctx context.Context, timestamp int64) ([]*models.BillingMetering, []*models.BillingReport, error)
	Store(ctx context.Context, timestamp int64, res []*models.BillingMetering, repoters []*models.BillingReport) error
	Upload(ctx context.Context, timestamp int64) (string, error)
	CloseDB(ctx context.Context, timestamp int64)
}

type CsvLoaderFilter interface {
	Filter(record []string) bool
	Init(headers []string) error
}

type Metering interface {
	Metering(ctx context.Context, timestamp int64) (string, bool, error)
}
