import * as $dara from '@darabonba/typescript';
export declare class CreateVpnAttachmentRequestTags extends $dara.Model {
    /**
     * @remarks
     * The tag key. The tag key cannot be an empty string.
     *
     * It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.
     *
     * You can specify at most 20 tag keys in each call.
     *
     * @example
     * TagKey
     */
    key?: string;
    /**
     * @remarks
     * The tag value.
     *
     * The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.
     *
     * Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
     *
     * @example
     * TagValue
     */
    value?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig extends $dara.Model {
    /**
     * @remarks
     * The ANS of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
     *
     * >  We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.
     *
     * @example
     * 65530
     */
    localAsn?: number;
    /**
     * @remarks
     * The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.
     *
     * @example
     * 169.254.10.1
     */
    localBgpIp?: string;
    /**
     * @remarks
     * The BGP CIDR block of the tunnel. The CIDR block must fall into 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
     *
     * >  The two tunnels of an IPsec-VPN connection must use different CIDR blocks.
     *
     * @example
     * 169.254.10.0/30
     */
    tunnelCidr?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig extends $dara.Model {
    /**
     * @remarks
     * The authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **sha1**.
     *
     * @example
     * sha1
     */
    ikeAuthAlg?: string;
    /**
     * @remarks
     * The encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
     *
     * @example
     * aes
     */
    ikeEncAlg?: string;
    /**
     * @remarks
     * The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.
     *
     * Valid values: **0** to **86400**. Default value: **86400**.
     *
     * @example
     * 86400
     */
    ikeLifetime?: number;
    /**
     * @remarks
     * The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
     *
     * *   **main:** This mode offers higher security during negotiations.
     * *   **aggressive**: This mode is faster with a higher success rate.
     *
     * @example
     * main
     */
    ikeMode?: string;
    /**
     * @remarks
     * The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\
     * Valid values: **group1**, **group2**, **group5**, and **group14**.
     *
     * @example
     * group2
     */
    ikePfs?: string;
    /**
     * @remarks
     * The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev2**.
     *
     * Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
     *
     * @example
     * ikev2
     */
    ikeVersion?: string;
    /**
     * @remarks
     * The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces. The default value is the IP address of the tunnel.
     *
     * **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
     *
     * @example
     * 47.XX.XX.1
     */
    localId?: string;
    /**
     * @remarks
     * The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.
     *
     * *   The key cannot contain spaces. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
     * *   If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnAttachments](https://help.aliyun.com/document_detail/2526939.html) operation to query the pre-shared key that is automatically generated by the system.
     *
     * >  The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.
     *
     * @example
     * 123456****
     */
    psk?: string;
    /**
     * @remarks
     * The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain spaces. The default value is the IP address of the customer gateway that is associated with the tunnel.
     *
     * **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
     *
     * @example
     * 47.XX.XX.2
     */
    remoteId?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig extends $dara.Model {
    /**
     * @remarks
     * The authentication algorithm that is used in Phase 2 negotiations.
     *
     * Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **sha1**.
     *
     * @example
     * sha1
     */
    ipsecAuthAlg?: string;
    /**
     * @remarks
     * The encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
     *
     * @example
     * aes
     */
    ipsecEncAlg?: string;
    /**
     * @remarks
     * The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.
     *
     * Valid values: **0** to **86400**. Default value: **86400**.
     *
     * @example
     * 86400
     */
    ipsecLifetime?: number;
    /**
     * @remarks
     * The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.
     *
     * Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
     *
     * @example
     * group2
     */
    ipsecPfs?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateVpnAttachmentRequestTunnelOptionsSpecification extends $dara.Model {
    /**
     * @remarks
     * The ID of the customer gateway that is associated with the tunnel.
     *
     * >  This parameter is required when you create a dual-tunnel IPsec-VPN connection.
     *
     * @example
     * cgw-p0w2jemrcj5u61un8****
     */
    customerGatewayId?: string;
    /**
     * @remarks
     * Specifies whether to enable the DPD feature for the tunnel. Valid values:
     *
     * *   **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted along with the security tunnel.
     * *   **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
     *
     * @example
     * true
     */
    enableDpd?: boolean;
    /**
     * @remarks
     * Specifies whether to enable NAT traversal for the tunnel. Valid values:
     *
     * *   **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
     * *   **false**: disables NAT traversal.
     *
     * @example
     * true
     */
    enableNatTraversal?: boolean;
    /**
     * @remarks
     * The BGP configurations of the tunnel.
     *
     * >  If you enable BGP for an IPsec-VPN connection, you must set **EnableTunnelsBgp** parameter to **true**.
     */
    tunnelBgpConfig?: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig;
    /**
     * @remarks
     * The configurations of Phase 1 negotiations.
     */
    tunnelIkeConfig?: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig;
    /**
     * @remarks
     * The order in which the tunnel was created.
     *
     * *   **1**: Tunnel 1.
     * *   **2**: Tunnel 2.
     *
     * @example
     * 1
     */
    tunnelIndex?: number;
    /**
     * @remarks
     * The configurations of Phase 2 negotiations.
     */
    tunnelIpsecConfig?: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateVpnAttachmentRequest extends $dara.Model {
    /**
     * @remarks
     * Specifies whether to automatically configure routes. Valid values:
     *
     * *   **true** (default)
     * *   **false**
     *
     * @example
     * true
     */
    autoConfigRoute?: boolean;
    /**
     * @remarks
     * This parameter is supported when you create an IPsec-VPN connection in single-tunnel mode.
     *
     * BGP configuration:
     *
     * *   **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false** (default).
     *
     * *   **BgpConfig.LocalAsn**: the ASN on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
     *
     *     You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.
     *
     *     For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.
     *
     * *   **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall into 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
     *
     * *   **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.
     *
     * > - Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/445767.html).
     * > - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. Refer to the relevant documentation for the private ASN range.
     *
     * @example
     * {"EnableBgp":"true","LocalAsn":"45104","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"}
     */
    bgpConfig?: string;
    /**
     * @remarks
     * The client token that is used to ensure the idempotence of the request.
     *
     * You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.
     *
     * > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
     *
     * @example
     * 123e4567-e89b-12d3-a456-4266****
     */
    clientToken?: string;
    /**
     * @remarks
     * The customer gateway ID.
     *
     * >  This parameter is required only when you create a single-tunnel IPsec-VPN connection.
     *
     * @example
     * cgw-p0w2jemrcj5u61un8****
     */
    customerGatewayId?: string;
    dryRun?: boolean;
    /**
     * @remarks
     * Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:
     *
     * *   **true**: immediately starts IPsec negotiations after the configuration is complete.
     * *   **false** (default): starts IPsec negotiations when inbound traffic is received.
     *
     * @example
     * false
     */
    effectImmediately?: boolean;
    /**
     * @remarks
     * This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
     *
     * Specifies whether to enable DPD. Valid values: Valid values:
     *
     * *   **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted along with the security tunnel.
     * *   **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
     *
     * @example
     * true
     */
    enableDpd?: boolean;
    /**
     * @remarks
     * This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
     *
     * Specifies whether to enable NAT traversal. Valid values:
     *
     * *   **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
     * *   **false**: disables NAT traversal.
     *
     * @example
     * true
     */
    enableNatTraversal?: boolean;
    /**
     * @remarks
     * This parameter is available if you create an IPsec-VPN connection in dual-tunnel mode.
     *
     * Specifies whether to enable the BGP feature for the tunnel. Valid values: **true** and **false**. Default value: false.
     *
     * >  Before you add BGP configurations, we recommend that you learn about how BGP works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/445767.html)
     *
     * @example
     * false
     */
    enableTunnelsBgp?: boolean;
    /**
     * @remarks
     * This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
     *
     * The health check configurations:
     *
     * *   **HealthCheckConfig.enable**: indicates whether the health check is enabled. Valid values: **true** and **false** (default).
     *
     * *   **HealthCheckConfig.dip**: the destination IP address configured for health checks. Enter the IP address of the on-premises data center that the VPC can access through the IPsec connection.
     *
     * *   **HealthCheckConfig.sip**: the source IP address configured for health checks. Enter the IP address of the VPC that the on-premises data center can access through the IPsec connection.
     *
     * *   **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.
     *
     * *   **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.
     *
     * *   **HealthCheckConfig.Policy**: specifies whether to withdraw published routes when health checks fail. Valid values:
     *
     *     *   **revoke_route** (default): withdraws published routes.
     *     *   **reserve_route**: does not withdraw published routes.
     *
     * @example
     * {"enable":"true","dip":"192.168.1.1","sip":"10.1.1.1","interval":"3","retry":"3","Policy": "revoke_route"}
     */
    healthCheckConfig?: string;
    /**
     * @remarks
     * This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
     *
     * The configurations of Phase 1 negotiations:
     *
     * *   **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
     *
     *     *   The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
     *     *   If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
     *
     *     > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
     *
     * *   **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
     *
     * *   **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**. Default value: **main**.
     *
     * *   **IkeConfig.IkeEncAlg:** the encryption algorithm that is used in Phase 1 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
     *
     * *   **IkeConfig.IkeAuthAlg**: the authentication algorithm that is used in Phase 1 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.
     *
     * *   **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
     *
     * *   **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
     *
     * *   **IkeConfig.LocalId**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length and cannot contain space characters. This parameter is empty by default.
     *
     * *   **IkeConfig.RemoteId**: the identifier on the data center side. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.
     *
     * @example
     * {"Psk":"1234****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"47.XX.XX.1","RemoteId":"47.XX.XX.2"}
     */
    ikeConfig?: string;
    /**
     * @remarks
     * This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
     *
     * The configurations of Phase 2 negotiations:
     *
     * *   **IpsecConfig.IpsecEncAlg**: the encryption algorithm that is used in Phase 2 negotiations. Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
     * *   **IpsecConfig. IpsecAuthAlg**: the authentication algorithm that is used in Phase 2 negotiations. Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.
     * *   **IpsecConfig. IpsecPfs**: The Diffie-Hellman key exchange algorithm used in the second phase negotiation. Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
     * *   **IkeConfig.IkeLifetime**: the SA lifetime determined by Phase 2 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
     *
     * @example
     * {"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400}
     */
    ipsecConfig?: string;
    /**
     * @remarks
     * The CIDR block on the VPC side. The CIDR block is used in Phase 2 negotiations.
     *
     * Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24.
     *
     * The following routing modes are supported:
     *
     * *   If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.
     * *   If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.
     *
     * This parameter is required.
     *
     * @example
     * 10.1.1.0/24,10.1.2.0/24
     */
    localSubnet?: string;
    /**
     * @remarks
     * The name of the IPsec-VPN connection.
     *
     * The name must be 1 to 100 characters in length and cannot start with `http://` or `https://`.
     *
     * @example
     * nametest
     */
    name?: string;
    /**
     * @remarks
     * The network type of the IPsec-VPN connection. Valid values:
     *
     * *   **public** (default)
     * *   **private**
     *
     * @example
     * public
     */
    networkType?: string;
    ownerAccount?: string;
    /**
     * @remarks
     * The region ID of the IPsec-VPN connection.
     *
     * You can call the [DescribeRegions](https://help.aliyun.com/document_detail/36063.html) operation to query the most recent region list.
     *
     * This parameter is required.
     *
     * @example
     * cn-hangzhou
     */
    regionId?: string;
    /**
     * @remarks
     * The peer CA certificate when a ShangMi (SM) VPN gateway is used to create the IPsec-VPN connection.
     *
     * @example
     * -----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE-----
     */
    remoteCaCert?: string;
    /**
     * @remarks
     * The CIDR block on the data center side. This CIDR block is used in Phase 2 negotiations.
     *
     * Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24.
     *
     * The following routing modes are supported:
     *
     * *   If you set **LocalSubnet** and **RemoteSubnet** to 0.0.0.0/0, the routing mode of the IPsec-VPN connection is set to Destination Routing Mode.
     * *   If you set **LocalSubnet** and **RemoteSubnet** to specific CIDR blocks, the routing mode of the IPsec-VPN connection is set to Protected Data Flows.
     *
     * This parameter is required.
     *
     * @example
     * 10.1.3.0/24,10.1.4.0/24
     */
    remoteSubnet?: string;
    /**
     * @remarks
     * The ID of the resource group to which the IPsec-VPN connection belongs.
     *
     * *   You can call the [ListResourceGroups](https://help.aliyun.com/document_detail/158855.html) operation to query resource group IDs.
     * *   If you do not specify a resource group ID, the IPsec-VPN connection belongs to the default resource group.
     *
     * @example
     * rg-acfmzs372yg****
     */
    resourceGroupId?: string;
    resourceOwnerAccount?: string;
    resourceOwnerId?: number;
    /**
     * @remarks
     * The tag value.
     *
     * The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.
     *
     * Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.
     */
    tags?: CreateVpnAttachmentRequestTags[];
    tunnelBandwidth?: string;
    /**
     * @remarks
     * The tunnel configurations.
     *
     * *   You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
     * *   When you create a IPsec-VPN connection in dual-tunnel mode, you must add both tunnels to IPsec-VPN connection to ensure that the IPsec-VPN connection has connection redundancy. Each IPsec-VPN connection supports only two tunnels.
     *
     * **if can be null:**
     * true
     */
    tunnelOptionsSpecification?: CreateVpnAttachmentRequestTunnelOptionsSpecification[];
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
