import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis } from "./RolloutAnalysis.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutExperimentStep } from "./RolloutExperimentStep.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPause } from "./RolloutPause.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep } from "./PluginStep.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetCanaryScale } from "./SetCanaryScale.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetHeaderRoute } from "./SetHeaderRoute.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetMirrorRoute } from "./SetMirrorRoute.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * CanaryStep defines a step of a canary deployment.
 */
export interface ICanaryStep {
    /**
     * Analysis defines the AnalysisRun that will run for a step
     */
    "analysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    /**
     * Experiment defines the experiment object that should be created
     */
    "experiment"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutExperimentStep;
    /**
     * Pause freezes the rollout by setting spec.Paused to true.
     * A Rollout will resume when spec.Paused is reset to false.
     */
    "pause"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPause;
    /**
     * Plugin defines a plugin to execute for a step
     */
    "plugin"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep;
    /**
     * SetCanaryScale defines how to scale the newRS without changing traffic weight
     */
    "setCanaryScale"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetCanaryScale;
    /**
     * SetHeaderRoute defines the route with specified header name to send 100% of traffic to the canary service
     */
    "setHeaderRoute"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetHeaderRoute;
    /**
     * SetMirrorRoutes Mirrors traffic that matches rules to a particular destination
     */
    "setMirrorRoute"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetMirrorRoute;
    /**
     * SetWeight sets what percentage of the newRS should receive
     */
    "setWeight"?: number;
}
/**
 * CanaryStep defines a step of a canary deployment.
 */
export declare class CanaryStep extends Model<ICanaryStep> implements ICanaryStep {
    "analysis"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutAnalysis;
    "experiment"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutExperimentStep;
    "pause"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutPause;
    "plugin"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1PluginStep;
    "setCanaryScale"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetCanaryScale;
    "setHeaderRoute"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetHeaderRoute;
    "setMirrorRoute"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SetMirrorRoute;
    "setWeight"?: number;
    constructor(data?: ModelData<ICanaryStep>);
}
export type { ICanaryStep as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStep, CanaryStep as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1CanaryStep };
