import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunStrategy } from "./AnalysisRunStrategy.js";
import { IIoK8sApimachineryPkgApisMetaV1Time } from "@kubernetes-models/apimachinery/apis/meta/v1/Time";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RollbackWindowSpec } from "./RollbackWindowSpec.js";
import { IIoK8sApimachineryPkgApisMetaV1LabelSelector } from "@kubernetes-models/apimachinery/apis/meta/v1/LabelSelector";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutStrategy } from "./RolloutStrategy.js";
import { IIoK8sApiCoreV1PodTemplateSpec } from "kubernetes-models/v1/PodTemplateSpec";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ObjectRef } from "./ObjectRef.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * RolloutSpec is the spec for a Rollout resource
 */
export interface IRolloutSpec {
    /**
     * Analysis configuration for the analysis runs to retain
     */
    "analysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunStrategy;
    /**
     * Minimum number of seconds for which a newly created pod should be ready
     * without any of its container crashing, for it to be considered available.
     * Defaults to 0 (pod will be considered available as soon as it is ready)
     */
    "minReadySeconds"?: number;
    /**
     * Paused pauses the rollout at its current step.
     */
    "paused"?: boolean;
    /**
     * ProgressDeadlineAbort is whether to abort the update when ProgressDeadlineSeconds
     * is exceeded.
     */
    "progressDeadlineAbort"?: boolean;
    /**
     * ProgressDeadlineSeconds The maximum time in seconds for a rollout to
     * make progress before it is considered to be failed. Argo Rollouts will
     * continue to process failed rollouts and a condition with a
     * ProgressDeadlineExceeded reason will be surfaced in the rollout status.
     * Note that progress will not be estimated during the time a rollout is paused.
     * Defaults to 600s.
     */
    "progressDeadlineSeconds"?: number;
    /**
     * Number of desired pods. This is a pointer to distinguish between explicit
     * zero and not specified. Defaults to 1.
     */
    "replicas"?: number;
    /**
     * RestartAt indicates when all the pods of a Rollout should be restarted
     */
    "restartAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    /**
     * The number of old ReplicaSets to retain. If unspecified, will retain 10 old ReplicaSets
     */
    "revisionHistoryLimit"?: number;
    /**
     * The window in which a rollback will be fast tracked (fully promoted)
     */
    "rollbackWindow"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RollbackWindowSpec;
    /**
     * Label selector for pods. Existing ReplicaSets whose pods are
     * selected by this will be the ones affected by this rollout.
     * It must match the pod template's labels.
     */
    "selector"?: IIoK8sApimachineryPkgApisMetaV1LabelSelector;
    /**
     * The deployment strategy to use to replace existing pods with new ones.
     */
    "strategy"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutStrategy;
    /**
     * Template describes the pods that will be created.
     */
    "template"?: IIoK8sApiCoreV1PodTemplateSpec;
    /**
     * WorkloadRef holds a references to a workload that provides Pod template
     */
    "workloadRef"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ObjectRef;
}
/**
 * RolloutSpec is the spec for a Rollout resource
 */
export declare class RolloutSpec extends Model<IRolloutSpec> implements IRolloutSpec {
    "analysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunStrategy;
    "minReadySeconds"?: number;
    "paused"?: boolean;
    "progressDeadlineAbort"?: boolean;
    "progressDeadlineSeconds"?: number;
    "replicas"?: number;
    "restartAt"?: IIoK8sApimachineryPkgApisMetaV1Time;
    "revisionHistoryLimit"?: number;
    "rollbackWindow"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RollbackWindowSpec;
    "selector"?: IIoK8sApimachineryPkgApisMetaV1LabelSelector;
    "strategy"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutStrategy;
    "template"?: IIoK8sApiCoreV1PodTemplateSpec;
    "workloadRef"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ObjectRef;
    constructor(data?: ModelData<IRolloutSpec>);
}
export type { IRolloutSpec as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutSpec, RolloutSpec as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutSpec };
