import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Ip Sec Connection resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/IpSecConnection
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new IPSec connection between the specified DRG and CPE with two default static tunnels. For more information, see
 * [Site-to-Site VPN Overview](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm).
 *
 * For the purposes of access control, you must provide the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment where you want the
 * IPSec connection to reside. Notice that the IPSec connection doesn't have to be in the same compartment
 * as the DRG, CPE, or other Networking Service components. If you're not sure which compartment to
 * use, put the IPSec connection in the same compartment as the DRG. For more information about
 * compartments and access control, see
 * [Overview of the IAM Service](https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm).
 *
 * You may optionally specify a *display name* for the IPSec connection, otherwise a default is provided.
 * It does not have to be unique, and you can change it. Avoid entering confidential information.
 *
 * After creating the IPSec connection, you need to configure your on-premises router
 * with tunnel-specific information. For tunnel status and the required configuration information, see:
 *
 *   * [IPSecConnectionTunnel](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnectionTunnel/)
 *   * [IPSecConnectionTunnelSharedSecret](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnectionTunnelSharedSecret/)
 *
 * To configure tunnel-specific information, use `oci.Core.IpsecConnectionTunnelManagement` to update the tunnels. If
 * you configure at least one tunnel to use static routing, then in the oci.Core.Ipsec request you must provide
 * at least one valid static route (you're allowed a maximum of 10). For example: 10.0.0.0/16.
 * If you configure both tunnels to use BGP dynamic routing, the static routes will be ignored. However, you must provide a
 * static route in `oci.Core.Ipsec` even if you plan to use BGP routing because it defaults to two static tunnels.  For more
 * information, see the important note in [IPSecConnection](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnection/).
 *
 * For each tunnel, you need the IP address of Oracle's VPN headend and the shared secret
 * (that is, the pre-shared key). For more information, see
 * [CPE Configuration](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/configuringCPE.htm).
 *
 * To configure tunnel-specific information for private ipsec connection over fastconnect, use attribute `tunnelConfiguration`.
 * You can provide configuration for maximum of 2 tunnels. You can configure each tunnel with `oracleTunnelIp`,
 * `associatedVirtualCircuits` and `drgRouteTableId` at time of creation. These attributes cannot be updated using IPSec
 * connection APIs. To update drg route table id, use `oci.Core.DrgAttachmentManagement` resource to update.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testIpSecConnection = new oci.core.Ipsec("test_ip_sec_connection", {
 *     compartmentId: compartmentId,
 *     cpeId: testCpe.id,
 *     drgId: testDrg.id,
 *     staticRoutes: ipSecConnectionStaticRoutes,
 *     cpeLocalIdentifier: ipSecConnectionCpeLocalIdentifier,
 *     cpeLocalIdentifierType: ipSecConnectionCpeLocalIdentifierType,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: ipSecConnectionDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 * });
 * const testIpSecConnectionOverFc = new oci.core.Ipsec("test_ip_sec_connection_over_fc", {
 *     compartmentId: compartmentId,
 *     cpeId: testCpe.id,
 *     drgId: testDrg.id,
 *     staticRoutes: ipSecConnectionStaticRoutes,
 *     cpeLocalIdentifier: ipSecConnectionCpeLocalIdentifier,
 *     cpeLocalIdentifierType: ipSecConnectionCpeLocalIdentifierType,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: ipSecConnectionDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     tunnelConfigurations: [
 *         {
 *             oracleTunnelIp: "10.1.5.5",
 *             associatedVirtualCircuits: [testIpsecOverFcVirtualCircuit.id],
 *             drgRouteTableId: testDrgIpsecOverFcRouteTable.id,
 *         },
 *         {
 *             oracleTunnelIp: "10.1.7.7",
 *             associatedVirtualCircuits: [testIpsecOverFcVirtualCircuit.id],
 *             drgRouteTableId: testDrgIpsecOverFcRouteTable.id,
 *         },
 *     ],
 * });
 * ```
 *
 * ## Import
 *
 * IpSecConnections can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/ipsec:Ipsec test_ip_sec_connection "id"
 * ```
 */
export declare class Ipsec extends pulumi.CustomResource {
    /**
     * Get an existing Ipsec 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?: IpsecState, opts?: pulumi.CustomResourceOptions): Ipsec;
    /**
     * Returns true if the given object is an instance of Ipsec.  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 Ipsec;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to contain the IPSec connection.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object.
     */
    readonly cpeId: pulumi.Output<string>;
    /**
     * (Updatable) Your identifier for your CPE device. Can be either an IP address or a hostname (specifically, the fully qualified domain name (FQDN)). The type of identifier you provide here must correspond to the value for `cpeLocalIdentifierType`.
     *
     * If you don't provide a value, the `ipAddress` attribute for the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object specified by `cpeId` is used as the `cpeLocalIdentifier`.
     *
     * For information about why you'd provide this value, see [If Your CPE Is Behind a NAT Device](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat).
     *
     * Example IP address: `10.0.3.3`
     *
     * Example hostname: `cpe.example.com`
     */
    readonly cpeLocalIdentifier: pulumi.Output<string>;
    /**
     * (Updatable) The type of identifier for your CPE device. The value you provide here must correspond to the value for `cpeLocalIdentifier`.
     */
    readonly cpeLocalIdentifierType: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DRG.
     */
    readonly drgId: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The IPSec connection's current state.
     */
    readonly state: pulumi.Output<string>;
    /**
     * (Updatable) Static routes to the CPE. A static route's CIDR must not be a multicast address or class E address.
     *
     * Used for routing a given IPSec tunnel's traffic only if the tunnel is using static routing. If you configure at least one tunnel to use static routing, then you must provide at least one valid static route. If you configure both tunnels to use BGP dynamic routing, you can provide an empty list for the static routes on update. For more information, see the important note in [IPSecConnection](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnection/).
     *
     * Example: `10.0.1.0/24`
     */
    readonly staticRoutes: pulumi.Output<string[]>;
    /**
     * The date and time the IPSec connection was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The transport type used for the IPSec connection.
     */
    readonly transportType: pulumi.Output<string>;
    /**
     * (Non-updatable) Tunnel configuration for private ipsec connection over fastconnect.
     *
     * Example: `
     * tunnelConfiguration {
     * oracleTunnelIp = "10.1.5.5"
     * associatedVirtualCircuits = [oci_core_virtual_circuit.test_ipsec_over_fc_virtual_circuit.id]
     * drgRouteTableId = oci_core_drg_route_table.test_drg_ipsec_over_fc_route_table.id
     * }`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly tunnelConfigurations: pulumi.Output<outputs.Core.IpsecTunnelConfiguration[]>;
    /**
     * Create a Ipsec 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: IpsecArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Ipsec resources.
 */
export interface IpsecState {
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to contain the IPSec connection.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object.
     */
    cpeId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Your identifier for your CPE device. Can be either an IP address or a hostname (specifically, the fully qualified domain name (FQDN)). The type of identifier you provide here must correspond to the value for `cpeLocalIdentifierType`.
     *
     * If you don't provide a value, the `ipAddress` attribute for the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object specified by `cpeId` is used as the `cpeLocalIdentifier`.
     *
     * For information about why you'd provide this value, see [If Your CPE Is Behind a NAT Device](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat).
     *
     * Example IP address: `10.0.3.3`
     *
     * Example hostname: `cpe.example.com`
     */
    cpeLocalIdentifier?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The type of identifier for your CPE device. The value you provide here must correspond to the value for `cpeLocalIdentifier`.
     */
    cpeLocalIdentifierType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DRG.
     */
    drgId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The IPSec connection's current state.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Static routes to the CPE. A static route's CIDR must not be a multicast address or class E address.
     *
     * Used for routing a given IPSec tunnel's traffic only if the tunnel is using static routing. If you configure at least one tunnel to use static routing, then you must provide at least one valid static route. If you configure both tunnels to use BGP dynamic routing, you can provide an empty list for the static routes on update. For more information, see the important note in [IPSecConnection](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnection/).
     *
     * Example: `10.0.1.0/24`
     */
    staticRoutes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The date and time the IPSec connection was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).  Example: `2016-08-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The transport type used for the IPSec connection.
     */
    transportType?: pulumi.Input<string | undefined>;
    /**
     * (Non-updatable) Tunnel configuration for private ipsec connection over fastconnect.
     *
     * Example: `
     * tunnelConfiguration {
     * oracleTunnelIp = "10.1.5.5"
     * associatedVirtualCircuits = [oci_core_virtual_circuit.test_ipsec_over_fc_virtual_circuit.id]
     * drgRouteTableId = oci_core_drg_route_table.test_drg_ipsec_over_fc_route_table.id
     * }`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    tunnelConfigurations?: pulumi.Input<pulumi.Input<inputs.Core.IpsecTunnelConfiguration>[] | undefined>;
}
/**
 * The set of arguments for constructing a Ipsec resource.
 */
export interface IpsecArgs {
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to contain the IPSec connection.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object.
     */
    cpeId: pulumi.Input<string>;
    /**
     * (Updatable) Your identifier for your CPE device. Can be either an IP address or a hostname (specifically, the fully qualified domain name (FQDN)). The type of identifier you provide here must correspond to the value for `cpeLocalIdentifierType`.
     *
     * If you don't provide a value, the `ipAddress` attribute for the [Cpe](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Cpe/) object specified by `cpeId` is used as the `cpeLocalIdentifier`.
     *
     * For information about why you'd provide this value, see [If Your CPE Is Behind a NAT Device](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat).
     *
     * Example IP address: `10.0.3.3`
     *
     * Example hostname: `cpe.example.com`
     */
    cpeLocalIdentifier?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The type of identifier for your CPE device. The value you provide here must correspond to the value for `cpeLocalIdentifier`.
     */
    cpeLocalIdentifierType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DRG.
     */
    drgId: pulumi.Input<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Static routes to the CPE. A static route's CIDR must not be a multicast address or class E address.
     *
     * Used for routing a given IPSec tunnel's traffic only if the tunnel is using static routing. If you configure at least one tunnel to use static routing, then you must provide at least one valid static route. If you configure both tunnels to use BGP dynamic routing, you can provide an empty list for the static routes on update. For more information, see the important note in [IPSecConnection](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/IPSecConnection/).
     *
     * Example: `10.0.1.0/24`
     */
    staticRoutes: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * (Non-updatable) Tunnel configuration for private ipsec connection over fastconnect.
     *
     * Example: `
     * tunnelConfiguration {
     * oracleTunnelIp = "10.1.5.5"
     * associatedVirtualCircuits = [oci_core_virtual_circuit.test_ipsec_over_fc_virtual_circuit.id]
     * drgRouteTableId = oci_core_drg_route_table.test_drg_ipsec_over_fc_route_table.id
     * }`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    tunnelConfigurations?: pulumi.Input<pulumi.Input<inputs.Core.IpsecTunnelConfiguration>[] | undefined>;
}
//# sourceMappingURL=ipsec.d.ts.map