package common

import (
	"context"

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

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

type Upgrader interface {
	UpgradeControlPlane(context.Context, *cloudv1.UpgradeOperation, *cloudv1.Network) (ctrl.Result, error)
	UpgradeAdminNodes(context.Context, *cloudv1.UpgradeOperation, *cloudv1.Network) (ctrl.Result, error)
	UpgradeCDCNodes(context.Context, *cloudv1.UpgradeOperation, *cloudv1.Network, *cloudv1.Cluster) (ctrl.Result, error)
	UpgradeDMNodes(context.Context, *cloudv1.UpgradeOperation, *cloudv1.Network, *cloudv1.Cluster) (ctrl.Result, error)
	UpgradeTiDBNodes(context.Context, *cloudv1.UpgradeOperation, *cloudv1.Network, *cloudv1.Cluster) (ctrl.Result, error)
}
