import * as pulumi from "@pulumi/pulumi";
/**
 * This resource provides the Listener resource in Oracle Cloud Infrastructure Network Load Balancer service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/networkloadbalancer/latest/Listener
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/network_load_balancer
 *
 * Adds a listener to a network load balancer.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testListener = new oci.networkloadbalancer.Listener("test_listener", {
 *     defaultBackendSetName: testBackendSet.name,
 *     name: listenerName,
 *     networkLoadBalancerId: testNetworkLoadBalancer.id,
 *     port: Number(listenerPort),
 *     protocol: listenerProtocol,
 *     ipVersion: listenerIpVersion,
 *     isPpv2enabled: listenerIsPpv2enabled === "true",
 *     l3ipIdleTimeout: Number(listenerL3ipIdleTimeout),
 *     tcpIdleTimeout: Number(listenerTcpIdleTimeout),
 *     udpIdleTimeout: Number(listenerUdpIdleTimeout),
 * });
 * ```
 *
 * ## Import
 *
 * Listeners can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:NetworkLoadBalancer/listener:Listener test_listener "networkLoadBalancers/{networkLoadBalancerId}/listeners/{listenerName}"
 * ```
 */
export declare class Listener extends pulumi.CustomResource {
    /**
     * Get an existing Listener 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?: ListenerState, opts?: pulumi.CustomResourceOptions): Listener;
    /**
     * Returns true if the given object is an instance of Listener.  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 Listener;
    /**
     * (Updatable) The name of the associated backend set.  Example: `exampleBackendSet`
     */
    readonly defaultBackendSetName: pulumi.Output<string>;
    /**
     * (Updatable) IP version associated with the listener.
     */
    readonly ipVersion: pulumi.Output<string>;
    /**
     * (Updatable) Property to enable/disable PPv2 feature for this listener.
     */
    readonly isPpv2enabled: pulumi.Output<boolean>;
    /**
     * (Updatable) The duration for L3IP idle timeout in seconds. Example: `200`
     */
    readonly l3ipIdleTimeout: pulumi.Output<number>;
    /**
     * A friendly name for the listener. It must be unique and it cannot be changed.  Example: `exampleListener`
     */
    readonly name: pulumi.Output<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network load balancer to update.
     */
    readonly networkLoadBalancerId: pulumi.Output<string>;
    /**
     * (Updatable) The communication port for the listener.  Example: `80`
     */
    readonly port: pulumi.Output<number>;
    /**
     * (Updatable) The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead.  Example: `TCP`
     */
    readonly protocol: pulumi.Output<string>;
    /**
     * (Updatable) The duration for TCP idle timeout in seconds. Example: `300`
     */
    readonly tcpIdleTimeout: pulumi.Output<number>;
    /**
     * (Updatable) The duration for UDP idle timeout in seconds. Example: `120`
     *
     *
     * ** 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 udpIdleTimeout: pulumi.Output<number>;
    /**
     * Create a Listener 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: ListenerArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Listener resources.
 */
export interface ListenerState {
    /**
     * (Updatable) The name of the associated backend set.  Example: `exampleBackendSet`
     */
    defaultBackendSetName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) IP version associated with the listener.
     */
    ipVersion?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Property to enable/disable PPv2 feature for this listener.
     */
    isPpv2enabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The duration for L3IP idle timeout in seconds. Example: `200`
     */
    l3ipIdleTimeout?: pulumi.Input<number | undefined>;
    /**
     * A friendly name for the listener. It must be unique and it cannot be changed.  Example: `exampleListener`
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network load balancer to update.
     */
    networkLoadBalancerId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The communication port for the listener.  Example: `80`
     */
    port?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead.  Example: `TCP`
     */
    protocol?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The duration for TCP idle timeout in seconds. Example: `300`
     */
    tcpIdleTimeout?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The duration for UDP idle timeout in seconds. Example: `120`
     *
     *
     * ** 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
     */
    udpIdleTimeout?: pulumi.Input<number | undefined>;
}
/**
 * The set of arguments for constructing a Listener resource.
 */
export interface ListenerArgs {
    /**
     * (Updatable) The name of the associated backend set.  Example: `exampleBackendSet`
     */
    defaultBackendSetName: pulumi.Input<string>;
    /**
     * (Updatable) IP version associated with the listener.
     */
    ipVersion?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Property to enable/disable PPv2 feature for this listener.
     */
    isPpv2enabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The duration for L3IP idle timeout in seconds. Example: `200`
     */
    l3ipIdleTimeout?: pulumi.Input<number | undefined>;
    /**
     * A friendly name for the listener. It must be unique and it cannot be changed.  Example: `exampleListener`
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network load balancer to update.
     */
    networkLoadBalancerId: pulumi.Input<string>;
    /**
     * (Updatable) The communication port for the listener.  Example: `80`
     */
    port: pulumi.Input<number>;
    /**
     * (Updatable) The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead.  Example: `TCP`
     */
    protocol: pulumi.Input<string>;
    /**
     * (Updatable) The duration for TCP idle timeout in seconds. Example: `300`
     */
    tcpIdleTimeout?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The duration for UDP idle timeout in seconds. Example: `120`
     *
     *
     * ** 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
     */
    udpIdleTimeout?: pulumi.Input<number | undefined>;
}
//# sourceMappingURL=listener.d.ts.map