import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Represents a private cloud resource. Private clouds are zonal resources.
 *
 * To get more information about PrivateCloud, see:
 *
 * * [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds)
 *
 * ## Example Usage
 *
 * ### Vmware Engine Private Cloud Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const pc_nw = new gcp.vmwareengine.Network("pc-nw", {
 *     name: "pc-nw",
 *     location: "global",
 *     type: "STANDARD",
 *     description: "PC network description.",
 * });
 * const vmw_engine_pc = new gcp.vmwareengine.PrivateCloud("vmw-engine-pc", {
 *     location: "us-west1-a",
 *     name: "sample-pc",
 *     description: "Sample test PC.",
 *     networkConfig: {
 *         managementCidr: "192.168.30.0/24",
 *         vmwareEngineNetwork: pc_nw.id,
 *     },
 *     managementCluster: {
 *         clusterId: "sample-mgmt-cluster",
 *         nodeTypeConfigs: [{
 *             nodeTypeId: "standard-72",
 *             nodeCount: 3,
 *         }],
 *     },
 * });
 * ```
 * ### Vmware Engine Private Cloud Full
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const pc_nw = new gcp.vmwareengine.Network("pc-nw", {
 *     name: "pc-nw",
 *     location: "global",
 *     type: "STANDARD",
 *     description: "PC network description.",
 * });
 * const vmw_engine_pc = new gcp.vmwareengine.PrivateCloud("vmw-engine-pc", {
 *     location: "us-west1-a",
 *     name: "sample-pc",
 *     description: "Sample test PC.",
 *     type: "TIME_LIMITED",
 *     networkConfig: {
 *         managementCidr: "192.168.30.0/24",
 *         vmwareEngineNetwork: pc_nw.id,
 *     },
 *     managementCluster: {
 *         clusterId: "sample-mgmt-cluster",
 *         nodeTypeConfigs: [{
 *             nodeTypeId: "standard-72",
 *             nodeCount: 1,
 *             customCoreCount: 32,
 *         }],
 *         autoscalingSettings: {
 *             autoscalingPolicies: [{
 *                 autoscalePolicyId: "autoscaling-policy",
 *                 nodeTypeId: "standard-72",
 *                 scaleOutSize: 1,
 *                 cpuThresholds: {
 *                     scaleOut: 80,
 *                     scaleIn: 15,
 *                 },
 *                 consumedMemoryThresholds: {
 *                     scaleOut: 75,
 *                     scaleIn: 20,
 *                 },
 *                 storageThresholds: {
 *                     scaleOut: 80,
 *                     scaleIn: 20,
 *                 },
 *             }],
 *             minClusterNodeCount: 3,
 *             maxClusterNodeCount: 8,
 *             coolDownPeriod: "1800s",
 *         },
 *     },
 *     deletionDelayHours: 0,
 *     sendDeletionDelayHoursIfZero: true,
 * });
 * ```
 *
 * ## Import
 *
 * PrivateCloud can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/privateClouds/{{name}}`
 *
 * * `{{project}}/{{location}}/{{name}}`
 *
 * * `{{location}}/{{name}}`
 *
 * When using the `pulumi import` command, PrivateCloud can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default projects/{{project}}/locations/{{location}}/privateClouds/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{project}}/{{location}}/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{location}}/{{name}}
 * ```
 */
export declare class PrivateCloud extends pulumi.CustomResource {
    /**
     * Get an existing PrivateCloud 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?: PrivateCloudState, opts?: pulumi.CustomResourceOptions): PrivateCloud;
    /**
     * Returns true if the given object is an instance of PrivateCloud.  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 PrivateCloud;
    /**
     * The number of hours to delay this request. You can set this value to an hour between 0 to 8, where setting it to 0
     * starts the deletion request immediately. If no value is set, a default value is set at the API Level.
     */
    readonly deletionDelayHours: pulumi.Output<number | undefined>;
    /**
     * User-provided description for this private cloud.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Details about a HCX Cloud Manager appliance.
     * Structure is documented below.
     */
    readonly hcxes: pulumi.Output<outputs.vmwareengine.PrivateCloudHcx[]>;
    /**
     * The location where the PrivateCloud should reside.
     */
    readonly location: pulumi.Output<string>;
    /**
     * The management cluster for this private cloud. This used for creating and managing the default cluster.
     * Structure is documented below.
     */
    readonly managementCluster: pulumi.Output<outputs.vmwareengine.PrivateCloudManagementCluster>;
    /**
     * The ID of the PrivateCloud.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Network configuration in the consumer project with which the peering has to be done.
     * Structure is documented below.
     */
    readonly networkConfig: pulumi.Output<outputs.vmwareengine.PrivateCloudNetworkConfig>;
    /**
     * Details about a NSX Manager appliance.
     * Structure is documented below.
     */
    readonly nsxes: pulumi.Output<outputs.vmwareengine.PrivateCloudNsx[]>;
    readonly project: pulumi.Output<string>;
    /**
     * While set true, deletionDelayHours value will be sent in the request even for zero value of the field. This field is
     * only useful for setting 0 value to the deletionDelayHours field. It can be used both alone and together with
     * deletion_delay_hours.
     */
    readonly sendDeletionDelayHoursIfZero: pulumi.Output<boolean | undefined>;
    /**
     * State of the appliance.
     * Possible values are: `ACTIVE`, `CREATING`.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"]
     */
    readonly type: pulumi.Output<string | undefined>;
    /**
     * System-generated unique identifier for the resource.
     */
    readonly uid: pulumi.Output<string>;
    /**
     * Details about a vCenter Server management appliance.
     * Structure is documented below.
     */
    readonly vcenters: pulumi.Output<outputs.vmwareengine.PrivateCloudVcenter[]>;
    /**
     * Create a PrivateCloud 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: PrivateCloudArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering PrivateCloud resources.
 */
export interface PrivateCloudState {
    /**
     * The number of hours to delay this request. You can set this value to an hour between 0 to 8, where setting it to 0
     * starts the deletion request immediately. If no value is set, a default value is set at the API Level.
     */
    deletionDelayHours?: pulumi.Input<number>;
    /**
     * User-provided description for this private cloud.
     */
    description?: pulumi.Input<string>;
    /**
     * Details about a HCX Cloud Manager appliance.
     * Structure is documented below.
     */
    hcxes?: pulumi.Input<pulumi.Input<inputs.vmwareengine.PrivateCloudHcx>[]>;
    /**
     * The location where the PrivateCloud should reside.
     */
    location?: pulumi.Input<string>;
    /**
     * The management cluster for this private cloud. This used for creating and managing the default cluster.
     * Structure is documented below.
     */
    managementCluster?: pulumi.Input<inputs.vmwareengine.PrivateCloudManagementCluster>;
    /**
     * The ID of the PrivateCloud.
     */
    name?: pulumi.Input<string>;
    /**
     * Network configuration in the consumer project with which the peering has to be done.
     * Structure is documented below.
     */
    networkConfig?: pulumi.Input<inputs.vmwareengine.PrivateCloudNetworkConfig>;
    /**
     * Details about a NSX Manager appliance.
     * Structure is documented below.
     */
    nsxes?: pulumi.Input<pulumi.Input<inputs.vmwareengine.PrivateCloudNsx>[]>;
    project?: pulumi.Input<string>;
    /**
     * While set true, deletionDelayHours value will be sent in the request even for zero value of the field. This field is
     * only useful for setting 0 value to the deletionDelayHours field. It can be used both alone and together with
     * deletion_delay_hours.
     */
    sendDeletionDelayHoursIfZero?: pulumi.Input<boolean>;
    /**
     * State of the appliance.
     * Possible values are: `ACTIVE`, `CREATING`.
     */
    state?: pulumi.Input<string>;
    /**
     * Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"]
     */
    type?: pulumi.Input<string>;
    /**
     * System-generated unique identifier for the resource.
     */
    uid?: pulumi.Input<string>;
    /**
     * Details about a vCenter Server management appliance.
     * Structure is documented below.
     */
    vcenters?: pulumi.Input<pulumi.Input<inputs.vmwareengine.PrivateCloudVcenter>[]>;
}
/**
 * The set of arguments for constructing a PrivateCloud resource.
 */
export interface PrivateCloudArgs {
    /**
     * The number of hours to delay this request. You can set this value to an hour between 0 to 8, where setting it to 0
     * starts the deletion request immediately. If no value is set, a default value is set at the API Level.
     */
    deletionDelayHours?: pulumi.Input<number>;
    /**
     * User-provided description for this private cloud.
     */
    description?: pulumi.Input<string>;
    /**
     * The location where the PrivateCloud should reside.
     */
    location: pulumi.Input<string>;
    /**
     * The management cluster for this private cloud. This used for creating and managing the default cluster.
     * Structure is documented below.
     */
    managementCluster: pulumi.Input<inputs.vmwareengine.PrivateCloudManagementCluster>;
    /**
     * The ID of the PrivateCloud.
     */
    name?: pulumi.Input<string>;
    /**
     * Network configuration in the consumer project with which the peering has to be done.
     * Structure is documented below.
     */
    networkConfig: pulumi.Input<inputs.vmwareengine.PrivateCloudNetworkConfig>;
    project?: pulumi.Input<string>;
    /**
     * While set true, deletionDelayHours value will be sent in the request even for zero value of the field. This field is
     * only useful for setting 0 value to the deletionDelayHours field. It can be used both alone and together with
     * deletion_delay_hours.
     */
    sendDeletionDelayHoursIfZero?: pulumi.Input<boolean>;
    /**
     * Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"]
     */
    type?: pulumi.Input<string>;
}
