import * as pulumi from "@pulumi/pulumi";
import { input as inputs, output as outputs } from "../types";
/**
 * Manages a Workspace desktop resource within HuaweiCloud.
 *
 * > **NOTE:** Before creating Workspace desktop, ensure that the Workspace service has been registered.
 *
 * ## Example Usage
 *
 * ## Import
 *
 * Desktops can be imported using the `id`, e.g. bash
 *
 * ```sh
 *  $ pulumi import huaweicloud:Workspace/desktop:Desktop test 339d2539-e945-4090-a08d-c16badc0c6bb
 * ```
 *
 *  Note that the imported state may not be identical to your resource definition, due to some attributes missing from the API response. The missing attributes include`user_email`, `delete_user`, `image_type`, `vpc_id`, `power_action`, `power_action_type` and `email_notification`. It is generally recommended running `terraform plan` after importing a desktop. You can then decide if changes should be applied to the desktop, or the resource definition should be updated to align with the desktop. Also you can ignore changes as below. hcl resource "huaweicloud_workspace_desktop" "test" {
 *
 *  ...
 *
 *  lifecycle {
 *
 *  ignore_changes = [
 *
 *  user_email, delete_user, image_type, vpc_id, power_action, power_action_type, email_notification,
 *
 *  ]
 *
 *  } }
 */
export declare class Desktop extends pulumi.CustomResource {
    /**
     * Get an existing Desktop 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?: DesktopState, opts?: pulumi.CustomResourceOptions): Desktop;
    /**
     * Returns true if the given object is an instance of Desktop.  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 Desktop;
    /**
     * Specifies the availability zone where the desktop is located.
     * Changing this will create a new resource.
     */
    readonly availabilityZone: pulumi.Output<string>;
    /**
     * Specifies the configuration of data volumes.
     * The object structure is documented below.
     */
    readonly dataVolumes: pulumi.Output<outputs.Workspace.DesktopDataVolume[]>;
    /**
     * Specifies whether to delete user associated with this desktop after deleting it.
     * The user can only be successfully deleted if the user has no other desktops.
     */
    readonly deleteUser: pulumi.Output<boolean | undefined>;
    /**
     * Specifies whether to send emails to user mailbox during important
     * operations.
     * Defaults to **false**. Changing this will create a new resource.
     */
    readonly emailNotification: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the enterprise project ID of the desktop.
     */
    readonly enterpriseProjectId: pulumi.Output<string>;
    /**
     * Specifies the flavor ID of desktop.
     */
    readonly flavorId: pulumi.Output<string>;
    /**
     * Specifies the image ID to create the desktop.
     */
    readonly imageId: pulumi.Output<string>;
    /**
     * Specifies the image type. The valid values are as follows:
     * + **market**: The market image.
     * + **gold**: The public image.
     * + **private**: The private image.
     */
    readonly imageType: pulumi.Output<string>;
    /**
     * Specifies the desktop name.
     * The name can contain `1` to `15` characters, only letters, digits and hyphens (-) are allowed.
     * The name must start with a letter or digit and cannot end with a hyphen.
     * Changing this will create a new resource.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Specifies the NIC information corresponding to the desktop.
     * The object structure is documented below.
     */
    readonly nics: pulumi.Output<outputs.Workspace.DesktopNic[]>;
    /**
     * Specifies the power action to be done for the desktop.
     * The valid values are **os-start**, **os-stop**, **reboot**, **os-hibernate**.
     */
    readonly powerAction: pulumi.Output<string>;
    /**
     * Specifies the power action mechanisms for the desktop.
     * The valid values are as follows:
     * + **SOFT**: Normal operation.
     * + **HARD**: Forced operation.
     */
    readonly powerActionType: pulumi.Output<string | undefined>;
    /**
     * The region in which to create the Workspace desktop resource.
     * If omitted, the provider-level region will be used. Changing this will create a new resource.
     */
    readonly region: pulumi.Output<string>;
    /**
     * Specifies the configuration of system volume.
     * The object structure is documented below.
     */
    readonly rootVolume: pulumi.Output<outputs.Workspace.DesktopRootVolume>;
    /**
     * Specifies the ID list of security groups.
     * In addition to the custom security group, it must also contain a security group called **WorkspaceUserSecurityGroup**.
     * Changing this will create a new resource.
     */
    readonly securityGroups: pulumi.Output<string[]>;
    /**
     * The current status of the desktop.
     */
    readonly status: pulumi.Output<string>;
    /**
     * Specifies the key/value pairs of the desktop.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Specifies the user email.
     * Some operations on the desktop (such as creation, deletion) will notify the user by sending an email.
     * Changing this will create a new resource.
     */
    readonly userEmail: pulumi.Output<string>;
    /**
     * Specifies the user group to which the desktop belongs.
     * The valid values are as follows:
     * + **sudo**: Linux administrator group.
     * + **default**: Linux default user group.
     * + **administrators**: Windows administrator group.
     * + **users**: Windows standard user group.
     */
    readonly userGroup: pulumi.Output<string>;
    /**
     * Specifies the user name to which the desktop belongs.
     * The name can contain `1` to `20` characters, only letters, digits, hyphens (-) and underscores (_) are allowed.
     * The name must start with a letter. Changing this will create a new resource.
     */
    readonly userName: pulumi.Output<string>;
    /**
     * Specifies the VPC ID to which the desktop belongs.
     * Changing this will create a new resource.
     */
    readonly vpcId: pulumi.Output<string>;
    /**
     * Create a Desktop 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: DesktopArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Desktop resources.
 */
export interface DesktopState {
    /**
     * Specifies the availability zone where the desktop is located.
     * Changing this will create a new resource.
     */
    availabilityZone?: pulumi.Input<string>;
    /**
     * Specifies the configuration of data volumes.
     * The object structure is documented below.
     */
    dataVolumes?: pulumi.Input<pulumi.Input<inputs.Workspace.DesktopDataVolume>[]>;
    /**
     * Specifies whether to delete user associated with this desktop after deleting it.
     * The user can only be successfully deleted if the user has no other desktops.
     */
    deleteUser?: pulumi.Input<boolean>;
    /**
     * Specifies whether to send emails to user mailbox during important
     * operations.
     * Defaults to **false**. Changing this will create a new resource.
     */
    emailNotification?: pulumi.Input<boolean>;
    /**
     * Specifies the enterprise project ID of the desktop.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the flavor ID of desktop.
     */
    flavorId?: pulumi.Input<string>;
    /**
     * Specifies the image ID to create the desktop.
     */
    imageId?: pulumi.Input<string>;
    /**
     * Specifies the image type. The valid values are as follows:
     * + **market**: The market image.
     * + **gold**: The public image.
     * + **private**: The private image.
     */
    imageType?: pulumi.Input<string>;
    /**
     * Specifies the desktop name.
     * The name can contain `1` to `15` characters, only letters, digits and hyphens (-) are allowed.
     * The name must start with a letter or digit and cannot end with a hyphen.
     * Changing this will create a new resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the NIC information corresponding to the desktop.
     * The object structure is documented below.
     */
    nics?: pulumi.Input<pulumi.Input<inputs.Workspace.DesktopNic>[]>;
    /**
     * Specifies the power action to be done for the desktop.
     * The valid values are **os-start**, **os-stop**, **reboot**, **os-hibernate**.
     */
    powerAction?: pulumi.Input<string>;
    /**
     * Specifies the power action mechanisms for the desktop.
     * The valid values are as follows:
     * + **SOFT**: Normal operation.
     * + **HARD**: Forced operation.
     */
    powerActionType?: pulumi.Input<string>;
    /**
     * The region in which to create the Workspace desktop resource.
     * If omitted, the provider-level region will be used. Changing this will create a new resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the configuration of system volume.
     * The object structure is documented below.
     */
    rootVolume?: pulumi.Input<inputs.Workspace.DesktopRootVolume>;
    /**
     * Specifies the ID list of security groups.
     * In addition to the custom security group, it must also contain a security group called **WorkspaceUserSecurityGroup**.
     * Changing this will create a new resource.
     */
    securityGroups?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The current status of the desktop.
     */
    status?: pulumi.Input<string>;
    /**
     * Specifies the key/value pairs of the desktop.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the user email.
     * Some operations on the desktop (such as creation, deletion) will notify the user by sending an email.
     * Changing this will create a new resource.
     */
    userEmail?: pulumi.Input<string>;
    /**
     * Specifies the user group to which the desktop belongs.
     * The valid values are as follows:
     * + **sudo**: Linux administrator group.
     * + **default**: Linux default user group.
     * + **administrators**: Windows administrator group.
     * + **users**: Windows standard user group.
     */
    userGroup?: pulumi.Input<string>;
    /**
     * Specifies the user name to which the desktop belongs.
     * The name can contain `1` to `20` characters, only letters, digits, hyphens (-) and underscores (_) are allowed.
     * The name must start with a letter. Changing this will create a new resource.
     */
    userName?: pulumi.Input<string>;
    /**
     * Specifies the VPC ID to which the desktop belongs.
     * Changing this will create a new resource.
     */
    vpcId?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Desktop resource.
 */
export interface DesktopArgs {
    /**
     * Specifies the availability zone where the desktop is located.
     * Changing this will create a new resource.
     */
    availabilityZone?: pulumi.Input<string>;
    /**
     * Specifies the configuration of data volumes.
     * The object structure is documented below.
     */
    dataVolumes?: pulumi.Input<pulumi.Input<inputs.Workspace.DesktopDataVolume>[]>;
    /**
     * Specifies whether to delete user associated with this desktop after deleting it.
     * The user can only be successfully deleted if the user has no other desktops.
     */
    deleteUser?: pulumi.Input<boolean>;
    /**
     * Specifies whether to send emails to user mailbox during important
     * operations.
     * Defaults to **false**. Changing this will create a new resource.
     */
    emailNotification?: pulumi.Input<boolean>;
    /**
     * Specifies the enterprise project ID of the desktop.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the flavor ID of desktop.
     */
    flavorId: pulumi.Input<string>;
    /**
     * Specifies the image ID to create the desktop.
     */
    imageId: pulumi.Input<string>;
    /**
     * Specifies the image type. The valid values are as follows:
     * + **market**: The market image.
     * + **gold**: The public image.
     * + **private**: The private image.
     */
    imageType: pulumi.Input<string>;
    /**
     * Specifies the desktop name.
     * The name can contain `1` to `15` characters, only letters, digits and hyphens (-) are allowed.
     * The name must start with a letter or digit and cannot end with a hyphen.
     * Changing this will create a new resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the NIC information corresponding to the desktop.
     * The object structure is documented below.
     */
    nics?: pulumi.Input<pulumi.Input<inputs.Workspace.DesktopNic>[]>;
    /**
     * Specifies the power action to be done for the desktop.
     * The valid values are **os-start**, **os-stop**, **reboot**, **os-hibernate**.
     */
    powerAction?: pulumi.Input<string>;
    /**
     * Specifies the power action mechanisms for the desktop.
     * The valid values are as follows:
     * + **SOFT**: Normal operation.
     * + **HARD**: Forced operation.
     */
    powerActionType?: pulumi.Input<string>;
    /**
     * The region in which to create the Workspace desktop resource.
     * If omitted, the provider-level region will be used. Changing this will create a new resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the configuration of system volume.
     * The object structure is documented below.
     */
    rootVolume: pulumi.Input<inputs.Workspace.DesktopRootVolume>;
    /**
     * Specifies the ID list of security groups.
     * In addition to the custom security group, it must also contain a security group called **WorkspaceUserSecurityGroup**.
     * Changing this will create a new resource.
     */
    securityGroups?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the key/value pairs of the desktop.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the user email.
     * Some operations on the desktop (such as creation, deletion) will notify the user by sending an email.
     * Changing this will create a new resource.
     */
    userEmail: pulumi.Input<string>;
    /**
     * Specifies the user group to which the desktop belongs.
     * The valid values are as follows:
     * + **sudo**: Linux administrator group.
     * + **default**: Linux default user group.
     * + **administrators**: Windows administrator group.
     * + **users**: Windows standard user group.
     */
    userGroup: pulumi.Input<string>;
    /**
     * Specifies the user name to which the desktop belongs.
     * The name can contain `1` to `20` characters, only letters, digits, hyphens (-) and underscores (_) are allowed.
     * The name must start with a letter. Changing this will create a new resource.
     */
    userName: pulumi.Input<string>;
    /**
     * Specifies the VPC ID to which the desktop belongs.
     * Changing this will create a new resource.
     */
    vpcId: pulumi.Input<string>;
}
