import * as pulumi from "@pulumi/pulumi";
/**
 * Allows management of a Google Cloud Platform folder. For more information see
 * [the official documentation](https://docs.cloud.google.com/resource-manager/docs/creating-managing-folders)
 * and
 * [API](https://docs.cloud.google.com/resource-manager/reference/rest/v2/folders).
 *
 * A folder can contain projects, other folders, or a combination of both. You can use folders to group projects under an organization in a hierarchy. For example, your organization might contain multiple departments, each with its own set of Cloud Platform resources. Folders allows you to group these resources on a per-department basis. Folders are used to group resources that share common IAM policies.
 *
 * Folders created live inside an Organization. See the [Organization documentation](https://docs.cloud.google.com/resource-manager/docs/quickstarts) for more details.
 *
 * The service account used to run the provider when creating a `gcp.organizations.Folder`
 * resource must have `roles/resourcemanager.folderCreator`. See the
 * [Access Control for Folders Using IAM](https://docs.cloud.google.com/resource-manager/docs/access-control-folders)
 * doc for more information.
 *
 * > It may take a while for the attached tag bindings to be deleted after the folder is scheduled to be deleted.
 *
 * ## Import
 *
 * Folders can be imported using the folder's id, e.g.
 *
 * * `folders/{{folder_id}}`
 *
 * * `{{folder_id}}`
 *
 * When using the `pulumi import` command, Folders can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:organizations/folder:Folder default {{folder_id}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:organizations/folder:Folder default folders/{{folder_id}}
 * ```
 */
export declare class Folder extends pulumi.CustomResource {
    /**
     * Get an existing Folder 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?: FolderState, opts?: pulumi.CustomResourceOptions): Folder;
    /**
     * Returns true if the given object is an instance of Folder.  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 Folder;
    /**
     * Optional capabilities configured for this folder.
     */
    readonly configuredCapabilities: pulumi.Output<string[]>;
    /**
     * Timestamp when the Folder was created. Assigned by the server.
     * A timestamp in RFC3339 UTC "Zulu" format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".
     */
    readonly createTime: pulumi.Output<string>;
    readonly deletionProtection: pulumi.Output<boolean | undefined>;
    /**
     * The folder’s display name.
     * A folder’s display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * The folder id from the name "folders/{folder_id}"
     */
    readonly folderId: pulumi.Output<string>;
    /**
     * The lifecycle state of the folder such as `ACTIVE` or `DELETE_REQUESTED`.
     */
    readonly lifecycleState: pulumi.Output<string>;
    /**
     * Management Project associated with this folder (if capability is enabled).
     */
    readonly managementProject: pulumi.Output<string>;
    /**
     * The resource name of the Folder. Its format is folders/{folder_id}.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The resource name of the parent Folder or Organization.
     * Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
     */
    readonly parent: pulumi.Output<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when  mutated. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the `gcp.tags.TagValue` resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Create a Folder 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: FolderArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Folder resources.
 */
export interface FolderState {
    /**
     * Optional capabilities configured for this folder.
     */
    configuredCapabilities?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Timestamp when the Folder was created. Assigned by the server.
     * A timestamp in RFC3339 UTC "Zulu" format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".
     */
    createTime?: pulumi.Input<string>;
    deletionProtection?: pulumi.Input<boolean>;
    /**
     * The folder’s display name.
     * A folder’s display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters.
     */
    displayName?: pulumi.Input<string>;
    /**
     * The folder id from the name "folders/{folder_id}"
     */
    folderId?: pulumi.Input<string>;
    /**
     * The lifecycle state of the folder such as `ACTIVE` or `DELETE_REQUESTED`.
     */
    lifecycleState?: pulumi.Input<string>;
    /**
     * Management Project associated with this folder (if capability is enabled).
     */
    managementProject?: pulumi.Input<string>;
    /**
     * The resource name of the Folder. Its format is folders/{folder_id}.
     */
    name?: pulumi.Input<string>;
    /**
     * The resource name of the parent Folder or Organization.
     * Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
     */
    parent?: pulumi.Input<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when  mutated. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the `gcp.tags.TagValue` resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
/**
 * The set of arguments for constructing a Folder resource.
 */
export interface FolderArgs {
    deletionProtection?: pulumi.Input<boolean>;
    /**
     * The folder’s display name.
     * A folder’s display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters.
     */
    displayName: pulumi.Input<string>;
    /**
     * The resource name of the parent Folder or Organization.
     * Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
     */
    parent: pulumi.Input<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when  mutated. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the `gcp.tags.TagValue` resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
