import { Expressionable, ResourceDefinition } from 'arm-templator'; export interface AccessPolicyEntry { tenantId: Expressionable; objectId: Expressionable; applicationId?: Expressionable; permissions: Expressionable; } export interface Permissions { keys?: Expressionable<('encrypt' | 'decrypt' | 'wrapKey' | 'unwrapKey' | 'sign' | 'verify' | 'get' | 'list' | 'create' | 'update' | 'import' | 'delete' | 'backup' | 'restore' | 'recover' | 'purge')[]>; secrets?: Expressionable<('get' | 'list' | 'set' | 'delete' | 'backup' | 'restore' | 'recover' | 'purge')[]>; certificates?: Expressionable<('get' | 'list' | 'delete' | 'create' | 'import' | 'update' | 'managecontacts' | 'getissuers' | 'listissuers' | 'setissuers' | 'deleteissuers' | 'manageissuers' | 'recover' | 'purge')[]>; storage?: Expressionable<('get' | 'list' | 'delete' | 'set' | 'update' | 'regeneratekey' | 'setsas' | 'listsas' | 'getsas' | 'deletesas')[]>; } export interface SecretAttributes { enabled?: Expressionable; nbf?: Expressionable; exp?: Expressionable; } export interface SecretProperties { value?: Expressionable; contentType?: Expressionable; attributes?: Expressionable; } export interface Sku { family: Expressionable<('A')>; name: Expressionable<('standard' | 'premium')>; } export interface VaultAccessPolicyProperties { accessPolicies: Expressionable; } export interface VaultProperties { tenantId: Expressionable; sku: Expressionable; accessPolicies?: Expressionable; enabledForDeployment?: Expressionable; enabledForDiskEncryption?: Expressionable; enabledForTemplateDeployment?: Expressionable; enableSoftDelete?: Expressionable; createMode?: Expressionable<('recover' | 'default')>; } export declare namespace vaults { type VaultsResource = ResourceDefinition; function create(name: Expressionable, properties: VaultProperties, location: Expressionable): VaultsResource; } export declare namespace vaults { namespace accessPolicies { type AccessPoliciesResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: VaultAccessPolicyProperties): AccessPoliciesResource; } } export declare namespace vaults { namespace secrets { type SecretsResource = ResourceDefinition; function create(name: [Expressionable, Expressionable], properties: SecretProperties): SecretsResource; } }