import { Expressionable, ResourceDefinition } from 'arm-templator'; export interface BlobServicePropertiesProperties { cors?: Expressionable; defaultServiceVersion?: Expressionable; deleteRetentionPolicy?: Expressionable; } export interface ContainerProperties { publicAccess?: Expressionable<('Container' | 'Blob' | 'None')>; } export interface CorsRule { allowedOrigins: Expressionable; allowedMethods: Expressionable<('DELETE' | 'GET' | 'HEAD' | 'MERGE' | 'POST' | 'OPTIONS' | 'PUT')[]>; maxAgeInSeconds: Expressionable; exposedHeaders: Expressionable; allowedHeaders: Expressionable; } export interface CorsRules { corsRules?: Expressionable; } export interface CustomDomain { name: Expressionable; useSubDomainName?: Expressionable; } export interface DeleteRetentionPolicy { enabled?: Expressionable; days?: Expressionable; } export interface Encryption { services?: Expressionable; keySource: Expressionable<('Microsoft.Storage' | 'Microsoft.Keyvault')>; keyvaultproperties?: Expressionable; } export interface EncryptionService { enabled?: Expressionable; } export interface EncryptionServices { blob?: Expressionable; file?: Expressionable; } export interface Identity { type: Expressionable<('SystemAssigned')>; } export interface ImmutabilityPolicyProperty { immutabilityPeriodSinceCreationInDays: Expressionable; } export interface IPRule { value: Expressionable; action?: Expressionable<('Allow')>; } export interface KeyVaultProperties { keyname?: Expressionable; keyversion?: Expressionable; keyvaulturi?: Expressionable; } export interface NetworkRuleSet { bypass?: Expressionable<('None' | 'Logging' | 'Metrics' | 'AzureServices')>; virtualNetworkRules?: Expressionable; ipRules?: Expressionable; defaultAction: Expressionable<('Allow' | 'Deny')>; } export interface Restriction { reasonCode?: Expressionable<('QuotaId' | 'NotAvailableForSubscription')>; } export interface Sku { name: Expressionable<('Standard_LRS' | 'Standard_GRS' | 'Standard_RAGRS' | 'Standard_ZRS' | 'Premium_LRS' | 'Premium_ZRS')>; restrictions?: Expressionable; } export interface StorageAccountPropertiesCreateParameters { customDomain?: Expressionable; encryption?: Expressionable; networkAcls?: Expressionable; accessTier?: Expressionable<('Hot' | 'Cool')>; azureFilesAadIntegration?: Expressionable; supportsHttpsTrafficOnly?: Expressionable; isHnsEnabled?: Expressionable; } export interface VirtualNetworkRule { id: Expressionable; action?: Expressionable<('Allow')>; state?: Expressionable<('provisioning' | 'deprovisioning' | 'succeeded' | 'failed' | 'networkSourceDeleted')>; } export declare namespace storageAccounts { interface AdditionalProps { identity?: Expressionable; sku: Expressionable; kind: Expressionable<('Storage' | 'StorageV2' | 'BlobStorage' | 'FileStorage' | 'BlockBlobStorage')>; } type StorageAccountsResource = ResourceDefinition; function create(name: Expressionable, properties: StorageAccountPropertiesCreateParameters, location: Expressionable, sku: Expressionable, kind: Expressionable<('Storage' | 'StorageV2' | 'BlobStorage' | 'FileStorage' | 'BlockBlobStorage')>, identity?: Expressionable): StorageAccountsResource; } export declare namespace storageAccounts { namespace blobServices { type BlobServicesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: BlobServicePropertiesProperties): BlobServicesResource; } } export declare namespace storageAccounts { namespace blobServices { namespace containers { type ContainersResource = ResourceDefinition; function create(name: [Expressionable, Expressionable, Expressionable], properties: ContainerProperties): ContainersResource; } } } export declare namespace storageAccounts { namespace blobServices { namespace containers { namespace immutabilityPolicies { type ImmutabilityPoliciesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable, Expressionable, Expressionable], properties: ImmutabilityPolicyProperty): ImmutabilityPoliciesResource; } } } } export declare namespace storageAccounts { namespace managementPolicies { type ManagementPoliciesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: any): ManagementPoliciesResource; } }