import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Boot Volume resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/BootVolume
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new boot volume in the specified compartment from an existing boot volume or a boot volume backup.
 * For general information about boot volumes, see [Boot Volumes](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/bootvolumes.htm).
 * You may optionally specify a *display name* for the volume, which is simply a friendly name or
 * description. It does not have to be unique, and you can change it. Avoid entering confidential information.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testBootVolume = new oci.core.BootVolume("test_boot_volume", {
 *     compartmentId: compartmentId,
 *     sourceDetails: {
 *         type: bootVolumeSourceDetailsType,
 *         changeBlockSizeInBytes: bootVolumeSourceDetailsChangeBlockSizeInBytes,
 *         firstBackupId: testBackup.id,
 *         id: bootVolumeSourceDetailsId,
 *         secondBackupId: testBackup.id,
 *     },
 *     autotunePolicies: [{
 *         autotuneType: bootVolumeAutotunePoliciesAutotuneType,
 *         maxVpusPerGb: bootVolumeAutotunePoliciesMaxVpusPerGb,
 *     }],
 *     availabilityDomain: bootVolumeAvailabilityDomain,
 *     backupPolicyId: testVolumeBackupPolicies.volumeBackupPolicies[0].id,
 *     bootVolumeReplicas: [{
 *         availabilityDomain: bootVolumeBootVolumeReplicasAvailabilityDomain,
 *         displayName: bootVolumeBootVolumeReplicasDisplayName,
 *         xrrKmsKeyId: testKey.id,
 *     }],
 *     clusterPlacementGroupId: testGroup.id,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: bootVolumeDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     isAutoTuneEnabled: bootVolumeIsAutoTuneEnabled === "true",
 *     kmsKeyId: testKey.id,
 *     sizeInGbs: bootVolumeSizeInGbs,
 *     vpusPerGb: bootVolumeVpusPerGb,
 *     xrcKmsKeyId: testKey.id,
 *     bootVolumeReplicasDeletion: true,
 * });
 * ```
 *
 * ## Import
 *
 * BootVolumes can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/bootVolume:BootVolume test_boot_volume "id"
 * ```
 */
export declare class BootVolume extends pulumi.CustomResource {
    /**
     * Get an existing BootVolume 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?: BootVolumeState, opts?: pulumi.CustomResourceOptions): BootVolume;
    /**
     * Returns true if the given object is an instance of BootVolume.  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 BootVolume;
    /**
     * The number of Volume Performance Units per GB that this boot volume is effectively tuned to.
     */
    readonly autoTunedVpusPerGb: pulumi.Output<string>;
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    readonly autotunePolicies: pulumi.Output<outputs.Core.BootVolumeAutotunePolicy[]>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * If provided, specifies the ID of the boot volume backup policy to assign to the newly created boot volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a boot volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    readonly backupPolicyId: pulumi.Output<string>;
    /**
     * (Updatable) The list of boot volume replicas to be enabled for this boot volume in the specified destination availability domains.
     */
    readonly bootVolumeReplicas: pulumi.Output<outputs.Core.BootVolumeBootVolumeReplica[]>;
    readonly bootVolumeReplicasDeletion: pulumi.Output<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    readonly clusterPlacementGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the compartment that contains the boot volume.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The image OCID used to create the boot volume.
     */
    readonly imageId: pulumi.Output<string>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this boot volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    readonly isAutoTuneEnabled: pulumi.Output<boolean>;
    /**
     * Specifies whether the boot volume's data has finished copying from the source boot volume or boot volume backup.
     */
    readonly isHydrated: pulumi.Output<boolean>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the boot volume.
     */
    readonly kmsKeyId: pulumi.Output<string>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    readonly sizeInGbs: pulumi.Output<string>;
    /**
     * The size of the volume in MBs. The value must be a multiple of 1024. This field is deprecated. Please use `sizeInGbs`.
     */
    readonly sizeInMbs: pulumi.Output<string>;
    readonly sourceDetails: pulumi.Output<outputs.Core.BootVolumeSourceDetails>;
    /**
     * The current state of a boot volume.
     */
    readonly state: pulumi.Output<string>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The date and time the boot volume was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The OCID of the source volume group.
     */
    readonly volumeGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    readonly vpusPerGb: pulumi.Output<string>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the boot volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly xrcKmsKeyId: pulumi.Output<string>;
    /**
     * Create a BootVolume 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: BootVolumeArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering BootVolume resources.
 */
export interface BootVolumeState {
    /**
     * The number of Volume Performance Units per GB that this boot volume is effectively tuned to.
     */
    autoTunedVpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    autotunePolicies?: pulumi.Input<pulumi.Input<inputs.Core.BootVolumeAutotunePolicy>[] | undefined>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * If provided, specifies the ID of the boot volume backup policy to assign to the newly created boot volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a boot volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    backupPolicyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of boot volume replicas to be enabled for this boot volume in the specified destination availability domains.
     */
    bootVolumeReplicas?: pulumi.Input<pulumi.Input<inputs.Core.BootVolumeBootVolumeReplica>[] | undefined>;
    bootVolumeReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the boot volume.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The image OCID used to create the boot volume.
     */
    imageId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this boot volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    isAutoTuneEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies whether the boot volume's data has finished copying from the source boot volume or boot volume backup.
     */
    isHydrated?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the boot volume.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    sizeInGbs?: pulumi.Input<string | undefined>;
    /**
     * The size of the volume in MBs. The value must be a multiple of 1024. This field is deprecated. Please use `sizeInGbs`.
     */
    sizeInMbs?: pulumi.Input<string | undefined>;
    sourceDetails?: pulumi.Input<inputs.Core.BootVolumeSourceDetails | undefined>;
    /**
     * The current state of a boot volume.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The date and time the boot volume was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the source volume group.
     */
    volumeGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    vpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the boot volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a BootVolume resource.
 */
export interface BootVolumeArgs {
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    autotunePolicies?: pulumi.Input<pulumi.Input<inputs.Core.BootVolumeAutotunePolicy>[] | undefined>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * If provided, specifies the ID of the boot volume backup policy to assign to the newly created boot volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a boot volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    backupPolicyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of boot volume replicas to be enabled for this boot volume in the specified destination availability domains.
     */
    bootVolumeReplicas?: pulumi.Input<pulumi.Input<inputs.Core.BootVolumeBootVolumeReplica>[] | undefined>;
    bootVolumeReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the boot volume.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this boot volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    isAutoTuneEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the boot volume.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    sizeInGbs?: pulumi.Input<string | undefined>;
    sourceDetails: pulumi.Input<inputs.Core.BootVolumeSourceDetails>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    vpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the boot volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=bootVolume.d.ts.map