import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a File Share within Azure Storage.
 *
 * > **Note:** The storage share supports two storage tiers: premium and standard. Standard file shares are created in general purpose (GPv1 or GPv2) storage accounts and premium file shares are created in FileStorage storage accounts. For further information, refer to the section "What storage tiers are supported in Azure Files?" of [documentation](https://docs.microsoft.com/azure/storage/files/storage-files-faq#general).
 *
 * > **Note:** Shared Key authentication will always be used for this resource, as AzureAD authentication is not supported by the Storage API for files.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "azuretest",
 *     location: "West Europe",
 * });
 * const exampleAccount = new azure.storage.Account("example", {
 *     name: "azureteststorage",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     accountTier: "Standard",
 *     accountReplicationType: "LRS",
 * });
 * const exampleShare = new azure.storage.Share("example", {
 *     name: "sharename",
 *     storageAccountId: exampleAccount.id,
 *     quota: 50,
 *     acls: [{
 *         id: "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
 *         accessPolicies: [{
 *             permissions: "rwdl",
 *             start: "2019-07-02T09:38:21Z",
 *             expiry: "2019-07-02T10:38:21Z",
 *         }],
 *     }],
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Storage` - 2025-08-01
 *
 * ## Import
 *
 * Storage Shares can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:storage/share:Share exampleShare /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Storage/storageAccounts/myAccount/fileServices/default/shares/exampleShare
 * ```
 */
export declare class Share extends pulumi.CustomResource {
    /**
     * Get an existing Share 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?: ShareState, opts?: pulumi.CustomResourceOptions): Share;
    /**
     * Returns true if the given object is an instance of Share.  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 Share;
    /**
     * The access tier of the File Share. Possible values are `Hot`, `Cool` and `TransactionOptimized`, `Premium`.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` requires `Premium` `accessTier`.
     */
    readonly accessTier: pulumi.Output<string>;
    /**
     * One or more `acl` blocks as defined below.
     */
    readonly acls: pulumi.Output<outputs.storage.ShareAcl[] | undefined>;
    /**
     * The protocol used for the share. Possible values are `SMB` and `NFS`. The `SMB` indicates the share can be accessed by SMBv3.0, SMBv2.1 and REST. The `NFS` indicates the share can be accessed by NFSv4.1. Defaults to `SMB`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` is required for the `NFS` protocol.
     */
    readonly enabledProtocol: pulumi.Output<string | undefined>;
    /**
     * A mapping of MetaData for this File Share.
     */
    readonly metadata: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The name of the share. Must be unique within the storage account where the share is located. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The maximum size of the share, in gigabytes.
     *
     * > **Note:** For Standard storage accounts, by default this must be `1` GB (or higher) and at most `5120` GB (`5` TB). This can be set to a value larger than `5120` GB if `largeFileShareEnabled` is set to `true` in the parent `azure.storage.Account`.
     *
     * > **Note:** For Premium FileStorage storage accounts, this must be greater than `100` GB and at most `102400` GB (`100` TB).
     */
    readonly quota: pulumi.Output<number>;
    /**
     * The ID that is supposed to be used as the `scope` of an `azurermRoleAssignmet` for this File Share.
     */
    readonly rbacScopeId: pulumi.Output<string>;
    /**
     * The Resource Manager ID of this File Share.
     *
     * @deprecated this property is deprecated and will be removed 5.0 and replaced by the `id` property.
     */
    readonly resourceManagerId: pulumi.Output<string>;
    /**
     * Specifies the storage account in which to create the share.
     *
     * > **Note:** One of `storageAccountName` or `storageAccountId` must be specified. When specifying `storageAccountId` the resource will use the Resource Manager API, rather than the Data Plane API.
     */
    readonly storageAccountId: pulumi.Output<string | undefined>;
    /**
     * Specifies the storage account in which to create the share. This property is deprecated in favour of `storageAccountId`.
     *
     * > **Note:** Migrating from the deprecated `storageAccountName` to `storageAccountId` is supported without recreation. Any other change to either property will result in the resource being recreated.
     *
     * @deprecated This property has been deprecated and will be replaced by `storageAccountId` in version 5.0 of the provider.
     */
    readonly storageAccountName: pulumi.Output<string | undefined>;
    /**
     * The URL of the File Share
     */
    readonly url: pulumi.Output<string>;
    /**
     * Create a Share 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: ShareArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Share resources.
 */
export interface ShareState {
    /**
     * The access tier of the File Share. Possible values are `Hot`, `Cool` and `TransactionOptimized`, `Premium`.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` requires `Premium` `accessTier`.
     */
    accessTier?: pulumi.Input<string | undefined>;
    /**
     * One or more `acl` blocks as defined below.
     */
    acls?: pulumi.Input<pulumi.Input<inputs.storage.ShareAcl>[] | undefined>;
    /**
     * The protocol used for the share. Possible values are `SMB` and `NFS`. The `SMB` indicates the share can be accessed by SMBv3.0, SMBv2.1 and REST. The `NFS` indicates the share can be accessed by NFSv4.1. Defaults to `SMB`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` is required for the `NFS` protocol.
     */
    enabledProtocol?: pulumi.Input<string | undefined>;
    /**
     * A mapping of MetaData for this File Share.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The name of the share. Must be unique within the storage account where the share is located. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The maximum size of the share, in gigabytes.
     *
     * > **Note:** For Standard storage accounts, by default this must be `1` GB (or higher) and at most `5120` GB (`5` TB). This can be set to a value larger than `5120` GB if `largeFileShareEnabled` is set to `true` in the parent `azure.storage.Account`.
     *
     * > **Note:** For Premium FileStorage storage accounts, this must be greater than `100` GB and at most `102400` GB (`100` TB).
     */
    quota?: pulumi.Input<number | undefined>;
    /**
     * The ID that is supposed to be used as the `scope` of an `azurermRoleAssignmet` for this File Share.
     */
    rbacScopeId?: pulumi.Input<string | undefined>;
    /**
     * The Resource Manager ID of this File Share.
     *
     * @deprecated this property is deprecated and will be removed 5.0 and replaced by the `id` property.
     */
    resourceManagerId?: pulumi.Input<string | undefined>;
    /**
     * Specifies the storage account in which to create the share.
     *
     * > **Note:** One of `storageAccountName` or `storageAccountId` must be specified. When specifying `storageAccountId` the resource will use the Resource Manager API, rather than the Data Plane API.
     */
    storageAccountId?: pulumi.Input<string | undefined>;
    /**
     * Specifies the storage account in which to create the share. This property is deprecated in favour of `storageAccountId`.
     *
     * > **Note:** Migrating from the deprecated `storageAccountName` to `storageAccountId` is supported without recreation. Any other change to either property will result in the resource being recreated.
     *
     * @deprecated This property has been deprecated and will be replaced by `storageAccountId` in version 5.0 of the provider.
     */
    storageAccountName?: pulumi.Input<string | undefined>;
    /**
     * The URL of the File Share
     */
    url?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Share resource.
 */
export interface ShareArgs {
    /**
     * The access tier of the File Share. Possible values are `Hot`, `Cool` and `TransactionOptimized`, `Premium`.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` requires `Premium` `accessTier`.
     */
    accessTier?: pulumi.Input<string | undefined>;
    /**
     * One or more `acl` blocks as defined below.
     */
    acls?: pulumi.Input<pulumi.Input<inputs.storage.ShareAcl>[] | undefined>;
    /**
     * The protocol used for the share. Possible values are `SMB` and `NFS`. The `SMB` indicates the share can be accessed by SMBv3.0, SMBv2.1 and REST. The `NFS` indicates the share can be accessed by NFSv4.1. Defaults to `SMB`. Changing this forces a new resource to be created.
     *
     * > **Note:** The `FileStorage` `accountKind` of the `azure.storage.Account` is required for the `NFS` protocol.
     */
    enabledProtocol?: pulumi.Input<string | undefined>;
    /**
     * A mapping of MetaData for this File Share.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The name of the share. Must be unique within the storage account where the share is located. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The maximum size of the share, in gigabytes.
     *
     * > **Note:** For Standard storage accounts, by default this must be `1` GB (or higher) and at most `5120` GB (`5` TB). This can be set to a value larger than `5120` GB if `largeFileShareEnabled` is set to `true` in the parent `azure.storage.Account`.
     *
     * > **Note:** For Premium FileStorage storage accounts, this must be greater than `100` GB and at most `102400` GB (`100` TB).
     */
    quota: pulumi.Input<number>;
    /**
     * Specifies the storage account in which to create the share.
     *
     * > **Note:** One of `storageAccountName` or `storageAccountId` must be specified. When specifying `storageAccountId` the resource will use the Resource Manager API, rather than the Data Plane API.
     */
    storageAccountId?: pulumi.Input<string | undefined>;
    /**
     * Specifies the storage account in which to create the share. This property is deprecated in favour of `storageAccountId`.
     *
     * > **Note:** Migrating from the deprecated `storageAccountName` to `storageAccountId` is supported without recreation. Any other change to either property will result in the resource being recreated.
     *
     * @deprecated This property has been deprecated and will be replaced by `storageAccountId` in version 5.0 of the provider.
     */
    storageAccountName?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=share.d.ts.map