import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ExperimentAnalysisTemplateRef } from "./ExperimentAnalysisTemplateRef.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunMetadata } from "./AnalysisRunMetadata.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DryRun } from "./DryRun.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString } from "./DurationString.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MeasurementRetention } from "./MeasurementRetention.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TemplateSpec } from "./TemplateSpec.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * ExperimentSpec is the spec for a Experiment resource
 */
export interface IExperimentSpec {
    /**
     * Analyses references AnalysisTemplates to run during the experiment
     */
    "analyses"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ExperimentAnalysisTemplateRef>;
    /**
     * AnalysisRunMetadata labels and annotations that will be added to the AnalysisRuns
     */
    "analysisRunMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunMetadata;
    /**
     * DryRun object contains the settings for running the analysis in Dry-Run mode
     */
    "dryRun"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DryRun>;
    /**
     * Duration the amount of time for the experiment to run as a duration string (e.g. 30s, 5m, 1h).
     * If omitted, the experiment will run indefinitely, stopped either via termination, or a failed analysis run.
     */
    "duration"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    /**
     * MeasurementRetention object contains the settings for retaining the number of measurements during the analysis
     */
    "measurementRetention"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MeasurementRetention>;
    /**
     * ProgressDeadlineSeconds The maximum time in seconds for a experiment to
     * make progress before it is considered to be failed. Argo Rollouts will
     * continue to process failed experiments and a condition with a
     * ProgressDeadlineExceeded reason will be surfaced in the experiment status.
     * Defaults to 600s.
     */
    "progressDeadlineSeconds"?: number;
    /**
     * ScaleDownDelaySeconds adds a delay before scaling down the Experiment.
     * If omitted, the Experiment waits 30 seconds before scaling down.
     * 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;
    /**
     * Templates are a list of PodSpecs that define the ReplicaSets that should be run during an experiment.
     */
    "templates": Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TemplateSpec>;
    /**
     * Terminate is used to prematurely stop the experiment
     */
    "terminate"?: boolean;
}
/**
 * ExperimentSpec is the spec for a Experiment resource
 */
export declare class ExperimentSpec extends Model<IExperimentSpec> implements IExperimentSpec {
    "analyses"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ExperimentAnalysisTemplateRef>;
    "analysisRunMetadata"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AnalysisRunMetadata;
    "dryRun"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DryRun>;
    "duration"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    "measurementRetention"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MeasurementRetention>;
    "progressDeadlineSeconds"?: number;
    "scaleDownDelaySeconds"?: number;
    "templates": Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TemplateSpec>;
    "terminate"?: boolean;
    constructor(data?: ModelData<IExperimentSpec>);
}
export type { IExperimentSpec as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ExperimentSpec, ExperimentSpec as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ExperimentSpec };
