import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a Backup Vault.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleBackupVault = new azure.dataprotection.BackupVault("example", {
 *     name: "example-backup-vault",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     datastoreType: "VaultStore",
 *     redundancy: "LocallyRedundant",
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.DataProtection` - 2025-07-01
 *
 * ## Import
 *
 * Backup Vaults can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:dataprotection/backupVault:BackupVault example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.DataProtection/backupVaults/vault1
 * ```
 */
export declare class BackupVault extends pulumi.CustomResource {
    /**
     * Get an existing BackupVault 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?: BackupVaultState, opts?: pulumi.CustomResourceOptions): BackupVault;
    /**
     * Returns true if the given object is an instance of BackupVault.  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 BackupVault;
    /**
     * Whether to enable cross-region restore for the Backup Vault.
     *
     * > **Note:** The `crossRegionRestoreEnabled` can only be specified when `redundancy` is specified for `GeoRedundant`. Once `crossRegionRestoreEnabled` is enabled, it cannot be disabled.
     */
    readonly crossRegionRestoreEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
     */
    readonly datastoreType: pulumi.Output<string>;
    /**
     * An `identity` block as defined below.
     */
    readonly identity: pulumi.Output<outputs.dataprotection.BackupVaultIdentity | undefined>;
    /**
     * The state of immutability for this Backup Vault. Possible values are `Disabled`, `Locked`, and `Unlocked`. Defaults to `Disabled`.
     */
    readonly immutability: pulumi.Output<string | undefined>;
    /**
     * The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
     */
    readonly redundancy: pulumi.Output<string>;
    /**
     * The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    /**
     * The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
     *
     * > **Note:** The `retentionDurationInDays` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retentionDurationInDays` is required when the `softDelete` is set to `On`.
     */
    readonly retentionDurationInDays: pulumi.Output<number | undefined>;
    /**
     * The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off`, and `On`. Defaults to `On`.
     *
     * > **Note:** Once the `softDelete` is set to `AlwaysOn`, the setting cannot be changed.
     */
    readonly softDelete: pulumi.Output<string | undefined>;
    /**
     * A mapping of tags which should be assigned to the Backup Vault.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Create a BackupVault 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: BackupVaultArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering BackupVault resources.
 */
export interface BackupVaultState {
    /**
     * Whether to enable cross-region restore for the Backup Vault.
     *
     * > **Note:** The `crossRegionRestoreEnabled` can only be specified when `redundancy` is specified for `GeoRedundant`. Once `crossRegionRestoreEnabled` is enabled, it cannot be disabled.
     */
    crossRegionRestoreEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
     */
    datastoreType?: pulumi.Input<string | undefined>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.dataprotection.BackupVaultIdentity | undefined>;
    /**
     * The state of immutability for this Backup Vault. Possible values are `Disabled`, `Locked`, and `Unlocked`. Defaults to `Disabled`.
     */
    immutability?: pulumi.Input<string | undefined>;
    /**
     * The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
     */
    redundancy?: pulumi.Input<string | undefined>;
    /**
     * The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    /**
     * The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
     *
     * > **Note:** The `retentionDurationInDays` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retentionDurationInDays` is required when the `softDelete` is set to `On`.
     */
    retentionDurationInDays?: pulumi.Input<number | undefined>;
    /**
     * The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off`, and `On`. Defaults to `On`.
     *
     * > **Note:** Once the `softDelete` is set to `AlwaysOn`, the setting cannot be changed.
     */
    softDelete?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags which should be assigned to the Backup Vault.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
}
/**
 * The set of arguments for constructing a BackupVault resource.
 */
export interface BackupVaultArgs {
    /**
     * Whether to enable cross-region restore for the Backup Vault.
     *
     * > **Note:** The `crossRegionRestoreEnabled` can only be specified when `redundancy` is specified for `GeoRedundant`. Once `crossRegionRestoreEnabled` is enabled, it cannot be disabled.
     */
    crossRegionRestoreEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the type of the data store. Possible values are `ArchiveStore`, `OperationalStore`, `SnapshotStore` and `VaultStore`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `SnapshotStore` will be removed in version 4.0 as it has been replaced by `OperationalStore`.
     */
    datastoreType: pulumi.Input<string>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.dataprotection.BackupVaultIdentity | undefined>;
    /**
     * The state of immutability for this Backup Vault. Possible values are `Disabled`, `Locked`, and `Unlocked`. Defaults to `Disabled`.
     */
    immutability?: pulumi.Input<string | undefined>;
    /**
     * The Azure Region where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Specifies the name of the Backup Vault. Changing this forces a new Backup Vault to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Specifies the backup storage redundancy. Possible values are `GeoRedundant`, `LocallyRedundant` and `ZoneRedundant`. Changing this forces a new Backup Vault to be created.
     */
    redundancy: pulumi.Input<string>;
    /**
     * The name of the Resource Group where the Backup Vault should exist. Changing this forces a new Backup Vault to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * The soft delete retention duration for this Backup Vault. Possible values are between `14` and `180`. Defaults to `14`.
     *
     * > **Note:** The `retentionDurationInDays` is the number of days for which deleted data is retained before being permanently deleted. Retention period till 14 days are free of cost, however, retention beyond 14 days may incur additional charges. The `retentionDurationInDays` is required when the `softDelete` is set to `On`.
     */
    retentionDurationInDays?: pulumi.Input<number | undefined>;
    /**
     * The state of soft delete for this Backup Vault. Possible values are `AlwaysOn`, `Off`, and `On`. Defaults to `On`.
     *
     * > **Note:** Once the `softDelete` is set to `AlwaysOn`, the setting cannot be changed.
     */
    softDelete?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags which should be assigned to the Backup Vault.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
}
//# sourceMappingURL=backupVault.d.ts.map