import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * The storage account.
 *
 * Uses Azure REST API version 2024-01-01. In version 2.x of the Azure Native provider, it used API version 2022-09-01.
 *
 * Other available API versions: 2022-09-01, 2023-01-01, 2023-04-01, 2023-05-01, 2025-01-01. These can be accessed by generating a local SDK package using the CLI command `pulumi package add azure-native storage [ApiVersion]`. See the [version guide](../../../version-guide/#accessing-any-api-version-via-local-packages) for details.
 */
export declare class StorageAccount extends pulumi.CustomResource {
    /**
     * Get an existing StorageAccount 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 opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): StorageAccount;
    /**
     * Returns true if the given object is an instance of StorageAccount.  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 StorageAccount;
    /**
     * Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it cannot be changed for the premium block blobs storage account type.
     */
    readonly accessTier: pulumi.Output<string>;
    /**
     * If customer initiated account migration is in progress, the value will be true else it will be null.
     */
    readonly accountMigrationInProgress: pulumi.Output<boolean>;
    /**
     * Allow or disallow public access to all blobs or containers in the storage account. The default interpretation is false for this property.
     */
    readonly allowBlobPublicAccess: pulumi.Output<boolean | undefined>;
    /**
     * Allow or disallow cross AAD tenant object replication. Set this property to true for new or existing accounts only if object replication policies will involve storage accounts in different AAD tenants. The default interpretation is false for new accounts to follow best security practices by default.
     */
    readonly allowCrossTenantReplication: pulumi.Output<boolean | undefined>;
    /**
     * Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
     */
    readonly allowSharedKeyAccess: pulumi.Output<boolean | undefined>;
    /**
     * Restrict copy to and from Storage Accounts within an AAD tenant or with Private Links to the same VNet.
     */
    readonly allowedCopyScope: pulumi.Output<string | undefined>;
    /**
     * The Azure API version of the resource.
     */
    readonly azureApiVersion: pulumi.Output<string>;
    /**
     * Provides the identity based authentication settings for Azure Files.
     */
    readonly azureFilesIdentityBasedAuthentication: pulumi.Output<outputs.storage.AzureFilesIdentityBasedAuthenticationResponse | undefined>;
    /**
     * Blob restore status
     */
    readonly blobRestoreStatus: pulumi.Output<outputs.storage.BlobRestoreStatusResponse>;
    /**
     * Gets the creation date and time of the storage account in UTC.
     */
    readonly creationTime: pulumi.Output<string>;
    /**
     * Gets the custom domain the user assigned to this storage account.
     */
    readonly customDomain: pulumi.Output<outputs.storage.CustomDomainResponse>;
    /**
     * A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is false for this property.
     */
    readonly defaultToOAuthAuthentication: pulumi.Output<boolean | undefined>;
    /**
     * Allows you to specify the type of endpoint. Set this to AzureDNSZone to create a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint URL will have an alphanumeric DNS Zone identifier.
     */
    readonly dnsEndpointType: pulumi.Output<string | undefined>;
    /**
     * Enables extended group support with local users feature, if set to true
     */
    readonly enableExtendedGroups: pulumi.Output<boolean | undefined>;
    /**
     * Allows https traffic only to storage service if sets to true.
     */
    readonly enableHttpsTrafficOnly: pulumi.Output<boolean | undefined>;
    /**
     * NFS 3.0 protocol support enabled if set to true.
     */
    readonly enableNfsV3: pulumi.Output<boolean | undefined>;
    /**
     * Encryption settings to be used for server-side encryption for the storage account.
     */
    readonly encryption: pulumi.Output<outputs.storage.EncryptionResponse>;
    /**
     * The extendedLocation of the resource.
     */
    readonly extendedLocation: pulumi.Output<outputs.storage.ExtendedLocationResponse | undefined>;
    /**
     * If the failover is in progress, the value will be true, otherwise, it will be null.
     */
    readonly failoverInProgress: pulumi.Output<boolean>;
    /**
     * Geo Replication Stats
     */
    readonly geoReplicationStats: pulumi.Output<outputs.storage.GeoReplicationStatsResponse>;
    /**
     * The identity of the resource.
     */
    readonly identity: pulumi.Output<outputs.storage.IdentityResponse | undefined>;
    /**
     * The property is immutable and can only be set to true at the account creation time. When set to true, it enables object level immutability for all the containers in the account by default.
     */
    readonly immutableStorageWithVersioning: pulumi.Output<outputs.storage.ImmutableStorageAccountResponse | undefined>;
    /**
     * Account HierarchicalNamespace enabled if sets to true.
     */
    readonly isHnsEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Enables local users feature, if set to true
     */
    readonly isLocalUserEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Enables Secure File Transfer Protocol, if set to true
     */
    readonly isSftpEnabled: pulumi.Output<boolean | undefined>;
    /**
     * This property will be set to true or false on an event of ongoing migration. Default value is null.
     */
    readonly isSkuConversionBlocked: pulumi.Output<boolean>;
    /**
     * Storage account keys creation time.
     */
    readonly keyCreationTime: pulumi.Output<outputs.storage.KeyCreationTimeResponse>;
    /**
     * KeyPolicy assigned to the storage account.
     */
    readonly keyPolicy: pulumi.Output<outputs.storage.KeyPolicyResponse>;
    /**
     * Gets the Kind.
     */
    readonly kind: pulumi.Output<string>;
    /**
     * Allow large file shares if sets to Enabled. It cannot be disabled once it is enabled.
     */
    readonly largeFileSharesState: pulumi.Output<string | undefined>;
    /**
     * Gets the timestamp of the most recent instance of a failover to the secondary location. Only the most recent timestamp is retained. This element is not returned if there has never been a failover instance. Only available if the accountType is Standard_GRS or Standard_RAGRS.
     */
    readonly lastGeoFailoverTime: pulumi.Output<string>;
    /**
     * The geo-location where the resource lives
     */
    readonly location: pulumi.Output<string>;
    /**
     * Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for this property.
     */
    readonly minimumTlsVersion: pulumi.Output<string | undefined>;
    /**
     * The name of the resource
     */
    readonly name: pulumi.Output<string>;
    /**
     * Network rule set
     */
    readonly networkRuleSet: pulumi.Output<outputs.storage.NetworkRuleSetResponse>;
    /**
     * Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object. Note that Standard_ZRS and Premium_LRS accounts only return the blob endpoint.
     */
    readonly primaryEndpoints: pulumi.Output<outputs.storage.EndpointsResponse>;
    /**
     * Gets the location of the primary data center for the storage account.
     */
    readonly primaryLocation: pulumi.Output<string>;
    /**
     * List of private endpoint connection associated with the specified storage account
     */
    readonly privateEndpointConnections: pulumi.Output<outputs.storage.PrivateEndpointConnectionResponse[]>;
    /**
     * Gets the status of the storage account at the time the operation was called.
     */
    readonly provisioningState: pulumi.Output<string>;
    /**
     * Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access to Storage Account.
     */
    readonly publicNetworkAccess: pulumi.Output<string | undefined>;
    /**
     * Maintains information about the network routing choice opted by the user for data transfer
     */
    readonly routingPreference: pulumi.Output<outputs.storage.RoutingPreferenceResponse | undefined>;
    /**
     * SasPolicy assigned to the storage account.
     */
    readonly sasPolicy: pulumi.Output<outputs.storage.SasPolicyResponse>;
    /**
     * Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object from the secondary location of the storage account. Only available if the SKU name is Standard_RAGRS.
     */
    readonly secondaryEndpoints: pulumi.Output<outputs.storage.EndpointsResponse>;
    /**
     * Gets the location of the geo-replicated secondary for the storage account. Only available if the accountType is Standard_GRS or Standard_RAGRS.
     */
    readonly secondaryLocation: pulumi.Output<string>;
    /**
     * Gets the SKU.
     */
    readonly sku: pulumi.Output<outputs.storage.SkuResponse>;
    /**
     * Gets the status indicating whether the primary location of the storage account is available or unavailable.
     */
    readonly statusOfPrimary: pulumi.Output<string>;
    /**
     * Gets the status indicating whether the secondary location of the storage account is available or unavailable. Only available if the SKU name is Standard_GRS or Standard_RAGRS.
     */
    readonly statusOfSecondary: pulumi.Output<string>;
    /**
     * This property is readOnly and is set by server during asynchronous storage account sku conversion operations.
     */
    readonly storageAccountSkuConversionStatus: pulumi.Output<outputs.storage.StorageAccountSkuConversionStatusResponse | undefined>;
    /**
     * Resource tags.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
     */
    readonly type: pulumi.Output<string>;
    /**
     * Create a StorageAccount 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: StorageAccountArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a StorageAccount resource.
 */
export interface StorageAccountArgs {
    /**
     * Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it cannot be changed for the premium block blobs storage account type.
     */
    accessTier?: pulumi.Input<enums.storage.AccessTier>;
    /**
     * The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
     */
    accountName?: pulumi.Input<string>;
    /**
     * Allow or disallow public access to all blobs or containers in the storage account. The default interpretation is false for this property.
     */
    allowBlobPublicAccess?: pulumi.Input<boolean>;
    /**
     * Allow or disallow cross AAD tenant object replication. Set this property to true for new or existing accounts only if object replication policies will involve storage accounts in different AAD tenants. The default interpretation is false for new accounts to follow best security practices by default.
     */
    allowCrossTenantReplication?: pulumi.Input<boolean>;
    /**
     * Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
     */
    allowSharedKeyAccess?: pulumi.Input<boolean>;
    /**
     * Restrict copy to and from Storage Accounts within an AAD tenant or with Private Links to the same VNet.
     */
    allowedCopyScope?: pulumi.Input<string | enums.storage.AllowedCopyScope>;
    /**
     * Provides the identity based authentication settings for Azure Files.
     */
    azureFilesIdentityBasedAuthentication?: pulumi.Input<inputs.storage.AzureFilesIdentityBasedAuthenticationArgs>;
    /**
     * User domain assigned to the storage account. Name is the CNAME source. Only one custom domain is supported per storage account at this time. To clear the existing custom domain, use an empty string for the custom domain name property.
     */
    customDomain?: pulumi.Input<inputs.storage.CustomDomainArgs>;
    /**
     * A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is false for this property.
     */
    defaultToOAuthAuthentication?: pulumi.Input<boolean>;
    /**
     * Allows you to specify the type of endpoint. Set this to AzureDNSZone to create a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint URL will have an alphanumeric DNS Zone identifier.
     */
    dnsEndpointType?: pulumi.Input<string | enums.storage.DnsEndpointType>;
    /**
     * Enables extended group support with local users feature, if set to true
     */
    enableExtendedGroups?: pulumi.Input<boolean>;
    /**
     * Allows https traffic only to storage service if sets to true. The default value is true since API version 2019-04-01.
     */
    enableHttpsTrafficOnly?: pulumi.Input<boolean>;
    /**
     * NFS 3.0 protocol support enabled if set to true.
     */
    enableNfsV3?: pulumi.Input<boolean>;
    /**
     * Encryption settings to be used for server-side encryption for the storage account.
     */
    encryption?: pulumi.Input<inputs.storage.EncryptionArgs>;
    /**
     * Optional. Set the extended location of the resource. If not set, the storage account will be created in Azure main region. Otherwise it will be created in the specified extended location
     */
    extendedLocation?: pulumi.Input<inputs.storage.ExtendedLocationArgs>;
    /**
     * The identity of the resource.
     */
    identity?: pulumi.Input<inputs.storage.IdentityArgs>;
    /**
     * The property is immutable and can only be set to true at the account creation time. When set to true, it enables object level immutability for all the new containers in the account by default.
     */
    immutableStorageWithVersioning?: pulumi.Input<inputs.storage.ImmutableStorageAccountArgs>;
    /**
     * Account HierarchicalNamespace enabled if sets to true.
     */
    isHnsEnabled?: pulumi.Input<boolean>;
    /**
     * Enables local users feature, if set to true
     */
    isLocalUserEnabled?: pulumi.Input<boolean>;
    /**
     * Enables Secure File Transfer Protocol, if set to true
     */
    isSftpEnabled?: pulumi.Input<boolean>;
    /**
     * KeyPolicy assigned to the storage account.
     */
    keyPolicy?: pulumi.Input<inputs.storage.KeyPolicyArgs>;
    /**
     * Required. Indicates the type of storage account.
     */
    kind: pulumi.Input<string | enums.storage.Kind>;
    /**
     * Allow large file shares if sets to Enabled. It cannot be disabled once it is enabled.
     */
    largeFileSharesState?: pulumi.Input<string | enums.storage.LargeFileSharesState>;
    /**
     * Required. Gets or sets the location of the resource. This will be one of the supported and registered Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.). The geo region of a resource cannot be changed once it is created, but if an identical geo region is specified on update, the request will succeed.
     */
    location?: pulumi.Input<string>;
    /**
     * Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for this property.
     */
    minimumTlsVersion?: pulumi.Input<string | enums.storage.MinimumTlsVersion>;
    /**
     * Network rule set
     */
    networkRuleSet?: pulumi.Input<inputs.storage.NetworkRuleSetArgs>;
    /**
     * Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access to Storage Account. Value is optional but if passed in, must be 'Enabled', 'Disabled' or 'SecuredByPerimeter'.
     */
    publicNetworkAccess?: pulumi.Input<string | enums.storage.PublicNetworkAccess>;
    /**
     * The name of the resource group within the user's subscription. The name is case insensitive.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * Maintains information about the network routing choice opted by the user for data transfer
     */
    routingPreference?: pulumi.Input<inputs.storage.RoutingPreferenceArgs>;
    /**
     * SasPolicy assigned to the storage account.
     */
    sasPolicy?: pulumi.Input<inputs.storage.SasPolicyArgs>;
    /**
     * Required. Gets or sets the SKU name.
     */
    sku: pulumi.Input<inputs.storage.SkuArgs>;
    /**
     * Gets or sets a list of key value pairs that describe the resource. These tags can be used for viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key with a length no greater than 128 characters and a value with a length no greater than 256 characters.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
