import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PodTemplateMetadata } from "./PodTemplateMetadata.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AntiAffinity } from "./AntiAffinity.js";
import { IIoK8sApimachineryPkgUtilIntstrIntOrString } from "@kubernetes-models/apimachinery/util/intstr/IntOrString";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis } from "./RolloutAnalysis.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * BlueGreenStrategy defines parameters for Blue Green deployment
 */
export interface IBlueGreenStrategy {
    /**
     * AbortScaleDownDelaySeconds adds a delay in second before scaling down the preview replicaset
     * if update is aborted. 0 means not to scale down.
     * Default is 30 second
     */
    "abortScaleDownDelaySeconds"?: number;
    /**
     * ActiveMetadata specify labels and annotations which will be attached to the active pods for
     * the duration which they act as a active pod, and will be removed after
     */
    "activeMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PodTemplateMetadata;
    /**
     * Name of the service that the rollout modifies as the active service.
     */
    "activeService": string;
    /**
     * AntiAffinity enables anti-affinity rules for Blue Green deployment
     */
    "antiAffinity"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AntiAffinity;
    /**
     * AutoPromotionEnabled indicates if the rollout should automatically promote the new ReplicaSet
     * to the active service or enter a paused state. If not specified, the default value is true.
     */
    "autoPromotionEnabled"?: boolean;
    /**
     * AutoPromotionSeconds is a duration in seconds in which to delay auto-promotion (default: 0).
     * The countdown begins after the preview ReplicaSet have reached full availability.
     * This option is ignored if autoPromotionEnabled is set to false.
     */
    "autoPromotionSeconds"?: number;
    /**
     * MaxUnavailable The maximum number of pods that can be unavailable during a restart operation.
     * Defaults to 25% of total replicas.
     */
    "maxUnavailable"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * PostPromotionAnalysis configuration to run analysis after a selector switch
     */
    "postPromotionAnalysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    /**
     * PrePromotionAnalysis configuration to run analysis before a selector switch
     */
    "prePromotionAnalysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    /**
     * PreviewMetadata specify labels and annotations which will be attached to the preview pods for
     * the duration which they act as a preview pod, and will be removed after
     */
    "previewMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PodTemplateMetadata;
    /**
     * PreviewReplicaCount is the number of replicas to run for the preview stack before the
     * switchover. Once the rollout is resumed the desired replicaset will be full scaled up before the switch occurs
     */
    "previewReplicaCount"?: number;
    /**
     * Name of the service that the rollout modifies as the preview service.
     */
    "previewService"?: string;
    /**
     * ScaleDownDelayRevisionLimit limits the number of old RS that can run at one time before getting scaled down
     */
    "scaleDownDelayRevisionLimit"?: number;
    /**
     * ScaleDownDelaySeconds adds a delay before scaling down the previous replicaset.
     * If omitted, the Rollout waits 30 seconds before scaling down the previous ReplicaSet.
     * A minimum of 30 seconds is recommended to ensure IP table propagation across the nodes in
     * a cluster. See https://github.com/argoproj/argo-rollouts/issues/19#issuecomment-476329960 for
     * more information
     */
    "scaleDownDelaySeconds"?: number;
}
/**
 * BlueGreenStrategy defines parameters for Blue Green deployment
 */
export declare class BlueGreenStrategy extends Model<IBlueGreenStrategy> implements IBlueGreenStrategy {
    "abortScaleDownDelaySeconds"?: number;
    "activeMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PodTemplateMetadata;
    "activeService": string;
    "antiAffinity"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AntiAffinity;
    "autoPromotionEnabled"?: boolean;
    "autoPromotionSeconds"?: number;
    "maxUnavailable"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "postPromotionAnalysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    "prePromotionAnalysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    "previewMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PodTemplateMetadata;
    "previewReplicaCount"?: number;
    "previewService"?: string;
    "scaleDownDelayRevisionLimit"?: number;
    "scaleDownDelaySeconds"?: number;
    constructor(data?: ModelData<IBlueGreenStrategy>);
}
export type { IBlueGreenStrategy as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1BlueGreenStrategy, BlueGreenStrategy as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1BlueGreenStrategy };
