import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Load Balancer resource in Oracle Cloud Infrastructure Load Balancer service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/loadbalancer/latest/LoadBalancer
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/load_balancer
 *
 * Creates a new load balancer in the specified compartment. For general information about load balancers,
 * see [Overview of the Load Balancing Service](https://docs.cloud.oracle.com/iaas/Content/Balance/Concepts/balanceoverview.htm).
 *
 * For the purposes of access control, you must provide the OCID of the compartment where you want
 * the load balancer to reside. Notice that the load balancer doesn't have to be in the same compartment as the VCN
 * or backend set. If you're not sure which compartment to use, put the load balancer in the same compartment as the VCN.
 * For information about access control and compartments, see
 * [Overview of the IAM Service](https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm).
 *
 * You must specify a display name for the load balancer. It does not have to be unique, and you can change it.
 *
 * For information about Availability Domains, see
 * [Regions and Availability Domains](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/regions.htm).
 * To get a list of Availability Domains, use the `ListAvailabilityDomains` operation
 * in the Identity and Access Management Service API.
 *
 * All Oracle Cloud Infrastructure resources, including load balancers, get an Oracle-assigned,
 * unique ID called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID
 * in the response. You can also retrieve a resource's OCID by using a List API operation on that resource type,
 * or by viewing the resource in the Console. Fore more information, see
 * [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
 *
 * When you create a load balancer, the system assigns an IP address.
 * To get the IP address, use the [GetLoadBalancer](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancer/GetLoadBalancer) operation.
 *
 * ## Supported Aliases
 *
 * * `ociLoadBalancer`
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testLoadBalancer = new oci.loadbalancer.LoadBalancer("test_load_balancer", {
 *     compartmentId: compartmentId,
 *     displayName: loadBalancerDisplayName,
 *     shape: loadBalancerShape,
 *     subnetIds: loadBalancerSubnetIds,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     ipMode: loadBalancerIpMode,
 *     ipv6subnetCidr: loadBalancerIpv6subnetCidr,
 *     isDeleteProtectionEnabled: loadBalancerIsDeleteProtectionEnabled === "true",
 *     isPrivate: loadBalancerIsPrivate === "true",
 *     isRequestIdEnabled: loadBalancerIsRequestIdEnabled === "true",
 *     networkSecurityGroupIds: loadBalancerNetworkSecurityGroupIds,
 *     requestIdHeader: loadBalancerRequestIdHeader,
 *     reservedIps: [{
 *         id: loadBalancerReservedIpsId,
 *     }],
 *     securityAttributes: loadBalancerSecurityAttributes,
 *     shapeDetails: {
 *         maximumBandwidthInMbps: Number(loadBalancerShapeDetailsMaximumBandwidthInMbps),
 *         minimumBandwidthInMbps: Number(loadBalancerShapeDetailsMinimumBandwidthInMbps),
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * LoadBalancers can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:LoadBalancer/loadBalancer:LoadBalancer test_load_balancer "id"
 * ```
 */
export declare class LoadBalancer extends pulumi.CustomResource {
    /**
     * Get an existing LoadBalancer 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?: LoadBalancerState, opts?: pulumi.CustomResourceOptions): LoadBalancer;
    /**
     * Returns true if the given object is an instance of LoadBalancer.  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 LoadBalancer;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which to create the load balancer.
     */
    readonly compartmentId: 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. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `exampleLoadBalancer`
     */
    readonly displayName: 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;
    }>;
    /**
     * An array of IP addresses.
     */
    readonly ipAddressDetails: pulumi.Output<outputs.LoadBalancer.LoadBalancerIpAddressDetail[]>;
    /**
     * An array of IP addresses. Deprecated: use ipAddressDetails instead
     * *
     *
     * @deprecated The 'ip_addresses' field has been deprecated. Please use 'ip_address_details' instead.
     */
    readonly ipAddresses: pulumi.Output<string[]>;
    /**
     * IPv6 is currently supported only in the Government Cloud. Whether the load balancer has an IPv4 or IPv6 IP address.
     *
     * If "IPV4", the service assigns an IPv4 address and the load balancer supports IPv4 traffic.
     *
     * If "IPV6", the service assigns an IPv6 address and the load balancer supports IPv6 traffic.
     *
     * Example: "ipMode":"IPV6"
     */
    readonly ipMode: pulumi.Output<string>;
    /**
     * (Updatable) Applies to IPV6 LB creation only.
     *
     * Used to disambiguate which subnet prefix should be used to create an IPv6 LB.
     *
     * Example: "2002::1234:abcd:ffff:c0a8:101/64"
     */
    readonly ipv6subnetCidr: pulumi.Output<string>;
    /**
     * (Updatable) Whether or not the load balancer has delete protection enabled.
     *
     * If "true", the loadbalancer will be protected against deletion if configured to accept traffic.
     *
     * If "false", the loadbalancer will not be protected against deletion.
     *
     * Delete protection will not be enabled unless a value of "true" is provided. Example: `true`
     */
    readonly isDeleteProtectionEnabled: pulumi.Output<boolean>;
    /**
     * Whether the load balancer has a VCN-local (private) IP address.
     *
     * If "true", the service assigns a private IP address to the load balancer.
     *
     * If "false", the service assigns a public IP address to the load balancer.
     *
     * A public load balancer is accessible from the internet, depending on your VCN's [security list rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). For more information about public and private load balancers, see [How Load Balancing Works](https://docs.cloud.oracle.com/iaas/Content/Balance/Concepts/balanceoverview.htm#how-load-balancing-works).
     *
     * Example: `true`
     */
    readonly isPrivate: pulumi.Output<boolean>;
    /**
     * (Updatable) Whether or not the load balancer has the Request Id feature enabled for HTTP listeners.
     *
     * If "true", the load balancer will attach a unique request id header to every request passed through from the load balancer to load balancer backends. This same request id header also will be added to the response the lb received from the backend handling the request before the load balancer returns the response to the requestor. The name of the unique request id header is set the by value of requestIdHeader.
     *
     * If "false", the loadbalancer not add this unique request id header to either the request passed through to the load balancer backends nor to the reponse returned to the user.
     *
     * New load balancers have the Request Id feature disabled unless isRequestIdEnabled is set to true.
     *
     * Example: `true`
     */
    readonly isRequestIdEnabled: pulumi.Output<boolean>;
    /**
     * (Updatable) An array of NSG [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this load balancer.
     *
     * During the load balancer's creation, the service adds the new load balancer to the specified NSGs.
     *
     * The benefits of using NSGs with the load balancer include:
     * *  NSGs define network security rules to govern ingress and egress traffic for the load balancer.
     * *  The network security rules of other resources can reference the NSGs associated with the load balancer to ensure access.
     *
     * Example: `["ocid1.nsg.oc1.phx.unique_ID"]`
     */
    readonly networkSecurityGroupIds: pulumi.Output<string[] | undefined>;
    /**
     * (Updatable) If isRequestIdEnabled is true then this field contains the name of the header field that contains the unique request id that is attached to every request from the load balancer to the load balancer backends and to every response from the load balancer.
     *
     * If a request to the load balancer already contains a header with same name as specified in requestIdHeader then the load balancer will not change the value of that field.
     *
     * If isRequestIdEnabled is false then this field is ignored.
     *
     * If this field is not set or is set to "" then this field defaults to X-Request-Id
     *
     * **Notes:**
     * * Unless the header name is "" it must start with "X-" prefix.
     * * Setting the header name to "" will set it to the default: X-Request-Id.
     */
    readonly requestIdHeader: pulumi.Output<string>;
    /**
     * (Updatable) An array of reserved Ips. Pre-created public IP that will be used as the IP of this load balancer. This reserved IP will not be deleted when load balancer is deleted. This ip should not be already mapped to any other resource.
     */
    readonly reservedIps: pulumi.Output<outputs.LoadBalancer.LoadBalancerReservedIp[] | undefined>;
    /**
     * (Updatable) Extended Defined tags for ZPR for this resource. Each key is predefined and scoped to a namespace.  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value":"42","mode":"audit", "usagetype" : "zpr"}}}`
     */
    readonly securityAttributes: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A template that determines the total pre-provisioned bandwidth (ingress plus egress). To get a list of available shapes, use the [ListShapes](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancerShape/ListShapes) operation.  Example: `flexible` NOTE: After May 2023, Fixed shapes - 10Mbps, 100Mbps, 400Mbps, 8000Mbps would be deprecated and only shape allowed would be `Flexible` *Note: When updating shape for a load balancer, all existing connections to the load balancer will be reset during the update process. Also `10Mbps-Micro` shape cannot be updated to any other shape nor can any other shape be updated to `10Mbps-Micro`.
     */
    readonly shape: pulumi.Output<string>;
    /**
     * (Updatable) The configuration details to create load balancer using Flexible shape. This is required only if shapeName is `Flexible`.
     */
    readonly shapeDetails: pulumi.Output<outputs.LoadBalancer.LoadBalancerShapeDetails>;
    /**
     * The current state of the load balancer.
     */
    readonly state: pulumi.Output<string>;
    /**
     * An array of subnet [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     *
     *
     * ** 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 subnetIds: pulumi.Output<string[]>;
    /**
     * System 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). System tags can be viewed by users, but can only be created by the system.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The date and time the load balancer was created, in the format defined by RFC3339.  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Create a LoadBalancer 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: LoadBalancerArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering LoadBalancer resources.
 */
export interface LoadBalancerState {
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which to create the load balancer.
     */
    compartmentId?: 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. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `exampleLoadBalancer`
     */
    displayName?: 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>;
    /**
     * An array of IP addresses.
     */
    ipAddressDetails?: pulumi.Input<pulumi.Input<inputs.LoadBalancer.LoadBalancerIpAddressDetail>[] | undefined>;
    /**
     * An array of IP addresses. Deprecated: use ipAddressDetails instead
     * *
     *
     * @deprecated The 'ip_addresses' field has been deprecated. Please use 'ip_address_details' instead.
     */
    ipAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * IPv6 is currently supported only in the Government Cloud. Whether the load balancer has an IPv4 or IPv6 IP address.
     *
     * If "IPV4", the service assigns an IPv4 address and the load balancer supports IPv4 traffic.
     *
     * If "IPV6", the service assigns an IPv6 address and the load balancer supports IPv6 traffic.
     *
     * Example: "ipMode":"IPV6"
     */
    ipMode?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Applies to IPV6 LB creation only.
     *
     * Used to disambiguate which subnet prefix should be used to create an IPv6 LB.
     *
     * Example: "2002::1234:abcd:ffff:c0a8:101/64"
     */
    ipv6subnetCidr?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Whether or not the load balancer has delete protection enabled.
     *
     * If "true", the loadbalancer will be protected against deletion if configured to accept traffic.
     *
     * If "false", the loadbalancer will not be protected against deletion.
     *
     * Delete protection will not be enabled unless a value of "true" is provided. Example: `true`
     */
    isDeleteProtectionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the load balancer has a VCN-local (private) IP address.
     *
     * If "true", the service assigns a private IP address to the load balancer.
     *
     * If "false", the service assigns a public IP address to the load balancer.
     *
     * A public load balancer is accessible from the internet, depending on your VCN's [security list rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). For more information about public and private load balancers, see [How Load Balancing Works](https://docs.cloud.oracle.com/iaas/Content/Balance/Concepts/balanceoverview.htm#how-load-balancing-works).
     *
     * Example: `true`
     */
    isPrivate?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Whether or not the load balancer has the Request Id feature enabled for HTTP listeners.
     *
     * If "true", the load balancer will attach a unique request id header to every request passed through from the load balancer to load balancer backends. This same request id header also will be added to the response the lb received from the backend handling the request before the load balancer returns the response to the requestor. The name of the unique request id header is set the by value of requestIdHeader.
     *
     * If "false", the loadbalancer not add this unique request id header to either the request passed through to the load balancer backends nor to the reponse returned to the user.
     *
     * New load balancers have the Request Id feature disabled unless isRequestIdEnabled is set to true.
     *
     * Example: `true`
     */
    isRequestIdEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) An array of NSG [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this load balancer.
     *
     * During the load balancer's creation, the service adds the new load balancer to the specified NSGs.
     *
     * The benefits of using NSGs with the load balancer include:
     * *  NSGs define network security rules to govern ingress and egress traffic for the load balancer.
     * *  The network security rules of other resources can reference the NSGs associated with the load balancer to ensure access.
     *
     * Example: `["ocid1.nsg.oc1.phx.unique_ID"]`
     */
    networkSecurityGroupIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) If isRequestIdEnabled is true then this field contains the name of the header field that contains the unique request id that is attached to every request from the load balancer to the load balancer backends and to every response from the load balancer.
     *
     * If a request to the load balancer already contains a header with same name as specified in requestIdHeader then the load balancer will not change the value of that field.
     *
     * If isRequestIdEnabled is false then this field is ignored.
     *
     * If this field is not set or is set to "" then this field defaults to X-Request-Id
     *
     * **Notes:**
     * * Unless the header name is "" it must start with "X-" prefix.
     * * Setting the header name to "" will set it to the default: X-Request-Id.
     */
    requestIdHeader?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) An array of reserved Ips. Pre-created public IP that will be used as the IP of this load balancer. This reserved IP will not be deleted when load balancer is deleted. This ip should not be already mapped to any other resource.
     */
    reservedIps?: pulumi.Input<pulumi.Input<inputs.LoadBalancer.LoadBalancerReservedIp>[] | undefined>;
    /**
     * (Updatable) Extended Defined tags for ZPR for this resource. Each key is predefined and scoped to a namespace.  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value":"42","mode":"audit", "usagetype" : "zpr"}}}`
     */
    securityAttributes?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A template that determines the total pre-provisioned bandwidth (ingress plus egress). To get a list of available shapes, use the [ListShapes](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancerShape/ListShapes) operation.  Example: `flexible` NOTE: After May 2023, Fixed shapes - 10Mbps, 100Mbps, 400Mbps, 8000Mbps would be deprecated and only shape allowed would be `Flexible` *Note: When updating shape for a load balancer, all existing connections to the load balancer will be reset during the update process. Also `10Mbps-Micro` shape cannot be updated to any other shape nor can any other shape be updated to `10Mbps-Micro`.
     */
    shape?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The configuration details to create load balancer using Flexible shape. This is required only if shapeName is `Flexible`.
     */
    shapeDetails?: pulumi.Input<inputs.LoadBalancer.LoadBalancerShapeDetails | undefined>;
    /**
     * The current state of the load balancer.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * An array of subnet [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     *
     *
     * ** 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
     */
    subnetIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * System 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). System tags can be viewed by users, but can only be created by the system.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The date and time the load balancer was created, in the format defined by RFC3339.  Example: `2016-08-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a LoadBalancer resource.
 */
export interface LoadBalancerArgs {
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which to create the load balancer.
     */
    compartmentId: pulumi.Input<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"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `exampleLoadBalancer`
     */
    displayName: 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>;
    /**
     * IPv6 is currently supported only in the Government Cloud. Whether the load balancer has an IPv4 or IPv6 IP address.
     *
     * If "IPV4", the service assigns an IPv4 address and the load balancer supports IPv4 traffic.
     *
     * If "IPV6", the service assigns an IPv6 address and the load balancer supports IPv6 traffic.
     *
     * Example: "ipMode":"IPV6"
     */
    ipMode?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Applies to IPV6 LB creation only.
     *
     * Used to disambiguate which subnet prefix should be used to create an IPv6 LB.
     *
     * Example: "2002::1234:abcd:ffff:c0a8:101/64"
     */
    ipv6subnetCidr?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Whether or not the load balancer has delete protection enabled.
     *
     * If "true", the loadbalancer will be protected against deletion if configured to accept traffic.
     *
     * If "false", the loadbalancer will not be protected against deletion.
     *
     * Delete protection will not be enabled unless a value of "true" is provided. Example: `true`
     */
    isDeleteProtectionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the load balancer has a VCN-local (private) IP address.
     *
     * If "true", the service assigns a private IP address to the load balancer.
     *
     * If "false", the service assigns a public IP address to the load balancer.
     *
     * A public load balancer is accessible from the internet, depending on your VCN's [security list rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). For more information about public and private load balancers, see [How Load Balancing Works](https://docs.cloud.oracle.com/iaas/Content/Balance/Concepts/balanceoverview.htm#how-load-balancing-works).
     *
     * Example: `true`
     */
    isPrivate?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Whether or not the load balancer has the Request Id feature enabled for HTTP listeners.
     *
     * If "true", the load balancer will attach a unique request id header to every request passed through from the load balancer to load balancer backends. This same request id header also will be added to the response the lb received from the backend handling the request before the load balancer returns the response to the requestor. The name of the unique request id header is set the by value of requestIdHeader.
     *
     * If "false", the loadbalancer not add this unique request id header to either the request passed through to the load balancer backends nor to the reponse returned to the user.
     *
     * New load balancers have the Request Id feature disabled unless isRequestIdEnabled is set to true.
     *
     * Example: `true`
     */
    isRequestIdEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) An array of NSG [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this load balancer.
     *
     * During the load balancer's creation, the service adds the new load balancer to the specified NSGs.
     *
     * The benefits of using NSGs with the load balancer include:
     * *  NSGs define network security rules to govern ingress and egress traffic for the load balancer.
     * *  The network security rules of other resources can reference the NSGs associated with the load balancer to ensure access.
     *
     * Example: `["ocid1.nsg.oc1.phx.unique_ID"]`
     */
    networkSecurityGroupIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) If isRequestIdEnabled is true then this field contains the name of the header field that contains the unique request id that is attached to every request from the load balancer to the load balancer backends and to every response from the load balancer.
     *
     * If a request to the load balancer already contains a header with same name as specified in requestIdHeader then the load balancer will not change the value of that field.
     *
     * If isRequestIdEnabled is false then this field is ignored.
     *
     * If this field is not set or is set to "" then this field defaults to X-Request-Id
     *
     * **Notes:**
     * * Unless the header name is "" it must start with "X-" prefix.
     * * Setting the header name to "" will set it to the default: X-Request-Id.
     */
    requestIdHeader?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) An array of reserved Ips. Pre-created public IP that will be used as the IP of this load balancer. This reserved IP will not be deleted when load balancer is deleted. This ip should not be already mapped to any other resource.
     */
    reservedIps?: pulumi.Input<pulumi.Input<inputs.LoadBalancer.LoadBalancerReservedIp>[] | undefined>;
    /**
     * (Updatable) Extended Defined tags for ZPR for this resource. Each key is predefined and scoped to a namespace.  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value":"42","mode":"audit", "usagetype" : "zpr"}}}`
     */
    securityAttributes?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A template that determines the total pre-provisioned bandwidth (ingress plus egress). To get a list of available shapes, use the [ListShapes](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancerShape/ListShapes) operation.  Example: `flexible` NOTE: After May 2023, Fixed shapes - 10Mbps, 100Mbps, 400Mbps, 8000Mbps would be deprecated and only shape allowed would be `Flexible` *Note: When updating shape for a load balancer, all existing connections to the load balancer will be reset during the update process. Also `10Mbps-Micro` shape cannot be updated to any other shape nor can any other shape be updated to `10Mbps-Micro`.
     */
    shape: pulumi.Input<string>;
    /**
     * (Updatable) The configuration details to create load balancer using Flexible shape. This is required only if shapeName is `Flexible`.
     */
    shapeDetails?: pulumi.Input<inputs.LoadBalancer.LoadBalancerShapeDetails | undefined>;
    /**
     * An array of subnet [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     *
     *
     * ** 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
     */
    subnetIds: pulumi.Input<pulumi.Input<string>[]>;
}
//# sourceMappingURL=loadBalancer.d.ts.map