package dataplane

import (
	"context"

	dmpbv1 "github.com/tidbcloud/cluster-service-ng/api/tidbcloud/dataplane-manager/v1"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
)

type CloudProviderExtractor interface {
	BuildKubeconfig(ctx context.Context, accountID string, appBox *v1alpha1.APPBox) ([]byte, error)
	ParseNodeRole(appBox *v1alpha1.APPBox) string
	ListNodePools(ctx context.Context, appBox *v1alpha1.APPBox, resourceNamePrefix string) ([]*dmpbv1.NodePool, error)
	CheckNodePoolScaleActivities(ctx context.Context, nodePool *v1alpha1.NodePool, dataPlane *v1alpha1.DataPlane, appBox *v1alpha1.APPBox) (*dmpbv1.CheckNodePoolScaleActivitiesResponse, error)
	GetDataPlaneApiGateway(ctx context.Context, appBox *v1alpha1.APPBox) (string, error)
	GetDataPlaneAuthToken(accountID string, appBox *v1alpha1.APPBox) (string, error)
	GetDataPlaneDomain() string
	ParseNodeClientID(appBox *v1alpha1.APPBox) string
}
