import { IIoK8sApimachineryPkgApisMetaV1Time } from "@kubernetes-models/apimachinery/apis/meta/v1/Time";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBStatus } from "./ALBStatus.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1BlueGreenStatus } from "./BlueGreenStatus.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatus } from "./CanaryStatus.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutCondition } from "./RolloutCondition.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PauseCondition } from "./PauseCondition.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPhase } from "./RolloutPhase.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * RolloutStatus is the status for a Rollout resource
 */
export interface IRolloutStatus {
    /**
     * HPAReplicas the number of non-terminated replicas that are receiving active traffic
     */
    "HPAReplicas"?: number;
    /**
     * Abort cancel the current rollout progression
     */
    "abort"?: boolean;
    /**
     * AbortedAt indicates the controller reconciled an aborted rollout. The controller uses this to understand if
     * the controller needs to do some specific work when a Rollout is aborted. For example, the reconcileAbort is used
     * to indicate if the Rollout should enter an aborted state when the latest AnalysisRun is a failure, or the controller
     * has already put the Rollout into an aborted and should create a new AnalysisRun.
     */
    "abortedAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    /**
     * / ALB keeps information regarding the ALB and TargetGroups
     */
    "alb"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBStatus;
    /**
     * / ALBs keeps information regarding multiple ALBs and TargetGroups in a multi ingress scenario
     */
    "albs"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBStatus>;
    /**
     * Total number of available pods (ready for at least minReadySeconds) targeted by this rollout.
     */
    "availableReplicas"?: number;
    /**
     * BlueGreen describes the state of the bluegreen rollout
     */
    "blueGreen"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1BlueGreenStatus;
    /**
     * Canary describes the state of the canary rollout
     */
    "canary"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatus;
    /**
     * Count of hash collisions for the Rollout. The Rollout controller uses this
     * field as a collision avoidance mechanism when it needs to create the name for the
     * newest ReplicaSet.
     */
    "collisionCount"?: number;
    /**
     * Conditions a list of conditions a rollout can have.
     */
    "conditions"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutCondition>;
    /**
     * ControllerPause indicates the controller has paused the rollout. It is set to true when
     * the controller adds a pause condition. This field helps to discern the scenario where a
     * rollout was resumed after being paused by the controller (e.g. via the plugin). In that
     * situation, the pauseConditions would have been cleared , but controllerPause would still be
     * set to true.
     */
    "controllerPause"?: boolean;
    /**
     * CurrentPodHash the hash of the current pod template
     */
    "currentPodHash"?: string;
    /**
     * CurrentStepHash the hash of the current list of steps for the current strategy. This is used to detect when the
     * list of current steps change
     */
    "currentStepHash"?: string;
    /**
     * CurrentStepIndex defines the current step of the rollout is on. If the current step index is null, the
     * controller will execute the rollout.
     */
    "currentStepIndex"?: number;
    /**
     * Message provides details on why the rollout is in its current phase
     */
    "message"?: string;
    /**
     * The generation observed by the rollout controller from metadata.generation
     */
    "observedGeneration"?: string;
    /**
     * PauseConditions is a list of reasons why rollout became automatically paused (e.g.
     * CanaryPauseStep, BlueGreenPause, InconclusiveAnalysis). The items in this list are populated
     * by the controller but are cleared by the user (e.g. plugin, argo-cd resume action) when they
     * wish to unpause. If pause conditions is empty, but controllerPause is true, it indicates
     * the user manually unpaused the Rollout
     */
    "pauseConditions"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PauseCondition>;
    /**
     * Phase is the rollout phase. Clients should only rely on the value if status.observedGeneration equals metadata.generation
     */
    "phase"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPhase;
    /**
     * PromoteFull indicates if the rollout should perform a full promotion, skipping analysis and pauses.
     */
    "promoteFull"?: boolean;
    /**
     * Total number of ready pods targeted by this rollout.
     */
    "readyReplicas"?: number;
    /**
     * Total number of non-terminated pods targeted by this rollout (their labels match the selector).
     */
    "replicas"?: number;
    /**
     * RestartedAt indicates last time a Rollout was restarted
     */
    "restartedAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    /**
     * Selector that identifies the pods that are receiving active traffic
     */
    "selector"?: string;
    /**
     * StableRS indicates the replicaset that has successfully rolled out
     */
    "stableRS"?: string;
    /**
     * Total number of non-terminated pods targeted by this rollout that have the desired template spec.
     */
    "updatedReplicas"?: number;
    /**
     * The generation of referenced workload observed by the rollout controller
     */
    "workloadObservedGeneration"?: string;
}
/**
 * RolloutStatus is the status for a Rollout resource
 */
export declare class RolloutStatus extends Model<IRolloutStatus> implements IRolloutStatus {
    "HPAReplicas"?: number;
    "abort"?: boolean;
    "abortedAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    "alb"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBStatus;
    "albs"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBStatus>;
    "availableReplicas"?: number;
    "blueGreen"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1BlueGreenStatus;
    "canary"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStatus;
    "collisionCount"?: number;
    "conditions"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutCondition>;
    "controllerPause"?: boolean;
    "currentPodHash"?: string;
    "currentStepHash"?: string;
    "currentStepIndex"?: number;
    "message"?: string;
    "observedGeneration"?: string;
    "pauseConditions"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PauseCondition>;
    "phase"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPhase;
    "promoteFull"?: boolean;
    "readyReplicas"?: number;
    "replicas"?: number;
    "restartedAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    "selector"?: string;
    "stableRS"?: string;
    "updatedReplicas"?: number;
    "workloadObservedGeneration"?: string;
    constructor(data?: ModelData<IRolloutStatus>);
}
export type { IRolloutStatus as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutStatus, RolloutStatus as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutStatus };
