import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This data source provides the list of Public Ips in Oracle Cloud Infrastructure Core service.
 *
 * Lists the [PublicIp](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/PublicIp/) objects
 * in the specified compartment. You can filter the list by using query parameters.
 *
 * To list your reserved public IPs:
 *   * Set `scope` = `REGION`  (required)
 *   * Leave the `availabilityDomain` parameter empty
 *   * Set `lifetime` = `RESERVED`
 *
 * To list the ephemeral public IPs assigned to a regional entity such as a NAT gateway:
 *   * Set `scope` = `REGION`  (required)
 *   * Leave the `availabilityDomain` parameter empty
 *   * Set `lifetime` = `EPHEMERAL`
 *
 * To list the ephemeral public IPs assigned to private IPs:
 *   * Set `scope` = `AVAILABILITY_DOMAIN` (required)
 *   * Set the `availabilityDomain` parameter to the desired availability domain (required)
 *   * Set `lifetime` = `EPHEMERAL`
 *
 * **Note:** An ephemeral public IP assigned to a private IP
 * is always in the same availability domain and compartment as the private IP.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testPublicIps = oci.core.getPublicIps({
 *     compartmentId: compartmentId,
 *     scope: publicIpScope,
 *     availabilityDomain: publicIpAvailabilityDomain,
 *     lifetime: publicIpLifetime,
 *     publicIpPoolId: testPublicIpPool.id,
 * });
 * ```
 */
export declare function getPublicIps(args: GetPublicIpsArgs, opts?: pulumi.InvokeOptions): Promise<GetPublicIpsResult>;
/**
 * A collection of arguments for invoking getPublicIps.
 */
export interface GetPublicIpsArgs {
    /**
     * The name of the availability domain.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: string;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
     */
    compartmentId: string;
    filters?: inputs.Core.GetPublicIpsFilter[];
    /**
     * A filter to return only public IPs that match given lifetime.
     */
    lifetime?: string;
    /**
     * A filter to return only resources that belong to the given public IP pool.
     */
    publicIpPoolId?: string;
    /**
     * Whether the public IP is regional or specific to a particular availability domain.
     * * `REGION`: The public IP exists within a region and is assigned to a regional entity (such as a [NatGateway](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/NatGateway/)), or can be assigned to a private IP in any availability domain in the region. Reserved public IPs have `scope` = `REGION`, as do ephemeral public IPs assigned to a regional entity.
     * * `AVAILABILITY_DOMAIN`: The public IP exists within the availability domain of the entity it's assigned to, which is specified by the `availabilityDomain` property of the public IP object. Ephemeral public IPs that are assigned to private IPs have `scope` = `AVAILABILITY_DOMAIN`.
     */
    scope: string;
}
/**
 * A collection of values returned by getPublicIps.
 */
export interface GetPublicIpsResult {
    /**
     * The public IP's availability domain. This property is set only for ephemeral public IPs that are assigned to a private IP (that is, when the `scope` of the public IP is set to AVAILABILITY_DOMAIN). The value is the availability domain of the assigned private IP.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain?: string;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the public IP. For an ephemeral public IP, this is the compartment of its assigned entity (which can be a private IP or a regional entity such as a NAT gateway). For a reserved public IP that is currently assigned, its compartment can be different from the assigned private IP's.
     */
    readonly compartmentId: string;
    readonly filters?: outputs.Core.GetPublicIpsFilter[];
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    /**
     * Defines when the public IP is deleted and released back to Oracle's public IP pool.
     * * `EPHEMERAL`: The lifetime is tied to the lifetime of its assigned entity. An ephemeral public IP must always be assigned to an entity. If the assigned entity is a private IP, the ephemeral public IP is automatically deleted when the private IP is deleted, when the VNIC is terminated, or when the instance is terminated. If the assigned entity is a [NatGateway](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/NatGateway/), the ephemeral public IP is automatically deleted when the NAT gateway is terminated.
     * * `RESERVED`: You control the public IP's lifetime. You can delete a reserved public IP whenever you like. It does not need to be assigned to a private IP at all times.
     */
    readonly lifetime?: string;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the pool object created in the current tenancy.
     */
    readonly publicIpPoolId?: string;
    /**
     * The list of public_ips.
     */
    readonly publicIps: outputs.Core.GetPublicIpsPublicIp[];
    /**
     * Whether the public IP is regional or specific to a particular availability domain.
     * * `REGION`: The public IP exists within a region and is assigned to a regional entity (such as a [NatGateway](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/NatGateway/)), or can be assigned to a private IP in any availability domain in the region. Reserved public IPs and ephemeral public IPs assigned to a regional entity have `scope` = `REGION`.
     * * `AVAILABILITY_DOMAIN`: The public IP exists within the availability domain of the entity it's assigned to, which is specified by the `availabilityDomain` property of the public IP object. Ephemeral public IPs that are assigned to private IPs have `scope` = `AVAILABILITY_DOMAIN`.
     */
    readonly scope: string;
}
/**
 * This data source provides the list of Public Ips in Oracle Cloud Infrastructure Core service.
 *
 * Lists the [PublicIp](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/PublicIp/) objects
 * in the specified compartment. You can filter the list by using query parameters.
 *
 * To list your reserved public IPs:
 *   * Set `scope` = `REGION`  (required)
 *   * Leave the `availabilityDomain` parameter empty
 *   * Set `lifetime` = `RESERVED`
 *
 * To list the ephemeral public IPs assigned to a regional entity such as a NAT gateway:
 *   * Set `scope` = `REGION`  (required)
 *   * Leave the `availabilityDomain` parameter empty
 *   * Set `lifetime` = `EPHEMERAL`
 *
 * To list the ephemeral public IPs assigned to private IPs:
 *   * Set `scope` = `AVAILABILITY_DOMAIN` (required)
 *   * Set the `availabilityDomain` parameter to the desired availability domain (required)
 *   * Set `lifetime` = `EPHEMERAL`
 *
 * **Note:** An ephemeral public IP assigned to a private IP
 * is always in the same availability domain and compartment as the private IP.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testPublicIps = oci.core.getPublicIps({
 *     compartmentId: compartmentId,
 *     scope: publicIpScope,
 *     availabilityDomain: publicIpAvailabilityDomain,
 *     lifetime: publicIpLifetime,
 *     publicIpPoolId: testPublicIpPool.id,
 * });
 * ```
 */
export declare function getPublicIpsOutput(args: GetPublicIpsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetPublicIpsResult>;
/**
 * A collection of arguments for invoking getPublicIps.
 */
export interface GetPublicIpsOutputArgs {
    /**
     * The name of the availability domain.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
     */
    compartmentId: pulumi.Input<string>;
    filters?: pulumi.Input<pulumi.Input<inputs.Core.GetPublicIpsFilterArgs>[] | undefined>;
    /**
     * A filter to return only public IPs that match given lifetime.
     */
    lifetime?: pulumi.Input<string | undefined>;
    /**
     * A filter to return only resources that belong to the given public IP pool.
     */
    publicIpPoolId?: pulumi.Input<string | undefined>;
    /**
     * Whether the public IP is regional or specific to a particular availability domain.
     * * `REGION`: The public IP exists within a region and is assigned to a regional entity (such as a [NatGateway](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/NatGateway/)), or can be assigned to a private IP in any availability domain in the region. Reserved public IPs have `scope` = `REGION`, as do ephemeral public IPs assigned to a regional entity.
     * * `AVAILABILITY_DOMAIN`: The public IP exists within the availability domain of the entity it's assigned to, which is specified by the `availabilityDomain` property of the public IP object. Ephemeral public IPs that are assigned to private IPs have `scope` = `AVAILABILITY_DOMAIN`.
     */
    scope: pulumi.Input<string>;
}
//# sourceMappingURL=getPublicIps.d.ts.map