/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ComputeVpnTunnelConfig extends cdktf.TerraformMetaArguments {
    /**
    * An optional description of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#description ComputeVpnTunnel#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#id ComputeVpnTunnel#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * IKE protocol version to use when establishing the VPN tunnel with
    * peer VPN gateway.
    * Acceptable IKE versions are 1 or 2. Default version is 2.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#ike_version ComputeVpnTunnel#ike_version}
    */
    readonly ikeVersion?: number;
    /**
    * Labels to apply to this VpnTunnel.
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#labels ComputeVpnTunnel#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Local traffic selector to use when establishing the VPN tunnel with
    * peer VPN gateway. The value should be a CIDR formatted string,
    * for example '192.168.0.0/16'. The ranges should be disjoint.
    * Only IPv4 is supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#local_traffic_selector ComputeVpnTunnel#local_traffic_selector}
    */
    readonly localTrafficSelector?: string[];
    /**
    * Name of the resource. 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]([-a-z0-9]*[a-z0-9])?' 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.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#name ComputeVpnTunnel#name}
    */
    readonly name: string;
    /**
    * URL of the peer side external VPN gateway to which this VPN tunnel is connected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#peer_external_gateway ComputeVpnTunnel#peer_external_gateway}
    */
    readonly peerExternalGateway?: string;
    /**
    * The interface ID of the external VPN gateway to which this VPN tunnel is connected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#peer_external_gateway_interface ComputeVpnTunnel#peer_external_gateway_interface}
    */
    readonly peerExternalGatewayInterface?: number;
    /**
    * URL of the peer side HA GCP VPN gateway to which this VPN tunnel is connected.
    * If provided, the VPN tunnel will automatically use the same vpn_gateway_interface
    * ID in the peer GCP VPN gateway.
    * This field must reference a 'google_compute_ha_vpn_gateway' resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#peer_gcp_gateway ComputeVpnTunnel#peer_gcp_gateway}
    */
    readonly peerGcpGateway?: string;
    /**
    * IP address of the peer VPN gateway. Only IPv4 is supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#peer_ip ComputeVpnTunnel#peer_ip}
    */
    readonly peerIp?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#project ComputeVpnTunnel#project}
    */
    readonly project?: string;
    /**
    * The region where the tunnel is located. If unset, is set to the region of 'target_vpn_gateway'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#region ComputeVpnTunnel#region}
    */
    readonly region?: string;
    /**
    * Remote traffic selector to use when establishing the VPN tunnel with
    * peer VPN gateway. The value should be a CIDR formatted string,
    * for example '192.168.0.0/16'. The ranges should be disjoint.
    * Only IPv4 is supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#remote_traffic_selector ComputeVpnTunnel#remote_traffic_selector}
    */
    readonly remoteTrafficSelector?: string[];
    /**
    * URL of router resource to be used for dynamic routing.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#router ComputeVpnTunnel#router}
    */
    readonly router?: string;
    /**
    * Shared secret used to set the secure session between the Cloud VPN
    * gateway and the peer VPN gateway.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#shared_secret ComputeVpnTunnel#shared_secret}
    */
    readonly sharedSecret: string;
    /**
    * URL of the Target VPN gateway with which this VPN tunnel is
    * associated.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#target_vpn_gateway ComputeVpnTunnel#target_vpn_gateway}
    */
    readonly targetVpnGateway?: string;
    /**
    * URL of the VPN gateway with which this VPN tunnel is associated.
    * This must be used if a High Availability VPN gateway resource is created.
    * This field must reference a 'google_compute_ha_vpn_gateway' resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#vpn_gateway ComputeVpnTunnel#vpn_gateway}
    */
    readonly vpnGateway?: string;
    /**
    * The interface ID of the VPN gateway with which this VPN tunnel is associated.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#vpn_gateway_interface ComputeVpnTunnel#vpn_gateway_interface}
    */
    readonly vpnGatewayInterface?: number;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#timeouts ComputeVpnTunnel#timeouts}
    */
    readonly timeouts?: ComputeVpnTunnelTimeouts;
}
export interface ComputeVpnTunnelTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#create ComputeVpnTunnel#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#delete ComputeVpnTunnel#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#update ComputeVpnTunnel#update}
    */
    readonly update?: string;
}
export declare function computeVpnTunnelTimeoutsToTerraform(struct?: ComputeVpnTunnelTimeouts | cdktf.IResolvable): any;
export declare function computeVpnTunnelTimeoutsToHclTerraform(struct?: ComputeVpnTunnelTimeouts | cdktf.IResolvable): any;
export declare class ComputeVpnTunnelTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ComputeVpnTunnelTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ComputeVpnTunnelTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel google_compute_vpn_tunnel}
*/
export declare class ComputeVpnTunnel extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_compute_vpn_tunnel";
    /**
    * Generates CDKTF code for importing a ComputeVpnTunnel resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the ComputeVpnTunnel to import
    * @param importFromId The id of the existing ComputeVpnTunnel that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ComputeVpnTunnel to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/compute_vpn_tunnel google_compute_vpn_tunnel} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options ComputeVpnTunnelConfig
    */
    constructor(scope: Construct, id: string, config: ComputeVpnTunnelConfig);
    get creationTimestamp(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    get detailedStatus(): string;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _ikeVersion?;
    get ikeVersion(): number;
    set ikeVersion(value: number);
    resetIkeVersion(): void;
    get ikeVersionInput(): number | undefined;
    get labelFingerprint(): string;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _localTrafficSelector?;
    get localTrafficSelector(): string[];
    set localTrafficSelector(value: string[]);
    resetLocalTrafficSelector(): void;
    get localTrafficSelectorInput(): string[] | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _peerExternalGateway?;
    get peerExternalGateway(): string;
    set peerExternalGateway(value: string);
    resetPeerExternalGateway(): void;
    get peerExternalGatewayInput(): string | undefined;
    private _peerExternalGatewayInterface?;
    get peerExternalGatewayInterface(): number;
    set peerExternalGatewayInterface(value: number);
    resetPeerExternalGatewayInterface(): void;
    get peerExternalGatewayInterfaceInput(): number | undefined;
    private _peerGcpGateway?;
    get peerGcpGateway(): string;
    set peerGcpGateway(value: string);
    resetPeerGcpGateway(): void;
    get peerGcpGatewayInput(): string | undefined;
    private _peerIp?;
    get peerIp(): string;
    set peerIp(value: string);
    resetPeerIp(): void;
    get peerIpInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _region?;
    get region(): string;
    set region(value: string);
    resetRegion(): void;
    get regionInput(): string | undefined;
    private _remoteTrafficSelector?;
    get remoteTrafficSelector(): string[];
    set remoteTrafficSelector(value: string[]);
    resetRemoteTrafficSelector(): void;
    get remoteTrafficSelectorInput(): string[] | undefined;
    private _router?;
    get router(): string;
    set router(value: string);
    resetRouter(): void;
    get routerInput(): string | undefined;
    get selfLink(): string;
    private _sharedSecret?;
    get sharedSecret(): string;
    set sharedSecret(value: string);
    get sharedSecretInput(): string | undefined;
    get sharedSecretHash(): string;
    private _targetVpnGateway?;
    get targetVpnGateway(): string;
    set targetVpnGateway(value: string);
    resetTargetVpnGateway(): void;
    get targetVpnGatewayInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get tunnelId(): string;
    private _vpnGateway?;
    get vpnGateway(): string;
    set vpnGateway(value: string);
    resetVpnGateway(): void;
    get vpnGatewayInput(): string | undefined;
    private _vpnGatewayInterface?;
    get vpnGatewayInterface(): number;
    set vpnGatewayInterface(value: number);
    resetVpnGatewayInterface(): void;
    get vpnGatewayInterfaceInput(): number | undefined;
    private _timeouts;
    get timeouts(): ComputeVpnTunnelTimeoutsOutputReference;
    putTimeouts(value: ComputeVpnTunnelTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ComputeVpnTunnelTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
