package facade

import (
	"context"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

type InfraFacade interface {
	UpdateBranch(ctx context.Context, b *cloudv1.Branch) error
	UpdateBranchStatus(ctx context.Context, b *cloudv1.Branch) error
	DeleteBranch(ctx context.Context, projectID uint64, branchID string) error
	CreateBranch(ctx context.Context, b *cloudv1.Branch) error
	GetBranch(ctx context.Context, projectId uint64, branchId string) (*cloudv1.Branch, error)
	GetBranchDirectly(ctx context.Context, projectId uint64, branchId string) (*cloudv1.Branch, error)
	ListBranches(ctx context.Context, proxyEndpoint string) ([]cloudv1.Branch, error)
	DeleteImport(ctx context.Context, proxyEndpoint string, projectID uint64, importID string) error
	CreateImportIgnoreExists(ctx context.Context, proxyEndpoint string, cr *cloudv1.Import) error
	GetImport(ctx context.Context, proxyEndpoint string, projectID uint64, importID string) (*cloudv1.Import, error)
	GetExportDirectly(
		ctx context.Context,
		proxyEndpoint string,
		projectId uint64,
		exportId string,
	) (*cloudv1.Export, error)
	GetExport(ctx context.Context, proxyEndpoint string, projectId uint64, exportId string) (*cloudv1.Export, error)
	CreateExport(ctx context.Context, proxyEndpoint string, e *cloudv1.Export) error
	UpdateExport(ctx context.Context, proxyEndpoint string, e *cloudv1.Export) error
	DeleteExport(ctx context.Context, proxyEndpoint string, projectID uint64, exportID string) error
	Namespace(projectID uint64) string
}
