/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface MigrationCenterPreferenceSetConfig extends cdktf.TerraformMetaArguments {
    /**
    * A description of the preference set.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#description MigrationCenterPreferenceSet#description}
    */
    readonly description?: string;
    /**
    * User-friendly display name. Maximum length is 63 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#display_name MigrationCenterPreferenceSet#display_name}
    */
    readonly displayName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#id MigrationCenterPreferenceSet#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Part of 'parent'. See documentation of 'projectsId'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#location MigrationCenterPreferenceSet#location}
    */
    readonly location: string;
    /**
    * Required. User specified ID for the preference set. It will become the last component of the preference set name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression '[a-z]([a-z0-9-]{0,61}[a-z0-9])?'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#preference_set_id MigrationCenterPreferenceSet#preference_set_id}
    */
    readonly preferenceSetId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#project MigrationCenterPreferenceSet#project}
    */
    readonly project?: string;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#timeouts MigrationCenterPreferenceSet#timeouts}
    */
    readonly timeouts?: MigrationCenterPreferenceSetTimeouts;
    /**
    * virtual_machine_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#virtual_machine_preferences MigrationCenterPreferenceSet#virtual_machine_preferences}
    */
    readonly virtualMachinePreferences?: MigrationCenterPreferenceSetVirtualMachinePreferences;
}
export interface MigrationCenterPreferenceSetTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#create MigrationCenterPreferenceSet#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#delete MigrationCenterPreferenceSet#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#update MigrationCenterPreferenceSet#update}
    */
    readonly update?: string;
}
export declare function migrationCenterPreferenceSetTimeoutsToTerraform(struct?: MigrationCenterPreferenceSetTimeouts | cdktf.IResolvable): any;
export declare function migrationCenterPreferenceSetTimeoutsToHclTerraform(struct?: MigrationCenterPreferenceSetTimeouts | cdktf.IResolvable): any;
export declare class MigrationCenterPreferenceSetTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: MigrationCenterPreferenceSetTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries {
    /**
    * Code to identify a Compute Engine machine series. Consult https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for more details on the available series.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#code MigrationCenterPreferenceSet#code}
    */
    readonly code?: string;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries | cdktf.IResolvable): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries | cdktf.IResolvable): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries | cdktf.IResolvable | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries | cdktf.IResolvable | undefined);
    private _code?;
    get code(): string;
    set code(value: string);
    resetCode(): void;
    get codeInput(): string | undefined;
}
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesOutputReference;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences {
    /**
    * allowed_machine_series block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#allowed_machine_series MigrationCenterPreferenceSet#allowed_machine_series}
    */
    readonly allowedMachineSeries?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries[] | cdktf.IResolvable;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences | undefined);
    private _allowedMachineSeries;
    get allowedMachineSeries(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesList;
    putAllowedMachineSeries(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries[] | cdktf.IResolvable): void;
    resetAllowedMachineSeries(): void;
    get allowedMachineSeriesInput(): cdktf.IResolvable | MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeries[] | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences {
    /**
    * License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan. Possible values: 'LICENSE_TYPE_UNSPECIFIED', 'LICENSE_TYPE_DEFAULT', 'LICENSE_TYPE_BRING_YOUR_OWN_LICENSE'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#license_type MigrationCenterPreferenceSet#license_type}
    */
    readonly licenseType?: string;
    /**
    * machine_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#machine_preferences MigrationCenterPreferenceSet#machine_preferences}
    */
    readonly machinePreferences?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences | undefined);
    private _licenseType?;
    get licenseType(): string;
    set licenseType(value: string);
    resetLicenseType(): void;
    get licenseTypeInput(): string | undefined;
    private _machinePreferences;
    get machinePreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesOutputReference;
    putMachinePreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences): void;
    resetMachinePreferences(): void;
    get machinePreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferences | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences {
    /**
    * A list of preferred regions, ordered by the most preferred region first. Set only valid Google Cloud region names. See https://cloud.google.com/compute/docs/regions-zones for available regions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#preferred_regions MigrationCenterPreferenceSet#preferred_regions}
    */
    readonly preferredRegions?: string[];
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences | undefined);
    private _preferredRegions?;
    get preferredRegions(): string[];
    set preferredRegions(value: string[]);
    resetPreferredRegions(): void;
    get preferredRegionsInput(): string[] | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes {
    /**
    * Name of the Sole Tenant node. Consult https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#node_name MigrationCenterPreferenceSet#node_name}
    */
    readonly nodeName?: string;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes | cdktf.IResolvable): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes | cdktf.IResolvable): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes | cdktf.IResolvable | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes | cdktf.IResolvable | undefined);
    private _nodeName?;
    get nodeName(): string;
    set nodeName(value: string);
    resetNodeName(): void;
    get nodeNameInput(): string | undefined;
}
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesOutputReference;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences {
    /**
    * Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with. Possible values: 'COMMITMENT_PLAN_UNSPECIFIED', 'ON_DEMAND', 'COMMITMENT_1_YEAR', 'COMMITMENT_3_YEAR'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#commitment_plan MigrationCenterPreferenceSet#commitment_plan}
    */
    readonly commitmentPlan?: string;
    /**
    * CPU overcommit ratio. Acceptable values are between 1.0 and 2.0 inclusive.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#cpu_overcommit_ratio MigrationCenterPreferenceSet#cpu_overcommit_ratio}
    */
    readonly cpuOvercommitRatio?: number;
    /**
    * Sole Tenancy nodes maintenance policy. Possible values: 'HOST_MAINTENANCE_POLICY_UNSPECIFIED', 'HOST_MAINTENANCE_POLICY_DEFAULT', 'HOST_MAINTENANCE_POLICY_RESTART_IN_PLACE', 'HOST_MAINTENANCE_POLICY_MIGRATE_WITHIN_NODE_GROUP'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#host_maintenance_policy MigrationCenterPreferenceSet#host_maintenance_policy}
    */
    readonly hostMaintenancePolicy?: string;
    /**
    * node_types block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#node_types MigrationCenterPreferenceSet#node_types}
    */
    readonly nodeTypes?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes[] | cdktf.IResolvable;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences | undefined);
    private _commitmentPlan?;
    get commitmentPlan(): string;
    set commitmentPlan(value: string);
    resetCommitmentPlan(): void;
    get commitmentPlanInput(): string | undefined;
    private _cpuOvercommitRatio?;
    get cpuOvercommitRatio(): number;
    set cpuOvercommitRatio(value: number);
    resetCpuOvercommitRatio(): void;
    get cpuOvercommitRatioInput(): number | undefined;
    private _hostMaintenancePolicy?;
    get hostMaintenancePolicy(): string;
    set hostMaintenancePolicy(value: string);
    resetHostMaintenancePolicy(): void;
    get hostMaintenancePolicyInput(): string | undefined;
    private _nodeTypes;
    get nodeTypes(): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypesList;
    putNodeTypes(value: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes[] | cdktf.IResolvable): void;
    resetNodeTypes(): void;
    get nodeTypesInput(): cdktf.IResolvable | MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypes[] | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences {
    /**
    * Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with. Possible values: 'COMMITMENT_PLAN_UNSPECIFIED', 'ON_DEMAND', 'COMMITMENT_1_YEAR_MONTHLY_PAYMENTS', 'COMMITMENT_3_YEAR_MONTHLY_PAYMENTS', 'COMMITMENT_1_YEAR_UPFRONT_PAYMENT', 'COMMITMENT_3_YEAR_UPFRONT_PAYMENT',
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#commitment_plan MigrationCenterPreferenceSet#commitment_plan}
    */
    readonly commitmentPlan?: string;
    /**
    * CPU overcommit ratio. Acceptable values are between 1.0 and 8.0, with 0.1 increment.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#cpu_overcommit_ratio MigrationCenterPreferenceSet#cpu_overcommit_ratio}
    */
    readonly cpuOvercommitRatio?: number;
    /**
    * Memory overcommit ratio. Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#memory_overcommit_ratio MigrationCenterPreferenceSet#memory_overcommit_ratio}
    */
    readonly memoryOvercommitRatio?: number;
    /**
    * The Deduplication and Compression ratio is based on the logical (Used Before) space required to store data before applying deduplication and compression, in relation to the physical (Used After) space required after applying deduplication and compression. Specifically, the ratio is the Used Before space divided by the Used After space. For example, if the Used Before space is 3 GB, but the physical Used After space is 1 GB, the deduplication and compression ratio is 3x. Acceptable values are between 1.0 and 4.0.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#storage_deduplication_compression_ratio MigrationCenterPreferenceSet#storage_deduplication_compression_ratio}
    */
    readonly storageDeduplicationCompressionRatio?: number;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences | undefined);
    private _commitmentPlan?;
    get commitmentPlan(): string;
    set commitmentPlan(value: string);
    resetCommitmentPlan(): void;
    get commitmentPlanInput(): string | undefined;
    private _cpuOvercommitRatio?;
    get cpuOvercommitRatio(): number;
    set cpuOvercommitRatio(value: number);
    resetCpuOvercommitRatio(): void;
    get cpuOvercommitRatioInput(): number | undefined;
    private _memoryOvercommitRatio?;
    get memoryOvercommitRatio(): number;
    set memoryOvercommitRatio(value: number);
    resetMemoryOvercommitRatio(): void;
    get memoryOvercommitRatioInput(): number | undefined;
    private _storageDeduplicationCompressionRatio?;
    get storageDeduplicationCompressionRatio(): number;
    set storageDeduplicationCompressionRatio(value: number);
    resetStorageDeduplicationCompressionRatio(): void;
    get storageDeduplicationCompressionRatioInput(): number | undefined;
}
export interface MigrationCenterPreferenceSetVirtualMachinePreferences {
    /**
    * Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with. Possible values: 'COMMITMENT_PLAN_UNSPECIFIED', 'COMMITMENT_PLAN_NONE', 'COMMITMENT_PLAN_ONE_YEAR', 'COMMITMENT_PLAN_THREE_YEARS'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#commitment_plan MigrationCenterPreferenceSet#commitment_plan}
    */
    readonly commitmentPlan?: string;
    /**
    * Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with. Possible values: 'SIZING_OPTIMIZATION_STRATEGY_UNSPECIFIED', 'SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE', 'SIZING_OPTIMIZATION_STRATEGY_MODERATE', 'SIZING_OPTIMIZATION_STRATEGY_AGGRESSIVE'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#sizing_optimization_strategy MigrationCenterPreferenceSet#sizing_optimization_strategy}
    */
    readonly sizingOptimizationStrategy?: string;
    /**
    * Target product for assets using this preference set. Specify either target product or business goal, but not both. Possible values: 'COMPUTE_MIGRATION_TARGET_PRODUCT_UNSPECIFIED', 'COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE', 'COMPUTE_MIGRATION_TARGET_PRODUCT_VMWARE_ENGINE', 'COMPUTE_MIGRATION_TARGET_PRODUCT_SOLE_TENANCY'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#target_product MigrationCenterPreferenceSet#target_product}
    */
    readonly targetProduct?: string;
    /**
    * compute_engine_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#compute_engine_preferences MigrationCenterPreferenceSet#compute_engine_preferences}
    */
    readonly computeEnginePreferences?: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences;
    /**
    * region_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#region_preferences MigrationCenterPreferenceSet#region_preferences}
    */
    readonly regionPreferences?: MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences;
    /**
    * sole_tenancy_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#sole_tenancy_preferences MigrationCenterPreferenceSet#sole_tenancy_preferences}
    */
    readonly soleTenancyPreferences?: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences;
    /**
    * vmware_engine_preferences block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#vmware_engine_preferences MigrationCenterPreferenceSet#vmware_engine_preferences}
    */
    readonly vmwareEnginePreferences?: MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences;
}
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesToTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferences): any;
export declare function migrationCenterPreferenceSetVirtualMachinePreferencesToHclTerraform(struct?: MigrationCenterPreferenceSetVirtualMachinePreferencesOutputReference | MigrationCenterPreferenceSetVirtualMachinePreferences): any;
export declare class MigrationCenterPreferenceSetVirtualMachinePreferencesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): MigrationCenterPreferenceSetVirtualMachinePreferences | undefined;
    set internalValue(value: MigrationCenterPreferenceSetVirtualMachinePreferences | undefined);
    private _commitmentPlan?;
    get commitmentPlan(): string;
    set commitmentPlan(value: string);
    resetCommitmentPlan(): void;
    get commitmentPlanInput(): string | undefined;
    private _sizingOptimizationStrategy?;
    get sizingOptimizationStrategy(): string;
    set sizingOptimizationStrategy(value: string);
    resetSizingOptimizationStrategy(): void;
    get sizingOptimizationStrategyInput(): string | undefined;
    private _targetProduct?;
    get targetProduct(): string;
    set targetProduct(value: string);
    resetTargetProduct(): void;
    get targetProductInput(): string | undefined;
    private _computeEnginePreferences;
    get computeEnginePreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferencesOutputReference;
    putComputeEnginePreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences): void;
    resetComputeEnginePreferences(): void;
    get computeEnginePreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferencesComputeEnginePreferences | undefined;
    private _regionPreferences;
    get regionPreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferencesOutputReference;
    putRegionPreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences): void;
    resetRegionPreferences(): void;
    get regionPreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferencesRegionPreferences | undefined;
    private _soleTenancyPreferences;
    get soleTenancyPreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesOutputReference;
    putSoleTenancyPreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences): void;
    resetSoleTenancyPreferences(): void;
    get soleTenancyPreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferencesSoleTenancyPreferences | undefined;
    private _vmwareEnginePreferences;
    get vmwareEnginePreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesOutputReference;
    putVmwareEnginePreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences): void;
    resetVmwareEnginePreferences(): void;
    get vmwareEnginePreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferencesVmwareEnginePreferences | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set google_migration_center_preference_set}
*/
export declare class MigrationCenterPreferenceSet extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_migration_center_preference_set";
    /**
    * Generates CDKTF code for importing a MigrationCenterPreferenceSet resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the MigrationCenterPreferenceSet to import
    * @param importFromId The id of the existing MigrationCenterPreferenceSet that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the MigrationCenterPreferenceSet to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/5.43.1/docs/resources/migration_center_preference_set google_migration_center_preference_set} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options MigrationCenterPreferenceSetConfig
    */
    constructor(scope: Construct, id: string, config: MigrationCenterPreferenceSetConfig);
    get createTime(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    get name(): string;
    private _preferenceSetId?;
    get preferenceSetId(): string;
    set preferenceSetId(value: string);
    get preferenceSetIdInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get updateTime(): string;
    private _timeouts;
    get timeouts(): MigrationCenterPreferenceSetTimeoutsOutputReference;
    putTimeouts(value: MigrationCenterPreferenceSetTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | MigrationCenterPreferenceSetTimeouts | undefined;
    private _virtualMachinePreferences;
    get virtualMachinePreferences(): MigrationCenterPreferenceSetVirtualMachinePreferencesOutputReference;
    putVirtualMachinePreferences(value: MigrationCenterPreferenceSetVirtualMachinePreferences): void;
    resetVirtualMachinePreferences(): void;
    get virtualMachinePreferencesInput(): MigrationCenterPreferenceSetVirtualMachinePreferences | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
