import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * LbTrafficExtension is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.
 *
 * To get more information about LbTrafficExtension, see:
 *
 * * [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.lbTrafficExtensions)
 * * How-to Guides
 *     * [Configure a traffic extension](https://cloud.google.com/service-extensions/docs/configure-callout#configure_a_traffic_extension)
 *
 * ## Example Usage
 *
 * ## Import
 *
 * LbTrafficExtension can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}`
 *
 * * `{{project}}/{{location}}/{{name}}`
 *
 * * `{{location}}/{{name}}`
 *
 * When using the `pulumi import` command, LbTrafficExtension can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{project}}/{{location}}/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{location}}/{{name}}
 * ```
 */
export declare class LbTrafficExtension extends pulumi.CustomResource {
    /**
     * Get an existing LbTrafficExtension 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?: LbTrafficExtensionState, opts?: pulumi.CustomResourceOptions): LbTrafficExtension;
    /**
     * Returns true if the given object is an instance of LbTrafficExtension.  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 LbTrafficExtension;
    /**
     * A human-readable description of the resource.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    readonly effectiveLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * A set of ordered extension chains that contain the match conditions and extensions to execute.
     * Match conditions for each extension chain are evaluated in sequence for a given request.
     * The first extension chain that has a condition that matches the request is executed.
     * Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
     * Further information can be found at https://cloud.google.com/service-extensions/docs/reference/rest/v1/ExtensionChain
     * Structure is documented below.
     */
    readonly extensionChains: pulumi.Output<outputs.networkservices.LbTrafficExtensionExtensionChain[]>;
    /**
     * A list of references to the forwarding rules to which this service extension is attached to.
     * At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
     */
    readonly forwardingRules: pulumi.Output<string[]>;
    /**
     * Set of labels associated with the LbTrafficExtension resource.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * All backend services and forwarding rules referenced by this extension must share the same load balancing scheme.
     * For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service) and
     * [Supported application load balancers](https://cloud.google.com/service-extensions/docs/callouts-overview#supported-lbs).
     * Possible values are: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`.
     */
    readonly loadBalancingScheme: pulumi.Output<string>;
    /**
     * The location of the traffic extension
     */
    readonly location: pulumi.Output<string>;
    /**
     * Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    readonly pulumiLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Create a LbTrafficExtension 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.
     */
    constructor(name: string, args: LbTrafficExtensionArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering LbTrafficExtension resources.
 */
export interface LbTrafficExtensionState {
    /**
     * A human-readable description of the resource.
     */
    description?: pulumi.Input<string>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    effectiveLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * A set of ordered extension chains that contain the match conditions and extensions to execute.
     * Match conditions for each extension chain are evaluated in sequence for a given request.
     * The first extension chain that has a condition that matches the request is executed.
     * Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
     * Further information can be found at https://cloud.google.com/service-extensions/docs/reference/rest/v1/ExtensionChain
     * Structure is documented below.
     */
    extensionChains?: pulumi.Input<pulumi.Input<inputs.networkservices.LbTrafficExtensionExtensionChain>[]>;
    /**
     * A list of references to the forwarding rules to which this service extension is attached to.
     * At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
     */
    forwardingRules?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Set of labels associated with the LbTrafficExtension resource.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * All backend services and forwarding rules referenced by this extension must share the same load balancing scheme.
     * For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service) and
     * [Supported application load balancers](https://cloud.google.com/service-extensions/docs/callouts-overview#supported-lbs).
     * Possible values are: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`.
     */
    loadBalancingScheme?: pulumi.Input<string>;
    /**
     * The location of the traffic extension
     */
    location?: pulumi.Input<string>;
    /**
     * Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    pulumiLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
/**
 * The set of arguments for constructing a LbTrafficExtension resource.
 */
export interface LbTrafficExtensionArgs {
    /**
     * A human-readable description of the resource.
     */
    description?: pulumi.Input<string>;
    /**
     * A set of ordered extension chains that contain the match conditions and extensions to execute.
     * Match conditions for each extension chain are evaluated in sequence for a given request.
     * The first extension chain that has a condition that matches the request is executed.
     * Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
     * Further information can be found at https://cloud.google.com/service-extensions/docs/reference/rest/v1/ExtensionChain
     * Structure is documented below.
     */
    extensionChains: pulumi.Input<pulumi.Input<inputs.networkservices.LbTrafficExtensionExtensionChain>[]>;
    /**
     * A list of references to the forwarding rules to which this service extension is attached to.
     * At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
     */
    forwardingRules: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Set of labels associated with the LbTrafficExtension resource.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * All backend services and forwarding rules referenced by this extension must share the same load balancing scheme.
     * For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service) and
     * [Supported application load balancers](https://cloud.google.com/service-extensions/docs/callouts-overview#supported-lbs).
     * Possible values are: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`.
     */
    loadBalancingScheme: pulumi.Input<string>;
    /**
     * The location of the traffic extension
     */
    location: pulumi.Input<string>;
    /**
     * Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
}
