import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Target Asset resource in Oracle Cloud Infrastructure Cloud Migrations service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/ocm/latest/TargetAsset
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/cloudMigrations
 *
 * Creates a target asset.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testTargetAsset = new oci.cloudmigrations.TargetAsset("test_target_asset", {
 *     isExcludedFromExecution: targetAssetIsExcludedFromExecution === "true",
 *     migrationPlanId: testMigrationPlan.id,
 *     type: targetAssetType,
 *     blockVolumesPerformance: Number(targetAssetBlockVolumesPerformance),
 *     msLicense: targetAssetMsLicense,
 *     preferredShapeType: targetAssetPreferredShapeType,
 *     userSpec: {
 *         agentConfig: {
 *             areAllPluginsDisabled: targetAssetUserSpecAgentConfigAreAllPluginsDisabled === "true",
 *             isManagementDisabled: targetAssetUserSpecAgentConfigIsManagementDisabled === "true",
 *             isMonitoringDisabled: targetAssetUserSpecAgentConfigIsMonitoringDisabled === "true",
 *             pluginsConfigs: [{
 *                 desiredState: targetAssetUserSpecAgentConfigPluginsConfigDesiredState,
 *                 name: targetAssetUserSpecAgentConfigPluginsConfigName,
 *             }],
 *         },
 *         availabilityDomain: targetAssetUserSpecAvailabilityDomain,
 *         capacityReservationId: testCapacityReservation.id,
 *         compartmentId: compartmentId,
 *         createVnicDetails: {
 *             assignPrivateDnsRecord: targetAssetUserSpecCreateVnicDetailsAssignPrivateDnsRecord === "true",
 *             assignPublicIp: targetAssetUserSpecCreateVnicDetailsAssignPublicIp === "true",
 *             definedTags: {
 *                 "foo-namespace.bar-key": "value",
 *             },
 *             displayName: targetAssetUserSpecCreateVnicDetailsDisplayName,
 *             freeformTags: {
 *                 "bar-key": "value",
 *             },
 *             hostnameLabel: targetAssetUserSpecCreateVnicDetailsHostnameLabel,
 *             nsgIds: targetAssetUserSpecCreateVnicDetailsNsgIds,
 *             privateIp: targetAssetUserSpecCreateVnicDetailsPrivateIp,
 *             skipSourceDestCheck: targetAssetUserSpecCreateVnicDetailsSkipSourceDestCheck === "true",
 *             subnetId: testSubnet.id,
 *             vlanId: testVlan.id,
 *         },
 *         dedicatedVmHostId: testDedicatedVmHost.id,
 *         definedTags: {
 *             "foo-namespace.bar-key": "value",
 *         },
 *         displayName: targetAssetUserSpecDisplayName,
 *         faultDomain: targetAssetUserSpecFaultDomain,
 *         freeformTags: {
 *             "bar-key": "value",
 *         },
 *         hostnameLabel: targetAssetUserSpecHostnameLabel,
 *         instanceOptions: {
 *             areLegacyImdsEndpointsDisabled: targetAssetUserSpecInstanceOptionsAreLegacyImdsEndpointsDisabled === "true",
 *         },
 *         ipxeScript: targetAssetUserSpecIpxeScript,
 *         isPvEncryptionInTransitEnabled: targetAssetUserSpecIsPvEncryptionInTransitEnabled === "true",
 *         preemptibleInstanceConfig: {
 *             preemptionAction: {
 *                 type: targetAssetUserSpecPreemptibleInstanceConfigPreemptionActionType,
 *                 preserveBootVolume: targetAssetUserSpecPreemptibleInstanceConfigPreemptionActionPreserveBootVolume === "true",
 *             },
 *         },
 *         shape: targetAssetUserSpecShape,
 *         shapeConfig: {
 *             baselineOcpuUtilization: targetAssetUserSpecShapeConfigBaselineOcpuUtilization,
 *             memoryInGbs: targetAssetUserSpecShapeConfigMemoryInGbs,
 *             ocpus: targetAssetUserSpecShapeConfigOcpus,
 *         },
 *         sourceDetails: {
 *             sourceType: targetAssetUserSpecSourceDetailsSourceType,
 *             bootVolumeId: testBootVolume.id,
 *             bootVolumeSizeInGbs: targetAssetUserSpecSourceDetailsBootVolumeSizeInGbs,
 *             bootVolumeVpusPerGb: targetAssetUserSpecSourceDetailsBootVolumeVpusPerGb,
 *             imageId: testImage.id,
 *             kmsKeyId: testKey.id,
 *         },
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * TargetAssets can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:CloudMigrations/targetAsset:TargetAsset test_target_asset "id"
 * ```
 */
export declare class TargetAsset extends pulumi.CustomResource {
    /**
     * Get an existing TargetAsset 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?: TargetAssetState, opts?: pulumi.CustomResourceOptions): TargetAsset;
    /**
     * Returns true if the given object is an instance of TargetAsset.  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 TargetAsset;
    /**
     * (Updatable) Performance of the block volumes.
     */
    readonly blockVolumesPerformance: pulumi.Output<number>;
    /**
     * The OCID of the compartment.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * Messages about the compatibility issues.
     */
    readonly compatibilityMessages: pulumi.Output<outputs.CloudMigrations.TargetAssetCompatibilityMessage[]>;
    /**
     * Created resource identifier
     */
    readonly createdResourceId: pulumi.Output<string>;
    /**
     * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Cost estimation description
     */
    readonly estimatedCosts: pulumi.Output<outputs.CloudMigrations.TargetAssetEstimatedCost[]>;
    /**
     * (Updatable) A boolean indicating whether the asset should be migrated.
     */
    readonly isExcludedFromExecution: pulumi.Output<boolean>;
    /**
     * A message describing the current state in more detail. For example, it can be used to provide actionable information for a resource in Failed state.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * Description of the migration asset.
     */
    readonly migrationAssets: pulumi.Output<outputs.CloudMigrations.TargetAssetMigrationAsset[]>;
    /**
     * OCID of the associated migration plan.
     */
    readonly migrationPlanId: pulumi.Output<string>;
    /**
     * (Updatable) Microsoft license for the VM configuration.
     */
    readonly msLicense: pulumi.Output<string>;
    /**
     * (Updatable) Preferred VM shape type that you provide.
     */
    readonly preferredShapeType: pulumi.Output<string>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    readonly recommendedSpecs: pulumi.Output<outputs.CloudMigrations.TargetAssetRecommendedSpec[]>;
    /**
     * The current state of the target asset.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    readonly testSpecs: pulumi.Output<outputs.CloudMigrations.TargetAssetTestSpec[]>;
    /**
     * The time when the assessment was done. An RFC3339 formatted datetime string.
     */
    readonly timeAssessed: pulumi.Output<string>;
    /**
     * The time when the target asset was created. An RFC3339 formatted datetime string.
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The time when the target asset was updated. An RFC3339 formatted datetime string.
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * (Updatable) The type of target asset.
     */
    readonly type: pulumi.Output<string>;
    /**
     * (Updatable) Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    readonly userSpec: pulumi.Output<outputs.CloudMigrations.TargetAssetUserSpec>;
    /**
     * Create a TargetAsset 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: TargetAssetArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering TargetAsset resources.
 */
export interface TargetAssetState {
    /**
     * (Updatable) Performance of the block volumes.
     */
    blockVolumesPerformance?: pulumi.Input<number | undefined>;
    /**
     * The OCID of the compartment.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * Messages about the compatibility issues.
     */
    compatibilityMessages?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetCompatibilityMessage>[] | undefined>;
    /**
     * Created resource identifier
     */
    createdResourceId?: pulumi.Input<string | undefined>;
    /**
     * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * Cost estimation description
     */
    estimatedCosts?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetEstimatedCost>[] | undefined>;
    /**
     * (Updatable) A boolean indicating whether the asset should be migrated.
     */
    isExcludedFromExecution?: pulumi.Input<boolean | undefined>;
    /**
     * A message describing the current state in more detail. For example, it can be used to provide actionable information for a resource in Failed state.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * Description of the migration asset.
     */
    migrationAssets?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetMigrationAsset>[] | undefined>;
    /**
     * OCID of the associated migration plan.
     */
    migrationPlanId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Microsoft license for the VM configuration.
     */
    msLicense?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Preferred VM shape type that you provide.
     */
    preferredShapeType?: pulumi.Input<string | undefined>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    recommendedSpecs?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetRecommendedSpec>[] | undefined>;
    /**
     * The current state of the target asset.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    testSpecs?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetTestSpec>[] | undefined>;
    /**
     * The time when the assessment was done. An RFC3339 formatted datetime string.
     */
    timeAssessed?: pulumi.Input<string | undefined>;
    /**
     * The time when the target asset was created. An RFC3339 formatted datetime string.
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The time when the target asset was updated. An RFC3339 formatted datetime string.
     */
    timeUpdated?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The type of target asset.
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    userSpec?: pulumi.Input<inputs.CloudMigrations.TargetAssetUserSpec | undefined>;
}
/**
 * The set of arguments for constructing a TargetAsset resource.
 */
export interface TargetAssetArgs {
    /**
     * (Updatable) Performance of the block volumes.
     */
    blockVolumesPerformance?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) A boolean indicating whether the asset should be migrated.
     */
    isExcludedFromExecution: pulumi.Input<boolean>;
    /**
     * OCID of the associated migration plan.
     */
    migrationPlanId: pulumi.Input<string>;
    /**
     * (Updatable) Microsoft license for the VM configuration.
     */
    msLicense?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Preferred VM shape type that you provide.
     */
    preferredShapeType?: pulumi.Input<string | undefined>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    recommendedSpecs?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetRecommendedSpec>[] | undefined>;
    /**
     * Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    testSpecs?: pulumi.Input<pulumi.Input<inputs.CloudMigrations.TargetAssetTestSpec>[] | undefined>;
    /**
     * (Updatable) The type of target asset.
     */
    type: pulumi.Input<string>;
    /**
     * (Updatable) Instance launch details. Use the `sourceDetails` parameter to specify whether a boot volume or an image should be used to launch a new instance.
     */
    userSpec?: pulumi.Input<inputs.CloudMigrations.TargetAssetUserSpec | undefined>;
}
//# sourceMappingURL=targetAsset.d.ts.map