import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * Creates and manages Scaleway Edge Services Route Stages.
 *
 * ## Example Usage
 *
 * ### Default to WAF with backend rules
 *
 * Routes all unmatched traffic through a WAF stage, while requests matching specific patterns are sent directly to a backend stage.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.edgeservices.RouteStage("main", {
 *     pipelineId: mainScalewayEdgeServicesPipeline.id,
 *     wafStageId: waf.id,
 *     rules: [{
 *         backendStageId: backend.id,
 *         ruleHttpMatch: {
 *             methodFilters: [
 *                 "get",
 *                 "post",
 *             ],
 *             pathFilter: {
 *                 pathFilterType: "regex",
 *                 value: ".*",
 *             },
 *         },
 *     }],
 * });
 * ```
 *
 * ### Host-based routing
 *
 * Routes requests to different backends based on the hostname, allowing a single pipeline to serve multiple domains.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.edgeservices.Pipeline("main", {
 *     name: "my-pipeline",
 *     description: "Multi-host pipeline with host-based routing",
 * });
 * const api = new scaleway.object.Bucket("api", {name: "my-api-bucket"});
 * const static = new scaleway.object.Bucket("static", {name: "my-static-site"});
 * const apiBackendStage = new scaleway.edgeservices.BackendStage("api", {
 *     pipelineId: main.id,
 *     s3BackendConfig: {
 *         bucketName: api.name,
 *         bucketRegion: "fr-par",
 *     },
 * });
 * const staticBackendStage = new scaleway.edgeservices.BackendStage("static", {
 *     pipelineId: main.id,
 *     s3BackendConfig: {
 *         bucketName: static.name,
 *         bucketRegion: "fr-par",
 *     },
 * });
 * const mainRouteStage = new scaleway.edgeservices.RouteStage("main", {
 *     pipelineId: main.id,
 *     backendStageId: staticBackendStage.id,
 *     rules: [{
 *         backendStageId: apiBackendStage.id,
 *         ruleHttpMatch: {
 *             hostFilter: {
 *                 hostFilterType: "regex",
 *                 value: "api\\.example\\.com",
 *             },
 *         },
 *     }],
 * });
 * ```
 *
 * ### Default to backend with selective WAF protection
 *
 * Serves static content directly from a backend by default, while routing API traffic through a WAF stage for protection against common web attacks.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.edgeservices.Pipeline("main", {
 *     name: "my-pipeline",
 *     description: "Static site with WAF-protected API",
 * });
 * const mainBucket = new scaleway.object.Bucket("main", {name: "my-static-site"});
 * const static = new scaleway.edgeservices.BackendStage("static", {
 *     pipelineId: main.id,
 *     s3BackendConfig: {
 *         bucketName: mainBucket.name,
 *         bucketRegion: "fr-par",
 *     },
 * });
 * const api = new scaleway.edgeservices.WafStage("api", {
 *     pipelineId: main.id,
 *     backendStageId: static.id,
 *     mode: "enable",
 *     paranoiaLevel: 2,
 * });
 * const mainRouteStage = new scaleway.edgeservices.RouteStage("main", {
 *     pipelineId: main.id,
 *     backendStageId: static.id,
 *     rules: [{
 *         wafStageId: api.id,
 *         ruleHttpMatch: {
 *             methodFilters: [
 *                 "get",
 *                 "post",
 *                 "put",
 *                 "patch",
 *                 "delete",
 *             ],
 *             pathFilter: {
 *                 pathFilterType: "regex",
 *                 value: "/api/.*",
 *             },
 *         },
 *     }],
 * });
 * ```
 *
 * ## Import
 *
 * Route stages can be imported using the `{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:index/edgeServicesRouteStage:EdgeServicesRouteStage basic 11111111-1111-1111-1111-111111111111
 * ```
 *
 * @deprecated scaleway.index/edgeservicesroutestage.EdgeServicesRouteStage has been deprecated in favor of scaleway.edgeservices/routestage.RouteStage
 */
export declare class EdgeServicesRouteStage extends pulumi.CustomResource {
    /**
     * Get an existing EdgeServicesRouteStage resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: EdgeServicesRouteStageState, opts?: pulumi.CustomResourceOptions): EdgeServicesRouteStage;
    /**
     * Returns true if the given object is an instance of EdgeServicesRouteStage.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is EdgeServicesRouteStage;
    /**
     * The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `wafStageId`.
     */
    readonly backendStageId: pulumi.Output<string | undefined>;
    /**
     * The date and time of the creation of the route stage.
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * The ID of the pipeline.
     */
    readonly pipelineId: pulumi.Output<string>;
    /**
     * `projectId`) The ID of the project the route stage is associated with.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by `wafStageId` or `backendStageId`.
     */
    readonly rules: pulumi.Output<outputs.EdgeServicesRouteStageRule[] | undefined>;
    /**
     * The date and time of the last update of the route stage.
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `backendStageId`.
     */
    readonly wafStageId: pulumi.Output<string | undefined>;
    /**
     * Create a EdgeServicesRouteStage resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    /** @deprecated scaleway.index/edgeservicesroutestage.EdgeServicesRouteStage has been deprecated in favor of scaleway.edgeservices/routestage.RouteStage */
    constructor(name: string, args: EdgeServicesRouteStageArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering EdgeServicesRouteStage resources.
 */
export interface EdgeServicesRouteStageState {
    /**
     * The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `wafStageId`.
     */
    backendStageId?: pulumi.Input<string | undefined>;
    /**
     * The date and time of the creation of the route stage.
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * The ID of the pipeline.
     */
    pipelineId?: pulumi.Input<string | undefined>;
    /**
     * `projectId`) The ID of the project the route stage is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by `wafStageId` or `backendStageId`.
     */
    rules?: pulumi.Input<pulumi.Input<inputs.EdgeServicesRouteStageRule>[] | undefined>;
    /**
     * The date and time of the last update of the route stage.
     */
    updatedAt?: pulumi.Input<string | undefined>;
    /**
     * The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `backendStageId`.
     */
    wafStageId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a EdgeServicesRouteStage resource.
 */
export interface EdgeServicesRouteStageArgs {
    /**
     * The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `wafStageId`.
     */
    backendStageId?: pulumi.Input<string | undefined>;
    /**
     * The ID of the pipeline.
     */
    pipelineId: pulumi.Input<string>;
    /**
     * `projectId`) The ID of the project the route stage is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by `wafStageId` or `backendStageId`.
     */
    rules?: pulumi.Input<pulumi.Input<inputs.EdgeServicesRouteStageRule>[] | undefined>;
    /**
     * The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with `backendStageId`.
     */
    wafStageId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=edgeServicesRouteStage.d.ts.map