//go:generate ${GOBIN}/dummygen -d=api_dummy.go -package=dashboard ${GO_MODULE}/pkg/service/dashboard DashboardServiceAPI
package dashboard

import (
	"context"

	"github.com/tidbcloud/devops/entity"
)

type DashboardServiceAPI interface {
	GetSLAInfo(ctx context.Context, startTs, endTs int64) (*entity.SLAInfo, error)
	GetMonthlySummaryOfDedicatedSLA(ctx context.Context,
		month string, filter entity.DedicatedSLAFilter) (*entity.DedicatedClusterSLABasicList, error)
	GetClusterDetailOfDedicatedSLA(ctx context.Context,
		month string, clusterID string, includeFake bool,
	) (*entity.DedicatedClusterSLADetail, error)
	GetMonthlySummaryOfNextGenSLA(ctx context.Context,
		month string, filter entity.NextGenSLAFilter) (*entity.NextGenClusterSLABasicList, error)
	GetClusterDetailOfNextGenSLA(ctx context.Context,
		month string, clusterID string, includeFake bool,
	) (*entity.NextGenClusterSLADetail, error)
	GetSLOInfo(ctx context.Context) (*entity.SLOInfo, error)

	GetIncidentInfo(ctx context.Context, startTs, endTs int64) (*entity.IncidentInfo, error)
	GetCloudOncallInfo(ctx context.Context, startTs, endTs int64) (*entity.CloudOncallInfo, error)
	GetAlertInfo(ctx context.Context, startTs, endTs int64) (*entity.CriticalAlertInfo, error)
	GetReleaseInfo(ctx context.Context, startTs, endTs int64) (*entity.ReleaseInfo, error)
	GetTop10QPSTenants(ctx context.Context) (*entity.TopTenants, error)
	GetTop10TiKVStorageTenants(ctx context.Context) (*entity.TopTenants, error)
	GetTop10TiFlashStorageTenants(ctx context.Context) (*entity.TopTenants, error)
}

type DashboardService interface {
	DashboardServiceAPI
}
