import * as pulumi from "@pulumi/pulumi";
/**
 * This resource provides the Hostname resource in Oracle Cloud Infrastructure Load Balancer service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/loadbalancer/latest/Hostname
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/load_balancer
 *
 * Adds a hostname resource to the specified load balancer. For more information, see
 * [Managing Request Routing](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/managingrequest.htm).
 *
 * Set the terraform flag `lifecycle { createBeforeDestroy = true }` in your hostname to facilitate rotating hostnames.
 * A hostname cannot be deleted if it is attached to another resource (a listener for example).
 * Because hostnameNames in the listener is an updatable parameter, terraform will attempt to recreate the hostname first and then update the listener but the hostname cannot be deleted while it is attached to a listener so it will fail.
 * Setting the flag makes it so that when a hostname is recreated, the new hostname will be created first before the old one gets deleted.
 *
 * ## Import
 *
 * Hostnames can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:LoadBalancer/hostname:Hostname test_hostname "loadBalancers/{loadBalancerId}/hostnames/{name}"
 * ```
 */
export declare class Hostname extends pulumi.CustomResource {
    /**
     * Get an existing Hostname 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?: HostnameState, opts?: pulumi.CustomResourceOptions): Hostname;
    /**
     * Returns true if the given object is an instance of Hostname.  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 Hostname;
    /**
     * (Updatable) A virtual hostname. For more information about virtual hostname string construction, see [Managing Request Routing](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/managingrequest.htm#routing).  Example: `app.example.com`
     */
    readonly hostname: pulumi.Output<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer to add the hostname to.
     */
    readonly loadBalancerId: pulumi.Output<string>;
    /**
     * A friendly name for the hostname resource. It must be unique and it cannot be changed. Avoid entering confidential information.  Example: `exampleHostname001`
     *
     *
     * ** 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 name: pulumi.Output<string>;
    readonly state: pulumi.Output<string>;
    /**
     * Create a Hostname 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: HostnameArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Hostname resources.
 */
export interface HostnameState {
    /**
     * (Updatable) A virtual hostname. For more information about virtual hostname string construction, see [Managing Request Routing](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/managingrequest.htm#routing).  Example: `app.example.com`
     */
    hostname?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer to add the hostname to.
     */
    loadBalancerId?: pulumi.Input<string | undefined>;
    /**
     * A friendly name for the hostname resource. It must be unique and it cannot be changed. Avoid entering confidential information.  Example: `exampleHostname001`
     *
     *
     * ** 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
     */
    name?: pulumi.Input<string | undefined>;
    state?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Hostname resource.
 */
export interface HostnameArgs {
    /**
     * (Updatable) A virtual hostname. For more information about virtual hostname string construction, see [Managing Request Routing](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/managingrequest.htm#routing).  Example: `app.example.com`
     */
    hostname: pulumi.Input<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer to add the hostname to.
     */
    loadBalancerId: pulumi.Input<string>;
    /**
     * A friendly name for the hostname resource. It must be unique and it cannot be changed. Avoid entering confidential information.  Example: `exampleHostname001`
     *
     *
     * ** 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
     */
    name?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=hostname.d.ts.map