import * as pulumi from "@pulumi/pulumi";
import * as outputs from "../types/output";
/**
 * List IP addresses in a project. For more information see
 * the official API [list](https://cloud.google.com/compute/docs/reference/latest/addresses/list) and
 * [aggregated list](https://cloud.google.com/compute/docs/reference/rest/v1/addresses/aggregatedList) documentation.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const test = gcp.compute.getAddresses({
 *     filter: "name:test-*",
 * });
 * const prod = new gcp.dns.ManagedZone("prod", {
 *     name: "prod-zone",
 *     dnsName: "prod.mydomain.com.",
 * });
 * const frontend = new gcp.dns.RecordSet("frontend", {
 *     name: pulumi.interpolate`frontend.${prod.dnsName}`,
 *     type: "A",
 *     ttl: 300,
 *     managedZone: prod.name,
 *     rrdatas: test.then(test => test.addresses.map(__item => __item.address)),
 * });
 * ```
 */
export declare function getAddresses(args?: GetAddressesArgs, opts?: pulumi.InvokeOptions): Promise<GetAddressesResult>;
/**
 * A collection of arguments for invoking getAddresses.
 */
export interface GetAddressesArgs {
    /**
     * A filter expression that
     * filters resources listed in the response. The expression must specify
     * the field name, an operator, and the value that you want to use for
     * filtering. The value must be a string, a number, or a boolean. The
     * operator must be either "=", "!=", ">", "<", "<=", ">=" or ":". For
     * example, if you are filtering Compute Engine instances, you can
     * exclude instances named "example-instance" by specifying "name !=
     * example-instance". The ":" operator can be used with string fields to
     * match substrings. For non-string fields it is equivalent to the "="
     * operator. The ":*" comparison can be used to test whether a key has
     * been defined. For example, to find all objects with "owner" label
     * use: """ labels.owner:* """ You can also filter nested fields. For
     * example, you could specify "scheduling.automaticRestart = false" to
     * include instances only if they are not scheduled for automatic
     * restarts. You can use filtering on nested fields to filter based on
     * resource labels. To filter on multiple expressions, provide each
     * separate expression within parentheses. For example: """
     * (scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")
     * """ By default, each expression is an "AND" expression. However, you
     * can include "AND" and "OR" expressions explicitly. For example: """
     * (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell")
     * AND (scheduling.automaticRestart = true)
     */
    filter?: string;
    /**
     * The google project in which addresses are listed.
     * Defaults to provider's configuration if missing.
     */
    project?: string;
    /**
     * Region that should be considered to search addresses.
     * All regions are considered if missing.
     */
    region?: string;
}
/**
 * A collection of values returned by getAddresses.
 */
export interface GetAddressesResult {
    /**
     * A list of addresses matching the filter. Structure is defined below.
     */
    readonly addresses: outputs.compute.GetAddressesAddress[];
    readonly filter?: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly project: string;
    /**
     * The region in which the address resides.
     */
    readonly region?: string;
}
/**
 * List IP addresses in a project. For more information see
 * the official API [list](https://cloud.google.com/compute/docs/reference/latest/addresses/list) and
 * [aggregated list](https://cloud.google.com/compute/docs/reference/rest/v1/addresses/aggregatedList) documentation.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const test = gcp.compute.getAddresses({
 *     filter: "name:test-*",
 * });
 * const prod = new gcp.dns.ManagedZone("prod", {
 *     name: "prod-zone",
 *     dnsName: "prod.mydomain.com.",
 * });
 * const frontend = new gcp.dns.RecordSet("frontend", {
 *     name: pulumi.interpolate`frontend.${prod.dnsName}`,
 *     type: "A",
 *     ttl: 300,
 *     managedZone: prod.name,
 *     rrdatas: test.then(test => test.addresses.map(__item => __item.address)),
 * });
 * ```
 */
export declare function getAddressesOutput(args?: GetAddressesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetAddressesResult>;
/**
 * A collection of arguments for invoking getAddresses.
 */
export interface GetAddressesOutputArgs {
    /**
     * A filter expression that
     * filters resources listed in the response. The expression must specify
     * the field name, an operator, and the value that you want to use for
     * filtering. The value must be a string, a number, or a boolean. The
     * operator must be either "=", "!=", ">", "<", "<=", ">=" or ":". For
     * example, if you are filtering Compute Engine instances, you can
     * exclude instances named "example-instance" by specifying "name !=
     * example-instance". The ":" operator can be used with string fields to
     * match substrings. For non-string fields it is equivalent to the "="
     * operator. The ":*" comparison can be used to test whether a key has
     * been defined. For example, to find all objects with "owner" label
     * use: """ labels.owner:* """ You can also filter nested fields. For
     * example, you could specify "scheduling.automaticRestart = false" to
     * include instances only if they are not scheduled for automatic
     * restarts. You can use filtering on nested fields to filter based on
     * resource labels. To filter on multiple expressions, provide each
     * separate expression within parentheses. For example: """
     * (scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")
     * """ By default, each expression is an "AND" expression. However, you
     * can include "AND" and "OR" expressions explicitly. For example: """
     * (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell")
     * AND (scheduling.automaticRestart = true)
     */
    filter?: pulumi.Input<string>;
    /**
     * The google project in which addresses are listed.
     * Defaults to provider's configuration if missing.
     */
    project?: pulumi.Input<string>;
    /**
     * Region that should be considered to search addresses.
     * All regions are considered if missing.
     */
    region?: pulumi.Input<string>;
}
