import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface CloudMigrationsMigrationPlanConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#compartment_id CloudMigrationsMigrationPlan#compartment_id}
    */
    readonly compartmentId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#defined_tags CloudMigrationsMigrationPlan#defined_tags}
    */
    readonly definedTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#display_name CloudMigrationsMigrationPlan#display_name}
    */
    readonly displayName: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#freeform_tags CloudMigrationsMigrationPlan#freeform_tags}
    */
    readonly freeformTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#id CloudMigrationsMigrationPlan#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;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#migration_id CloudMigrationsMigrationPlan#migration_id}
    */
    readonly migrationId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#source_migration_plan_id CloudMigrationsMigrationPlan#source_migration_plan_id}
    */
    readonly sourceMigrationPlanId?: string;
    /**
    * strategies block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#strategies CloudMigrationsMigrationPlan#strategies}
    */
    readonly strategies?: CloudMigrationsMigrationPlanStrategies[] | cdktf.IResolvable;
    /**
    * target_environments block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#target_environments CloudMigrationsMigrationPlan#target_environments}
    */
    readonly targetEnvironments?: CloudMigrationsMigrationPlanTargetEnvironments[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#timeouts CloudMigrationsMigrationPlan#timeouts}
    */
    readonly timeouts?: CloudMigrationsMigrationPlanTimeouts;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostCompute {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostCompute): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostCompute): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostCompute | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostCompute | undefined);
    get gpuCount(): number;
    get gpuPerHour(): number;
    get gpuPerHourBySubscription(): number;
    get memoryAmountGb(): number;
    get memoryGbPerHour(): number;
    get memoryGbPerHourBySubscription(): number;
    get ocpuCount(): number;
    get ocpuPerHour(): number;
    get ocpuPerHourBySubscription(): number;
    get totalPerHour(): number;
    get totalPerHourBySubscription(): number;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeOutputReference;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImage {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImage): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImage): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImage | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImage | undefined);
    get totalPerHour(): number;
    get totalPerHourBySubscription(): number;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageOutputReference;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumes {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumes): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumes): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumes | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumes | undefined);
    get capacityGb(): number;
    get description(): string;
    get totalGbPerMonth(): number;
    get totalGbPerMonthBySubscription(): number;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesOutputReference;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorage {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorage): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorage): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorage | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorage | undefined);
    get totalGbPerMonth(): number;
    get totalGbPerMonthBySubscription(): number;
    private _volumes;
    get volumes(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageVolumesList;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageOutputReference;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCost {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCost): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCost): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCost | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCost | undefined);
    private _compute;
    get compute(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostComputeList;
    get currencyCode(): string;
    private _osImage;
    get osImage(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOsImageList;
    private _storage;
    get storage(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostStorageList;
    get subscriptionId(): string;
    get totalEstimationPerMonth(): number;
    get totalEstimationPerMonthBySubscription(): number;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostOutputReference;
}
export interface CloudMigrationsMigrationPlanMigrationPlanStats {
}
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsToTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStats): any;
export declare function cloudMigrationsMigrationPlanMigrationPlanStatsToHclTerraform(struct?: CloudMigrationsMigrationPlanMigrationPlanStats): any;
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): CloudMigrationsMigrationPlanMigrationPlanStats | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanMigrationPlanStats | undefined);
    get timeUpdated(): string;
    private _totalEstimatedCost;
    get totalEstimatedCost(): CloudMigrationsMigrationPlanMigrationPlanStatsTotalEstimatedCostList;
    get vmCount(): number;
}
export declare class CloudMigrationsMigrationPlanMigrationPlanStatsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): CloudMigrationsMigrationPlanMigrationPlanStatsOutputReference;
}
export interface CloudMigrationsMigrationPlanStrategies {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#adjustment_multiplier CloudMigrationsMigrationPlan#adjustment_multiplier}
    */
    readonly adjustmentMultiplier?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#metric_time_window CloudMigrationsMigrationPlan#metric_time_window}
    */
    readonly metricTimeWindow?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#metric_type CloudMigrationsMigrationPlan#metric_type}
    */
    readonly metricType?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#percentile CloudMigrationsMigrationPlan#percentile}
    */
    readonly percentile?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#resource_type CloudMigrationsMigrationPlan#resource_type}
    */
    readonly resourceType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#strategy_type CloudMigrationsMigrationPlan#strategy_type}
    */
    readonly strategyType: string;
}
export declare function cloudMigrationsMigrationPlanStrategiesToTerraform(struct?: CloudMigrationsMigrationPlanStrategies | cdktf.IResolvable): any;
export declare function cloudMigrationsMigrationPlanStrategiesToHclTerraform(struct?: CloudMigrationsMigrationPlanStrategies | cdktf.IResolvable): any;
export declare class CloudMigrationsMigrationPlanStrategiesOutputReference 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(): CloudMigrationsMigrationPlanStrategies | cdktf.IResolvable | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanStrategies | cdktf.IResolvable | undefined);
    private _adjustmentMultiplier?;
    get adjustmentMultiplier(): number;
    set adjustmentMultiplier(value: number);
    resetAdjustmentMultiplier(): void;
    get adjustmentMultiplierInput(): number | undefined;
    private _metricTimeWindow?;
    get metricTimeWindow(): string;
    set metricTimeWindow(value: string);
    resetMetricTimeWindow(): void;
    get metricTimeWindowInput(): string | undefined;
    private _metricType?;
    get metricType(): string;
    set metricType(value: string);
    resetMetricType(): void;
    get metricTypeInput(): string | undefined;
    private _percentile?;
    get percentile(): string;
    set percentile(value: string);
    resetPercentile(): void;
    get percentileInput(): string | undefined;
    private _resourceType?;
    get resourceType(): string;
    set resourceType(value: string);
    get resourceTypeInput(): string | undefined;
    private _strategyType?;
    get strategyType(): string;
    set strategyType(value: string);
    get strategyTypeInput(): string | undefined;
}
export declare class CloudMigrationsMigrationPlanStrategiesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: CloudMigrationsMigrationPlanStrategies[] | 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): CloudMigrationsMigrationPlanStrategiesOutputReference;
}
export interface CloudMigrationsMigrationPlanTargetEnvironments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#availability_domain CloudMigrationsMigrationPlan#availability_domain}
    */
    readonly availabilityDomain?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#dedicated_vm_host CloudMigrationsMigrationPlan#dedicated_vm_host}
    */
    readonly dedicatedVmHost?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#fault_domain CloudMigrationsMigrationPlan#fault_domain}
    */
    readonly faultDomain?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#ms_license CloudMigrationsMigrationPlan#ms_license}
    */
    readonly msLicense?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#preferred_shape_type CloudMigrationsMigrationPlan#preferred_shape_type}
    */
    readonly preferredShapeType?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#subnet CloudMigrationsMigrationPlan#subnet}
    */
    readonly subnet: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#target_compartment_id CloudMigrationsMigrationPlan#target_compartment_id}
    */
    readonly targetCompartmentId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#target_environment_type CloudMigrationsMigrationPlan#target_environment_type}
    */
    readonly targetEnvironmentType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#vcn CloudMigrationsMigrationPlan#vcn}
    */
    readonly vcn: string;
}
export declare function cloudMigrationsMigrationPlanTargetEnvironmentsToTerraform(struct?: CloudMigrationsMigrationPlanTargetEnvironments | cdktf.IResolvable): any;
export declare function cloudMigrationsMigrationPlanTargetEnvironmentsToHclTerraform(struct?: CloudMigrationsMigrationPlanTargetEnvironments | cdktf.IResolvable): any;
export declare class CloudMigrationsMigrationPlanTargetEnvironmentsOutputReference 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(): CloudMigrationsMigrationPlanTargetEnvironments | cdktf.IResolvable | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanTargetEnvironments | cdktf.IResolvable | undefined);
    private _availabilityDomain?;
    get availabilityDomain(): string;
    set availabilityDomain(value: string);
    resetAvailabilityDomain(): void;
    get availabilityDomainInput(): string | undefined;
    private _dedicatedVmHost?;
    get dedicatedVmHost(): string;
    set dedicatedVmHost(value: string);
    resetDedicatedVmHost(): void;
    get dedicatedVmHostInput(): string | undefined;
    private _faultDomain?;
    get faultDomain(): string;
    set faultDomain(value: string);
    resetFaultDomain(): void;
    get faultDomainInput(): string | undefined;
    private _msLicense?;
    get msLicense(): string;
    set msLicense(value: string);
    resetMsLicense(): void;
    get msLicenseInput(): string | undefined;
    private _preferredShapeType?;
    get preferredShapeType(): string;
    set preferredShapeType(value: string);
    resetPreferredShapeType(): void;
    get preferredShapeTypeInput(): string | undefined;
    private _subnet?;
    get subnet(): string;
    set subnet(value: string);
    get subnetInput(): string | undefined;
    private _targetCompartmentId?;
    get targetCompartmentId(): string;
    set targetCompartmentId(value: string);
    resetTargetCompartmentId(): void;
    get targetCompartmentIdInput(): string | undefined;
    private _targetEnvironmentType?;
    get targetEnvironmentType(): string;
    set targetEnvironmentType(value: string);
    get targetEnvironmentTypeInput(): string | undefined;
    private _vcn?;
    get vcn(): string;
    set vcn(value: string);
    get vcnInput(): string | undefined;
}
export declare class CloudMigrationsMigrationPlanTargetEnvironmentsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: CloudMigrationsMigrationPlanTargetEnvironments[] | 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): CloudMigrationsMigrationPlanTargetEnvironmentsOutputReference;
}
export interface CloudMigrationsMigrationPlanTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#create CloudMigrationsMigrationPlan#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#delete CloudMigrationsMigrationPlan#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#update CloudMigrationsMigrationPlan#update}
    */
    readonly update?: string;
}
export declare function cloudMigrationsMigrationPlanTimeoutsToTerraform(struct?: CloudMigrationsMigrationPlanTimeouts | cdktf.IResolvable): any;
export declare function cloudMigrationsMigrationPlanTimeoutsToHclTerraform(struct?: CloudMigrationsMigrationPlanTimeouts | cdktf.IResolvable): any;
export declare class CloudMigrationsMigrationPlanTimeoutsOutputReference 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(): CloudMigrationsMigrationPlanTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: CloudMigrationsMigrationPlanTimeouts | 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;
}
/**
* Represents a {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan oci_cloud_migrations_migration_plan}
*/
export declare class CloudMigrationsMigrationPlan extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_cloud_migrations_migration_plan";
    /**
    * Generates CDKTF code for importing a CloudMigrationsMigrationPlan 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 CloudMigrationsMigrationPlan to import
    * @param importFromId The id of the existing CloudMigrationsMigrationPlan that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the CloudMigrationsMigrationPlan 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/oracle/oci/6.18.0/docs/resources/cloud_migrations_migration_plan oci_cloud_migrations_migration_plan} 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 CloudMigrationsMigrationPlanConfig
    */
    constructor(scope: Construct, id: string, config: CloudMigrationsMigrationPlanConfig);
    private _calculatedLimits;
    get calculatedLimits(): cdktf.StringMap;
    private _compartmentId?;
    get compartmentId(): string;
    set compartmentId(value: string);
    get compartmentIdInput(): string | undefined;
    private _definedTags?;
    get definedTags(): {
        [key: string]: string;
    };
    set definedTags(value: {
        [key: string]: string;
    });
    resetDefinedTags(): void;
    get definedTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _freeformTags?;
    get freeformTags(): {
        [key: string]: string;
    };
    set freeformTags(value: {
        [key: string]: string;
    });
    resetFreeformTags(): void;
    get freeformTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get lifecycleDetails(): string;
    private _migrationId?;
    get migrationId(): string;
    set migrationId(value: string);
    get migrationIdInput(): string | undefined;
    private _migrationPlanStats;
    get migrationPlanStats(): CloudMigrationsMigrationPlanMigrationPlanStatsList;
    get referenceToRmsStack(): string;
    private _sourceMigrationPlanId?;
    get sourceMigrationPlanId(): string;
    set sourceMigrationPlanId(value: string);
    resetSourceMigrationPlanId(): void;
    get sourceMigrationPlanIdInput(): string | undefined;
    get state(): string;
    private _systemTags;
    get systemTags(): cdktf.StringMap;
    get timeCreated(): string;
    get timeUpdated(): string;
    private _strategies;
    get strategies(): CloudMigrationsMigrationPlanStrategiesList;
    putStrategies(value: CloudMigrationsMigrationPlanStrategies[] | cdktf.IResolvable): void;
    resetStrategies(): void;
    get strategiesInput(): cdktf.IResolvable | CloudMigrationsMigrationPlanStrategies[] | undefined;
    private _targetEnvironments;
    get targetEnvironments(): CloudMigrationsMigrationPlanTargetEnvironmentsList;
    putTargetEnvironments(value: CloudMigrationsMigrationPlanTargetEnvironments[] | cdktf.IResolvable): void;
    resetTargetEnvironments(): void;
    get targetEnvironmentsInput(): cdktf.IResolvable | CloudMigrationsMigrationPlanTargetEnvironments[] | undefined;
    private _timeouts;
    get timeouts(): CloudMigrationsMigrationPlanTimeoutsOutputReference;
    putTimeouts(value: CloudMigrationsMigrationPlanTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | CloudMigrationsMigrationPlanTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
