import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * A Cloud Identity resource representing a Group.
 *
 * To get more information about Group, see:
 *
 * * [API documentation](https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/identity/docs/how-to/setup)
 *
 * > **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,
 * you must specify a `billingProject` and set `userProjectOverride` to true
 * in the provider configuration. Otherwise the Cloud Identity API will return a 403 error.
 * Your account must have the `serviceusage.services.use` permission on the
 * `billingProject` you defined.
 *
 * ## Example Usage
 *
 * ### Cloud Identity Groups Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const cloudIdentityGroupBasic = new gcp.cloudidentity.Group("cloud_identity_group_basic", {
 *     displayName: "my-identity-group",
 *     initialGroupConfig: "WITH_INITIAL_OWNER",
 *     parent: "customers/A01b123xz",
 *     groupKey: {
 *         id: "my-identity-group@example.com",
 *     },
 *     labels: {
 *         "cloudidentity.googleapis.com/groups.discussion_forum": "",
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Group can be imported using any of these accepted formats:
 *
 * * `{{name}}`
 *
 * When using the `pulumi import` command, Group can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:cloudidentity/group:Group default {{name}}
 * ```
 */
export declare class Group extends pulumi.CustomResource {
    /**
     * Get an existing Group 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?: GroupState, opts?: pulumi.CustomResourceOptions): Group;
    /**
     * Returns true if the given object is an instance of Group.  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 Group;
    /**
     * Additional group keys associated with the Group
     * Structure is documented below.
     */
    readonly additionalGroupKeys: pulumi.Output<outputs.cloudidentity.GroupAdditionalGroupKey[]>;
    /**
     * The time when the Group was created.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    readonly deletionPolicy: pulumi.Output<string>;
    /**
     * An extended description to help users determine the purpose of a Group.
     * Must not be longer than 4,096 characters.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The display name of the Group.
     */
    readonly displayName: pulumi.Output<string | undefined>;
    /**
     * EntityKey of the Group.
     * Structure is documented below.
     */
    readonly groupKey: pulumi.Output<outputs.cloudidentity.GroupGroupKey>;
    /**
     * The initial configuration options for creating a Group.
     * See the
     * [API reference](https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups/create#initialgroupconfig)
     * for possible values.
     * Default value is `EMPTY`.
     * Possible values are: `INITIAL_GROUP_CONFIG_UNSPECIFIED`, `WITH_INITIAL_OWNER`, `EMPTY`.
     */
    readonly initialGroupConfig: pulumi.Output<string | undefined>;
    /**
     * One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.
     * Google Groups are the default type of group and have a label with a key of cloudidentity.googleapis.com/groups.discussion_forum and an empty value.
     * Existing Google Groups can have an additional label with a key of cloudidentity.googleapis.com/groups.security and an empty value added to them. This is an immutable change and the security label cannot be removed once added.
     * Dynamic groups have a label with a key of cloudidentity.googleapis.com/groups.dynamic.
     * Identity-mapped groups for Cloud Search have a label with a key of system/groups/external and an empty value.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Resource name of the Group in the format: groups/{group_id}, where groupId
     * is the unique ID assigned to the Group.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The resource name of the entity under which this Group resides in the
     * Cloud Identity resource hierarchy.
     * Must be of the form identitysources/{identity_source_id} for external-identity-mapped
     * groups or customers/{customer_id} for Google Groups.
     */
    readonly parent: pulumi.Output<string>;
    /**
     * The time when the Group was last updated.
     */
    readonly updateTime: pulumi.Output<string>;
    /**
     * Create a Group 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: GroupArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Group resources.
 */
export interface GroupState {
    /**
     * Additional group keys associated with the Group
     * Structure is documented below.
     */
    additionalGroupKeys?: pulumi.Input<pulumi.Input<inputs.cloudidentity.GroupAdditionalGroupKey>[] | undefined>;
    /**
     * The time when the Group was created.
     */
    createTime?: pulumi.Input<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * An extended description to help users determine the purpose of a Group.
     * Must not be longer than 4,096 characters.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * The display name of the Group.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * EntityKey of the Group.
     * Structure is documented below.
     */
    groupKey?: pulumi.Input<inputs.cloudidentity.GroupGroupKey | undefined>;
    /**
     * The initial configuration options for creating a Group.
     * See the
     * [API reference](https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups/create#initialgroupconfig)
     * for possible values.
     * Default value is `EMPTY`.
     * Possible values are: `INITIAL_GROUP_CONFIG_UNSPECIFIED`, `WITH_INITIAL_OWNER`, `EMPTY`.
     */
    initialGroupConfig?: pulumi.Input<string | undefined>;
    /**
     * One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.
     * Google Groups are the default type of group and have a label with a key of cloudidentity.googleapis.com/groups.discussion_forum and an empty value.
     * Existing Google Groups can have an additional label with a key of cloudidentity.googleapis.com/groups.security and an empty value added to them. This is an immutable change and the security label cannot be removed once added.
     * Dynamic groups have a label with a key of cloudidentity.googleapis.com/groups.dynamic.
     * Identity-mapped groups for Cloud Search have a label with a key of system/groups/external and an empty value.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Resource name of the Group in the format: groups/{group_id}, where groupId
     * is the unique ID assigned to the Group.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The resource name of the entity under which this Group resides in the
     * Cloud Identity resource hierarchy.
     * Must be of the form identitysources/{identity_source_id} for external-identity-mapped
     * groups or customers/{customer_id} for Google Groups.
     */
    parent?: pulumi.Input<string | undefined>;
    /**
     * The time when the Group was last updated.
     */
    updateTime?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Group resource.
 */
export interface GroupArgs {
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * An extended description to help users determine the purpose of a Group.
     * Must not be longer than 4,096 characters.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * The display name of the Group.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * EntityKey of the Group.
     * Structure is documented below.
     */
    groupKey: pulumi.Input<inputs.cloudidentity.GroupGroupKey>;
    /**
     * The initial configuration options for creating a Group.
     * See the
     * [API reference](https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups/create#initialgroupconfig)
     * for possible values.
     * Default value is `EMPTY`.
     * Possible values are: `INITIAL_GROUP_CONFIG_UNSPECIFIED`, `WITH_INITIAL_OWNER`, `EMPTY`.
     */
    initialGroupConfig?: pulumi.Input<string | undefined>;
    /**
     * One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.
     * Google Groups are the default type of group and have a label with a key of cloudidentity.googleapis.com/groups.discussion_forum and an empty value.
     * Existing Google Groups can have an additional label with a key of cloudidentity.googleapis.com/groups.security and an empty value added to them. This is an immutable change and the security label cannot be removed once added.
     * Dynamic groups have a label with a key of cloudidentity.googleapis.com/groups.dynamic.
     * Identity-mapped groups for Cloud Search have a label with a key of system/groups/external and an empty value.
     */
    labels: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * The resource name of the entity under which this Group resides in the
     * Cloud Identity resource hierarchy.
     * Must be of the form identitysources/{identity_source_id} for external-identity-mapped
     * groups or customers/{customer_id} for Google Groups.
     */
    parent: pulumi.Input<string>;
}
//# sourceMappingURL=group.d.ts.map