import * as pulumi from "@pulumi/pulumi";
import * as outputs from "../types/output";
/**
 * AddressGroups are used to group IP addresses together for use in firewall policies. This data source allows you to list address groups in a project or organization and location.
 *
 * To get more information about Address Groups, see:
 *
 * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkFirewallPolicies)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/firewall/docs/about-address-groups)
 *
 * ## Example Usage
 *
 * ### Project Level
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const all = gcp.networksecurity.getAddressGroups({
 *     location: "us-central1",
 *     project: "my-project-id",
 * });
 * ```
 *
 * ### Organization Level
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const orgAll = gcp.networksecurity.getAddressGroups({
 *     location: "us-central1",
 *     parent: "organizations/123456789",
 * });
 * ```
 */
export declare function getAddressGroups(args: GetAddressGroupsArgs, opts?: pulumi.InvokeOptions): Promise<GetAddressGroupsResult>;
/**
 * A collection of arguments for invoking getAddressGroups.
 */
export interface GetAddressGroupsArgs {
    /**
     * The location of the Address Group.
     *
     * - - -
     */
    location: string;
    /**
     * The parent of the Address Group. Use `organizations/{organization_id}` for organization-level address groups or `projects/{project_id}` for project-level address groups. Conflicts with `project`.
     *
     * > **Note:** Exactly one of `project` or `parent` should be specified. If neither is set, the project is inferred from the provider configuration.
     */
    parent?: string;
    /**
     * The ID of the project. Conflicts with `parent`.
     */
    project?: string;
}
/**
 * A collection of values returned by getAddressGroups.
 */
export interface GetAddressGroupsResult {
    /**
     * A list of Address Groups in the selected project or organization and location. Structure is defined below.
     */
    readonly addressGroups: outputs.networksecurity.GetAddressGroupsAddressGroup[];
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly location: string;
    readonly parent?: string;
    /**
     * The ID of the project in which the resource belongs.
     */
    readonly project: string;
}
/**
 * AddressGroups are used to group IP addresses together for use in firewall policies. This data source allows you to list address groups in a project or organization and location.
 *
 * To get more information about Address Groups, see:
 *
 * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkFirewallPolicies)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/firewall/docs/about-address-groups)
 *
 * ## Example Usage
 *
 * ### Project Level
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const all = gcp.networksecurity.getAddressGroups({
 *     location: "us-central1",
 *     project: "my-project-id",
 * });
 * ```
 *
 * ### Organization Level
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const orgAll = gcp.networksecurity.getAddressGroups({
 *     location: "us-central1",
 *     parent: "organizations/123456789",
 * });
 * ```
 */
export declare function getAddressGroupsOutput(args: GetAddressGroupsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetAddressGroupsResult>;
/**
 * A collection of arguments for invoking getAddressGroups.
 */
export interface GetAddressGroupsOutputArgs {
    /**
     * The location of the Address Group.
     *
     * - - -
     */
    location: pulumi.Input<string>;
    /**
     * The parent of the Address Group. Use `organizations/{organization_id}` for organization-level address groups or `projects/{project_id}` for project-level address groups. Conflicts with `project`.
     *
     * > **Note:** Exactly one of `project` or `parent` should be specified. If neither is set, the project is inferred from the provider configuration.
     */
    parent?: pulumi.Input<string | undefined>;
    /**
     * The ID of the project. Conflicts with `parent`.
     */
    project?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=getAddressGroups.d.ts.map