import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBTrafficRouting } from "./ALBTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AmbassadorTrafficRouting } from "./AmbassadorTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ApisixTrafficRouting } from "./ApisixTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AppMeshTrafficRouting } from "./AppMeshTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1IstioTrafficRouting } from "./IstioTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MangedRoutes } from "./MangedRoutes.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTrafficRouting } from "./NginxTrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SMITrafficRouting } from "./SMITrafficRouting.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TraefikTrafficRouting } from "./TraefikTrafficRouting.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * RolloutTrafficRouting hosts all the different configuration for supported service meshes to enable more fine-grained traffic routing
 */
export interface IRolloutTrafficRouting {
    /**
     * Nginx holds ALB Ingress specific configuration to route traffic
     */
    "alb"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBTrafficRouting;
    /**
     * Ambassador holds specific configuration to use Ambassador to route traffic
     */
    "ambassador"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AmbassadorTrafficRouting;
    /**
     * Apisix holds specific configuration to use Apisix to route traffic
     */
    "apisix"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ApisixTrafficRouting;
    /**
     * AppMesh holds specific configuration to use AppMesh to route traffic
     */
    "appMesh"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AppMeshTrafficRouting;
    /**
     * Istio holds Istio specific configuration to route traffic
     */
    "istio"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1IstioTrafficRouting;
    /**
     * ManagedRoutes A list of HTTP routes that Argo Rollouts manages, the order of this array also becomes the precedence in the upstream
     * traffic router.
     */
    "managedRoutes"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MangedRoutes>;
    /**
     * MaxTrafficWeight The total weight of traffic. If unspecified, it defaults to 100
     */
    "maxTrafficWeight"?: number;
    /**
     * Nginx holds Nginx Ingress specific configuration to route traffic
     */
    "nginx"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTrafficRouting;
    /**
     * Plugins holds specific configuration that traffic router plugins can use for routing traffic
     */
    "plugins"?: {};
    /**
     * SMI holds TrafficSplit specific configuration to route traffic
     */
    "smi"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SMITrafficRouting;
    /**
     * Traefik holds specific configuration to use Traefik to route traffic
     */
    "traefik"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TraefikTrafficRouting;
}
/**
 * RolloutTrafficRouting hosts all the different configuration for supported service meshes to enable more fine-grained traffic routing
 */
export declare class RolloutTrafficRouting extends Model<IRolloutTrafficRouting> implements IRolloutTrafficRouting {
    "alb"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ALBTrafficRouting;
    "ambassador"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AmbassadorTrafficRouting;
    "apisix"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1ApisixTrafficRouting;
    "appMesh"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1AppMeshTrafficRouting;
    "istio"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1IstioTrafficRouting;
    "managedRoutes"?: Array<IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MangedRoutes>;
    "maxTrafficWeight"?: number;
    "nginx"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1NginxTrafficRouting;
    "plugins"?: {};
    "smi"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1SMITrafficRouting;
    "traefik"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1TraefikTrafficRouting;
    constructor(data?: ModelData<IRolloutTrafficRouting>);
}
export type { IRolloutTrafficRouting as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutTrafficRouting, RolloutTrafficRouting as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1RolloutTrafficRouting };
