import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Represents an InterconnectAttachment (VLAN attachment) resource. For more
 * information, see Creating VLAN Attachments.
 *
 * To get more information about InterconnectAttachment, see:
 *
 * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments)
 * * How-to Guides
 *     * [Create a Interconnect attachment](https://cloud.google.com/network-connectivity/docs/interconnect/how-to/dedicated/creating-vlan-attachments)
 *
 * ## Example Usage
 *
 * ### Interconnect Attachment Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const foobarNetwork = new gcp.compute.Network("foobar", {
 *     name: "network-1",
 *     autoCreateSubnetworks: false,
 * });
 * const foobar = new gcp.compute.Router("foobar", {
 *     name: "router-1",
 *     network: foobarNetwork.name,
 *     bgp: {
 *         asn: 16550,
 *     },
 * });
 * const onPrem = new gcp.compute.InterconnectAttachment("on_prem", {
 *     name: "on-prem-attachment",
 *     edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1",
 *     type: "PARTNER",
 *     router: foobar.id,
 *     mtu: "1500",
 *     labels: {
 *         mykey: "myvalue",
 *     },
 * });
 * ```
 * ### Compute Interconnect Attachment Ipsec Encryption
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const network = new gcp.compute.Network("network", {
 *     name: "test-network",
 *     autoCreateSubnetworks: false,
 * });
 * const address = new gcp.compute.Address("address", {
 *     name: "test-address",
 *     addressType: "INTERNAL",
 *     purpose: "IPSEC_INTERCONNECT",
 *     address: "192.168.1.0",
 *     prefixLength: 29,
 *     network: network.selfLink,
 * });
 * const router = new gcp.compute.Router("router", {
 *     name: "test-router",
 *     network: network.name,
 *     encryptedInterconnectRouter: true,
 *     bgp: {
 *         asn: 16550,
 *     },
 * });
 * const ipsec_encrypted_interconnect_attachment = new gcp.compute.InterconnectAttachment("ipsec-encrypted-interconnect-attachment", {
 *     name: "test-interconnect-attachment",
 *     edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1",
 *     type: "PARTNER",
 *     router: router.id,
 *     encryption: "IPSEC",
 *     ipsecInternalAddresses: [address.selfLink],
 * });
 * ```
 * ### Compute Interconnect Attachment Custom Ranges
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const foobarNetwork = new gcp.compute.Network("foobar", {
 *     name: "test-network",
 *     autoCreateSubnetworks: false,
 * });
 * const foobar = new gcp.compute.Router("foobar", {
 *     name: "test-router",
 *     network: foobarNetwork.name,
 *     bgp: {
 *         asn: 16550,
 *     },
 * });
 * const custom_ranges_interconnect_attachment = new gcp.compute.InterconnectAttachment("custom-ranges-interconnect-attachment", {
 *     name: "test-custom-ranges-interconnect-attachment",
 *     edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1",
 *     type: "PARTNER",
 *     router: foobar.id,
 *     mtu: "1500",
 *     stackType: "IPV4_IPV6",
 *     labels: {
 *         mykey: "myvalue",
 *     },
 *     candidateCloudRouterIpAddress: "192.169.0.1/29",
 *     candidateCustomerRouterIpAddress: "192.169.0.2/29",
 *     candidateCloudRouterIpv6Address: "748d:2f23:6651:9455:828b:ca81:6fe0:fed1/125",
 *     candidateCustomerRouterIpv6Address: "748d:2f23:6651:9455:828b:ca81:6fe0:fed2/125",
 * });
 * ```
 *
 * ## Import
 *
 * InterconnectAttachment can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/regions/{{region}}/interconnectAttachments/{{name}}`
 * * `{{project}}/{{region}}/{{name}}`
 * * `{{region}}/{{name}}`
 * * `{{name}}`
 *
 * When using the `pulumi import` command, InterconnectAttachment can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default projects/{{project}}/regions/{{region}}/interconnectAttachments/{{name}}
 * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{project}}/{{region}}/{{name}}
 * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{region}}/{{name}}
 * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{name}}
 * ```
 */
export declare class InterconnectAttachment extends pulumi.CustomResource {
    /**
     * Get an existing InterconnectAttachment 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?: InterconnectAttachmentState, opts?: pulumi.CustomResourceOptions): InterconnectAttachment;
    /**
     * Returns true if the given object is an instance of InterconnectAttachment.  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 InterconnectAttachment;
    /**
     * Whether the VLAN attachment is enabled or disabled.  When using
     * PARTNER type this will Pre-Activate the interconnect attachment
     */
    readonly adminEnabled: pulumi.Output<boolean | undefined>;
    /**
     * URL of the AttachmentGroup that includes this Attachment.
     */
    readonly attachmentGroup: pulumi.Output<string>;
    /**
     * Provisioned bandwidth capacity for the interconnect attachment.
     * For attachments of type DEDICATED, the user can set the bandwidth.
     * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth.
     * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED,
     * Defaults to BPS_10G
     * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`, `BPS_400G`.
     */
    readonly bandwidth: pulumi.Output<string>;
    /**
     * Single IPv4 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 203.0.113.1/29
     */
    readonly candidateCloudRouterIpAddress: pulumi.Output<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 2001:db8::1/125
     */
    readonly candidateCloudRouterIpv6Address: pulumi.Output<string | undefined>;
    /**
     * Single IPv4 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 203.0.113.2/29
     */
    readonly candidateCustomerRouterIpAddress: pulumi.Output<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 2001:db8::2/125
     */
    readonly candidateCustomerRouterIpv6Address: pulumi.Output<string | undefined>;
    /**
     * Up to 16 candidate prefixes that can be used to restrict the allocation
     * of cloudRouterIpAddress and customerRouterIpAddress for this attachment.
     * All prefixes must be within link-local address space (169.254.0.0/16)
     * and must be /29 or shorter (/28, /27, etc). Google will attempt to select
     * an unused /29 from the supplied candidate prefix(es). The request will
     * fail if all possible /29s are in use on Google's edge. If not supplied,
     * Google will randomly select an unused /29 from all of link-local space.
     */
    readonly candidateSubnets: pulumi.Output<string[] | undefined>;
    /**
     * IPv4 address + prefix length to be configured on Cloud Router
     * Interface for this interconnect attachment.
     */
    readonly cloudRouterIpAddress: pulumi.Output<string>;
    /**
     * IPv6 address + prefix length to be configured on Cloud Router
     * Interface for this interconnect attachment.
     */
    readonly cloudRouterIpv6Address: pulumi.Output<string>;
    /**
     * Creation timestamp in RFC3339 text format.
     */
    readonly creationTimestamp: pulumi.Output<string>;
    /**
     * IPv4 address + prefix length to be configured on the customer
     * router subinterface for this interconnect attachment.
     */
    readonly customerRouterIpAddress: pulumi.Output<string>;
    /**
     * IPv6 address + prefix length to be configured on the customer
     * router subinterface for this interconnect attachment.
     */
    readonly customerRouterIpv6Address: pulumi.Output<string>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    readonly deletionPolicy: pulumi.Output<string>;
    /**
     * An optional description of this resource.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Desired availability domain for the attachment. Only available for type
     * PARTNER, at creation time. For improved reliability, customers should
     * configure a pair of attachments with one per availability domain. The
     * selected availability domain will be provided to the Partner via the
     * pairing key so that the provisioned circuit will lie in the specified
     * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
     */
    readonly edgeAvailabilityDomain: pulumi.Output<string>;
    /**
     * 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;
    }>;
    /**
     * Indicates the user-supplied encryption option of this interconnect
     * attachment. Can only be specified at attachment creation for PARTNER or
     * DEDICATED attachments.
     * * NONE - This is the default value, which means that the VLAN attachment
     * carries unencrypted traffic. VMs are able to send traffic to, or receive
     * traffic from, such a VLAN attachment.
     * * IPSEC - The VLAN attachment carries only encrypted traffic that is
     * encrypted by an IPsec device, such as an HA VPN gateway or third-party
     * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from,
     * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN
     * attachment must be created with this option.
     * Default value is `NONE`.
     * Possible values are: `NONE`, `IPSEC`.
     */
    readonly encryption: pulumi.Output<string | undefined>;
    /**
     * Google reference ID, to be used when raising support tickets with
     * Google or otherwise to debug backend connectivity issues.
     */
    readonly googleReferenceId: pulumi.Output<string>;
    /**
     * URL of the underlying Interconnect object that this attachment's
     * traffic will traverse through. Required if type is DEDICATED, must not
     * be set if type is PARTNER.
     */
    readonly interconnect: pulumi.Output<string | undefined>;
    /**
     * URL of addresses that have been reserved for the interconnect attachment,
     * Used only for interconnect attachment that has the encryption option as
     * IPSEC.
     * The addresses must be RFC 1918 IP address ranges. When creating HA VPN
     * gateway over the interconnect attachment, if the attachment is configured
     * to use an RFC 1918 IP address, then the VPN gateway's IP address will be
     * allocated from the IP address range specified here.
     * For example, if the HA VPN gateway's interface 0 is paired to this
     * interconnect attachment, then an RFC 1918 IP address for the VPN gateway
     * interface 0 will be allocated from the IP address specified for this
     * interconnect attachment.
     * If this field is not specified for interconnect attachment that has
     * encryption option as IPSEC, later on when creating HA VPN gateway on this
     * interconnect attachment, the HA VPN gateway's IP address will be
     * allocated from regional external IP address pool.
     */
    readonly ipsecInternalAddresses: pulumi.Output<string[] | undefined>;
    /**
     * L2 Interconnect Attachment related configuration.
     * Structure is documented below.
     */
    readonly l2Forwarding: pulumi.Output<outputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
    /**
     * A fingerprint for the labels being applied to this Interconnect, which is essentially a hash
     * of the labels set used for optimistic locking. The fingerprint is initially generated by
     * Compute Engine and changes after every request to modify or update labels.
     * You must always provide an up-to-date fingerprint hash in order to update or change labels,
     * otherwise the request will fail with error 412 conditionNotMet.
     */
    readonly labelFingerprint: pulumi.Output<string>;
    /**
     * Labels for this resource. These can only be added or modified by the setLabels
     * method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     *
     * **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>;
    /**
     * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment.
     * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440.
     */
    readonly mtu: pulumi.Output<string>;
    /**
     * Name of the resource. Provided by the client when the resource is created. The
     * name must be 1-63 characters long, and comply with RFC1035. Specifically, the
     * name must be 1-63 characters long and match the regular expression
     * `a-z?` which means the first character must be a
     * lowercase letter, and all following characters must be a dash, lowercase
     * letter, or digit, except the last character, which cannot be a dash.
     */
    readonly name: pulumi.Output<string>;
    /**
     * [Output only for type PARTNER. Not present for DEDICATED]. The opaque
     * identifier of an PARTNER attachment used to initiate provisioning with
     * a selected partner. Of the form "XXXXX/region/domain"
     */
    readonly pairingKey: pulumi.Output<string>;
    /**
     * Additional params passed with the request, but not persisted as part of resource payload
     * Structure is documented below.
     */
    readonly params: pulumi.Output<outputs.compute.InterconnectAttachmentParams | undefined>;
    /**
     * [Output only for type PARTNER. Not present for DEDICATED]. Optional
     * BGP ASN for the router that should be supplied by a layer 3 Partner if
     * they configured BGP on behalf of the customer.
     */
    readonly partnerAsn: pulumi.Output<string>;
    /**
     * Information specific to an InterconnectAttachment. This property
     * is populated if the interconnect that this is attached to is of type DEDICATED.
     * Structure is documented below.
     */
    readonly privateInterconnectInfos: pulumi.Output<outputs.compute.InterconnectAttachmentPrivateInterconnectInfo[]>;
    /**
     * 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;
    }>;
    /**
     * Region where the regional interconnect attachment resides.
     */
    readonly region: pulumi.Output<string>;
    /**
     * URL of the cloud router to be used for dynamic routing. This router must be in
     * the same region as this InterconnectAttachment. The InterconnectAttachment will
     * automatically connect the Interconnect to the network & region within which the
     * Cloud Router is configured.
     */
    readonly router: pulumi.Output<string | undefined>;
    /**
     * The URI of the created resource.
     */
    readonly selfLink: pulumi.Output<string>;
    /**
     * The stack type for this interconnect attachment to identify whether the IPv6
     * feature is enabled or not. If not specified, IPV4_ONLY will be used.
     * This field can be both set at interconnect attachments creation and update
     * interconnect attachment operations.
     * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`.
     */
    readonly stackType: pulumi.Output<string>;
    /**
     * [Output Only] The current state of this attachment's functionality.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29,
     * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a
     * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure
     * remote location fall into this category. In these cases, the default value is 30, and
     * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it
     * gives Google Cloud Support more debugging visibility.
     */
    readonly subnetLength: pulumi.Output<number | undefined>;
    /**
     * The type of InterconnectAttachment you wish to create. Defaults to
     * DEDICATED.
     * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
     */
    readonly type: pulumi.Output<string>;
    /**
     * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When
     * using PARTNER type this will be managed upstream.
     */
    readonly vlanTag8021q: pulumi.Output<number>;
    /**
     * Create a InterconnectAttachment 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?: InterconnectAttachmentArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering InterconnectAttachment resources.
 */
export interface InterconnectAttachmentState {
    /**
     * Whether the VLAN attachment is enabled or disabled.  When using
     * PARTNER type this will Pre-Activate the interconnect attachment
     */
    adminEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * URL of the AttachmentGroup that includes this Attachment.
     */
    attachmentGroup?: pulumi.Input<string | undefined>;
    /**
     * Provisioned bandwidth capacity for the interconnect attachment.
     * For attachments of type DEDICATED, the user can set the bandwidth.
     * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth.
     * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED,
     * Defaults to BPS_10G
     * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`, `BPS_400G`.
     */
    bandwidth?: pulumi.Input<string | undefined>;
    /**
     * Single IPv4 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 203.0.113.1/29
     */
    candidateCloudRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 2001:db8::1/125
     */
    candidateCloudRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Single IPv4 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 203.0.113.2/29
     */
    candidateCustomerRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 2001:db8::2/125
     */
    candidateCustomerRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Up to 16 candidate prefixes that can be used to restrict the allocation
     * of cloudRouterIpAddress and customerRouterIpAddress for this attachment.
     * All prefixes must be within link-local address space (169.254.0.0/16)
     * and must be /29 or shorter (/28, /27, etc). Google will attempt to select
     * an unused /29 from the supplied candidate prefix(es). The request will
     * fail if all possible /29s are in use on Google's edge. If not supplied,
     * Google will randomly select an unused /29 from all of link-local space.
     */
    candidateSubnets?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * IPv4 address + prefix length to be configured on Cloud Router
     * Interface for this interconnect attachment.
     */
    cloudRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * IPv6 address + prefix length to be configured on Cloud Router
     * Interface for this interconnect attachment.
     */
    cloudRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Creation timestamp in RFC3339 text format.
     */
    creationTimestamp?: pulumi.Input<string | undefined>;
    /**
     * IPv4 address + prefix length to be configured on the customer
     * router subinterface for this interconnect attachment.
     */
    customerRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * IPv6 address + prefix length to be configured on the customer
     * router subinterface for this interconnect attachment.
     */
    customerRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * An optional description of this resource.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * Desired availability domain for the attachment. Only available for type
     * PARTNER, at creation time. For improved reliability, customers should
     * configure a pair of attachments with one per availability domain. The
     * selected availability domain will be provided to the Partner via the
     * pairing key so that the provisioned circuit will lie in the specified
     * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
     */
    edgeAvailabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * 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>;
    } | undefined>;
    /**
     * Indicates the user-supplied encryption option of this interconnect
     * attachment. Can only be specified at attachment creation for PARTNER or
     * DEDICATED attachments.
     * * NONE - This is the default value, which means that the VLAN attachment
     * carries unencrypted traffic. VMs are able to send traffic to, or receive
     * traffic from, such a VLAN attachment.
     * * IPSEC - The VLAN attachment carries only encrypted traffic that is
     * encrypted by an IPsec device, such as an HA VPN gateway or third-party
     * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from,
     * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN
     * attachment must be created with this option.
     * Default value is `NONE`.
     * Possible values are: `NONE`, `IPSEC`.
     */
    encryption?: pulumi.Input<string | undefined>;
    /**
     * Google reference ID, to be used when raising support tickets with
     * Google or otherwise to debug backend connectivity issues.
     */
    googleReferenceId?: pulumi.Input<string | undefined>;
    /**
     * URL of the underlying Interconnect object that this attachment's
     * traffic will traverse through. Required if type is DEDICATED, must not
     * be set if type is PARTNER.
     */
    interconnect?: pulumi.Input<string | undefined>;
    /**
     * URL of addresses that have been reserved for the interconnect attachment,
     * Used only for interconnect attachment that has the encryption option as
     * IPSEC.
     * The addresses must be RFC 1918 IP address ranges. When creating HA VPN
     * gateway over the interconnect attachment, if the attachment is configured
     * to use an RFC 1918 IP address, then the VPN gateway's IP address will be
     * allocated from the IP address range specified here.
     * For example, if the HA VPN gateway's interface 0 is paired to this
     * interconnect attachment, then an RFC 1918 IP address for the VPN gateway
     * interface 0 will be allocated from the IP address specified for this
     * interconnect attachment.
     * If this field is not specified for interconnect attachment that has
     * encryption option as IPSEC, later on when creating HA VPN gateway on this
     * interconnect attachment, the HA VPN gateway's IP address will be
     * allocated from regional external IP address pool.
     */
    ipsecInternalAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * L2 Interconnect Attachment related configuration.
     * Structure is documented below.
     */
    l2Forwarding?: pulumi.Input<inputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
    /**
     * A fingerprint for the labels being applied to this Interconnect, which is essentially a hash
     * of the labels set used for optimistic locking. The fingerprint is initially generated by
     * Compute Engine and changes after every request to modify or update labels.
     * You must always provide an up-to-date fingerprint hash in order to update or change labels,
     * otherwise the request will fail with error 412 conditionNotMet.
     */
    labelFingerprint?: pulumi.Input<string | undefined>;
    /**
     * Labels for this resource. These can only be added or modified by the setLabels
     * method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     *
     * **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>;
    } | undefined>;
    /**
     * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment.
     * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440.
     */
    mtu?: pulumi.Input<string | undefined>;
    /**
     * Name of the resource. Provided by the client when the resource is created. The
     * name must be 1-63 characters long, and comply with RFC1035. Specifically, the
     * name must be 1-63 characters long and match the regular expression
     * `a-z?` which means the first character must be a
     * lowercase letter, and all following characters must be a dash, lowercase
     * letter, or digit, except the last character, which cannot be a dash.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * [Output only for type PARTNER. Not present for DEDICATED]. The opaque
     * identifier of an PARTNER attachment used to initiate provisioning with
     * a selected partner. Of the form "XXXXX/region/domain"
     */
    pairingKey?: pulumi.Input<string | undefined>;
    /**
     * Additional params passed with the request, but not persisted as part of resource payload
     * Structure is documented below.
     */
    params?: pulumi.Input<inputs.compute.InterconnectAttachmentParams | undefined>;
    /**
     * [Output only for type PARTNER. Not present for DEDICATED]. Optional
     * BGP ASN for the router that should be supplied by a layer 3 Partner if
     * they configured BGP on behalf of the customer.
     */
    partnerAsn?: pulumi.Input<string | undefined>;
    /**
     * Information specific to an InterconnectAttachment. This property
     * is populated if the interconnect that this is attached to is of type DEDICATED.
     * Structure is documented below.
     */
    privateInterconnectInfos?: pulumi.Input<pulumi.Input<inputs.compute.InterconnectAttachmentPrivateInterconnectInfo>[] | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The combination of labels configured directly on the resource
     *  and default labels configured on the provider.
     */
    pulumiLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Region where the regional interconnect attachment resides.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * URL of the cloud router to be used for dynamic routing. This router must be in
     * the same region as this InterconnectAttachment. The InterconnectAttachment will
     * automatically connect the Interconnect to the network & region within which the
     * Cloud Router is configured.
     */
    router?: pulumi.Input<string | undefined>;
    /**
     * The URI of the created resource.
     */
    selfLink?: pulumi.Input<string | undefined>;
    /**
     * The stack type for this interconnect attachment to identify whether the IPv6
     * feature is enabled or not. If not specified, IPV4_ONLY will be used.
     * This field can be both set at interconnect attachments creation and update
     * interconnect attachment operations.
     * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`.
     */
    stackType?: pulumi.Input<string | undefined>;
    /**
     * [Output Only] The current state of this attachment's functionality.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29,
     * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a
     * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure
     * remote location fall into this category. In these cases, the default value is 30, and
     * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it
     * gives Google Cloud Support more debugging visibility.
     */
    subnetLength?: pulumi.Input<number | undefined>;
    /**
     * The type of InterconnectAttachment you wish to create. Defaults to
     * DEDICATED.
     * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When
     * using PARTNER type this will be managed upstream.
     */
    vlanTag8021q?: pulumi.Input<number | undefined>;
}
/**
 * The set of arguments for constructing a InterconnectAttachment resource.
 */
export interface InterconnectAttachmentArgs {
    /**
     * Whether the VLAN attachment is enabled or disabled.  When using
     * PARTNER type this will Pre-Activate the interconnect attachment
     */
    adminEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Provisioned bandwidth capacity for the interconnect attachment.
     * For attachments of type DEDICATED, the user can set the bandwidth.
     * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth.
     * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED,
     * Defaults to BPS_10G
     * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`, `BPS_400G`.
     */
    bandwidth?: pulumi.Input<string | undefined>;
    /**
     * Single IPv4 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 203.0.113.1/29
     */
    candidateCloudRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the cloud router interface for this
     * interconnect attachment. Example: 2001:db8::1/125
     */
    candidateCloudRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Single IPv4 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 203.0.113.2/29
     */
    candidateCustomerRouterIpAddress?: pulumi.Input<string | undefined>;
    /**
     * Single IPv6 address + prefix length to be configured on the customer router interface for this
     * interconnect attachment. Example: 2001:db8::2/125
     */
    candidateCustomerRouterIpv6Address?: pulumi.Input<string | undefined>;
    /**
     * Up to 16 candidate prefixes that can be used to restrict the allocation
     * of cloudRouterIpAddress and customerRouterIpAddress for this attachment.
     * All prefixes must be within link-local address space (169.254.0.0/16)
     * and must be /29 or shorter (/28, /27, etc). Google will attempt to select
     * an unused /29 from the supplied candidate prefix(es). The request will
     * fail if all possible /29s are in use on Google's edge. If not supplied,
     * Google will randomly select an unused /29 from all of link-local space.
     */
    candidateSubnets?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * An optional description of this resource.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * Desired availability domain for the attachment. Only available for type
     * PARTNER, at creation time. For improved reliability, customers should
     * configure a pair of attachments with one per availability domain. The
     * selected availability domain will be provided to the Partner via the
     * pairing key so that the provisioned circuit will lie in the specified
     * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
     */
    edgeAvailabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * Indicates the user-supplied encryption option of this interconnect
     * attachment. Can only be specified at attachment creation for PARTNER or
     * DEDICATED attachments.
     * * NONE - This is the default value, which means that the VLAN attachment
     * carries unencrypted traffic. VMs are able to send traffic to, or receive
     * traffic from, such a VLAN attachment.
     * * IPSEC - The VLAN attachment carries only encrypted traffic that is
     * encrypted by an IPsec device, such as an HA VPN gateway or third-party
     * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from,
     * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN
     * attachment must be created with this option.
     * Default value is `NONE`.
     * Possible values are: `NONE`, `IPSEC`.
     */
    encryption?: pulumi.Input<string | undefined>;
    /**
     * URL of the underlying Interconnect object that this attachment's
     * traffic will traverse through. Required if type is DEDICATED, must not
     * be set if type is PARTNER.
     */
    interconnect?: pulumi.Input<string | undefined>;
    /**
     * URL of addresses that have been reserved for the interconnect attachment,
     * Used only for interconnect attachment that has the encryption option as
     * IPSEC.
     * The addresses must be RFC 1918 IP address ranges. When creating HA VPN
     * gateway over the interconnect attachment, if the attachment is configured
     * to use an RFC 1918 IP address, then the VPN gateway's IP address will be
     * allocated from the IP address range specified here.
     * For example, if the HA VPN gateway's interface 0 is paired to this
     * interconnect attachment, then an RFC 1918 IP address for the VPN gateway
     * interface 0 will be allocated from the IP address specified for this
     * interconnect attachment.
     * If this field is not specified for interconnect attachment that has
     * encryption option as IPSEC, later on when creating HA VPN gateway on this
     * interconnect attachment, the HA VPN gateway's IP address will be
     * allocated from regional external IP address pool.
     */
    ipsecInternalAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * L2 Interconnect Attachment related configuration.
     * Structure is documented below.
     */
    l2Forwarding?: pulumi.Input<inputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
    /**
     * Labels for this resource. These can only be added or modified by the setLabels
     * method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     *
     * **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>;
    } | undefined>;
    /**
     * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment.
     * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440.
     */
    mtu?: pulumi.Input<string | undefined>;
    /**
     * Name of the resource. Provided by the client when the resource is created. The
     * name must be 1-63 characters long, and comply with RFC1035. Specifically, the
     * name must be 1-63 characters long and match the regular expression
     * `a-z?` which means the first character must be a
     * lowercase letter, and all following characters must be a dash, lowercase
     * letter, or digit, except the last character, which cannot be a dash.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Additional params passed with the request, but not persisted as part of resource payload
     * Structure is documented below.
     */
    params?: pulumi.Input<inputs.compute.InterconnectAttachmentParams | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * Region where the regional interconnect attachment resides.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * URL of the cloud router to be used for dynamic routing. This router must be in
     * the same region as this InterconnectAttachment. The InterconnectAttachment will
     * automatically connect the Interconnect to the network & region within which the
     * Cloud Router is configured.
     */
    router?: pulumi.Input<string | undefined>;
    /**
     * The stack type for this interconnect attachment to identify whether the IPv6
     * feature is enabled or not. If not specified, IPV4_ONLY will be used.
     * This field can be both set at interconnect attachments creation and update
     * interconnect attachment operations.
     * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`.
     */
    stackType?: pulumi.Input<string | undefined>;
    /**
     * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29,
     * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a
     * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure
     * remote location fall into this category. In these cases, the default value is 30, and
     * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it
     * gives Google Cloud Support more debugging visibility.
     */
    subnetLength?: pulumi.Input<number | undefined>;
    /**
     * The type of InterconnectAttachment you wish to create. Defaults to
     * DEDICATED.
     * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When
     * using PARTNER type this will be managed upstream.
     */
    vlanTag8021q?: pulumi.Input<number | undefined>;
}
//# sourceMappingURL=interconnectAttachment.d.ts.map