package clustercli

import (
	"context"

	clusterctlpb "github.com/tidbcloud/infra-provider/api/tidbcloud/cluster-server/v1"
)

type ClusterClient interface {
	CreateCluster(_ context.Context, in *clusterctlpb.CreateClusterRequest) (*clusterctlpb.Cluster, error)
	DeleteCluster(_ context.Context, in *clusterctlpb.DeleteClusterRequest) (*clusterctlpb.Cluster, error)
	GetCluster(_ context.Context, in *clusterctlpb.GetClusterRequest) (*clusterctlpb.Cluster, error)
	GetTidbGroup(_ context.Context, in *clusterctlpb.GetTidbGroupRequest) (*clusterctlpb.TidbGroup, error)
	ListTidbGroups(ctx context.Context, in *clusterctlpb.ListTidbGroupsRequest) (*clusterctlpb.ListTidbGroupsResponse, error)
	GetClusterRole(_ context.Context, in *clusterctlpb.GetClusterRoleRequest) (*clusterctlpb.ClusterRole, error)
	GetComponentNodeInfos(_ context.Context, in *clusterctlpb.GetComponentNodeInfosRequest) (*clusterctlpb.GetComponentNodeInfosResponse, error)
	GetVersionAndConfigurations(_ context.Context, in *clusterctlpb.GetVersionAndConfigurationsRequest) (*clusterctlpb.GetVersionAndConfigurationsResponse, error)
	GetInfraInformation(_ context.Context, in *clusterctlpb.GetInfraInformationRequest) (*clusterctlpb.InfraInformation, error)
	UpgradeNodes(_ context.Context, in *clusterctlpb.UpgradeNodesRequest) (*clusterctlpb.UpgradeNodesResponse, error)
	UpdateClusterAWSCloud(_ context.Context, in *clusterctlpb.UpdateClusterAWSCloudRequest) (*clusterctlpb.Cluster, error)
}
