import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Desktop Pool resource in Oracle Cloud Infrastructure Desktops service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/secure-desktops/latest/DesktopPool
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/desktops
 *
 * Creates a desktop pool with the given configuration parameters.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testDesktopPool = new oci.desktops.DesktopPool("test_desktop_pool", {
 *     arePrivilegedUsers: desktopPoolArePrivilegedUsers === "true",
 *     availabilityDomain: desktopPoolAvailabilityDomain,
 *     availabilityPolicy: {
 *         startSchedule: {
 *             cronExpression: "0 10 8 ? * 2",
 *             timezone: "America/Denver",
 *         },
 *         stopSchedule: {
 *             cronExpression: "0 20 18 ? * 6",
 *             timezone: "America/Denver",
 *         },
 *     },
 *     compartmentId: compartmentId,
 *     contactDetails: desktopPoolContactDetails,
 *     devicePolicy: {
 *         audioMode: desktopPoolDevicePolicyAudioMode,
 *         cdmMode: desktopPoolDevicePolicyCdmMode,
 *         clipboardMode: desktopPoolDevicePolicyClipboardMode,
 *         isDisplayEnabled: desktopPoolDevicePolicyIsDisplayEnabled === "true",
 *         isKeyboardEnabled: desktopPoolDevicePolicyIsKeyboardEnabled === "true",
 *         isPointerEnabled: desktopPoolDevicePolicyIsPointerEnabled === "true",
 *         isPrintingEnabled: desktopPoolDevicePolicyIsPrintingEnabled === "true",
 *         isVideoInputEnabled: desktopPoolDevicePolicyIsVideoInputEnabled === "true",
 *     },
 *     displayName: desktopPoolDisplayName,
 *     image: {
 *         imageId: testImage.id,
 *         imageName: desktopPoolImageImageName,
 *         operatingSystem: desktopPoolImageOperatingSystem,
 *     },
 *     isStorageEnabled: desktopPoolIsStorageEnabled === "true",
 *     maximumSize: Number(desktopPoolMaximumSize),
 *     networkConfiguration: {
 *         subnetId: testSubnet.id,
 *         vcnId: testVcn.id,
 *     },
 *     shapeName: "VM.Standard.E4.Flex",
 *     standbySize: Number(desktopPoolStandbySize),
 *     storageBackupPolicyId: "ocid1.volumebackuppolicy.oc1.xxxxyyyyyzzzz",
 *     storageSizeInGbs: Number(desktopPoolStorageSizeInGbs),
 *     bootVolumeSizeInGbs: Number(desktopPoolBootVolumeSizeInGbs),
 *     areVolumesPreserved: desktopPoolAreVolumesPreserved === "true",
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     description: desktopPoolDescription,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     nsgIds: desktopPoolNsgIds,
 *     shapeConfig: {
 *         baselineOcpuUtilization: desktopPoolShapeConfigBaselineOcpuUtilization,
 *         memoryInGbs: desktopPoolShapeConfigMemoryInGbs,
 *         ocpus: desktopPoolShapeConfigOcpus,
 *     },
 *     privateAccessDetails: {
 *         subnetId: testSubnet.id,
 *         nsgIds: desktopPoolPrivateAccessDetailsNsgIds,
 *         privateIp: desktopPoolPrivateAccessDetailsPrivateIp,
 *     },
 *     sessionLifecycleActions: {
 *         disconnect: {
 *             action: "STOP",
 *             gracePeriodInMinutes: Number(desktopPoolSessionLifecycleActionsDisconnectGracePeriodInMinutes),
 *         },
 *         inactivity: {
 *             action: "DISCONNECT",
 *             gracePeriodInMinutes: Number(desktopPoolSessionLifecycleActionsInactivityGracePeriodInMinutes),
 *         },
 *     },
 *     timeStartScheduled: desktopPoolTimeStartScheduled,
 *     timeStopScheduled: desktopPoolTimeStopScheduled,
 *     useDedicatedVmHost: desktopPoolUseDedicatedVmHost,
 * });
 * ```
 *
 * ## Import
 *
 * DesktopPools can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Desktops/desktopPool:DesktopPool test_desktop_pool "id"
 * ```
 */
export declare class DesktopPool extends pulumi.CustomResource {
    /**
     * Get an existing DesktopPool 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?: DesktopPoolState, opts?: pulumi.CustomResourceOptions): DesktopPool;
    /**
     * Returns true if the given object is an instance of DesktopPool.  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 DesktopPool;
    /**
     * The number of active desktops in the desktop pool.
     */
    readonly activeDesktops: pulumi.Output<number>;
    /**
     * Indicates whether desktop pool users have administrative privileges on their desktop.
     */
    readonly arePrivilegedUsers: pulumi.Output<boolean>;
    /**
     * (Updatable) Indicates whether the volumes are preserved when a desktop pool is deleted. Default value is false.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly areVolumesPreserved: pulumi.Output<boolean | undefined>;
    /**
     * The availability domain of the desktop pool.
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * (Updatable) Provides the start and stop schedule information for desktop availability of the desktop pool. Use `availabilityPolicy { }` to not set a schedule.
     */
    readonly availabilityPolicy: pulumi.Output<outputs.Desktops.DesktopPoolAvailabilityPolicy>;
    /**
     * (Updatable) The size in GBs of the boot volume for the desktop pool.
     */
    readonly bootVolumeSizeInGbs: pulumi.Output<number>;
    /**
     * (Updatable) The OCID of the compartment which will contain the desktop pool.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Contact information of the desktop pool administrator. Avoid entering confidential information.
     */
    readonly contactDetails: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user friendly description providing additional information about the resource. Avoid entering confidential information.
     */
    readonly description: pulumi.Output<string>;
    /**
     * (Updatable) Provides the settings for desktop and client device options, such as audio in and out, client drive mapping, and clipboard access.
     */
    readonly devicePolicy: pulumi.Output<outputs.Desktops.DesktopPoolDevicePolicy>;
    /**
     * (Updatable) A user friendly display name. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Provides information about the desktop image.
     */
    readonly image: pulumi.Output<outputs.Desktops.DesktopPoolImage>;
    /**
     * Indicates whether storage is enabled for the desktop pool.
     */
    readonly isStorageEnabled: pulumi.Output<boolean>;
    /**
     * (Updatable) The maximum number of desktops permitted in the desktop pool.
     */
    readonly maximumSize: pulumi.Output<number>;
    /**
     * Provides information about the network configuration of the desktop pool.
     */
    readonly networkConfiguration: pulumi.Output<outputs.Desktops.DesktopPoolNetworkConfiguration>;
    /**
     * A list of network security groups for the private access.
     */
    readonly nsgIds: pulumi.Output<string[] | undefined>;
    /**
     * The details of the desktop's private access network connectivity to be set up for the desktop pool.
     */
    readonly privateAccessDetails: pulumi.Output<outputs.Desktops.DesktopPoolPrivateAccessDetails>;
    /**
     * The details of action to be triggered in case of inactivity or disconnect
     */
    readonly sessionLifecycleActions: pulumi.Output<outputs.Desktops.DesktopPoolSessionLifecycleActions | undefined>;
    /**
     * The compute instance shape configuration requested for each desktop in the desktop pool.
     */
    readonly shapeConfig: pulumi.Output<outputs.Desktops.DesktopPoolShapeConfig>;
    /**
     * The shape of the desktop pool.
     */
    readonly shapeName: pulumi.Output<string>;
    /**
     * (Updatable) The maximum number of standby desktops available in the desktop pool.
     */
    readonly standbySize: pulumi.Output<number>;
    /**
     * The current state of the desktop pool.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The backup policy OCID of the storage.
     */
    readonly storageBackupPolicyId: pulumi.Output<string>;
    /**
     * The size in GBs of the storage for the desktop pool.
     */
    readonly storageSizeInGbs: pulumi.Output<number>;
    /**
     * The date and time the resource was created.
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * (Updatable) The start time of the desktop pool.
     */
    readonly timeStartScheduled: pulumi.Output<string | undefined>;
    /**
     * (Updatable) The stop time of the desktop pool.
     */
    readonly timeStopScheduled: pulumi.Output<string | undefined>;
    /**
     * Indicates whether the desktop pool uses dedicated virtual machine hosts.
     */
    readonly useDedicatedVmHost: pulumi.Output<string>;
    /**
     * Create a DesktopPool 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: DesktopPoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering DesktopPool resources.
 */
export interface DesktopPoolState {
    /**
     * The number of active desktops in the desktop pool.
     */
    activeDesktops?: pulumi.Input<number | undefined>;
    /**
     * Indicates whether desktop pool users have administrative privileges on their desktop.
     */
    arePrivilegedUsers?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Indicates whether the volumes are preserved when a desktop pool is deleted. Default value is false.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    areVolumesPreserved?: pulumi.Input<boolean | undefined>;
    /**
     * The availability domain of the desktop pool.
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Provides the start and stop schedule information for desktop availability of the desktop pool. Use `availabilityPolicy { }` to not set a schedule.
     */
    availabilityPolicy?: pulumi.Input<inputs.Desktops.DesktopPoolAvailabilityPolicy | undefined>;
    /**
     * (Updatable) The size in GBs of the boot volume for the desktop pool.
     */
    bootVolumeSizeInGbs?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The OCID of the compartment which will contain the desktop pool.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Contact information of the desktop pool administrator. Avoid entering confidential information.
     */
    contactDetails?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user friendly description providing additional information about the resource. Avoid entering confidential information.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Provides the settings for desktop and client device options, such as audio in and out, client drive mapping, and clipboard access.
     */
    devicePolicy?: pulumi.Input<inputs.Desktops.DesktopPoolDevicePolicy | undefined>;
    /**
     * (Updatable) A user friendly display name. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Provides information about the desktop image.
     */
    image?: pulumi.Input<inputs.Desktops.DesktopPoolImage | undefined>;
    /**
     * Indicates whether storage is enabled for the desktop pool.
     */
    isStorageEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The maximum number of desktops permitted in the desktop pool.
     */
    maximumSize?: pulumi.Input<number | undefined>;
    /**
     * Provides information about the network configuration of the desktop pool.
     */
    networkConfiguration?: pulumi.Input<inputs.Desktops.DesktopPoolNetworkConfiguration | undefined>;
    /**
     * A list of network security groups for the private access.
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The details of the desktop's private access network connectivity to be set up for the desktop pool.
     */
    privateAccessDetails?: pulumi.Input<inputs.Desktops.DesktopPoolPrivateAccessDetails | undefined>;
    /**
     * The details of action to be triggered in case of inactivity or disconnect
     */
    sessionLifecycleActions?: pulumi.Input<inputs.Desktops.DesktopPoolSessionLifecycleActions | undefined>;
    /**
     * The compute instance shape configuration requested for each desktop in the desktop pool.
     */
    shapeConfig?: pulumi.Input<inputs.Desktops.DesktopPoolShapeConfig | undefined>;
    /**
     * The shape of the desktop pool.
     */
    shapeName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The maximum number of standby desktops available in the desktop pool.
     */
    standbySize?: pulumi.Input<number | undefined>;
    /**
     * The current state of the desktop pool.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The backup policy OCID of the storage.
     */
    storageBackupPolicyId?: pulumi.Input<string | undefined>;
    /**
     * The size in GBs of the storage for the desktop pool.
     */
    storageSizeInGbs?: pulumi.Input<number | undefined>;
    /**
     * The date and time the resource was created.
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The start time of the desktop pool.
     */
    timeStartScheduled?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The stop time of the desktop pool.
     */
    timeStopScheduled?: pulumi.Input<string | undefined>;
    /**
     * Indicates whether the desktop pool uses dedicated virtual machine hosts.
     */
    useDedicatedVmHost?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a DesktopPool resource.
 */
export interface DesktopPoolArgs {
    /**
     * Indicates whether desktop pool users have administrative privileges on their desktop.
     */
    arePrivilegedUsers: pulumi.Input<boolean>;
    /**
     * (Updatable) Indicates whether the volumes are preserved when a desktop pool is deleted. Default value is false.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    areVolumesPreserved?: pulumi.Input<boolean | undefined>;
    /**
     * The availability domain of the desktop pool.
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * (Updatable) Provides the start and stop schedule information for desktop availability of the desktop pool. Use `availabilityPolicy { }` to not set a schedule.
     */
    availabilityPolicy: pulumi.Input<inputs.Desktops.DesktopPoolAvailabilityPolicy>;
    /**
     * (Updatable) The size in GBs of the boot volume for the desktop pool.
     */
    bootVolumeSizeInGbs?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The OCID of the compartment which will contain the desktop pool.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Contact information of the desktop pool administrator. Avoid entering confidential information.
     */
    contactDetails: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user friendly description providing additional information about the resource. Avoid entering confidential information.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Provides the settings for desktop and client device options, such as audio in and out, client drive mapping, and clipboard access.
     */
    devicePolicy: pulumi.Input<inputs.Desktops.DesktopPoolDevicePolicy>;
    /**
     * (Updatable) A user friendly display name. Avoid entering confidential information.
     */
    displayName: pulumi.Input<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Provides information about the desktop image.
     */
    image: pulumi.Input<inputs.Desktops.DesktopPoolImage>;
    /**
     * Indicates whether storage is enabled for the desktop pool.
     */
    isStorageEnabled: pulumi.Input<boolean>;
    /**
     * (Updatable) The maximum number of desktops permitted in the desktop pool.
     */
    maximumSize: pulumi.Input<number>;
    /**
     * Provides information about the network configuration of the desktop pool.
     */
    networkConfiguration: pulumi.Input<inputs.Desktops.DesktopPoolNetworkConfiguration>;
    /**
     * A list of network security groups for the private access.
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The details of the desktop's private access network connectivity to be set up for the desktop pool.
     */
    privateAccessDetails?: pulumi.Input<inputs.Desktops.DesktopPoolPrivateAccessDetails | undefined>;
    /**
     * The details of action to be triggered in case of inactivity or disconnect
     */
    sessionLifecycleActions?: pulumi.Input<inputs.Desktops.DesktopPoolSessionLifecycleActions | undefined>;
    /**
     * The compute instance shape configuration requested for each desktop in the desktop pool.
     */
    shapeConfig?: pulumi.Input<inputs.Desktops.DesktopPoolShapeConfig | undefined>;
    /**
     * The shape of the desktop pool.
     */
    shapeName: pulumi.Input<string>;
    /**
     * (Updatable) The maximum number of standby desktops available in the desktop pool.
     */
    standbySize: pulumi.Input<number>;
    /**
     * The backup policy OCID of the storage.
     */
    storageBackupPolicyId: pulumi.Input<string>;
    /**
     * The size in GBs of the storage for the desktop pool.
     */
    storageSizeInGbs: pulumi.Input<number>;
    /**
     * (Updatable) The start time of the desktop pool.
     */
    timeStartScheduled?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The stop time of the desktop pool.
     */
    timeStopScheduled?: pulumi.Input<string | undefined>;
    /**
     * Indicates whether the desktop pool uses dedicated virtual machine hosts.
     */
    useDedicatedVmHost?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=desktopPool.d.ts.map