package common

import (
	"context"

	ctrl "sigs.k8s.io/controller-runtime"

	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
)

type Upgrader interface {
	UpgradeControlPlane(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
	UpgradeAdminNodes(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
	UpgradeDataNodes(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
	UpgradeEmptyNodePools(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
	UpgradeAddons(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
	UpgradeO11yNodes(context.Context, *v1alpha1.UpgradeOperation, *v1alpha1.APPBox) (ctrl.Result, error)
}
