import type { AbortSignalLike } from '@azure/abort-controller';
import { AzureLogger } from '@azure/logger';
import * as coreClient from '@azure/core-client';
import * as coreHttpCompat from '@azure/core-http-compat';
import * as coreRestPipeline from '@azure/core-rest-pipeline';
import { HttpHeadersLike as HttpHeaders } from '@azure/core-http-compat';
import { CompatResponse as HttpOperationResponse } from '@azure/core-http-compat';
import type { HttpPipelineLogLevel } from '@azure/core-http-compat';
import { RequestBodyType as HttpRequestBody } from '@azure/core-rest-pipeline';
import type { KeepAliveOptions } from '@azure/core-http-compat';
import type { OperationTracingOptions } from '@azure/core-tracing';
import type { PagedAsyncIterableIterator } from '@azure/core-paging';
import type { ProxySettings } from '@azure/core-rest-pipeline';
import type { Readable } from 'stream';
import { RequestPolicy } from '@azure/core-http-compat';
import { RequestPolicyFactory } from '@azure/core-http-compat';
import { RequestPolicyOptionsLike as RequestPolicyOptions } from '@azure/core-http-compat';
import { RestError } from '@azure/core-rest-pipeline';
import type { TokenCredential } from '@azure/core-auth';
import type { TransferProgressEvent } from '@azure/core-rest-pipeline';
import type { UserAgentPolicyOptions } from '@azure/core-rest-pipeline';
import { WebResourceLike as WebResource } from '@azure/core-http-compat';

/** An Access policy. */
export declare interface AccessPolicy {
    /** The date-time the policy is active. */
    startsOn?: string;
    /** The date-time the policy expires. */
    expiresOn?: string;
    /** The permissions for the ACL policy. */
    permissions?: string;
}

/** Defines values for AccessRight. */
declare type AccessRight = "Read" | "Write" | "Delete";

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
 * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
 * values are set, this should be serialized with toString and set as the permissions field on an
 * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
 * the order of the permissions is particular and this class guarantees correctness.
 */
export declare class AccountSASPermissions {
    /**
     * Parse initializes the AccountSASPermissions fields from a string.
     *
     * @param permissions -
     */
    static parse(permissions: string): AccountSASPermissions;
    /**
     * Permission to read resources and list queues and tables granted.
     */
    read: boolean;
    /**
     * Permission to write resources granted.
     */
    write: boolean;
    /**
     * Permission to delete blobs and files granted.
     */
    delete: boolean;
    /**
     * Permission to list blob containers, blobs, shares, directories, and files granted.
     */
    list: boolean;
    /**
     * Permission to add messages, table entities, and append to blobs granted.
     */
    add: boolean;
    /**
     * Permission to create blobs and files granted.
     */
    create: boolean;
    /**
     * Permissions to update messages and table entities granted.
     */
    update: boolean;
    /**
     * Permission to get and delete messages granted.
     */
    process: boolean;
    /**
     * Produces the SAS permissions string for an Azure Storage account.
     * Call this method to set AccountSASSignatureValues Permissions field.
     *
     * Using this method will guarantee the resource types are in
     * an order accepted by the service.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
     *
     */
    toString(): string;
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
 * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
 * values are set, this should be serialized with toString and set as the resources field on an
 * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
 * the order of the resources is particular and this class guarantees correctness.
 */
export declare class AccountSASResourceTypes {
    /**
     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
     * Error if it encounters a character that does not correspond to a valid resource type.
     *
     * @param resourceTypes -
     */
    static parse(resourceTypes: string): AccountSASResourceTypes;
    /**
     * Permission to access service level APIs granted.
     */
    service: boolean;
    /**
     * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
     */
    container: boolean;
    /**
     * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
     */
    object: boolean;
    /**
     * Converts the given resource types to a string.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
     *
     */
    toString(): string;
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
 * to true means that any SAS which uses these permissions will grant access to that service. Once all the
 * values are set, this should be serialized with toString and set as the services field on an
 * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
 * the order of the services is particular and this class guarantees correctness.
 */
export declare class AccountSASServices {
    /**
     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an
     * Error if it encounters a character that does not correspond to a valid service.
     *
     * @param services -
     */
    static parse(services: string): AccountSASServices;
    /**
     * Permission to access blob resources granted.
     */
    blob: boolean;
    /**
     * Permission to access file resources granted.
     */
    file: boolean;
    /**
     * Permission to access queue resources granted.
     */
    queue: boolean;
    /**
     * Permission to access table resources granted.
     */
    table: boolean;
    /**
     * Converts the given services to a string.
     *
     */
    toString(): string;
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * AccountSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account. Once
 * all the values here are set appropriately, call {@link generateAccountSASQueryParameters} to obtain a representation of the SAS
 * which can actually be applied to file urls. Note: that both this class and {@link SASQueryParameters} exist because
 * the former is mutable and a logical representation while the latter is immutable and used to generate actual REST
 * requests.
 *
 * @see https://learn.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1
 * for more conceptual information on SAS
 *
 * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
 * for descriptions of the parameters, including which are required
 */
export declare interface AccountSASSignatureValues {
    /**
     * If not provided, this defaults to the service version targeted by this version of the library.
     */
    version?: string;
    /**
     * Optional. SAS protocols allowed.
     */
    protocol?: SASProtocol;
    /**
     * Optional. When the SAS will take effect.
     */
    startsOn?: Date;
    /**
     * The time after which the SAS will no longer work.
     */
    expiresOn: Date;
    /**
     * Specifies which operations the SAS user may perform. Please refer to {@link AccountSASPermissions} for help
     * constructing the permissions string.
     */
    permissions: AccountSASPermissions;
    /**
     * Optional. IP range allowed.
     */
    ipRange?: SasIPRange;
    /**
     * The values that indicate the services accessible with this SAS. Please refer to {@link AccountSASServices} to
     * construct this value.
     */
    services: string;
    /**
     * The values that indicate the resource types accessible with this SAS. Please refer
     * to {@link AccountSASResourceTypes} to construct this value.
     */
    resourceTypes: string;
}

/**
 * AnonymousCredential provides a credentialPolicyCreator member used to create
 * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with
 * HTTP(S) requests that read public resources or for use with Shared Access
 * Signatures (SAS).
 */
export declare class AnonymousCredential extends Credential_2 {
    /**
     * Creates an {@link AnonymousCredentialPolicy} object.
     *
     * @param nextPolicy -
     * @param options -
     */
    create(nextPolicy: RequestPolicy, options: RequestPolicyOptions): AnonymousCredentialPolicy;
}

/**
 * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
 * or for use with Shared Access Signatures (SAS).
 */
export declare class AnonymousCredentialPolicy extends CredentialPolicy {
    /**
     * Creates an instance of AnonymousCredentialPolicy.
     * @param nextPolicy -
     * @param options -
     */
    constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions);
}

/**
 * The base class from which all request policies derive.
 */
export declare abstract class BaseRequestPolicy implements RequestPolicy {
    /**
     * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.
     */
    readonly _nextPolicy: RequestPolicy;
    /**
     * The options that can be passed to a given request policy.
     */
    readonly _options: RequestPolicyOptions;
    /**
     * The main method to implement that manipulates a request/response.
     */
    protected constructor(
    /**
     * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.
     */
    _nextPolicy: RequestPolicy, 
    /**
     * The options that can be passed to a given request policy.
     */
    _options: RequestPolicyOptions);
    /**
     * Sends a network request based on the given web resource.
     * @param webResource - A {@link WebResourceLike} that describes a HTTP request to be made.
     */
    abstract sendRequest(webResource: WebResource): Promise<HttpOperationResponse>;
    /**
     * Get whether or not a log with the provided log level should be logged.
     * @param logLevel - The log level of the log that will be logged.
     * @returns Whether or not a log with the provided log level should be logged.
     */
    shouldLog(logLevel: HttpPipelineLogLevel): boolean;
    /**
     * Attempt to log the provided message to the provided logger. If no logger was provided or if
     * the log level does not meat the logger's threshold, then nothing will be logged.
     * @param logLevel - The log level of this log.
     * @param message - The message of this log.
     */
    log(logLevel: HttpPipelineLogLevel, message: string): void;
}

export declare interface ClearRange {
    start: number;
    end: number;
}

/**
 * Close handles result information.
 */
export declare interface CloseHandlesInfo {
    closedHandlesCount: number;
    /**
     * Contains count of number of handles that failed to close.
     */
    closeFailureCount?: number;
}

/**
 * Common options of the {@link ShareGenerateSasUrlOptions} and {@link FileGenerateSasUrlOptions}.
 */
export declare interface CommonGenerateSasUrlOptions {
    /**
     * The version of the service this SAS will target. If not specified, it will default to the version targeted by the
     * library.
     */
    version?: string;
    /**
     * Optional. SAS protocols, HTTPS only or HTTPSandHTTP
     */
    protocol?: SASProtocol;
    /**
     * Optional. When the SAS will take effect.
     */
    startsOn?: Date;
    /**
     * Optional only when identifier is provided. The time after which the SAS will no longer work.
     */
    expiresOn?: Date;
    /**
     * Optional. IP ranges allowed in this SAS.
     */
    ipRange?: SasIPRange;
    /**
     * Optional. The name of the access policy on the share this SAS references if any.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/establishing-a-stored-access-policy
     */
    identifier?: string;
    /**
     * Optional. The cache-control header for the SAS.
     */
    cacheControl?: string;
    /**
     * Optional. The content-disposition header for the SAS.
     */
    contentDisposition?: string;
    /**
     * Optional. The content-encoding header for the SAS.
     */
    contentEncoding?: string;
    /**
     * Optional. The content-language header for the SAS.
     */
    contentLanguage?: string;
    /**
     * Optional. The content-type header for the SAS.
     */
    contentType?: string;
}

/**
 * An interface for options common to every remote operation.
 */
export declare interface CommonOptions {
    tracingOptions?: OperationTracingOptions;
}

/** Parameter group */
export declare interface CopyFileSmbInfo {
    /** Specifies either the option to copy file attributes from a source file(source) to a target file or a list of attributes to set on a target file. */
    fileAttributes?: string;
    /** Specifies either the option to copy file creation time from a source file(source) to a target file or a time value in ISO 8601 format to set as creation time on a target file. */
    fileCreationTime?: string;
    /** Specifies either the option to copy file last write time from a source file(source) to a target file or a time value in ISO 8601 format to set as last write time on a target file. */
    fileLastWriteTime?: string;
    /** Specifies either the option to copy file last write time from a source file(source) to a target file or a time value in ISO 8601 format to set as last write time on a target file. */
    fileChangeTime?: string;
    /** Specifies the option to copy file security descriptor from source file or to set it using the value which is defined by the header value of x-ms-file-permission or x-ms-file-permission-key. */
    filePermissionCopyMode?: PermissionCopyModeType;
    /** Specifies the option to overwrite the target file if it already exists and has read-only attribute set. */
    ignoreReadOnly?: boolean;
    /** Specifies the option to set archive attribute on a target file. True means archive attribute will be set on a target file despite attribute overrides or a source file state. */
    setArchiveAttribute?: boolean;
}

/** Defines values for CopyStatusType. */
export declare type CopyStatusType = "pending" | "success" | "aborted" | "failed";

/** CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain. Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain. */
export declare interface CorsRule {
    /** The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS. */
    allowedOrigins: string;
    /** The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated) */
    allowedMethods: string;
    /** The request headers that the origin domain may specify on the CORS request. */
    allowedHeaders: string;
    /** The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer. */
    exposedHeaders: string;
    /** The maximum amount time that a browser should cache the preflight OPTIONS request. */
    maxAgeInSeconds: number;
}

/**
 * Credential is an abstract class for Azure Storage HTTP requests signing. This
 * class will host an credentialPolicyCreator factory which generates CredentialPolicy.
 */
declare abstract class Credential_2 implements RequestPolicyFactory {
    /**
     * Creates a RequestPolicy object.
     *
     * @param _nextPolicy -
     * @param _options -
     */
    create(_nextPolicy: RequestPolicy, _options: RequestPolicyOptions): RequestPolicy;
}
export { Credential_2 as Credential }

/**
 * Credential policy used to sign HTTP(S) requests before sending. This is an
 * abstract class.
 */
export declare abstract class CredentialPolicy extends BaseRequestPolicy {
    /**
     * Sends out request.
     *
     * @param request -
     */
    sendRequest(request: WebResource): Promise<HttpOperationResponse>;
    /**
     * Child classes must implement this method with request signing. This method
     * will be executed in {@link sendRequest}.
     *
     * @param request -
     */
    protected signRequest(request: WebResource): WebResource;
}

/**
 * A factory function that creates a new CredentialPolicy that uses the provided nextPolicy.
 */
export declare type CredentialPolicyCreator = (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => CredentialPolicy;

/** Defines values for DeleteSnapshotsOptionType. */
export declare type DeleteSnapshotsOptionType = "include" | "include-leased";

/** Parameter group */
declare interface DestinationLeaseAccessConditions {
    /** Required if the destination file has an active infinite lease. The lease ID specified for this header must match the lease ID of the destination file. If the request does not include the lease ID or it is not valid, the operation fails with status code 412 (Precondition Failed). If this header is specified and the destination file does not currently have an active lease, the operation will also fail with status code 412 (Precondition Failed). */
    destinationLeaseId?: string;
}

/** Interface representing a Directory. */
declare interface Directory {
    /**
     * Creates a new directory under the specified share or parent directory.
     * @param options The options parameters.
     */
    create(options?: DirectoryCreateOptionalParams): Promise<DirectoryCreateResponse_2>;
    /**
     * Returns all system properties for the specified directory, and can also be used to check the
     * existence of a directory. The data returned does not include the files in the directory or any
     * subdirectories.
     * @param options The options parameters.
     */
    getProperties(options?: DirectoryGetPropertiesOptionalParams): Promise<DirectoryGetPropertiesResponse_2>;
    /**
     * Removes the specified empty directory. Note that the directory must be empty before it can be
     * deleted.
     * @param options The options parameters.
     */
    delete(options?: DirectoryDeleteOptionalParams): Promise<DirectoryDeleteResponse_2>;
    /**
     * Sets properties on the directory.
     * @param options The options parameters.
     */
    setProperties(options?: DirectorySetPropertiesOptionalParams): Promise<DirectorySetPropertiesResponse_2>;
    /**
     * Updates user defined metadata for the specified directory.
     * @param options The options parameters.
     */
    setMetadata(options?: DirectorySetMetadataOptionalParams): Promise<DirectorySetMetadataResponse_2>;
    /**
     * Returns a list of files or directories under the specified share or directory. It lists the contents
     * only for a single level of the directory hierarchy.
     * @param options The options parameters.
     */
    listFilesAndDirectoriesSegment(options?: DirectoryListFilesAndDirectoriesSegmentOptionalParams): Promise<DirectoryListFilesAndDirectoriesSegmentResponse_2>;
    /**
     * Lists handles for directory.
     * @param options The options parameters.
     */
    listHandles(options?: DirectoryListHandlesOptionalParams): Promise<DirectoryListHandlesResponse_2>;
    /**
     * Closes all handles open for given directory.
     * @param handleId Specifies handle ID opened on the file or directory to be closed. Asterisk (‘*’) is
     *                 a wildcard that specifies all handles.
     * @param options The options parameters.
     */
    forceCloseHandles(handleId: string, options?: DirectoryForceCloseHandlesOptionalParams): Promise<DirectoryForceCloseHandlesResponse_2>;
    /**
     * Renames a directory
     * @param renameSource Required. Specifies the URI-style path of the source file, up to 2 KB in length.
     * @param options The options parameters.
     */
    rename(renameSource: string, options?: DirectoryRenameOptionalParams): Promise<DirectoryRenameResponse_2>;
}

/**
 * Additional response header values for close handles request.
 */
export declare interface DirectoryCloseHandlesHeaders {
    /**
     * This header uniquely identifies the request that was made and can be used for troubleshooting
     * the request.
     */
    requestId?: string;
    /**
     * Indicates the version of the File service used to execute the request.
     */
    version?: string;
    /**
     * A UTC date/time value generated by the service that indicates the time at which the response
     * was initiated.
     */
    date?: Date;
    /**
     * A string describing next handle to be closed. It is returned when more handles need to be
     * closed to complete the request.
     */
    marker?: string;
}

/** Defines headers for Directory_create operation. */
export declare interface DirectoryCreateHeaders {
    /** The ETag contains a value which represents the version of the directory, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for Directory_create operation. */
declare interface DirectoryCreateHeaders_2 {
    /** The ETag contains a value which represents the version of the directory, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
    /** Error Code */
    errorCode?: string;
}

/**
 * Contains response data for the {@link DirectoryClient.createIfNotExists} operation.
 */
export declare interface DirectoryCreateIfNotExistsResponse extends DirectoryCreateResponse {
    /**
     * Indicate whether the directory is successfully created. Is false when the directory is not changed as it already exists.
     */
    succeeded: boolean;
}

/** Optional parameters. */
declare interface DirectoryCreateOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** If specified, the provided file attributes shall be set. Default value: ‘Archive’ for file and ‘Directory’ for directory. ‘None’ can also be specified as default. */
    fileAttributes?: string;
    /** Creation time for the file/directory. Default value: Now. */
    fileCreatedOn?: string;
    /** Last write time for the file/directory. Default value: Now. */
    fileLastWriteOn?: string;
    /** Change time for the file/directory. Default value: Now. */
    fileChangeOn?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
    /** Optional, NFS only. The file mode of the file or directory */
    fileMode?: string;
}

/**
 * Options to configure {@link ShareDirectoryClient.create} operation.
 */
export declare interface DirectoryCreateOptions extends FileAndDirectoryCreateCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * A collection of key-value string pair to associate with the file storage object.
     */
    metadata?: Metadata;
}

/** Contains response data for the create operation. */
export declare type DirectoryCreateResponse = WithResponse<DirectoryCreateHeaders, DirectoryCreateHeaders>;

/** Contains response data for the create operation. */
declare type DirectoryCreateResponse_2 = DirectoryCreateHeaders_2;

/** Defines headers for Directory_delete operation. */
export declare interface DirectoryDeleteHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/**
 * Contains response data for the {@link DirectoryClient.deleteIfExists} operation.
 */
export declare interface DirectoryDeleteIfExistsResponse extends DirectoryDeleteResponse {
    /**
     * Indicate whether the directory is successfully deleted. Is false if the directory does not exist in the first place.
     */
    succeeded: boolean;
}

/** Optional parameters. */
declare interface DirectoryDeleteOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareDirectoryClient.delete} operation.
 */
export declare interface DirectoryDeleteOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the delete operation. */
export declare type DirectoryDeleteResponse = WithResponse<DirectoryDeleteHeaders, DirectoryDeleteHeaders>;

/** Contains response data for the delete operation. */
declare type DirectoryDeleteResponse_2 = DirectoryDeleteHeaders;

/**
 * Options to configure the {@link ShareDirectoryClient.exists} operation.
 */
export declare interface DirectoryExistsOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Defines headers for Directory_forceCloseHandles operation. */
export declare interface DirectoryForceCloseHandlesHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** A string describing next handle to be closed. It is returned when more handles need to be closed to complete the request. */
    marker?: string;
    /** Contains count of number of handles closed. */
    numberOfHandlesClosed?: number;
    /** Contains count of number of handles that failed to close. */
    numberOfHandlesFailedToClose?: number;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectoryForceCloseHandlesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Specifies operation should apply to the directory specified in the URI, its files, its subdirectories and their files. */
    recursive?: boolean;
}

/**
 * Options to configure {@link ShareDirectoryClient.forceCloseHandle}.
 */
export declare interface DirectoryForceCloseHandlesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/**
 * Response type for {@link ShareDirectoryClient.forceCloseHandle}.
 */
export declare type DirectoryForceCloseHandlesResponse = WithResponse<CloseHandlesInfo & DirectoryCloseHandlesHeaders, DirectoryForceCloseHandlesHeaders>;

/** Contains response data for the forceCloseHandles operation. */
declare type DirectoryForceCloseHandlesResponse_2 = DirectoryForceCloseHandlesHeaders;

/**
 * Options to configure Directory - Force Close Handles Segment operations.
 *
 * See:
 * - {@link ShareDirectoryClient.forceCloseHandlesSegment}
 * - {@link ShareDirectoryClient.forceCloseAllHandles}
 */
export declare interface DirectoryForceCloseHandlesSegmentOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies operation should apply to the directory specified in the URI, its files, its
     * subdirectories and their files.
     */
    recursive?: boolean;
}

/** Defines headers for Directory_getProperties operation. */
export declare interface DirectoryGetPropertiesHeaders {
    /** A set of name-value pairs that contain metadata for the directory. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the Directory was last modified. Operations on files within the directory do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the directory metadata is completely encrypted using the specified algorithm. Otherwise, the value is set to false. */
    isServerEncrypted?: boolean;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for Directory_getProperties operation. */
declare interface DirectoryGetPropertiesHeaders_2 {
    /** A set of name-value pairs that contain metadata for the directory. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the Directory was last modified. Operations on files within the directory do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the directory metadata is completely encrypted using the specified algorithm. Otherwise, the value is set to false. */
    isServerEncrypted?: boolean;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectoryGetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareDirectoryClient.getProperties} operation.
 */
export declare interface DirectoryGetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the getProperties operation. */
export declare type DirectoryGetPropertiesResponse = WithResponse<DirectoryGetPropertiesHeaders, DirectoryGetPropertiesHeaders>;

/** Contains response data for the getProperties operation. */
declare type DirectoryGetPropertiesResponse_2 = DirectoryGetPropertiesHeaders_2;

/** A listed directory item. */
export declare interface DirectoryItem {
    name: string;
    fileId?: string;
    /** File properties. */
    properties?: FileProperty;
    attributes?: string;
    permissionKey?: string;
}

/** A listed directory item. */
declare interface DirectoryItem_2 {
    name: StringEncoded;
    fileId?: string;
    /** File properties. */
    properties?: FileProperty;
    attributes?: string;
    permissionKey?: string;
}

/**
 * Options to configure {@link ShareDirectoryClient.listFilesAndDirectories} operation.
 */
export declare interface DirectoryListFilesAndDirectoriesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Filters the results to return only entries whose
     * name begins with the specified prefix.
     */
    prefix?: string;
    includeTimestamps?: boolean;
    includeEtag?: boolean;
    includeAttributes?: boolean;
    includePermissionKey?: boolean;
    /**
     * Optional. Specified that extended info should be included in the returned {@link FileItem} or {@link DirectoryItem}.
     * If true, the Content-Length property will be up-to-date, FileId will be returned in response.
     */
    includeExtendedInfo?: boolean;
}

/** Defines headers for Directory_listFilesAndDirectoriesSegment operation. */
export declare interface DirectoryListFilesAndDirectoriesSegmentHeaders {
    /** Specifies the format in which the results are returned. Currently this value is 'application/xml'. */
    contentType?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectoryListFilesAndDirectoriesSegmentOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Filters the results to return only entries whose name begins with the specified prefix. */
    prefix?: string;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** Specifies the maximum number of entries to return. If the request does not specify maxresults, or specifies a value greater than 5,000, the server will return up to 5,000 items. */
    maxResults?: number;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Include this parameter to specify one or more datasets to include in the response. */
    include?: ListFilesIncludeType[];
    /** Include extended information. */
    includeExtendedInfo?: boolean;
}

/** Contains response data for the listFilesAndDirectoriesSegment operation. */
export declare type DirectoryListFilesAndDirectoriesSegmentResponse = WithResponse<DirectoryListFilesAndDirectoriesSegmentHeaders & ListFilesAndDirectoriesSegmentResponse, DirectoryListFilesAndDirectoriesSegmentHeaders, ListFilesAndDirectoriesSegmentResponse>;

/** Contains response data for the listFilesAndDirectoriesSegment operation. */
declare type DirectoryListFilesAndDirectoriesSegmentResponse_2 = DirectoryListFilesAndDirectoriesSegmentHeaders & ListFilesAndDirectoriesSegmentResponse_2;

/** Defines headers for Directory_listHandles operation. */
export declare interface DirectoryListHandlesHeaders {
    /** Specifies the format in which the results are returned. Currently this value is 'application/xml'. */
    contentType?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectoryListHandlesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** Specifies the maximum number of entries to return. If the request does not specify maxresults, or specifies a value greater than 5,000, the server will return up to 5,000 items. */
    maxResults?: number;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Specifies operation should apply to the directory specified in the URI, its files, its subdirectories and their files. */
    recursive?: boolean;
}

/**
 * Options to configure the {@link ShareDirectoryClient.listHandles} operation.
 */
export declare interface DirectoryListHandlesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies whether operation should apply to the directory specified in the URI, its files, its
     * subdirectories and their files.
     */
    recursive?: boolean;
}

/** Contains response data for the listHandles operation. */
export declare type DirectoryListHandlesResponse = WithResponse<DirectoryListHandlesHeaders & ListHandlesResponse, DirectoryListHandlesHeaders, ListHandlesResponse>;

/** Contains response data for the listHandles operation. */
declare type DirectoryListHandlesResponse_2 = DirectoryListHandlesHeaders & ListHandlesResponse_2;

/**
 * Options to configure Directory - List Handles Segment operations.
 *
 * See:
 * - {@link ShareDirectoryClient.listHandlesSegment}
 * - {@link ShareDirectoryClient.iterateHandleSegments}
 * - {@link ShareDirectoryClient.listHandleItems}
 *
 */
export declare interface DirectoryListHandlesSegmentOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies the maximum number of entries to return. If the request does not specify maxResults,
     * or specifies a value greater than 5,000, the server will return up to 5,000 items.
     */
    maxResults?: number;
    /**
     * Specifies operation should apply to the directory specified in the URI, its files, its
     * subdirectories and their files.
     */
    recursive?: boolean;
}

export declare interface DirectoryProperties extends FileAndDirectorySetPropertiesCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Defines headers for Directory_rename operation. */
export declare interface DirectoryRenameHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreationTime?: Date;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Change time for the file. */
    fileChangeTime?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
}

/** Optional parameters. */
declare interface DirectoryRenameOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    sourceLeaseAccessConditions?: SourceLeaseAccessConditions;
    /** Parameter group */
    destinationLeaseAccessConditions?: DestinationLeaseAccessConditions;
    /** Parameter group */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** Optional. A boolean value for if the destination file already exists, whether this request will overwrite the file or not. If true, the rename will succeed and will overwrite the destination file. If not provided or if false and the destination file does exist, the request will not overwrite the destination file. If provided and the destination file doesn’t exist, the rename will succeed. Note: This value does not override the x-ms-file-copy-ignore-read-only header value. */
    replaceIfExists?: boolean;
    /** Optional. A boolean value that specifies whether the ReadOnly attribute on a preexisting destination file should be respected. If true, the rename will succeed, otherwise, a previous file at the destination with the ReadOnly attribute set will cause the rename to fail. */
    ignoreReadOnly?: boolean;
    /** If true, the trailing dot will not be trimmed from the source URI. */
    allowSourceTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareDirectoryClient.rename} operation.
 */
export declare interface DirectoryRenameOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access condition for source file. Required if the source file has an active infinite lease.
     */
    sourceLeaseAccessConditions?: LeaseAccessConditions;
    /**
     * Lease access condition for destination file. Required if the destination file has an active infinite lease.
     */
    destinationLeaseAccessConditions?: LeaseAccessConditions;
    /**
     * Optional.
     * Specifies the option to copy file security descriptor from source file or to set it using the value which is defined by the header value of x-ms-file-permission or x-ms-file-permission-key.
     */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /**
     * Optional.
     * The timeout parameter is expressed in seconds. For more information, see <a href="https://learn.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a>
     */
    timeoutInSeconds?: number;
    /**
     * Optional.
     * A name-value pair to associate with a file storage object.
     */
    metadata?: Metadata;
    /**
     * Optional.
     * If specified the permission (security descriptor) shall be set for the directory/file.
     */
    filePermission?: string;
    /**
     * Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned.
     * Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * Optional.
     * Key of the permission to be set for the directory/file. Note: Only one of the filePermission or filePermissionKey should be specified.
     */
    filePermissionKey?: string;
    /**
     * Optional.
     * A boolean value for if the destination file already exists, whether this request will overwrite the file or not. If true, the rename will succeed and will overwrite the destination file. If not provided or if false and the destination file does exist, the request will not overwrite the destination file. If provided and the destination file doesn’t exist, the rename will succeed. Note: This value does not override the x-ms-file-copy-ignore-read-only header value.
     */
    replaceIfExists?: boolean;
    /**
     * Optional.
     * A boolean value that specifies whether the ReadOnly attribute on a preexisting destination file should be respected. If true, the rename will succeed, otherwise, a previous file at the destination with the ReadOnly attribute set will cause the rename to fail.
     */
    ignoreReadOnly?: boolean;
}

/** Contains response data for the rename operation. */
export declare type DirectoryRenameResponse = WithResponse<DirectoryRenameHeaders, DirectoryRenameHeaders>;

/** Contains response data for the rename operation. */
declare type DirectoryRenameResponse_2 = DirectoryRenameHeaders;

/** Defines headers for Directory_setMetadata operation. */
export declare interface DirectorySetMetadataHeaders {
    /** The ETag contains a value which represents the version of the directory, in quotes. */
    etag?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectorySetMetadataOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareDirectoryClient.setMetadata} operation.
 */
export declare interface DirectorySetMetadataOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the setMetadata operation. */
export declare type DirectorySetMetadataResponse = WithResponse<DirectorySetMetadataHeaders, DirectorySetMetadataHeaders>;

/** Contains response data for the setMetadata operation. */
declare type DirectorySetMetadataResponse_2 = DirectorySetMetadataHeaders;

/** Defines headers for Directory_setProperties operation. */
export declare interface DirectorySetPropertiesHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for Directory_setProperties operation. */
declare interface DirectorySetPropertiesHeaders_2 {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the directory. */
    filePermissionKey?: string;
    /** Attributes set for the directory. */
    fileAttributes?: string;
    /** Creation time for the directory. */
    fileCreatedOn?: Date;
    /** Last write time for the directory. */
    fileLastWriteOn?: Date;
    /** Change time for the directory. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface DirectorySetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** If specified, the provided file attributes shall be set. Default value: ‘Archive’ for file and ‘Directory’ for directory. ‘None’ can also be specified as default. */
    fileAttributes?: string;
    /** Creation time for the file/directory. Default value: Now. */
    fileCreatedOn?: string;
    /** Last write time for the file/directory. Default value: Now. */
    fileLastWriteOn?: string;
    /** Change time for the file/directory. Default value: Now. */
    fileChangeOn?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
    /** Optional, NFS only. The file mode of the file or directory */
    fileMode?: string;
}

/** Contains response data for the setProperties operation. */
export declare type DirectorySetPropertiesResponse = WithResponse<DirectorySetPropertiesHeaders, DirectorySetPropertiesHeaders>;

/** Contains response data for the setProperties operation. */
declare type DirectorySetPropertiesResponse_2 = DirectorySetPropertiesHeaders_2;

/** Interface representing a File. */
declare interface File_2 {
    /**
     * Creates a new file or replaces a file. Note it only initializes the file with no content.
     * @param fileContentLength Specifies the maximum size for the file, up to 4 TB.
     * @param options The options parameters.
     */
    create(fileContentLength: number, options?: FileCreateOptionalParams): Promise<FileCreateResponse_2>;
    /**
     * Reads or downloads a file from the system, including its metadata and properties.
     * @param options The options parameters.
     */
    download(options?: FileDownloadOptionalParams): Promise<FileDownloadResponse>;
    /**
     * Returns all user-defined metadata, standard HTTP properties, and system properties for the file. It
     * does not return the content of the file.
     * @param options The options parameters.
     */
    getProperties(options?: FileGetPropertiesOptionalParams): Promise<FileGetPropertiesResponse_2>;
    /**
     * removes the file from the storage account.
     * @param options The options parameters.
     */
    delete(options?: FileDeleteOptionalParams): Promise<FileDeleteResponse_2>;
    /**
     * Sets HTTP headers on the file.
     * @param options The options parameters.
     */
    setHttpHeaders(options?: FileSetHttpHeadersOptionalParams): Promise<FileSetHttpHeadersResponse>;
    /**
     * Updates user-defined metadata for the specified file.
     * @param options The options parameters.
     */
    setMetadata(options?: FileSetMetadataOptionalParams): Promise<FileSetMetadataResponse_2>;
    /**
     * [Update] The Lease File operation establishes and manages a lock on a file for write and delete
     * operations
     * @param options The options parameters.
     */
    acquireLease(options?: FileAcquireLeaseOptionalParams): Promise<FileAcquireLeaseResponse>;
    /**
     * [Update] The Lease File operation establishes and manages a lock on a file for write and delete
     * operations
     * @param leaseId Specifies the current lease ID on the resource.
     * @param options The options parameters.
     */
    releaseLease(leaseId: string, options?: FileReleaseLeaseOptionalParams): Promise<FileReleaseLeaseResponse>;
    /**
     * [Update] The Lease File operation establishes and manages a lock on a file for write and delete
     * operations
     * @param leaseId Specifies the current lease ID on the resource.
     * @param options The options parameters.
     */
    changeLease(leaseId: string, options?: FileChangeLeaseOptionalParams): Promise<FileChangeLeaseResponse>;
    /**
     * [Update] The Lease File operation establishes and manages a lock on a file for write and delete
     * operations
     * @param options The options parameters.
     */
    breakLease(options?: FileBreakLeaseOptionalParams): Promise<FileBreakLeaseResponse>;
    /**
     * Upload a range of bytes to a file.
     * @param range Specifies the range of bytes to be written. Both the start and end of the range must be
     *              specified. For an update operation, the range can be up to 4 MB in size. For a clear operation, the
     *              range can be up to the value of the file's full size. The File service accepts only a single byte
     *              range for the Range and 'x-ms-range' headers, and the byte range must be specified in the following
     *              format: bytes=startByte-endByte.
     * @param fileRangeWrite Specify one of the following options: - Update: Writes the bytes specified by
     *                       the request body into the specified range. The Range and Content-Length headers must match to
     *                       perform the update. - Clear: Clears the specified range and releases the space used in storage for
     *                       that range. To clear a range, set the Content-Length header to zero, and set the Range header to a
     *                       value that indicates the range to clear, up to maximum file size.
     * @param contentLength Specifies the number of bytes being transmitted in the request body. When the
     *                      x-ms-write header is set to clear, the value of this header must be set to zero.
     * @param options The options parameters.
     */
    uploadRange(range: string, fileRangeWrite: FileRangeWriteType, contentLength: number, options?: FileUploadRangeOptionalParams): Promise<FileUploadRangeResponse_2>;
    /**
     * Upload a range of bytes to a file where the contents are read from a URL.
     * @param range Writes data to the specified byte range in the file.
     * @param copySource Specifies the URL of the source file or blob, up to 2 KB in length. To copy a file
     *                   to another file within the same storage account, you may use Shared Key to authenticate the source
     *                   file. If you are copying a file from another storage account, or if you are copying a blob from the
     *                   same storage account or another storage account, then you must authenticate the source file or blob
     *                   using a shared access signature. If the source is a public blob, no authentication is required to
     *                   perform the copy operation. A file in a share snapshot can also be specified as a copy source.
     * @param contentLength Specifies the number of bytes being transmitted in the request body. When the
     *                      x-ms-write header is set to clear, the value of this header must be set to zero.
     * @param options The options parameters.
     */
    uploadRangeFromURL(range: string, copySource: string, contentLength: number, options?: FileUploadRangeFromURLOptionalParams): Promise<FileUploadRangeFromURLResponse_2>;
    /**
     * Returns the list of valid ranges for a file.
     * @param options The options parameters.
     */
    getRangeList(options?: FileGetRangeListOptionalParams): Promise<FileGetRangeListResponse_2>;
    /**
     * Copies a blob or file to a destination file within the storage account.
     * @param copySource Specifies the URL of the source file or blob, up to 2 KB in length. To copy a file
     *                   to another file within the same storage account, you may use Shared Key to authenticate the source
     *                   file. If you are copying a file from another storage account, or if you are copying a blob from the
     *                   same storage account or another storage account, then you must authenticate the source file or blob
     *                   using a shared access signature. If the source is a public blob, no authentication is required to
     *                   perform the copy operation. A file in a share snapshot can also be specified as a copy source.
     * @param options The options parameters.
     */
    startCopy(copySource: string, options?: FileStartCopyOptionalParams): Promise<FileStartCopyResponse_2>;
    /**
     * Aborts a pending Copy File operation, and leaves a destination file with zero length and full
     * metadata.
     * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy File
     *               operation.
     * @param options The options parameters.
     */
    abortCopy(copyId: string, options?: FileAbortCopyOptionalParams): Promise<FileAbortCopyResponse_2>;
    /**
     * Lists handles for file
     * @param options The options parameters.
     */
    listHandles(options?: FileListHandlesOptionalParams): Promise<FileListHandlesResponse_2>;
    /**
     * Closes all handles open for given file
     * @param handleId Specifies handle ID opened on the file or directory to be closed. Asterisk (‘*’) is
     *                 a wildcard that specifies all handles.
     * @param options The options parameters.
     */
    forceCloseHandles(handleId: string, options?: FileForceCloseHandlesOptionalParams): Promise<FileForceCloseHandlesResponse_2>;
    /**
     * Renames a file
     * @param renameSource Required. Specifies the URI-style path of the source file, up to 2 KB in length.
     * @param options The options parameters.
     */
    rename(renameSource: string, options?: FileRenameOptionalParams): Promise<FileRenameResponse_2>;
    /**
     * Creates a symbolic link.
     * @param linkText NFS only. Required. The path to the original file, the symbolic link is pointing to.
     *                 The path is of type string which is not resolved and is stored as is. The path can be absolute path
     *                 or the relative path depending on the content stored in the symbolic link file.
     * @param options The options parameters.
     */
    createSymbolicLink(linkText: string, options?: FileCreateSymbolicLinkOptionalParams): Promise<FileCreateSymbolicLinkResponse>;
    /** @param options The options parameters. */
    getSymbolicLink(options?: FileGetSymbolicLinkOptionalParams): Promise<FileGetSymbolicLinkResponse>;
    /**
     * Creates a hard link.
     * @param targetFile NFS only. Required. Specifies the path of the target file to which the link will
     *                   be created, up to 2 KiB in length. It should be full path of the target from the root.The target
     *                   file must be in the same share and hence the same storage account.
     * @param options The options parameters.
     */
    createHardLink(targetFile: string, options?: FileCreateHardLinkOptionalParams): Promise<FileCreateHardLinkResponse_2>;
}

/**
 * Options to configure the {@link ShareFileClient.abortCopyFromURL} operation.
 */
export declare interface FileAbortCopyFromURLOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Defines headers for File_abortCopy operation. */
export declare interface FileAbortCopyHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileAbortCopyOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/** Contains response data for the abortCopy operation. */
export declare type FileAbortCopyResponse = WithResponse<FileAbortCopyHeaders, FileAbortCopyHeaders>;

/** Contains response data for the abortCopy operation. */
declare type FileAbortCopyResponse_2 = FileAbortCopyHeaders;

/** Defines headers for File_acquireLease operation. */
declare interface FileAcquireLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes. */
    etag?: string;
    /** Returns the date and time the file was last modified. Any operation that modifies the file, including an update of the file's metadata or properties, changes the last-modified time of the file. */
    lastModified?: Date;
    /** Uniquely identifies a file's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface FileAcquireLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. */
    duration?: number;
    /** Proposed lease ID, in a GUID string format. The File service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats. */
    proposedLeaseId?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/** Contains response data for the acquireLease operation. */
declare type FileAcquireLeaseResponse = FileAcquireLeaseHeaders;

export declare interface FileAndDirectoryCreateCommonOptions {
    /**
     * The permission(security descriptor) to be set for the file or directory in the
     * Security Descriptor Definition Language (SDDL) or binary.
     * If specified, it must have an owner, group, and discretionary access control list (DACL).
     * A value of inherit may be passed to inherit from the parent directory.
     *
     * Note that only one of filePermission or filePermissionKey can be specified.
     * And if both are not specified, inherit will be set to filePermission as default value by client library.
     */
    filePermission?: string | FilePermissionInheritType;
    /**
     * Optional. Available for version 2023-06-01 and later.
     * Specifies the format in which the permission is returned. Acceptable values are SDDL or binary.
     * If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * The key of the permission to be set for the file or directory. This can be created using the Create-Permission API.
     *
     * Note that only one of filePermission or filePermissionKey can be specified.
     */
    filePermissionKey?: string;
    /**
     * The file system attributes to be set on the file or directory.
     */
    fileAttributes?: FileSystemAttributes;
    /**
     * The Coordinated Universal Time (UTC) creation time property for the directory.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set as now.
     */
    creationTime?: Date | TimeNowType;
    /**
     * The Coordinated Universal Time (UTC) last write property for the directory.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set as now.
     */
    lastWriteTime?: Date | TimeNowType;
    /**
     * The Coordinated Universal Time (UTC) change time property for the directory.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set to the time of the request.
     */
    changeTime?: Date | TimeNowType;
    /**
     * Optional properties to set on NFS files.
     Note that this property is only applicable to files created in NFS shares.
     */
    posixProperties?: FilePosixProperties;
}

export declare interface FileAndDirectorySetPropertiesCommonOptions {
    /**
     * The permission(security descriptor) to be set for the file or directory in the
     * Security Descriptor Definition Language (SDDL). If specified, it must have an owner, group, and discretionary access control list (DACL).
     * A value of inherit may be passed to inherit from the parent directory.
     * A value of preserve may be passed to keep the value unchanged.
     *
     * Note that only one of filePermission or filePermissionKey can be specified.
     * And if both are not specified, preserve will be set to filePermission as default value by client library.
     */
    filePermission?: string | FilePermissionInheritType | FilePermissionPreserveType;
    /**
     * Optional. Available for version 2023-06-01 and later.
     * Specifies the format in which the permission is returned. Acceptable values are SDDL or binary.
     * If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * The key of the permission to be set for the file or directory. This can be created using the Create-Permission API.
     *
     * Note that only one of filePermission or filePermissionKey can be specified.
     */
    filePermissionKey?: string;
    /**
     * The file system attributes to be set on the file or directory.
     */
    fileAttributes?: FileSystemAttributes | FileAttributesPreserveType;
    /**
     * The Coordinated Universal Time (UTC) creation time property for the directory.
     * A value of now may be used to indicate the time of the request.
     * A value of preserve may be passed to keep an existing value unchanged.
     * By default, the value will be set as preserve.
     */
    creationTime?: Date | TimeNowType | TimePreserveType;
    /**
     * The Coordinated Universal Time (UTC) last write property for the directory.
     * A value of now may be used to indicate the time of the request.
     * A value of preserve may be passed to keep an existing value unchanged.
     * By default, the value will be set as preserve.
     */
    lastWriteTime?: Date | TimeNowType | TimePreserveType;
    /**
     * The Coordinated Universal Time (UTC) change time property for the directory.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set to the time of the request.
     */
    changeTime?: Date | TimeNowType;
    /**
     * Optional properties to set on NFS files.
     Note that this property is only applicable to files created in NFS shares.
     */
    posixProperties?: FilePosixProperties;
}

/**
 * Indicates keep existing file attributes unchanged.
 */
export declare type FileAttributesPreserveType = "preserve";

/** Defines headers for File_breakLease operation. */
declare interface FileBreakLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes. */
    etag?: string;
    /** Returns the date and time the file was last modified. Any operation that modifies the file, including an update of the file's metadata or properties, changes the last-modified time of the file. */
    lastModified?: Date;
    /** Uniquely identifies a file's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface FileBreakLeaseOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/** Contains response data for the breakLease operation. */
declare type FileBreakLeaseResponse = FileBreakLeaseHeaders;

/** Defines headers for File_changeLease operation. */
declare interface FileChangeLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes. */
    etag?: string;
    /** Returns the date and time the file was last modified. Any operation that modifies the file, including an update of the file's metadata or properties, changes the last-modified time of the file. */
    lastModified?: Date;
    /** Uniquely identifies a file's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface FileChangeLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Proposed lease ID, in a GUID string format. The File service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats. */
    proposedLeaseId?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/** Contains response data for the changeLease operation. */
declare type FileChangeLeaseResponse = FileChangeLeaseHeaders;

/**
 * Options to configure the {@link ShareFileClient.clearRange} operation.
 */
export declare interface FileClearRangeOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * The last write time for the file.
     * A value of preserve may be passed to keep an existing value unchanged.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set as now.
     */
    fileLastWrittenMode?: FileLastWrittenMode;
}

/**
 * Additional response header values for close handles request.
 */
export declare interface FileCloseHandlesHeaders {
    /**
     * This header uniquely identifies the request that was made and can be used for troubleshooting
     * the request.
     */
    requestId?: string;
    /**
     * Indicates the version of the File service used to execute the request.
     */
    version?: string;
    /**
     * A UTC date/time value generated by the service that indicates the time at which the response
     * was initiated.
     */
    date?: Date;
    /**
     * A string describing next handle to be closed. It is returned when more handles need to be
     * closed to complete the request.
     */
    marker?: string;
}

/** Defines headers for File_createHardLink operation. */
export declare interface FileCreateHardLinkHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Creation time for the file. */
    fileCreationTime?: Date;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Change time for the file. */
    fileChangeTime?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
}

/** Defines headers for File_createHardLink operation. */
declare interface FileCreateHardLinkHeaders_2 {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Creation time for the file. */
    fileCreationTime?: Date;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Change time for the file. */
    fileChangeTime?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
}

/** Optional parameters. */
declare interface FileCreateHardLinkOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/**
 * Options to configure File - Create Hard Link operations.
 *
 * See:
 * - {@link ShareFileClient.createHardLink}
 */
export declare interface FileCreateHardLinkOptions extends CommonOptions {
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the create hard link operation. */
export declare type FileCreateHardLinkResponse = WithResponse<FileCreateHardLinkHeaders, FileCreateHardLinkHeaders>;

/** Contains response data for the createHardLink operation. */
declare type FileCreateHardLinkResponse_2 = FileCreateHardLinkHeaders_2;

/** Defines headers for File_create operation. */
export declare interface FileCreateHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for File_create operation. */
declare interface FileCreateHeaders_2 {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileCreateOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** Parameter group */
    fileHttpHeaders?: FileHttpHeaders_2;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** If specified, the provided file attributes shall be set. Default value: ‘Archive’ for file and ‘Directory’ for directory. ‘None’ can also be specified as default. */
    fileAttributes?: string;
    /** Creation time for the file/directory. Default value: Now. */
    fileCreatedOn?: string;
    /** Last write time for the file/directory. Default value: Now. */
    fileLastWriteOn?: string;
    /** Change time for the file/directory. Default value: Now. */
    fileChangeOn?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
    /** Optional, NFS only. The file mode of the file or directory */
    fileMode?: string;
    /** Optional, NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
}

/**
 * Options to configure the {@link ShareFileClient.create} operation.
 */
export declare interface FileCreateOptions extends FileAndDirectoryCreateCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * File HTTP headers like Content-Type.
     */
    fileHttpHeaders?: FileHttpHeaders;
    /**
     * A collection of key-value string pair to associate with the file storage object.
     */
    metadata?: Metadata;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the create operation. */
export declare type FileCreateResponse = WithResponse<FileCreateHeaders, FileCreateHeaders>;

/** Contains response data for the create operation. */
declare type FileCreateResponse_2 = FileCreateHeaders_2;

/** Defines headers for File_createSymbolicLink operation. */
declare interface FileCreateSymbolicLinkHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Creation time for the file. */
    fileCreationTime?: Date;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Change time for the file. */
    fileChangeTime?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
}

/** Optional parameters. */
declare interface FileCreateSymbolicLinkOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** Creation time for the file/directory. Default value: Now. */
    fileCreatedOn?: string;
    /** Last write time for the file/directory. Default value: Now. */
    fileLastWriteOn?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
}

/** Contains response data for the createSymbolicLink operation. */
declare type FileCreateSymbolicLinkResponse = FileCreateSymbolicLinkHeaders;

/** Defines headers for File_delete operation. */
export declare interface FileDeleteHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
    /** Error Code */
    errorCode?: string;
}

/**
 * Contains response data for the {@link ShareFileClient.deleteIfExists} operation.
 */
export declare interface FileDeleteIfExistsResponse extends FileDeleteResponse {
    /**
     * Indicate whether the file is successfully deleted. Is false if the file does not exist in the first place.
     */
    succeeded: boolean;
}

/** Optional parameters. */
declare interface FileDeleteOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareFileClient.delete} operation.
 */
export declare interface FileDeleteOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the delete operation. */
export declare type FileDeleteResponse = WithResponse<FileDeleteHeaders, FileDeleteHeaders>;

/** Contains response data for the delete operation. */
declare type FileDeleteResponse_2 = FileDeleteHeaders;

/** Defines headers for File_download operation. */
export declare interface FileDownloadHeaders {
    /** Returns the date and time the file was last modified. Any operation that modifies the file or its properties updates the last modified time. */
    lastModified?: Date;
    /** A set of name-value pairs associated with this file as user-defined metadata. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** The number of bytes present in the response body. */
    contentLength?: number;
    /** The content type specified for the file. The default content type is 'application/octet-stream' */
    contentType?: string;
    /** Indicates the range of bytes returned if the client requested a subset of the file by setting the Range request header. */
    contentRange?: string;
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** If the file has an MD5 hash and the request is to read the full file, this response header is returned so that the client can check for message content integrity. If the request is to read a specified range and the 'x-ms-range-get-content-md5' is set to true, then the request returns an MD5 hash for the range, as long as the range size is less than or equal to 4 MB. If neither of these sets of conditions is true, then no value is returned for the 'Content-MD5' header. */
    contentMD5?: Uint8Array;
    /** Returns the value that was specified for the Content-Encoding request header. */
    contentEncoding?: string;
    /** Returned if it was previously specified for the file. */
    cacheControl?: string;
    /** Returns the value that was specified for the 'x-ms-content-disposition' header and specifies how to process the response. */
    contentDisposition?: string;
    /** Returns the value that was specified for the Content-Language request header. */
    contentLanguage?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Indicates that the service supports requests for partial file content. */
    acceptRanges?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Conclusion time of the last attempted Copy File operation where this file was the destination file. This value can specify the time of a completed, aborted, or failed copy attempt. */
    copyCompletedOn?: Date;
    /** Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal or non-fatal copy operation failure. */
    copyStatusDescription?: string;
    /** String identifier for the last attempted Copy File operation where this file was the destination file. */
    copyId?: string;
    /** Contains the number of bytes copied and the total bytes in the source in the last attempted Copy File operation where this file was the destination file. Can show between 0 and Content-Length bytes copied. */
    copyProgress?: string;
    /** URL up to 2KB in length that specifies the source file used in the last attempted Copy File operation where this file was the destination file. */
    copySource?: string;
    /** State of the copy operation identified by 'x-ms-copy-id'. */
    copyStatus?: CopyStatusType;
    /** If the file has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole file's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range. */
    fileContentMD5?: Uint8Array;
    /** The value of this header is set to true if the file data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the file is unencrypted, or if only parts of the file/application metadata are encrypted). */
    isServerEncrypted?: boolean;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** When a file is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    /** Lease state of the file. */
    leaseState?: LeaseStateType;
    /** The current lease status of the file. */
    leaseStatus?: LeaseStatusType;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for File_download operation. */
declare interface FileDownloadHeaders_2 {
    /** Returns the date and time the file was last modified. Any operation that modifies the file or its properties updates the last modified time. */
    lastModified?: Date;
    /** A set of name-value pairs associated with this file as user-defined metadata. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** The number of bytes present in the response body. */
    contentLength?: number;
    /** The content type specified for the file. The default content type is 'application/octet-stream' */
    contentType?: string;
    /** Indicates the range of bytes returned if the client requested a subset of the file by setting the Range request header. */
    contentRange?: string;
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** If the file has an MD5 hash and the request is to read the full file, this response header is returned so that the client can check for message content integrity. If the request is to read a specified range and the 'x-ms-range-get-content-md5' is set to true, then the request returns an MD5 hash for the range, as long as the range size is less than or equal to 4 MB. If neither of these sets of conditions is true, then no value is returned for the 'Content-MD5' header. */
    contentMD5?: Uint8Array;
    /** Returns the value that was specified for the Content-Encoding request header. */
    contentEncoding?: string;
    /** Returned if it was previously specified for the file. */
    cacheControl?: string;
    /** Returns the value that was specified for the 'x-ms-content-disposition' header and specifies how to process the response. */
    contentDisposition?: string;
    /** Returns the value that was specified for the Content-Language request header. */
    contentLanguage?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Indicates that the service supports requests for partial file content. */
    acceptRanges?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Conclusion time of the last attempted Copy File operation where this file was the destination file. This value can specify the time of a completed, aborted, or failed copy attempt. */
    copyCompletedOn?: Date;
    /** Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal or non-fatal copy operation failure. */
    copyStatusDescription?: string;
    /** String identifier for the last attempted Copy File operation where this file was the destination file. */
    copyId?: string;
    /** Contains the number of bytes copied and the total bytes in the source in the last attempted Copy File operation where this file was the destination file. Can show between 0 and Content-Length bytes copied. */
    copyProgress?: string;
    /** URL up to 2KB in length that specifies the source file used in the last attempted Copy File operation where this file was the destination file. */
    copySource?: string;
    /** State of the copy operation identified by 'x-ms-copy-id'. */
    copyStatus?: CopyStatusType;
    /** If the file has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole file's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range. */
    fileContentMD5?: Uint8Array;
    /** The value of this header is set to true if the file data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the file is unencrypted, or if only parts of the file/application metadata are encrypted). */
    isServerEncrypted?: boolean;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** When a file is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    /** Lease state of the file. */
    leaseState?: LeaseStateType;
    /** The current lease status of the file. */
    leaseStatus?: LeaseStatusType;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
export declare interface FileDownloadOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Return file data only from the specified byte range. */
    range?: string;
    /** When this header is set to true and specified together with the Range header, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4 MB in size. */
    rangeGetContentMD5?: boolean;
}

/**
 * Options to configure File - Download operations.
 *
 * See:
 * - {@link ShareFileClient.download}
 * - {@link ShareFileClient.downloadToFile}
 */
export declare interface FileDownloadOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Optional. ONLY AVAILABLE IN NODE.JS.
     *
     * How many retries will perform when original body download stream unexpected ends.
     * Above kind of ends will not trigger retry policy defined in a pipeline,
     * because they doesn't emit network errors.
     *
     * With this option, every additional retry means an additional ShareFileClient.download() request will be made
     * from the broken point, until the requested range has been successfully downloaded or maxRetryRequests is reached.
     *
     * Default value is 5, please set a larger value when loading large files in poor network.
     */
    maxRetryRequests?: number;
    /**
     * When this header is set to true and
     * specified together with the Range header, the service returns the MD5 hash
     * for the range, as long as the range is less than or equal to 4 MB in size.
     */
    rangeGetContentMD5?: boolean;
    /**
     * Download progress updating event handler.
     */
    onProgress?: (progress: TransferProgressEvent) => void;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the download operation. */
declare type FileDownloadResponse = FileDownloadHeaders_2 & {
    /**
     * BROWSER ONLY
     *
     * The response body as a browser Blob.
     * Always `undefined` in node.js.
     */
    blobBody?: Promise<Blob>;
    /**
     * NODEJS ONLY
     *
     * The response body as a node.js Readable stream.
     * Always `undefined` in the browser.
     */
    readableStreamBody?: NodeJS.ReadableStream;
};

/** Contains response data for the download operation. */
export declare type FileDownloadResponseModel = WithResponse<RawFileDownloadResponse, FileDownloadHeaders>;

/**
 * Option interface for the {@link ShareFileClient.downloadToBuffer} operation.
 */
export declare interface FileDownloadToBufferOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * When downloading Azure files, download method will try to split large file into small ranges.
     * Every small range will be downloaded via a separate request.
     * This option defines size data every small request trying to download.
     * Must be greater than 0, will use the default value if undefined,
     */
    rangeSize?: number;
    /**
     * Optional. ONLY AVAILABLE IN NODE.JS.
     *
     * How many retries will perform when original range download stream unexpected ends.
     * Above kind of ends will not trigger retry policy defined in a pipeline,
     * because they doesn't emit network errors.
     *
     * With this option, every additional retry means an additional ShareFileClient.download() request will be made
     * from the broken point, until the requested range has been successfully downloaded or
     * maxRetryRequestsPerRange is reached.
     *
     * Default value is 5, please set a larger value when in poor network.
     */
    maxRetryRequestsPerRange?: number;
    /**
     * Progress updater.
     */
    onProgress?: (progress: TransferProgressEvent) => void;
    /**
     * Concurrency indicates the maximum number of ranges to download in parallel.
     * If not provided, 5 concurrency will be used by default.
     */
    concurrency?: number;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * Options to configure the {@link ShareFileClient.exists} operation.
 */
export declare interface FileExistsOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Defines headers for File_forceCloseHandles operation. */
export declare interface FileForceCloseHandlesHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** A string describing next handle to be closed. It is returned when more handles need to be closed to complete the request. */
    marker?: string;
    /** Contains count of number of handles closed. */
    numberOfHandlesClosed?: number;
    /** Contains count of number of handles that failed to close. */
    numberOfHandlesFailedToClose?: number;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileForceCloseHandlesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure File - Force Close Handles operations.
 *
 * See:
 * - {@link ShareFileClient.forceCloseHandlesSegment}
 * - {@link ShareFileClient.forceCloseAllHandles}
 * - {@link ShareFileClient.forceCloseHandle}
 */
export declare interface FileForceCloseHandlesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/**
 * Response type for {@link ShareFileClient.forceCloseHandle}.
 */
export declare type FileForceCloseHandlesResponse = WithResponse<CloseHandlesInfo & FileCloseHandlesHeaders, FileForceCloseHandlesHeaders>;

/** Contains response data for the forceCloseHandles operation. */
declare type FileForceCloseHandlesResponse_2 = FileForceCloseHandlesHeaders;

/**
 * Options to configure {@link ShareFileClient.generateSasUrl} operation.
 */
export declare interface FileGenerateSasUrlOptions extends CommonGenerateSasUrlOptions {
    /**
     * Optional only when identifier is provided. Specifies the list of permissions to be associated with the SAS.
     */
    permissions?: FileSASPermissions;
}

/** Defines headers for File_getProperties operation. */
export declare interface FileGetPropertiesHeaders {
    /** Returns the date and time the file was last modified. The date format follows RFC 1123. Any operation that modifies the file or its properties updates the last modified time. */
    lastModified?: Date;
    /** A set of name-value pairs associated with this file as user-defined metadata. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Returns the type File. Reserved for future use. */
    fileType?: string;
    /** The size of the file in bytes. This header returns the value of the 'x-ms-content-length' header that is stored with the file. */
    contentLength?: number;
    /** The content type specified for the file. The default content type is 'application/octet-stream' */
    contentType?: string;
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** If the Content-MD5 header has been set for the file, the Content-MD5 response header is returned so that the client can check for message content integrity. */
    contentMD5?: Uint8Array;
    /** If the Content-Encoding request header has previously been set for the file, the Content-Encoding value is returned in this header. */
    contentEncoding?: string;
    /** If the Cache-Control request header has previously been set for the file, the Cache-Control value is returned in this header. */
    cacheControl?: string;
    /** Returns the value that was specified for the 'x-ms-content-disposition' header and specifies how to process the response. */
    contentDisposition?: string;
    /** Returns the value that was specified for the Content-Language request header. */
    contentLanguage?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Conclusion time of the last attempted Copy File operation where this file was the destination file. This value can specify the time of a completed, aborted, or failed copy attempt. */
    copyCompletedOn?: Date;
    /** Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal or non-fatal copy operation failure. */
    copyStatusDescription?: string;
    /** String identifier for the last attempted Copy File operation where this file was the destination file. */
    copyId?: string;
    /** Contains the number of bytes copied and the total bytes in the source in the last attempted Copy File operation where this file was the destination file. Can show between 0 and Content-Length bytes copied. */
    copyProgress?: string;
    /** URL up to 2KB in length that specifies the source file used in the last attempted Copy File operation where this file was the destination file. */
    copySource?: string;
    /** State of the copy operation identified by 'x-ms-copy-id'. */
    copyStatus?: CopyStatusType;
    /** The value of this header is set to true if the file data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the file is unencrypted, or if only parts of the file/application metadata are encrypted). */
    isServerEncrypted?: boolean;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** When a file is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    /** Lease state of the file. */
    leaseState?: LeaseStateType;
    /** The current lease status of the file. */
    leaseStatus?: LeaseStatusType;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for File_getProperties operation. */
declare interface FileGetPropertiesHeaders_2 {
    /** Returns the date and time the file was last modified. The date format follows RFC 1123. Any operation that modifies the file or its properties updates the last modified time. */
    lastModified?: Date;
    /** A set of name-value pairs associated with this file as user-defined metadata. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Returns the type File. Reserved for future use. */
    fileType?: string;
    /** The size of the file in bytes. This header returns the value of the 'x-ms-content-length' header that is stored with the file. */
    contentLength?: number;
    /** The content type specified for the file. The default content type is 'application/octet-stream' */
    contentType?: string;
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** If the Content-MD5 header has been set for the file, the Content-MD5 response header is returned so that the client can check for message content integrity. */
    contentMD5?: Uint8Array;
    /** If the Content-Encoding request header has previously been set for the file, the Content-Encoding value is returned in this header. */
    contentEncoding?: string;
    /** If the Cache-Control request header has previously been set for the file, the Cache-Control value is returned in this header. */
    cacheControl?: string;
    /** Returns the value that was specified for the 'x-ms-content-disposition' header and specifies how to process the response. */
    contentDisposition?: string;
    /** Returns the value that was specified for the Content-Language request header. */
    contentLanguage?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Conclusion time of the last attempted Copy File operation where this file was the destination file. This value can specify the time of a completed, aborted, or failed copy attempt. */
    copyCompletedOn?: Date;
    /** Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal or non-fatal copy operation failure. */
    copyStatusDescription?: string;
    /** String identifier for the last attempted Copy File operation where this file was the destination file. */
    copyId?: string;
    /** Contains the number of bytes copied and the total bytes in the source in the last attempted Copy File operation where this file was the destination file. Can show between 0 and Content-Length bytes copied. */
    copyProgress?: string;
    /** URL up to 2KB in length that specifies the source file used in the last attempted Copy File operation where this file was the destination file. */
    copySource?: string;
    /** State of the copy operation identified by 'x-ms-copy-id'. */
    copyStatus?: CopyStatusType;
    /** The value of this header is set to true if the file data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the file is unencrypted, or if only parts of the file/application metadata are encrypted). */
    isServerEncrypted?: boolean;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the file. */
    fileParentId?: string;
    /** When a file is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    /** Lease state of the file. */
    leaseState?: LeaseStateType;
    /** The current lease status of the file. */
    leaseStatus?: LeaseStatusType;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
    /** NFS only. Type of the file or directory. */
    nfsFileType?: NfsFileType;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileGetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareFileClient.getProperties} operation.
 */
export declare interface FileGetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the getProperties operation. */
export declare type FileGetPropertiesResponse = WithResponse<FileGetPropertiesHeaders, FileGetPropertiesHeaders>;

/** Contains response data for the getProperties operation. */
declare type FileGetPropertiesResponse_2 = FileGetPropertiesHeaders_2;

/** Contains response data for the getRangeList operation. */
export declare type FileGetRangeListDiffResponse = WithResponse<FileGetRangeListHeaders & ShareFileRangeList, FileGetRangeListHeaders, ShareFileRangeList>;

/** Defines headers for File_getRangeList operation. */
export declare interface FileGetRangeListHeaders {
    /** The date/time that the file was last modified. Any operation that modifies the file, including an update of the file's metadata or properties, changes the file's last modified time. */
    lastModified?: Date;
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** The size of the file in bytes. */
    fileContentLength?: number;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileGetRangeListOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Specifies the range of bytes over which to list ranges, inclusively. */
    range?: string;
    /** The previous snapshot parameter is an opaque DateTime value that, when present, specifies the previous snapshot. */
    prevsharesnapshot?: string;
    /** This header is allowed only when PrevShareSnapshot query parameter is set. Determines whether the changed ranges for a file that has been renamed or moved between the target snapshot (or the live file) and the previous snapshot should be listed. If the value is true, the valid changed ranges for the file will be returned. If the value is false, the operation will result in a failure with 409 (Conflict) response. The default value is false. */
    supportRename?: boolean;
}

/**
 * The option is defined as parity to REST definition.
 * While it's not ready to be used now, considering Crc64 of source content is
 * not accessible.
 */
/**
 * Options to configure the {@link ShareFileClient.getRangeList} operation.
 */
export declare interface FileGetRangeListOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Optional. Specifies the range of bytes over which to list ranges, inclusively.
     */
    range?: Range_2;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * This header is allowed only when prevShareSnapshot parameter is set.
     * Determines whether the changed ranges for a file that has been renamed or moved between the target snapshot (or the live file) and the previous snapshot should be listed.
     * If the value is true, the valid changed ranges for the file will be returned. If the value is false, the operation will result in a failure with 409 (Conflict) response.
     * The default value is false.
     */
    includeRenames?: boolean;
}

/**
 * Contains response data for the {@link ShareFileClient.getRangeList} operation.
 */
export declare type FileGetRangeListResponse = WithResponse<FileGetRangeListHeaders & {
    /**
     * Range list for an Azure file.
     */
    rangeList: RangeModel[];
}, FileGetRangeListHeaders, RangeModel[]>;

/** Contains response data for the getRangeList operation. */
declare type FileGetRangeListResponse_2 = FileGetRangeListHeaders & ShareFileRangeList;

/** Defines headers for File_getSymbolicLink operation. */
declare interface FileGetSymbolicLinkHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The path to the original file, the symbolic link is pointing to. The path is of type string which is not resolved and is stored as is. The path can be absolute path or the relative path depending on the content stored in the symbolic link file. */
    linkText?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
}

/** Optional parameters. */
declare interface FileGetSymbolicLinkOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/** Contains response data for the getSymbolicLink operation. */
declare type FileGetSymbolicLinkResponse = FileGetSymbolicLinkHeaders;

export declare interface FileHttpHeaders {
    /**
     * Optional. Sets the file's cache
     * control. If specified, this property is stored with the file and returned
     * with a read request.
     */
    fileCacheControl?: string;
    /**
     * Optional. Sets the file's content type.
     * If specified, this property is stored with the file and returned with a
     * read request.
     */
    fileContentType?: string;
    /**
     * Optional. An MD5 hash of the file
     * content. Note that this hash is not validated, as the hashes for the
     * individual blocks were validated when each was uploaded.
     */
    fileContentMD5?: Uint8Array;
    /**
     * Optional. Sets the file's content
     * encoding. If specified, this property is stored with the file and returned
     * with a read request.
     */
    fileContentEncoding?: string;
    /**
     * Optional. Set the file's content
     * language. If specified, this property is stored with the file and returned
     * with a read request.
     */
    fileContentLanguage?: string;
    /**
     * Optional. Sets the file's
     * Content-Disposition header.
     */
    fileContentDisposition?: string;
}

/** Parameter group */
declare interface FileHttpHeaders_2 {
    /** Sets the MIME content type of the file. The default type is 'application/octet-stream'. */
    fileContentType?: string;
    /** Specifies which content encodings have been applied to the file. */
    fileContentEncoding?: string;
    /** Specifies the natural languages used by this resource. */
    fileContentLanguage?: string;
    /** Sets the file's cache control. The File service stores this value but does not use or modify it. */
    fileCacheControl?: string;
    /** Sets the file's MD5 hash. */
    fileContentMD5?: Uint8Array;
    /** Sets the file's Content-Disposition header. */
    fileContentDisposition?: string;
}

/** A listed file item. */
export declare interface FileItem {
    name: string;
    fileId?: string;
    /** File properties. */
    properties: FileProperty;
    attributes?: string;
    permissionKey?: string;
}

/** A listed file item. */
declare interface FileItem_2 {
    name: StringEncoded;
    fileId?: string;
    /** File properties. */
    properties: FileProperty;
    attributes?: string;
    permissionKey?: string;
}

/** Defines values for FileLastWrittenMode. */
export declare type FileLastWrittenMode = "Now" | "Preserve";

/** Defines headers for File_listHandles operation. */
export declare interface FileListHandlesHeaders {
    /** Specifies the format in which the results are returned. Currently this value is 'application/xml'. */
    contentType?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileListHandlesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** Specifies the maximum number of entries to return. If the request does not specify maxresults, or specifies a value greater than 5,000, the server will return up to 5,000 items. */
    maxResults?: number;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

export declare interface FileListHandlesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the listHandles operation. */
export declare type FileListHandlesResponse = WithResponse<FileListHandlesHeaders & ListHandlesResponse, FileListHandlesHeaders, ListHandlesResponse>;

/** Contains response data for the listHandles operation. */
declare type FileListHandlesResponse_2 = FileListHandlesHeaders & ListHandlesResponse_2;

/**
 * Options to configure File - List Handles Segment operations.
 *
 * See:
 * - {@link ShareFileClient.listHandlesSegment}
 * - {@link ShareFileClient.iterateHandleSegments}
 * - {@link ShareFileClient.listHandleItems}
 */
export declare interface FileListHandlesSegmentOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies the maximum number of entries to return. If the request does not specify maxResults,
     * or specifies a value greater than 5,000, the server will return up to 5,000 items.
     */
    maxPageSize?: number;
}

/**
 * Option interface for File - Upload operations
 *
 * See:
 * - {@link ShareFileClient.uploadFile}
 * - {@link ShareFileClient.uploadSeekableStream}
 */
export declare interface FileParallelUploadOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * RangeSize specifies the range size to use in each parallel upload,
     * the default (and maximum size) is FILE_RANGE_MAX_SIZE_BYTES.
     */
    rangeSize?: number;
    /**
     * Progress updater.
     */
    onProgress?: (progress: TransferProgressEvent) => void;
    /**
     * File HTTP Headers.
     */
    fileHttpHeaders?: FileHttpHeaders;
    /**
     * Metadata of an Azure file.
     */
    metadata?: Metadata;
    /**
     * Concurrency indicates the maximum number of ranges to upload in parallel.
     * If not provided, 5 concurrency will be used by default.
     */
    concurrency?: number;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Defines values for FilePermissionFormat. */
export declare type FilePermissionFormat = "Sddl" | "Binary";

/**
 * Indicates inherit file permission from the parent directory.
 */
export declare type FilePermissionInheritType = "inherit";

/**
 * Indicates keep existing file permission value unchanged.
 */
export declare type FilePermissionPreserveType = "preserve";

/**
 *
 NFS properties.
 Note that these properties only apply to files or directories in
 premium NFS file accounts.
 */
export declare interface FilePosixProperties {
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. The file mode of the file or directory */
    fileMode?: NfsFileMode;
    /** NFS only. Type of the file or directory. */
    fileType?: NfsFileType;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
}

export declare interface FileProperties extends FileAndDirectorySetPropertiesCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * File HTTP headers like Content-Type.
     */
    fileHttpHeaders?: FileHttpHeaders;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** File properties. */
export declare interface FileProperty {
    /** Content length of the file. This value may not be up-to-date since an SMB client may have modified the file locally. The value of Content-Length may not reflect that fact until the handle is closed or the op-lock is broken. To retrieve current property values, call Get File Properties. */
    contentLength: number;
    creationTime?: Date;
    lastAccessTime?: Date;
    lastWriteTime?: Date;
    changeTime?: Date;
    lastModified?: Date;
    etag?: string;
}

/** Defines values for FileRangeWriteType. */
declare type FileRangeWriteType = "update" | "clear";

/** Defines headers for File_releaseLease operation. */
declare interface FileReleaseLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes. */
    etag?: string;
    /** Returns the date and time the file was last modified. Any operation that modifies the file, including an update of the file's metadata or properties, changes the last-modified time of the file. */
    lastModified?: Date;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface FileReleaseLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/** Contains response data for the releaseLease operation. */
declare type FileReleaseLeaseResponse = FileReleaseLeaseHeaders;

/** Defines headers for File_rename operation. */
export declare interface FileRenameHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreationTime?: Date;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Change time for the file. */
    fileChangeTime?: Date;
    /** The fileId of the file. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
}

/** Optional parameters. */
declare interface FileRenameOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    sourceLeaseAccessConditions?: SourceLeaseAccessConditions;
    /** Parameter group */
    destinationLeaseAccessConditions?: DestinationLeaseAccessConditions;
    /** Parameter group */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /** Parameter group */
    fileHttpHeaders?: FileHttpHeaders_2;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** Optional. A boolean value for if the destination file already exists, whether this request will overwrite the file or not. If true, the rename will succeed and will overwrite the destination file. If not provided or if false and the destination file does exist, the request will not overwrite the destination file. If provided and the destination file doesn’t exist, the rename will succeed. Note: This value does not override the x-ms-file-copy-ignore-read-only header value. */
    replaceIfExists?: boolean;
    /** Optional. A boolean value that specifies whether the ReadOnly attribute on a preexisting destination file should be respected. If true, the rename will succeed, otherwise, a previous file at the destination with the ReadOnly attribute set will cause the rename to fail. */
    ignoreReadOnly?: boolean;
    /** If true, the trailing dot will not be trimmed from the source URI. */
    allowSourceTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareFileClient.rename} operation.
 */
export declare interface FileRenameOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access condition for source file. Required if the source file has an active infinite lease.
     */
    sourceLeaseAccessConditions?: LeaseAccessConditions;
    /**
     * Lease access condition for destination file. Required if the destination file has an active infinite lease.
     */
    destinationLeaseAccessConditions?: LeaseAccessConditions;
    /**
     * Optional.
     * Specifies the option to copy file security descriptor from source file or to set it using the value which is defined by the header value of x-ms-file-permission or x-ms-file-permission-key.
     */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /**
     * A name-value pair to associate with a file storage object.
     */
    metadata?: Metadata;
    /**
     * Optional.
     * The timeout parameter is expressed in seconds. For more information, see <a href="https://learn.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a>
     */
    timeoutInSeconds?: number;
    /**
     * Optional.
     * If specified the permission (security descriptor) shall be set for the directory/file.
     */
    filePermission?: string;
    /**
     * Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned.
     * Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * Optional.
     * Key of the permission to be set for the directory/file. Note: Only one of the filePermission or filePermissionKey should be specified.
     */
    filePermissionKey?: string;
    /**
     * Optional.
     * A boolean value for if the destination file already exists, whether this request will overwrite the file or not. If true, the rename will succeed and will overwrite the destination file. If not provided or if false and the destination file does exist, the request will not overwrite the destination file. If provided and the destination file doesn’t exist, the rename will succeed. Note: This value does not override the x-ms-file-copy-ignore-read-only header value.
     */
    replaceIfExists?: boolean;
    /**
     * Optional.
     * A boolean value that specifies whether the ReadOnly attribute on a preexisting destination file should be respected. If true, the rename will succeed, otherwise, a previous file at the destination with the ReadOnly attribute set will cause the rename to fail.
     */
    ignoreReadOnly?: boolean;
    /**
     * Optional.
     * Content type to set on the File.
     */
    contentType?: string;
}

/** Contains response data for the rename operation. */
export declare type FileRenameResponse = WithResponse<FileRenameHeaders, FileRenameHeaders>;

/** Contains response data for the rename operation. */
declare type FileRenameResponse_2 = FileRenameHeaders;

/**
 * Options to configure the {@link ShareFileClient.resize} operation.
 */
export declare interface FileResizeOptions extends FileAndDirectorySetPropertiesCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Abstract for entries that can be listed from Directory. */
export declare interface FilesAndDirectoriesListSegment {
    directoryItems: DirectoryItem[];
    fileItems: FileItem[];
}

/** Abstract for entries that can be listed from Directory. */
declare interface FilesAndDirectoriesListSegment_2 {
    directoryItems: DirectoryItem_2[];
    fileItems: FileItem_2[];
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a file. Setting
 * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
 * the values are set, this should be serialized with toString and set as the permissions field on a
 * {@link FileSASSignatureValues} object. It is possible to construct the permissions string without this class, but
 * the order of the permissions is particular and this class guarantees correctness.
 */
export declare class FileSASPermissions {
    /**
     * Creates a FileSASPermissions from the specified permissions string. This method will throw an
     * Error if it encounters a character that does not correspond to a valid permission.
     *
     * @param permissions -
     */
    static parse(permissions: string): FileSASPermissions;
    /**
     * Specifies Read access granted.
     */
    read: boolean;
    /**
     * Specifies Create access granted.
     */
    create: boolean;
    /**
     * Specifies Write access granted.
     */
    write: boolean;
    /**
     * Specifies Delete access granted.
     */
    delete: boolean;
    /**
     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
     * order accepted by the service.
     *
     * @returns A string which represents the FileSASPermissions
     */
    toString(): string;
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * FileSASSignatureValues is used to help generating File service SAS tokens for shares or files.
 */
export declare interface FileSASSignatureValues {
    /**
     * The version of the service this SAS will target. If not specified, it will default to the version targeted by the
     * library.
     */
    version?: string;
    /**
     * Optional. SAS protocols, HTTPS only or HTTPSandHTTP
     */
    protocol?: SASProtocol;
    /**
     * Optional. When the SAS will take effect.
     */
    startsOn?: Date;
    /**
     * Optional only when identifier is provided. The time after which the SAS will no longer work.
     */
    expiresOn?: Date;
    /**
     * Optional only when identifier is provided.
     * Please refer to either {@link ShareSASPermissions} or {@link FileSASPermissions} depending on the resource
     * being accessed for help constructing the permissions string.
     */
    permissions?: FileSASPermissions | ShareSASPermissions;
    /**
     * Optional. IP ranges allowed in this SAS.
     */
    ipRange?: SasIPRange;
    /**
     * The name of the share the SAS user may access.
     */
    shareName: string;
    /**
     * Optional. The path of the file like, "directory/FileName" or "FileName".
     */
    filePath?: string;
    /**
     * Optional. The name of the access policy on the share this SAS references if any.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/establishing-a-stored-access-policy
     */
    identifier?: string;
    /**
     * Optional. The cache-control header for the SAS.
     */
    cacheControl?: string;
    /**
     * Optional. The content-disposition header for the SAS.
     */
    contentDisposition?: string;
    /**
     * Optional. The content-encoding header for the SAS.
     */
    contentEncoding?: string;
    /**
     * Optional. The content-language header for the SAS.
     */
    contentLanguage?: string;
    /**
     * Optional. The content-type header for the SAS.
     */
    contentType?: string;
}

/** Storage service properties. */
export declare interface FileServiceProperties {
    /** A summary of request statistics grouped by API in hourly aggregates for files. */
    hourMetrics?: Metrics;
    /** A summary of request statistics grouped by API in minute aggregates for files. */
    minuteMetrics?: Metrics;
    /** The set of CORS rules. */
    cors?: CorsRule[];
    /** Protocol settings */
    protocol?: ShareProtocolSettings;
}

/** Defines headers for File_setHttpHeaders operation. */
export declare interface FileSetHTTPHeadersHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** Properties of NFS files. */
    posixProperties?: FilePosixProperties;
    /** Error Code */
    errorCode?: string;
}

/** Defines headers for File_setHttpHeaders operation. */
declare interface FileSetHttpHeadersHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the directory or its properties updates the last modified time. Operations on files do not affect the last modified time of the directory. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Key of the permission set for the file. */
    filePermissionKey?: string;
    /** Attributes set for the file. */
    fileAttributes?: string;
    /** Creation time for the file. */
    fileCreatedOn?: Date;
    /** Last write time for the file. */
    fileLastWriteOn?: Date;
    /** Change time for the file. */
    fileChangeOn?: Date;
    /** The fileId of the directory. */
    fileId?: string;
    /** The parent fileId of the directory. */
    fileParentId?: string;
    /** NFS only. The mode of the file or directory. */
    fileMode?: string;
    /** NFS only. The owner of the file or directory. */
    owner?: string;
    /** NFS only. The owning group of the file or directory. */
    group?: string;
    /** NFS only. The link count of the file or directory. */
    linkCount?: number;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileSetHttpHeadersOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** Parameter group */
    fileHttpHeaders?: FileHttpHeaders_2;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** If specified, the provided file attributes shall be set. Default value: ‘Archive’ for file and ‘Directory’ for directory. ‘None’ can also be specified as default. */
    fileAttributes?: string;
    /** Creation time for the file/directory. Default value: Now. */
    fileCreatedOn?: string;
    /** Last write time for the file/directory. Default value: Now. */
    fileLastWriteOn?: string;
    /** Change time for the file/directory. Default value: Now. */
    fileChangeOn?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
    /** Optional, NFS only. The file mode of the file or directory */
    fileMode?: string;
    /** Resizes a file to the specified size. If the specified byte value is less than the current size of the file, then all ranges above the specified byte value are cleared. */
    fileContentLength?: number;
}

/**
 * Options to configure the {@link ShareFileClient.setHttpHeaders} operation.
 */
export declare interface FileSetHttpHeadersOptions extends FileAndDirectorySetPropertiesCommonOptions, CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the setHttpHeaders operation. */
export declare type FileSetHTTPHeadersResponse = WithResponse<FileSetHTTPHeadersHeaders, FileSetHTTPHeadersHeaders>;

/** Contains response data for the setHttpHeaders operation. */
declare type FileSetHttpHeadersResponse = FileSetHttpHeadersHeaders;

/** Defines headers for File_setMetadata operation. */
export declare interface FileSetMetadataHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileSetMetadataOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
}

/**
 * Options to configure the {@link ShareFileClient.setMetadata} operation.
 */
export declare interface FileSetMetadataOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the setMetadata operation. */
export declare type FileSetMetadataResponse = WithResponse<FileSetMetadataHeaders, FileSetMetadataHeaders>;

/** Contains response data for the setMetadata operation. */
declare type FileSetMetadataResponse_2 = FileSetMetadataHeaders;

/** Defines headers for File_startCopy operation. */
export declare interface FileStartCopyHeaders {
    /** If the copy is completed, contains the ETag of the destination file. If the copy is not complete, contains the ETag of the empty file created at the start of the copy. */
    etag?: string;
    /** Returns the date/time that the copy operation to the destination file completed. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** String identifier for this copy operation. Use with Get File or Get File Properties to check the status of this copy operation, or pass to Abort Copy File to abort a pending copy. */
    copyId?: string;
    /** State of the copy operation identified by x-ms-copy-id. */
    copyStatus?: CopyStatusType;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileStartCopyOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** Parameter group */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If specified the permission (security descriptor) shall be set for the directory/file. This header can be used if Permission size is <= 8KB, else x-ms-file-permission-key header shall be used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermission?: string;
    /** Key of the permission to be set for the directory/file. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be specified. */
    filePermissionKey?: string;
    /** Optional, NFS only. The owner of the file or directory. */
    owner?: string;
    /** Optional, NFS only. The owning group of the file or directory. */
    group?: string;
    /** Optional, NFS only. The file mode of the file or directory */
    fileMode?: string;
    /** If true, the trailing dot will not be trimmed from the source URI. */
    allowSourceTrailingDot?: boolean;
    /** NFS only. Applicable only when the copy source is a File. Determines the copy behavior of the mode bits of the file. source: The mode on the destination file is copied from the source file. override: The mode on the destination file is determined via the x-ms-mode header. */
    fileModeCopyMode?: ModeCopyMode;
    /** NFS only. Determines the copy behavior of the owner user identifier (UID) and group identifier (GID) of the file. source: The owner user identifier (UID) and group identifier (GID) on the destination file is copied from the source file. override: The owner user identifier (UID) and group identifier (GID) on the destination file is determined via the x-ms-owner and x-ms-group  headers. */
    fileOwnerCopyMode?: OwnerCopyMode;
}

/**
 * Options to configure the {@link ShareFileClient.startCopyFromURL} operation.
 */
export declare interface FileStartCopyOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * A collection of key-value string pair to associate with the file storage object.
     */
    metadata?: Metadata;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * If specified the permission (security descriptor) shall be set for the directory/file. This
     * header can be used if Permission size is lesser than or equal to 8KB, else x-ms-file-permission-key header shall be
     * used. Default value: Inherit. If SDDL is specified as input, it must have owner, group and
     * dacl. Note: Only one of the x-ms-file-permission or x-ms-file-permission-key should be
     * specified.
     */
    filePermission?: string;
    /**
     * Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned.
     * Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * Key of the permission to be set for the directory/file. Note: Only one of the
     * x-ms-file-permission or x-ms-file-permission-key should be specified.
     */
    filePermissionKey?: string;
    /**
     * SMB info.
     */
    copyFileSmbInfo?: CopyFileSmbInfo;
    /**
     * Optional properties to set on NFS files.
     Note that this property is only applicable to files created in NFS shares.
     */
    posixProperties?: FilePosixProperties;
    /**
     * Optional, only applicable to NFS Files.
     * Applicable only when the copy source is a File. Determines the copy behavior of the mode bits of the file.
     * source: The mode on the destination file is copied from the source file.
     * override: The mode on the destination file is determined via the x-ms-mode header.
     */
    fileModeCopyMode?: ModeCopyMode;
    /**
     * Optional, only applicable to NFS Files. Determines the copy behavior of the owner user identifier (UID) and group identifier (GID) of the file.
     * source: The owner user identifier (UID) and group identifier (GID) on the destination file is copied from the source file.
     * override: The owner user identifier (UID) and group identifier (GID) on the destination file is determined via the x-ms-owner and x-ms-group  headers.
     */
    fileOwnerCopyMode?: OwnerCopyMode;
}

/** Contains response data for the startCopy operation. */
export declare type FileStartCopyResponse = WithResponse<FileStartCopyHeaders, FileStartCopyHeaders>;

/** Contains response data for the startCopy operation. */
declare type FileStartCopyResponse_2 = FileStartCopyHeaders;

/**
 * This is a helper class to construct a string representing the NTFS attributes to a file or directory.
 * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-file#file-system-attributes
 */
export declare class FileSystemAttributes {
    /**
     * Creates a FileSystemAttributes from the specified attributes string. This method will throw an
     * Error if it encounters a string that does not correspond to a valid attributes.
     *
     * @param fileAttributes - The value of header x-ms-file-attributes.
     */
    static parse(fileAttributes: string): FileSystemAttributes;
    /**
     * Specifies a directory or file that is read-only.
     */
    readonly: boolean;
    /**
     * Specifies a directory or file is hidden.
     */
    hidden: boolean;
    /**
     * Specifies a directory or file that the operating system uses a part of, or uses exclusively.
     */
    system: boolean;
    /**
     * Specifies a directory or file that does not have other attributes set. This attribute is valid only when used alone.
     */
    none: boolean;
    /**
     * Specifies the handle identifies a directory.
     */
    directory: boolean;
    /**
     * Specifies a directory or file is an archive. Applications typically use this attribute to mark files for backup or removal.
     */
    archive: boolean;
    /**
     * Specifies if a file is temporary.
     */
    temporary: boolean;
    /**
     * Specifies the data of a directory or file is not available immediately.
     * This file system attribute is presented primarily to provide compatibility with Windows - Azure Files does not support with offline storage options.
     */
    offline: boolean;
    /**
     * Specifies the directory or file is not to be indexed by the content indexing service.
     */
    notContentIndexed: boolean;
    /**
     * Specifies the user data stream not to be read by the background data integrity scanner.
     * This file system attribute is presented primarily to provide compatibility with Windows.
     * Applicable to directory or file.
     */
    noScrubData: boolean;
    /**
     * Converts the given attributes to a string.
     *
     * @returns A string which represents the FileSystemAttributes
     */
    toString(): string;
}

/** Defines headers for File_uploadRangeFromURL operation. */
export declare interface FileUploadRangeFromURLHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the share or its properties or metadata updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header is returned so that the client can check for message content integrity. The value of this header is computed by the File service; it is not necessarily the same value as may have been specified in the request headers. */
    xMsContentCrc64?: Uint8Array;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
export declare interface FileUploadRangeFromURLOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** Parameter group */
    sourceModifiedAccessConditions?: SourceModifiedAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If true, the trailing dot will not be trimmed from the source URI. */
    allowSourceTrailingDot?: boolean;
    /** If the file last write time should be preserved or overwritten */
    fileLastWrittenMode?: FileLastWrittenMode;
    /** Bytes of source data in the specified range. */
    sourceRange?: string;
    /** Specify the crc64 calculated for the range of bytes that must be read from the copy source. */
    sourceContentCrc64?: Uint8Array;
    /** Only Bearer type is supported. Credentials should be a valid OAuth access token to copy source. */
    copySourceAuthorization?: string;
}

/**
 * Options to configure the {@link ShareFileClient.uploadRangeFromURL} operation.
 */
export declare interface FileUploadRangeFromURLOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * The timeout parameter is expressed in seconds. For more information, see <a
     * href="https://learn.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting
     * Timeouts for File Service Operations.</a>
     */
    timeoutInSeconds?: number;
    /**
     * Specify the crc64 calculated for the range of bytes that must be read from the copy source.
     */
    sourceContentCrc64?: Uint8Array;
    /**
     * Additional parameters for the operation
     */
    sourceConditions?: SourceModifiedAccessConditions;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * Only Bearer type is supported. Credentials should be a valid OAuth access token to copy source.
     */
    sourceAuthorization?: HttpAuthorization;
    /**
     * The last write time for the file.
     * A value of preserve may be passed to keep an existing value unchanged.
     * A value of now may be used to indicate the time of the request.
     * By default, the value will be set as now.
     */
    fileLastWrittenMode?: FileLastWrittenMode;
}

/** Contains response data for the uploadRangeFromURL operation. */
export declare type FileUploadRangeFromURLResponse = WithResponse<FileUploadRangeFromURLHeaders, FileUploadRangeFromURLHeaders>;

/** Contains response data for the uploadRangeFromURL operation. */
declare type FileUploadRangeFromURLResponse_2 = FileUploadRangeFromURLHeaders;

/** Defines headers for File_uploadRange operation. */
export declare interface FileUploadRangeHeaders {
    /** The ETag contains a value which represents the version of the file, in quotes. */
    etag?: string;
    /** Returns the date and time the directory was last modified. Any operation that modifies the share or its properties or metadata updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header is returned so that the client can check for message content integrity. The value of this header is computed by the File service; it is not necessarily the same value as may have been specified in the request headers. */
    contentMD5?: Uint8Array;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. */
    isServerEncrypted?: boolean;
    /** Last write time for the file. */
    fileLastWriteTime?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface FileUploadRangeOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** Initial data. */
    body?: coreRestPipeline.RequestBodyType;
    /** An MD5 hash of the content. This hash is used to verify the integrity of the data during transport. When the Content-MD5 header is specified, the File service compares the hash of the content that has arrived with the header value that was sent. If the two hashes do not match, the operation will fail with error code 400 (Bad Request). */
    contentMD5?: Uint8Array;
    /** If the file last write time should be preserved or overwritten */
    fileLastWrittenMode?: FileLastWrittenMode;
}

/**
 * Options to configure the {@link ShareFileClient.uploadRange} operation.
 */
export declare interface FileUploadRangeOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * An MD5 hash of the content. This hash is
     * used to verify the integrity of the data during transport. When the
     * Content-MD5 header is specified, the File service compares the hash of the
     * content that has arrived with the header value that was sent. If the two
     * hashes do not match, the operation will fail with error code 400 (Bad
     * Request).
     */
    contentMD5?: Uint8Array;
    /**
     * Progress updating event handler.
     */
    onProgress?: (progress: TransferProgressEvent) => void;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * The last write time for the file.
     * A value of Preserve may be passed to keep an existing value unchanged.
     * A value of Now may be used to indicate the time of the request.
     * By default, the value will be set as Now.
     */
    fileLastWrittenMode?: FileLastWrittenMode;
}

/** Contains response data for the uploadRange operation. */
export declare type FileUploadRangeResponse = WithResponse<FileUploadRangeHeaders, FileUploadRangeHeaders>;

/** Contains response data for the uploadRange operation. */
declare type FileUploadRangeResponse_2 = FileUploadRangeHeaders;

/**
 * Option interface for ShareFileClient.uploadStream().
 */
export declare interface FileUploadStreamOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Azure File HTTP Headers.
     */
    fileHttpHeaders?: FileHttpHeaders;
    /**
     * Metadata of the Azure file.
     */
    metadata?: Metadata;
    /**
     * Progress updater.
     */
    onProgress?: (progress: TransferProgressEvent) => void;
    /**
     * Lease access conditions.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
 * REST request.
 *
 * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
 *
 * @param sharedKeyCredential -
 */
export declare function generateAccountSASQueryParameters(accountSASSignatureValues: AccountSASSignatureValues, sharedKeyCredential: StorageSharedKeyCredential): SASQueryParameters;

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * Creates an instance of SASQueryParameters.
 *
 * Only accepts required settings needed to create a SAS. For optional settings please
 * set corresponding properties directly, such as permissions, startsOn and identifier.
 *
 * WARNING: When identifier is not provided, permissions and expiresOn are required.
 * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
 * this constructor.
 *
 * @param fileSASSignatureValues -
 * @param sharedKeyCredential -
 */
export declare function generateFileSASQueryParameters(fileSASSignatureValues: FileSASSignatureValues, sharedKeyCredential: StorageSharedKeyCredential): SASQueryParameters;

/**
 * To get the OAuth audience for a storage account for file service.
 */
export declare function getFileServiceAccountAudience(storageAccountName: string): string;

/** A listed Azure Storage handle item. */
export declare interface HandleItem {
    /** XSMB service handle ID */
    handleId: string;
    /** File or directory name including full path starting from share root */
    path: string;
    /** FileId uniquely identifies the file or directory. */
    fileId: string;
    /** ParentId uniquely identifies the parent directory of the object. */
    parentId?: string;
    /** SMB session ID in context of which the file handle was opened */
    sessionId: string;
    /** Client IP that opened the handle */
    clientIp: string;
    /** Name of the client machine where the share is being mounted */
    clientName: string;
    /** Time when the session that previously opened the handle has last been reconnected. (UTC) */
    openTime: Date;
    /** Time handle was last connected to (UTC) */
    lastReconnectTime?: Date;
    accessRightList?: ShareFileHandleAccessRights[];
}

/** A listed Azure Storage handle item. */
declare interface HandleItem_2 {
    /** XSMB service handle ID */
    handleId: string;
    path: StringEncoded;
    /** FileId uniquely identifies the file or directory. */
    fileId: string;
    /** ParentId uniquely identifies the parent directory of the object. */
    parentId?: string;
    /** SMB session ID in context of which the file handle was opened */
    sessionId: string;
    /** Client IP that opened the handle */
    clientIp: string;
    /** Name of the client machine where the share is being mounted */
    clientName: string;
    /** Time when the session that previously opened the handle has last been reconnected. (UTC) */
    openTime: Date;
    /** Time handle was last connected to (UTC) */
    lastReconnectTime?: Date;
    accessRightList?: AccessRight[];
}

/**
 * Represents authentication information in Authorization, ProxyAuthorization,
 * WWW-Authenticate, and Proxy-Authenticate header values.
 */
export declare interface HttpAuthorization {
    /**
     * The scheme to use for authorization.
     */
    scheme: string;
    /**
     * the credentials containing the authentication information of the user agent for the resource being requested.
     */
    value: string;
}

export { HttpHeaders }

export { HttpOperationResponse }

export { HttpRequestBody }

/**
 * A representation of an HTTP response that
 * includes a reference to the request that
 * originated it.
 */
export declare interface HttpResponse {
    /**
     * The headers from the response.
     */
    headers: HttpHeaders;
    /**
     * The original request that resulted in this response.
     */
    request: WebResource;
    /**
     * The HTTP status code returned from the service.
     */
    status: number;
}

/**
 * A helper to decide if a given argument satisfies the Pipeline contract
 * @param pipeline - An argument that may be a Pipeline
 * @returns true when the argument satisfies the Pipeline contract
 */
export declare function isPipelineLike(pipeline: unknown): pipeline is PipelineLike;

/** Known values of {@link ShareTokenIntent} that the service accepts. */
export declare enum KnownShareTokenIntent {
    Backup = "backup"
}

/** Parameter group */
export declare interface LeaseAccessConditions {
    /** If specified, the operation only succeeds if the resource's lease is active and matches this ID. */
    leaseId?: string;
}

/** Defines values for LeaseDurationType. */
export declare type LeaseDurationType = "infinite" | "fixed";

/**
 * lease operations options.
 */
export declare interface LeaseOperationOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/**
 * Contains the response data for operations that acquire, change, break or release a lease.
 *
 * See {@link ShareLeaseClient}.
 */
export declare type LeaseOperationResponse = WithResponse<LeaseOperationResponseHeaders, LeaseOperationResponseHeaders>;

/**
 * The details of the response for a specific lease operation.
 */
export declare interface LeaseOperationResponseHeaders {
    /**
     * The ETag contains a value that you can use to perform operations conditionally. If the request
     * version is 2011-08-18 or newer, the ETag value will be in quotes.
     */
    etag?: string;
    /**
     * Returns the date and time the file was last modified. Any operation that modifies the file,
     * including an update of the file's metadata or properties, changes the last-modified time of
     * the file.
     */
    lastModified?: Date;
    /**
     * Approximate time remaining in the lease period, in seconds. Only availabe for {@link ShareLeaseClient.breakLease} for share lease.
     */
    leaseTimeInSeconds?: number;
    /**
     * Uniquely identifies a file's lease, won't be set when returned by releaseLease.
     */
    leaseId?: string;
    /**
     * This header uniquely identifies the request that was made and can be used for troubleshooting
     * the request.
     */
    requestId?: string;
    /**
     * Indicates the version of the Blob service used to execute the request. This header is returned
     * for requests made against version 2009-09-19 and above.
     */
    version?: string;
    /**
     * UTC date/time value generated by the service that indicates the time at which the response was
     * initiated
     */
    date?: Date;
    errorCode?: string;
}

/** Defines values for LeaseStateType. */
export declare type LeaseStateType = "available" | "leased" | "expired" | "breaking" | "broken";

/** Defines values for LeaseStatusType. */
export declare type LeaseStatusType = "locked" | "unlocked";

/** An enumeration of directories and files. */
export declare interface ListFilesAndDirectoriesSegmentResponse {
    serviceEndpoint: string;
    shareName: string;
    shareSnapshot?: string;
    directoryPath: string;
    prefix: string;
    marker?: string;
    maxResults?: number;
    /** Abstract for entries that can be listed from Directory. */
    segment: FilesAndDirectoriesListSegment;
    continuationToken: string;
    directoryId?: string;
}

/** An enumeration of directories and files. */
declare interface ListFilesAndDirectoriesSegmentResponse_2 {
    serviceEndpoint: string;
    shareName: string;
    shareSnapshot?: string;
    encoded?: boolean;
    directoryPath: string;
    prefix: StringEncoded;
    marker?: string;
    maxResults?: number;
    /** Abstract for entries that can be listed from Directory. */
    segment: FilesAndDirectoriesListSegment_2;
    continuationToken: string;
    directoryId?: string;
}

/** Defines values for ListFilesIncludeType. */
declare type ListFilesIncludeType = "Timestamps" | "Etag" | "Attributes" | "PermissionKey";

/** An enumeration of handles. */
export declare interface ListHandlesResponse {
    handleList?: HandleItem[];
    continuationToken: string;
}

/** An enumeration of handles. */
declare interface ListHandlesResponse_2 {
    handleList?: HandleItem_2[];
    continuationToken: string;
}

/** Defines values for ListSharesIncludeType. */
export declare type ListSharesIncludeType = "snapshots" | "metadata" | "deleted";

/**
 * An enumeration of shares.
 */
export declare interface ListSharesResponse {
    serviceEndpoint: string;
    prefix?: string;
    marker?: string;
    maxResults?: number;
    shareItems?: ShareItem[];
    continuationToken: string;
}

/** An enumeration of shares. */
export declare interface ListSharesResponseModel {
    serviceEndpoint: string;
    prefix?: string;
    marker?: string;
    maxResults?: number;
    shareItems?: ShareItemInternal[];
    continuationToken: string;
}

/**
 * The `@azure/logger` configuration for this package.
 */
export declare const logger: AzureLogger;

export declare interface Metadata {
    [propertyName: string]: string;
}

/** Storage Analytics metrics for file service. */
export declare interface Metrics {
    /** The version of Storage Analytics to configure. */
    version: string;
    /** Indicates whether metrics are enabled for the File service. */
    enabled: boolean;
    /** Indicates whether metrics should generate summary statistics for called API operations. */
    includeAPIs?: boolean;
    /** The retention policy. */
    retentionPolicy?: RetentionPolicy;
}

/** Defines values for ModeCopyMode. */
export declare type ModeCopyMode = "source" | "override";

/**
 * Creates a new Pipeline object with Credential provided.
 *
 * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
 * @param pipelineOptions - Optional. Options.
 * @returns A new Pipeline object.
 */
export declare function newPipeline(credential?: Credential_2 | TokenCredential, pipelineOptions?: StoragePipelineOptions): Pipeline;

/**
 * The mode permissions of the file or directory.
 */
export declare interface NfsFileMode {
    /**
     * Permissions the owner has over the file or directory.
     */
    owner: PosixRolePermissions;
    /**
     * Permissions the group has over the file or directory.
     */
    group: PosixRolePermissions;
    /**
     * Permissions other have over the file or directory.
     */
    other: PosixRolePermissions;
    /**
     * Set effective user ID (setuid) on the file or directory.
     */
    effectiveUserIdentity: boolean;
    /**
     * Set effective group ID (setgid) on the file or directory.
     */
    effectiveGroupIdentity: boolean;
    /**
     * The sticky bit may be set on directories.  The files in that
     * directory may only be renamed or deleted by the file's owner, the directory's owner, or the root user.
     */
    stickyBit: boolean;
}

/**
 * Defines values for NfsFileType. \
 * {@link KnownNfsFileType} can be used interchangeably with NfsFileType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Regular** \
 * **Directory** \
 * **SymLink**
 */
export declare type NfsFileType = string;

/** Defines values for OwnerCopyMode. */
export declare type OwnerCopyMode = "source" | "override";

/**
 * Parse 4-digit octal string representation of a File Mode to a {@link NfsFileMode} structure.
 */
export declare function parseOctalFileMode(input?: string): NfsFileMode | undefined;

/**
 * Parse a 9-character symbolic string representation of a File Mode to a {@link NfsFileMode} structure.
 */
export declare function parseSymbolicFileMode(input?: string): NfsFileMode | undefined;

/** Defines values for PermissionCopyModeType. */
export declare type PermissionCopyModeType = "source" | "override";

/**
 * A Pipeline class containing HTTP request policies.
 * You can create a default Pipeline by calling {@link newPipeline}.
 * Or you can create a Pipeline with your own policies by the constructor of Pipeline.
 *
 * Refer to {@link newPipeline} and provided policies before implementing your
 * customized Pipeline.
 */
export declare class Pipeline implements PipelineLike {
    /**
     * A list of chained request policy factories.
     */
    readonly factories: RequestPolicyFactory[];
    /**
     * Configures pipeline logger and HTTP client.
     */
    readonly options: PipelineOptions;
    /**
     * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
     *
     * @param factories -
     * @param options -
     */
    constructor(factories: RequestPolicyFactory[], options?: PipelineOptions);
    /**
     * Transfer Pipeline object to ServiceClientOptions object which is required by
     * ServiceClient constructor.
     *
     * @returns The ServiceClientOptions object from this Pipeline.
     */
    toServiceClientOptions(): ServiceClientOptions;
}

/**
 * An interface for the {@link Pipeline} class containing HTTP request policies.
 * You can create a default Pipeline by calling {@link newPipeline}.
 * Or you can create a Pipeline with your own policies by the constructor of Pipeline.
 *
 * Refer to {@link newPipeline} and provided policies before implementing your
 * customized Pipeline.
 */
export declare interface PipelineLike {
    /**
     * A list of chained request policy factories.
     */
    readonly factories: RequestPolicyFactory[];
    /**
     * Configures pipeline logger and HTTP client.
     */
    readonly options: PipelineOptions;
    /**
     * Transfer Pipeline object to ServiceClientOptions object which is required by
     * ServiceClient constructor.
     *
     * @returns The ServiceClientOptions object from this Pipeline.
     */
    toServiceClientOptions(): ServiceClientOptions;
}

/**
 * Option interface for Pipeline constructor.
 */
export declare interface PipelineOptions {
    /**
     * Optional. Configures the HTTP client to send requests and receive responses.
     */
    httpClient?: RequestPolicy;
    /**
     * Intent of using TokenCredential in file requests.
     */
    shareTokenIntent?: ShareTokenIntent;
}

/**
 * Represents file permissions for a specific role.
 */
export declare interface PosixRolePermissions {
    /**
     * The execute permission.
     */
    execute: boolean;
    /**
     * The write permission.
     */
    write: boolean;
    /**
     * The read permission.
     */
    read: boolean;
}

/**
 * Range for Service Operations.
 * @see https://learn.microsoft.com/en-us/rest/api/storageservices/specifying-the-range-header-for-file-service-operations
 */
declare interface Range_2 {
    /**
     * StartByte, larger than or equal 0.
     */
    offset: number;
    /**
     * Optional. Count of bytes, larger than 0.
     * If not provided, will return bytes from offset to the end.
     */
    count?: number;
}
export { Range_2 as Range }

/** An Azure Storage file range. */
export declare interface RangeModel {
    /** Start of the range. */
    start: number;
    /** End of the range. */
    end: number;
}

/** Contains response data for the download operation. */
export declare type RawFileDownloadResponse = FileDownloadHeaders & {
    /**
     * BROWSER ONLY
     *
     * The response body as a browser Blob.
     * Always `undefined` in node.js.
     */
    blobBody?: Promise<Blob>;
    /**
     * NODEJS ONLY
     *
     * The response body as a node.js Readable stream.
     * Always `undefined` in the browser.
     */
    readableStreamBody?: NodeJS.ReadableStream;
};

export { RequestPolicy as IHttpClient }
export { RequestPolicy }

export { RequestPolicyFactory }

export { RequestPolicyOptions }

/**
 * An object with a simple _response property.
 */
export declare interface ResponseLike {
    /**
     * The underlying HTTP response.
     */
    _response: HttpResponse;
}

/**
 * An object with a _response property that has body
 * and headers already parsed into known types.
 */
export declare interface ResponseWithBody<Headers, Body> {
    /**
     * The underlying HTTP response.
     */
    _response: HttpResponse & {
        /**
         * The parsed HTTP response headers.
         */
        parsedHeaders: Headers;
        /**
         * The response body as text (string format)
         */
        bodyAsText: string;
        /**
         * The response body as parsed JSON or XML
         */
        parsedBody: Body;
    };
}

/**
 * An object with a _response property that has
 * headers already parsed into a typed object.
 */
export declare interface ResponseWithHeaders<Headers> {
    /**
     * The underlying HTTP response.
     */
    _response: HttpResponse & {
        /**
         * The parsed HTTP response headers.
         */
        parsedHeaders: Headers;
    };
}

export { RestError }

/** The retention policy. */
export declare interface RetentionPolicy {
    /** Indicates whether a retention policy is enabled for the File service. If false, metrics data is retained, and the user is responsible for deleting it. */
    enabled: boolean;
    /** Indicates the number of days that metrics data should be retained. All data older than this value will be deleted. Metrics data is deleted on a best-effort basis after the retention period expires. */
    days?: number;
}

/**
 * Allowed IP range for a SAS.
 */
export declare interface SasIPRange {
    /**
     * Starting IP address in the IP range.
     * If end IP doesn't provide, start IP will the only IP allowed.
     */
    start: string;
    /**
     * Optional. IP address that ends the IP range.
     * If not provided, start IP will the only IP allowed.
     */
    end?: string;
}

/**
 * Protocols for generated SAS.
 */
export declare enum SASProtocol {
    /**
     * Protocol that allows HTTPS only
     */
    Https = "https",
    /**
     * Protocol that allows both HTTPS and HTTP
     */
    HttpsAndHttp = "https,http"
}

/**
 * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
 * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link FileSASSignatureValues}
 * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should
 * be taken here in case there are existing query parameters, which might affect the appropriate means of appending
 * these query parameters).
 *
 * NOTE: Instances of this class are immutable.
 */
export declare class SASQueryParameters {
    /**
     * The storage API version.
     */
    readonly version: string;
    /**
     * Optional. The allowed HTTP protocol(s).
     */
    readonly protocol?: SASProtocol;
    /**
     * Optional. The start time for this SAS token.
     */
    readonly startsOn?: Date;
    /**
     * Optional only when identifier is provided. The expiry time for this SAS token.
     */
    readonly expiresOn?: Date;
    /**
     * Optional only when identifier is provided.
     * Please refer to {@link AccountSASPermissions}, {@link FileSASPermissions}, or {@link ShareSASPermissions} for
     * more details.
     */
    readonly permissions?: string;
    /**
     * Optional. The storage services being accessed (only for Account SAS). Please refer to {@link AccountSASServices}
     * for more details.
     */
    readonly services?: string;
    /**
     * Optional. The storage resource types being accessed (only for Account SAS). Please refer to
     * {@link AccountSASResourceTypes} for more details.
     */
    readonly resourceTypes?: string;
    /**
     * Optional. The signed identifier (only for {@link FileSASSignatureValues}).
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/establishing-a-stored-access-policy
     */
    readonly identifier?: string;
    /**
     * Optional. The storage share or file path (only for {@link FileSASSignatureValues}).
     */
    readonly resource?: string;
    /**
     * The signature for the SAS token.
     */
    readonly signature: string;
    /**
     * Value for cache-control header in Blob/File Service SAS.
     */
    readonly cacheControl?: string;
    /**
     * Value for content-disposition header in Blob/File Service SAS.
     */
    readonly contentDisposition?: string;
    /**
     * Value for content-encoding header in Blob/File Service SAS.
     */
    readonly contentEncoding?: string;
    /**
     * Value for content-length header in Blob/File Service SAS.
     */
    readonly contentLanguage?: string;
    /**
     * Value for content-type header in Blob/File Service SAS.
     */
    readonly contentType?: string;
    /**
     * Inner value of getter ipRange.
     */
    private readonly ipRangeInner?;
    /**
     * Optional. IP range allowed for this SAS.
     *
     * @readonly
     */
    get ipRange(): SasIPRange | undefined;
    /**
     * Creates an instance of SASQueryParameters.
     *
     * @param version - Representing the storage version
     * @param signature - Representing the signature for the SAS token
     * @param permissions - Representing the storage permissions
     * @param services - Representing the storage services being accessed (only for Account SAS)
     * @param resourceTypes - Representing the storage resource types being accessed (only for Account SAS)
     * @param protocol - Representing the allowed HTTP protocol(s)
     * @param startsOn - Representing the start time for this SAS token
     * @param expiresOn - Representing the expiry time for this SAS token
     * @param ipRange - Representing the range of valid IP addresses for this SAS token
     * @param identifier - Representing the signed identifier (only for Service SAS)
     * @param resource - Representing the storage container or blob (only for Service SAS)
     * @param cacheControl - Representing the cache-control header (only for Blob/File Service SAS)
     * @param contentDisposition - Representing the content-disposition header (only for Blob/File Service SAS)
     * @param contentEncoding - Representing the content-encoding header (only for Blob/File Service SAS)
     * @param contentLanguage - Representing the content-language header (only for Blob/File Service SAS)
     * @param contentType - Representing the content-type header (only for Blob/File Service SAS)
     */
    constructor(version: string, signature: string, permissions?: string, services?: string, resourceTypes?: string, protocol?: SASProtocol, startsOn?: Date, expiresOn?: Date, ipRange?: SasIPRange, identifier?: string, resource?: string, cacheControl?: string, contentDisposition?: string, contentEncoding?: string, contentLanguage?: string, contentType?: string);
    /**
     * Encodes all SAS query parameters into a string that can be appended to a URL.
     *
     */
    toString(): string;
    /**
     * A private helper method used to filter and append query key/value pairs into an array.
     *
     * @param queries -
     * @param key -
     * @param value -
     */
    private tryAppendQueryParameter;
}

/** Interface representing a Service. */
declare interface Service {
    /**
     * Sets properties for a storage account's File service endpoint, including properties for Storage
     * Analytics metrics and CORS (Cross-Origin Resource Sharing) rules.
     * @param properties The StorageService properties.
     * @param options The options parameters.
     */
    setProperties(properties: FileServiceProperties, options?: ServiceSetPropertiesOptionalParams): Promise<ServiceSetPropertiesResponse_2>;
    /**
     * Gets the properties of a storage account's File service, including properties for Storage Analytics
     * metrics and CORS (Cross-Origin Resource Sharing) rules.
     * @param options The options parameters.
     */
    getProperties(options?: ServiceGetPropertiesOptionalParams): Promise<ServiceGetPropertiesResponse_2>;
    /**
     * The List Shares Segment operation returns a list of the shares and share snapshots under the
     * specified account.
     * @param options The options parameters.
     */
    listSharesSegment(options?: ServiceListSharesSegmentOptionalParams): Promise<ServiceListSharesSegmentResponse_2>;
}

/**
 * A subset of `@azure/core-http` ServiceClientOptions
 */
export declare interface ServiceClientOptions {
    /**
     * Optional. Configures the HTTP client to send requests and receive responses.
     */
    httpClient?: RequestPolicy;
    /**
     * Optional. Overrides the default policy factories.
     */
    requestPolicyFactories?: RequestPolicyFactory[] | ((defaultRequestPolicyFactories: RequestPolicyFactory[]) => void | RequestPolicyFactory[]);
}

/**
 * Options to configure {@link ShareServiceClient.generateAccountSasUrl} operation.
 */
export declare interface ServiceGenerateAccountSasUrlOptions {
    /**
     * The version of the service this SAS will target. If not specified, it will default to the version targeted by the
     * library.
     */
    version?: string;
    /**
     * Optional. SAS protocols allowed.
     */
    protocol?: SASProtocol;
    /**
     * Optional. When the SAS will take effect.
     */
    startsOn?: Date;
    /**
     * Optional. IP range allowed.
     */
    ipRange?: SasIPRange;
}

/** Defines headers for Service_getProperties operation. */
export declare interface ServiceGetPropertiesHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ServiceGetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
}

/**
 * Options to configure the {@link ShareServiceClient.getProperties} operation.
 */
export declare interface ServiceGetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the getProperties operation. */
export declare type ServiceGetPropertiesResponse = WithResponse<ServiceGetPropertiesHeaders & FileServiceProperties, ServiceGetPropertiesHeaders, FileServiceProperties>;

/** Contains response data for the getProperties operation. */
declare type ServiceGetPropertiesResponse_2 = ServiceGetPropertiesHeaders & FileServiceProperties;

/**
 * Options to configure the {@link ShareServiceClient.listShares} operation.
 */
export declare interface ServiceListSharesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Filters the results to return only entries whose
     * name begins with the specified prefix.
     */
    prefix?: string;
    /**
     * Specifies that share snapshots should be included in the enumeration. Share Snapshots are listed from oldest to newest in the response.
     */
    includeMetadata?: boolean;
    /**
     * Specifies that share snapshot should be returned in the response.
     */
    includeSnapshots?: boolean;
    /**
     * Specifies that share soft deleted should be returned in the response.
     */
    includeDeleted?: boolean;
}

/** Defines headers for Service_listSharesSegment operation. */
export declare interface ServiceListSharesSegmentHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ServiceListSharesSegmentOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Filters the results to return only entries whose name begins with the specified prefix. */
    prefix?: string;
    /** A string value that identifies the portion of the list to be returned with the next list operation. The operation returns a marker value within the response body if the list returned was not complete. The marker value may then be used in a subsequent call to request the next set of list items. The marker value is opaque to the client. */
    marker?: string;
    /** Specifies the maximum number of entries to return. If the request does not specify maxresults, or specifies a value greater than 5,000, the server will return up to 5,000 items. */
    maxResults?: number;
    /** Include this parameter to specify one or more datasets to include in the response. */
    include?: ListSharesIncludeType[];
}

/**
 * Contains response data for the {@link ShareServiceClient.listShares} operation.
 */
export declare type ServiceListSharesSegmentResponse = WithResponse<ListSharesResponse & ServiceListSharesSegmentHeaders, ServiceListSharesSegmentHeaders, ListSharesResponseModel>;

/** Contains response data for the listSharesSegment operation. */
declare type ServiceListSharesSegmentResponse_2 = ServiceListSharesSegmentHeaders & ListSharesResponseModel;

/** Defines headers for Service_setProperties operation. */
export declare interface ServiceSetPropertiesHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ServiceSetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
}

/**
 * Options to configure the {@link ShareServiceClient.setProperties} operation.
 */
export declare interface ServiceSetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the setProperties operation. */
export declare type ServiceSetPropertiesResponse = WithResponse<ServiceSetPropertiesHeaders, ServiceSetPropertiesHeaders>;

/** Contains response data for the setProperties operation. */
declare type ServiceSetPropertiesResponse_2 = ServiceSetPropertiesHeaders;

/**
 * Options to configure the {@link ShareServiceClient.undelete} operation.
 */
export declare interface ServiceUndeleteShareOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

export declare interface SetPropertiesResponse extends FileSetHTTPHeadersResponse {
}

/** Interface representing a Share. */
declare interface Share {
    /**
     * Creates a new share under the specified account. If the share with the same name already exists, the
     * operation fails.
     * @param options The options parameters.
     */
    create(options?: ShareCreateOptionalParams): Promise<ShareCreateResponse_2>;
    /**
     * Returns all user-defined metadata and system properties for the specified share or share snapshot.
     * The data returned does not include the share's list of files.
     * @param options The options parameters.
     */
    getProperties(options?: ShareGetPropertiesOptionalParams): Promise<ShareGetPropertiesResponse_2>;
    /**
     * Operation marks the specified share or share snapshot for deletion. The share or share snapshot and
     * any files contained within it are later deleted during garbage collection.
     * @param options The options parameters.
     */
    delete(options?: ShareDeleteOptionalParams): Promise<ShareDeleteResponse_2>;
    /**
     * The Lease Share operation establishes and manages a lock on a share, or the specified snapshot for
     * set and delete share operations.
     * @param options The options parameters.
     */
    acquireLease(options?: ShareAcquireLeaseOptionalParams): Promise<ShareAcquireLeaseResponse>;
    /**
     * The Lease Share operation establishes and manages a lock on a share, or the specified snapshot for
     * set and delete share operations.
     * @param leaseId Specifies the current lease ID on the resource.
     * @param options The options parameters.
     */
    releaseLease(leaseId: string, options?: ShareReleaseLeaseOptionalParams): Promise<ShareReleaseLeaseResponse>;
    /**
     * The Lease Share operation establishes and manages a lock on a share, or the specified snapshot for
     * set and delete share operations.
     * @param leaseId Specifies the current lease ID on the resource.
     * @param options The options parameters.
     */
    changeLease(leaseId: string, options?: ShareChangeLeaseOptionalParams): Promise<ShareChangeLeaseResponse>;
    /**
     * The Lease Share operation establishes and manages a lock on a share, or the specified snapshot for
     * set and delete share operations.
     * @param leaseId Specifies the current lease ID on the resource.
     * @param options The options parameters.
     */
    renewLease(leaseId: string, options?: ShareRenewLeaseOptionalParams): Promise<ShareRenewLeaseResponse>;
    /**
     * The Lease Share operation establishes and manages a lock on a share, or the specified snapshot for
     * set and delete share operations.
     * @param options The options parameters.
     */
    breakLease(options?: ShareBreakLeaseOptionalParams): Promise<ShareBreakLeaseResponse>;
    /**
     * Creates a read-only snapshot of a share.
     * @param options The options parameters.
     */
    createSnapshot(options?: ShareCreateSnapshotOptionalParams): Promise<ShareCreateSnapshotResponse_2>;
    /**
     * Create a permission (a security descriptor).
     * @param sharePermission A permission (a security descriptor) at the share level.
     * @param options The options parameters.
     */
    createPermission(sharePermission: SharePermission, options?: ShareCreatePermissionOptionalParams): Promise<ShareCreatePermissionResponse_2>;
    /**
     * Returns the permission (security descriptor) for a given key
     * @param filePermissionKey Key of the permission to be set for the directory/file.
     * @param options The options parameters.
     */
    getPermission(filePermissionKey: string, options?: ShareGetPermissionOptionalParams): Promise<ShareGetPermissionResponse_2>;
    /**
     * Sets properties for the specified share.
     * @param options The options parameters.
     */
    setProperties(options?: ShareSetPropertiesOptionalParams): Promise<ShareSetPropertiesResponse_2>;
    /**
     * Sets one or more user-defined name-value pairs for the specified share.
     * @param options The options parameters.
     */
    setMetadata(options?: ShareSetMetadataOptionalParams): Promise<ShareSetMetadataResponse_2>;
    /**
     * Returns information about stored access policies specified on the share.
     * @param options The options parameters.
     */
    getAccessPolicy(options?: ShareGetAccessPolicyOptionalParams): Promise<ShareGetAccessPolicyResponse_2>;
    /**
     * Sets a stored access policy for use with shared access signatures.
     * @param options The options parameters.
     */
    setAccessPolicy(options?: ShareSetAccessPolicyOptionalParams): Promise<ShareSetAccessPolicyResponse_2>;
    /**
     * Retrieves statistics related to the share.
     * @param options The options parameters.
     */
    getStatistics(options?: ShareGetStatisticsOptionalParams): Promise<ShareGetStatisticsResponse_2>;
    /**
     * Restores a previously deleted Share.
     * @param options The options parameters.
     */
    restore(options?: ShareRestoreOptionalParams): Promise<ShareRestoreResponse>;
}

/** Defines values for ShareAccessTier. */
export declare type ShareAccessTier = "TransactionOptimized" | "Hot" | "Cool" | "Premium";

/** Defines headers for Share_acquireLease operation. */
declare interface ShareAcquireLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** Uniquely identifies a share's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface ShareAcquireLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. */
    duration?: number;
    /** Proposed lease ID, in a GUID string format. The File service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats. */
    proposedLeaseId?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/** Contains response data for the acquireLease operation. */
declare type ShareAcquireLeaseResponse = ShareAcquireLeaseHeaders;

/** Defines headers for Share_breakLease operation. */
declare interface ShareBreakLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** Approximate time remaining in the lease period, in seconds. */
    leaseTimeInSeconds?: number;
    /** Uniquely identifies a share's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface ShareBreakLeaseOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately. */
    breakPeriod?: number;
}

/** Contains response data for the breakLease operation. */
declare type ShareBreakLeaseResponse = ShareBreakLeaseHeaders;

/** Defines headers for Share_changeLease operation. */
declare interface ShareChangeLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** Uniquely identifies a share's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface ShareChangeLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Proposed lease ID, in a GUID string format. The File service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats. */
    proposedLeaseId?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/** Contains response data for the changeLease operation. */
declare type ShareChangeLeaseResponse = ShareChangeLeaseHeaders;

/**
 * A ShareClient represents a URL to the Azure Storage share allowing you to manipulate its directories and files.
 */
export declare class ShareClient extends StorageClient {
    /**
     * Share operation context provided by protocol layer.
     */
    private context;
    private _name;
    private shareClientConfig?;
    /**
     * The name of the share
     */
    get name(): string;
    /**
     * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.
     *                                  [ Note - Account connection string can only be used in NODE.JS runtime. ]
     *                                  Account connection string example -
     *                                  `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`
     *                                  SAS connection string example -
     *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
     * @param name - Share name.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(connectionString: string, name: string, options?: ShareClientOptions);
    /**
     * Creates an instance of ShareClient.
     *
     * @param url - A URL string pointing to Azure Storage file share, such as
     *                     "https://myaccount.file.core.windows.net/share". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/share?sasString".
     * @param credential - Such as AnonymousCredential or StorageSharedKeyCredential.
     *                                  If not specified, AnonymousCredential is used.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(url: string, credential?: Credential_2 | TokenCredential, options?: ShareClientOptions);
    /**
     * Creates an instance of ShareClient.
     *
     * @param url - A URL string pointing to Azure Storage file share, such as
     *                     "https://myaccount.file.core.windows.net/share". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/share?sasString".
     * @param pipeline - Call newPipeline() to create a default
     *                            pipeline, or provide a customized pipeline.
     */
    constructor(url: string, pipeline: Pipeline, options?: ShareClientConfig);
    /**
     * Creates a new ShareClient object identical to the source but with the specified snapshot timestamp.
     * Provide "" will remove the snapshot and return a URL to the base share.
     *
     * @param snapshot - The snapshot timestamp.
     * @returns A new ShareClient object identical to the source but with the specified snapshot timestamp
     */
    withSnapshot(snapshot: string): ShareClient;
    /**
     * Creates a new share under the specified account. If the share with
     * the same name already exists, the operation fails.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-share
     *
     * @param options - Options to Share Create operation.
     * @returns Response data for the Share Create operation.
     */
    create(options?: ShareCreateOptions): Promise<ShareCreateResponse>;
    /**
     * Creates a new share under the specified account. If the share with
     * the same name already exists, it is not changed.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-share
     *
     * @param options -
     */
    createIfNotExists(options?: ShareCreateOptions): Promise<ShareCreateIfNotExistsResponse>;
    /**
     * Creates a {@link ShareDirectoryClient} object.
     *
     * @param directoryName - A directory name
     * @returns The ShareDirectoryClient object for the given directory name.
     */
    getDirectoryClient(directoryName: string): ShareDirectoryClient;
    /**
     * Gets the directory client for the root directory of this share.
     * Note that the root directory always exists and cannot be deleted.
     *
     * @readonly A new ShareDirectoryClient object for the root directory.
     */
    get rootDirectoryClient(): ShareDirectoryClient;
    /**
     * Creates a new subdirectory under this share.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-directory
     *
     * @param directoryName -
     * @param options - Options to Directory Create operation.
     * @returns Directory creation response data and the corresponding directory client.
     */
    createDirectory(directoryName: string, options?: DirectoryCreateOptions): Promise<{
        directoryClient: ShareDirectoryClient;
        directoryCreateResponse: DirectoryCreateResponse;
    }>;
    /**
     * Removes the specified empty sub directory under this share.
     * Note that the directory must be empty before it can be deleted.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-directory
     *
     * @param directoryName -
     * @param options - Options to Directory Delete operation.
     * @returns Directory deletion response data.
     */
    deleteDirectory(directoryName: string, options?: DirectoryDeleteOptions): Promise<DirectoryDeleteResponse>;
    /**
     * Creates a new file or replaces a file under the root directory of this share.
     * Note it only initializes the file with no content.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-file
     *
     * @param fileName -
     * @param size - Specifies the maximum size in bytes for the file, up to 4 TB.
     * @param options - Options to File Create operation.
     * @returns File creation response data and the corresponding file client.
     */
    createFile(fileName: string, size: number, options?: FileCreateOptions): Promise<{
        fileClient: ShareFileClient;
        fileCreateResponse: FileCreateResponse;
    }>;
    /**
     * Removes a file under the root directory of this share from the storage account.
     * When a file is successfully deleted, it is immediately removed from the storage
     * account's index and is no longer accessible to clients. The file's data is later
     * removed from the service during garbage collection.
     *
     * Delete File will fail with status code 409 (Conflict) and error code `SharingViolation`
     * if the file is open on an SMB client.
     *
     * Delete File is not supported on a share snapshot, which is a read-only copy of
     * a share. An attempt to perform this operation on a share snapshot will fail with 400
     * (`InvalidQueryParameterValue`)
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-file2
     *
     * @param directoryName -
     * @param fileName -
     * @param options - Options to File Delete operation.
     * @returns Promise<FileDeleteResponse> File Delete response data.
     */
    deleteFile(fileName: string, options?: FileDeleteOptions): Promise<FileDeleteResponse>;
    /**
     * Returns true if the Azrue share resource represented by this client exists; false otherwise.
     *
     * NOTE: use this function with care since an existing share might be deleted by other clients or
     * applications. Vice versa new shares might be added by other clients or applications after this
     * function completes.
     *
     * @param options - options to Exists operation.
     */
    exists(options?: ShareExistsOptions): Promise<boolean>;
    /**
     * Returns all user-defined metadata and system properties for the specified
     * share.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-share-properties
     *
     * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if
     * they originally contained uppercase characters. This differs from the metadata keys returned by
     * the `listShares` method of {@link ShareServiceClient} using the `includeMetadata` option, which
     * will retain their original casing.
     *
     * @returns Response data for the Share Get Properties operation.
     */
    getProperties(options?: ShareGetPropertiesOptions): Promise<ShareGetPropertiesResponse>;
    /**
     * Marks the specified share for deletion. The share and any directories or files
     * contained within it are later deleted during garbage collection.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-share
     *
     * @param options - Options to Share Delete operation.
     * @returns Response data for the Share Delete operation.
     */
    delete(options?: ShareDeleteMethodOptions): Promise<ShareDeleteResponse>;
    /**
     * Marks the specified share for deletion if it exists. The share and any directories or files
     * contained within it are later deleted during garbage collection.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-share
     *
     * @param options -
     */
    deleteIfExists(options?: ShareDeleteMethodOptions): Promise<ShareDeleteIfExistsResponse>;
    /**
     * Sets one or more user-defined name-value pairs for the specified share.
     *
     * If no option provided, or no metadata defined in the option parameter, the share
     * metadata will be removed.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-share-metadata
     *
     * @param metadata - If no metadata provided, all existing directory metadata will be removed.
     * @param option - Options to Share Set Metadata operation.
     * @returns Response data for the Share Set Metadata operation.
     */
    setMetadata(metadata?: Metadata, options?: ShareSetMetadataOptions): Promise<ShareSetMetadataResponse>;
    /**
     * Gets the permissions for the specified share. The permissions indicate
     * whether share data may be accessed publicly.
     *
     * WARNING: JavaScript Date will potential lost precision when parsing start and expiry string.
     * For example, new Date("2018-12-31T03:44:23.8827891Z").toISOString() will get "2018-12-31T03:44:23.882Z".
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-share-acl
     *
     * @param option - Options to Share Get Access Policy operation.
     * @returns Response data for the Share Get Access Policy operation.
     */
    getAccessPolicy(options?: ShareGetAccessPolicyOptions): Promise<ShareGetAccessPolicyResponse>;
    /**
     * Sets the permissions for the specified share. The permissions indicate
     * whether directories or files in a share may be accessed publicly.
     *
     * When you set permissions for a share, the existing permissions are replaced.
     * If no shareAcl provided, the existing share ACL will be
     * removed.
     *
     * When you establish a stored access policy on a share, it may take up to 30 seconds to take effect.
     * During this interval, a shared access signature that is associated with the stored access policy will
     * fail with status code 403 (Forbidden), until the access policy becomes active.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-share-acl
     *
     * @param shareAcl - Array of signed identifiers, each having a unique Id and details of access policy.
     * @param option - Options to Share Set Access Policy operation.
     * @returns Response data for the Share Set Access Policy operation.
     */
    setAccessPolicy(shareAcl?: SignedIdentifier[], options?: ShareSetAccessPolicyOptions): Promise<ShareSetAccessPolicyResponse>;
    /**
     * Creates a read-only snapshot of a share.
     *
     * @param options - Options to Share Create Snapshot operation.
     * @returns Response data for the Share Create Snapshot operation.
     */
    createSnapshot(options?: ShareCreateSnapshotOptions): Promise<ShareCreateSnapshotResponse>;
    /**
     * Sets quota for the specified share.
     *
     * @deprecated Use {@link ShareClient.setProperties} instead.
     *
     * @param quotaInGB - Specifies the maximum size of the share in gigabytes
     * @param option - Options to Share Set Quota operation.
     * @returns Response data for the Share Get Quota operation.
     */
    setQuota(quotaInGB: number, options?: ShareSetQuotaOptions): Promise<ShareSetQuotaResponse>;
    /**
     * Sets properties of the share.
     *
     * @param option - Options to Share Set Properties operation.
     * @returns Response data for the Share Set Properties operation.
     */
    setProperties(options?: ShareSetPropertiesOptions): Promise<ShareSetPropertiesResponse>;
    /**
     * Retrieves statistics related to the share.
     *
     * @param option - Options to Share Get Statistics operation.
     * @returns Response data for the Share Get Statistics operation.
     */
    getStatistics(options?: ShareGetStatisticsOptions): Promise<ShareGetStatisticsResponse>;
    /**
     * Creates a file permission (a security descriptor) at the share level.
     * The created security descriptor can be used for the files/directories in the share.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-permission
     *
     * @param options - Options to Share Create Permission operation.
     * @param filePermission - File permission described in the SDDL
     */
    createPermission(filePermission: string | SharePermission, options?: ShareCreatePermissionOptions): Promise<ShareCreatePermissionResponse>;
    /**
     * Gets the Security Descriptor Definition Language (SDDL) for a given file permission key
     * which indicates a security descriptor.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-permission
     *
     * @param options - Options to Share Create Permission operation.
     * @param filePermissionKey - File permission key which indicates the security descriptor of the permission.
     */
    getPermission(filePermissionKey: string, options?: ShareGetPermissionOptions): Promise<ShareGetPermissionResponse>;
    /**
     * Get a {@link ShareLeaseClient} that manages leases on the file.
     *
     * @param proposeLeaseId - Initial proposed lease Id.
     * @returns A new ShareLeaseClient object for managing leases on the file.
     */
    getShareLeaseClient(proposeLeaseId?: string): ShareLeaseClient;
    /**
     * Only available for ShareClient constructed with a shared key credential.
     *
     * Generates a Service Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
     *
     * @param options - Optional parameters.
     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateSasUrl(options: ShareGenerateSasUrlOptions): string;
    /**
     * Only available for ShareClient constructed with a shared key credential.
     *
     * Generates string to sign for a Service Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
     *
     * @param options - Optional parameters.
     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateSasStringToSign(options: ShareGenerateSasUrlOptions): string;
}

export declare interface ShareClientConfig {
    /**
     * The Files OAuth over REST feature requires special permissions to be included in the role definition to use
     * These special permissions will give privileged access to file share data -
     * It will allow users to bypass file/directory level ACL/NTFS permissions and get read/write access to file share data
     * Since this additional permission can be unintended and to prevent unintended and over privileged access,
     * additional checks has been implemented that requires users to explicitly indicate their intent to use these additional permissions.
     * This is done using the fileRequestIntent option.
     * Currently, the only value that the header supports is 'backup'
     * Any user who wishes to use Files OAuth over REST feature has to call the API with the intent header. If the API is not called with the intent header, any subsequent data operation requests will be denied.
     */
    fileRequestIntent?: ShareTokenIntent;
    /** If true, the trailing dot will not be trimmed from the target URI. */
    allowTrailingDot?: boolean;
    /** If true, the trailing dot will not be trimmed from the source URI. */
    allowSourceTrailingDot?: boolean;
}

export declare type ShareClientOptions = StoragePipelineOptions & ShareClientConfig;

/** Defines headers for Share_create operation. */
export declare interface ShareCreateHeaders {
    /** The ETag contains a value which represents the version of the share, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties or metadata updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Returns the current share quota in GB. */
    quota?: number;
    /** The provisioned IOPS of the share. */
    shareProvisionedIops?: number;
    /** The provisioned throughput of the share. */
    shareProvisionedBandwidthMibps?: number;
    /** Returns the calculated burst IOPS of the share. */
    shareIncludedBurstIops?: number;
    /** Returned the calculated maximum burst credits. */
    maxBurstCreditsForIops?: number;
    /** Error Code */
    errorCode?: string;
}

/**
 * Contains response data for the {@link ShareClient.createIfNotExists} operation.
 */
export declare interface ShareCreateIfNotExistsResponse extends ShareCreateResponse {
    /**
     * Indicate whether the share is successfully created. Is false when the share is not changed as it already exists.
     */
    succeeded: boolean;
}

/** Optional parameters. */
declare interface ShareCreateOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** Specifies the maximum size of the share, in gigabytes. */
    quota?: number;
    /** Specifies the access tier of the share. */
    accessTier?: ShareAccessTier;
    /** Protocols to enable on the share. */
    enabledProtocols?: string;
    /** Root squash to set on the share.  Only valid for NFS shares. */
    rootSquash?: ShareRootSquash;
    enableSnapshotVirtualDirectoryAccess?: boolean;
    /** Optional. Boolean. Default if not specified is false. This property enables paid bursting. */
    paidBurstingEnabled?: boolean;
    /** Optional. Integer. Default if not specified is the maximum throughput the file share can support. Current maximum for a file share is 10,340  MiB/sec. */
    paidBurstingMaxBandwidthMibps?: number;
    /** Optional. Integer. Default if not specified is the maximum IOPS the file share can support. Current maximum for a file share is 102,400 IOPS. */
    paidBurstingMaxIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned number of input/output operations per second (IOPS) of the share. If this is not specified, the provisioned IOPS is set to value calculated based on recommendation formula. */
    shareProvisionedIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned bandwidth of the share, in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. */
    shareProvisionedBandwidthMibps?: number;
}

/**
 * Options to configure the {@link ShareClient.create} operation.
 */
export declare interface ShareCreateOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * A name-value pair to associate with a file storage object.
     */
    metadata?: {
        [propertyName: string]: string;
    };
    /**
     * Specifies the maximum size of the share, in
     * gigabytes.
     */
    quota?: number;
    /**
     * Specifies the access tier of the share. Possible values include: 'TransactionOptimized',
     * 'Hot', 'Cool'
     */
    accessTier?: ShareAccessTier;
    /**
     * Supported in version 2020-02-10 and above. Specifies the enabled protocols on the share. If not specified, the default is SMB.
     */
    protocols?: ShareProtocols;
    /**
     * Root squash to set on the share.  Only valid for NFS shares. Possible values include:
     * 'NoRootSquash', 'RootSquash', 'AllSquash'.
     */
    rootSquash?: ShareRootSquash;
    /**
     * Specifies whether the snapshot virtual directory should be accessible at the root of share mount point when NFS is enabled.
     * If not specified, the default is true.
     */
    enableSnapshotVirtualDirectoryAccess?: boolean;
    /**
     * Optional. Boolean. Default if not specified is false. This property enables paid bursting.
     */
    paidBurstingEnabled?: boolean;
    /**
     * Optional. Integer. Default if not specified is the maximum throughput the file share can support. Current maximum for a file share is 10,340  MiB/sec.
     */
    paidBurstingMaxBandwidthMibps?: number;
    /**
     * Optional. Integer. Default if not specified is the maximum IOPS the file share can support. Current maximum for a file share is 102,400 IOPS.
     */
    paidBurstingMaxIops?: number;
    /**
     * Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares.
     * Specifies the provisioned number of input/output operations per second (IOPS) of the share. If this is not specified, the provisioned IOPS is set to value calculated based on recommendation formula.
     */
    shareProvisionedIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned bandwidth of the share, in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. */
    shareProvisionedBandwidthMibps?: number;
}

/** Defines headers for Share_createPermission operation. */
export declare interface ShareCreatePermissionHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Key of the permission set for the directory/file. */
    filePermissionKey?: string;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareCreatePermissionOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
}

/**
 * Options to configure the {@link ShareClient.createPermission} operation.
 */
export declare interface ShareCreatePermissionOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the createPermission operation. */
export declare type ShareCreatePermissionResponse = WithResponse<ShareCreatePermissionHeaders, ShareCreatePermissionHeaders>;

/** Contains response data for the createPermission operation. */
declare type ShareCreatePermissionResponse_2 = ShareCreatePermissionHeaders;

/** Contains response data for the create operation. */
export declare type ShareCreateResponse = WithResponse<ShareCreateHeaders, ShareCreateHeaders>;

/** Contains response data for the create operation. */
declare type ShareCreateResponse_2 = ShareCreateHeaders;

/** Defines headers for Share_createSnapshot operation. */
export declare interface ShareCreateSnapshotHeaders {
    /** This header is a DateTime value that uniquely identifies the share snapshot. The value of this header may be used in subsequent requests to access the share snapshot. This value is opaque. */
    snapshot?: string;
    /** The ETag contains a value which represents the version of the share snapshot, in quotes. A share snapshot cannot be modified, so the ETag of a given share snapshot never changes. However, if new metadata was supplied with the Snapshot Share request then the ETag of the share snapshot differs from that of the base share. If no metadata was specified with the request, the ETag of the share snapshot is identical to that of the base share at the time the share snapshot was taken. */
    etag?: string;
    /** Returns the date and time the share was last modified. A share snapshot cannot be modified, so the last modified time of a given share snapshot never changes. However, if new metadata was supplied with the Snapshot Share request then the last modified time of the share snapshot differs from that of the base share. If no metadata was specified with the request, the last modified time of the share snapshot is identical to that of the base share at the time the share snapshot was taken. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareCreateSnapshotOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
}

/**
 * Options to configure the {@link ShareClient.createSnapshot} operation.
 */
export declare interface ShareCreateSnapshotOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * A name-value pair to associate with a file storage object.
     */
    metadata?: {
        [propertyName: string]: string;
    };
}

/** Contains response data for the createSnapshot operation. */
export declare type ShareCreateSnapshotResponse = WithResponse<ShareCreateSnapshotHeaders, ShareCreateSnapshotHeaders>;

/** Contains response data for the createSnapshot operation. */
declare type ShareCreateSnapshotResponse_2 = ShareCreateSnapshotHeaders;

/** Defines headers for Share_delete operation. */
export declare interface ShareDeleteHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Returned only for provisioned v2 file shares. Returns an approximate used storage size of the share, in bytes. */
    usageBytes?: number;
    /** Returned only for provisioned v2 file shares. Returns an approximate used snapshot storage size of the share, in bytes. */
    snapshotUsageBytes?: number;
    /** Error Code */
    errorCode?: string;
}

/**
 * Contains response data for the {@link ShareClient.deleteIfExists} operation.
 */
export declare interface ShareDeleteIfExistsResponse extends ShareDeleteResponse {
    /**
     * Indicate whether the share is successfully deleted. Is false if the share does not exist in the first place.
     */
    succeeded: boolean;
}

/**
 * Options to configure the {@link ShareClient.delete} operation.
 */
export declare interface ShareDeleteMethodOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies the option
     * include to delete the base share and all of its snapshots. Possible values
     * include: 'include'
     */
    deleteSnapshots?: DeleteSnapshotsOptionType;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Optional parameters. */
declare interface ShareDeleteOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Specifies the option include to delete the base share and all of its snapshots. */
    deleteSnapshots?: DeleteSnapshotsOptionType;
}

/** Contains response data for the delete operation. */
export declare type ShareDeleteResponse = WithResponse<ShareDeleteHeaders, ShareDeleteHeaders>;

/** Contains response data for the delete operation. */
declare type ShareDeleteResponse_2 = ShareDeleteHeaders;

/**
 * A ShareDirectoryClient represents a URL to the Azure Storage directory allowing you to manipulate its files and directories.
 */
export declare class ShareDirectoryClient extends StorageClient {
    /**
     * context provided by protocol layer.
     */
    private context;
    private _shareName;
    private _path;
    private _name;
    private shareClientConfig?;
    /**
     * The share name corresponding to this directory client
     */
    get shareName(): string;
    /**
     * The full path of the directory
     */
    get path(): string;
    /**
     * The name of the directory
     */
    get name(): string;
    /**
     * Creates an instance of DirectoryClient.
     *
     * @param url - A URL string pointing to Azure Storage file directory, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory?sasString".
     *                     This method accepts an encoded URL or non-encoded URL pointing to a directory.
     *                     Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped.
     *                     However, if a directory name includes %, directory name must be encoded in the URL.
     *                     Such as a directory named "mydir%", the URL should be "https://myaccount.file.core.windows.net/myshare/mydir%25".
     * @param credential - Such as AnonymousCredential or StorageSharedKeyCredential.
     *                                  If not specified, AnonymousCredential is used.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(url: string, credential?: Credential_2 | TokenCredential, options?: ShareClientOptions);
    /**
     * Creates an instance of DirectoryClient.
     *
     * @param url - A URL string pointing to Azure Storage file directory, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory?sasString".
     *                     This method accepts an encoded URL or non-encoded URL pointing to a directory.
     *                     Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped.
     *                     However, if a directory name includes %, directory name must be encoded in the URL.
     *                     Such as a directory named "mydir%", the URL should be "https://myaccount.file.core.windows.net/myshare/mydir%25".
     * @param pipeline - Call newPipeline() to create a default
     *                            pipeline, or provide a customized pipeline.
     */
    constructor(url: string, pipeline: Pipeline, options?: ShareClientConfig);
    /**
     * Creates a new directory under the specified share or parent directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-directory
     *
     * @param options - Options to Directory Create operation.
     * @returns Response data for the Directory  operation.
     */
    create(options?: DirectoryCreateOptions): Promise<DirectoryCreateResponse>;
    /**
     * Creates a new directory under the specified share or parent directory if it does not already exists.
     * If the directory already exists, it is not modified.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-directory
     *
     * @param options -
     */
    createIfNotExists(options?: DirectoryCreateOptions): Promise<DirectoryCreateIfNotExistsResponse>;
    /**
     * Sets properties on the directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-directory-properties
     *
     * @param DirectoryProperties - Directory properties. If no values are provided,
     *                                            existing values will be preserved.
     */
    setProperties(properties?: DirectoryProperties): Promise<DirectorySetPropertiesResponse>;
    /**
     * Creates a ShareDirectoryClient object for a sub directory.
     *
     * @param subDirectoryName - A subdirectory name
     * @returns The ShareDirectoryClient object for the given subdirectory name.
     *
     * Example usage:
     *
     * ```js
     * const directoryClient = shareClient.getDirectoryClient("<directory name>");
     * await directoryClient.create();
     * console.log("Created directory successfully");
     * ```
     */
    getDirectoryClient(subDirectoryName: string): ShareDirectoryClient;
    /**
     * Creates a new subdirectory under this directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-directory
     *
     * @param directoryName -
     * @param options - Options to Directory Create operation.
     * @returns Directory create response data and the corresponding DirectoryClient instance.
     */
    createSubdirectory(directoryName: string, options?: DirectoryCreateOptions): Promise<{
        directoryClient: ShareDirectoryClient;
        directoryCreateResponse: DirectoryCreateResponse;
    }>;
    /**
     * Removes the specified empty sub directory under this directory.
     * Note that the directory must be empty before it can be deleted.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-directory
     *
     * @param directoryName -
     * @param options - Options to Directory Delete operation.
     * @returns Directory deletion response data.
     */
    deleteSubdirectory(directoryName: string, options?: DirectoryDeleteOptions): Promise<DirectoryDeleteResponse>;
    /**
     * Creates a new file or replaces a file under this directory. Note it only initializes the file with no content.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-file
     *
     * @param fileName -
     * @param size - Specifies the maximum size in bytes for the file, up to 4 TB.
     * @param options - Options to File Create operation.
     * @returns File creation response data and the corresponding file client.
     */
    createFile(fileName: string, size: number, options?: FileCreateOptions): Promise<{
        fileClient: ShareFileClient;
        fileCreateResponse: FileCreateResponse;
    }>;
    /**
     * Removes the specified file under this directory from the storage account.
     * When a file is successfully deleted, it is immediately removed from the storage
     * account's index and is no longer accessible to clients. The file's data is later
     * removed from the service during garbage collection.
     *
     * Delete File will fail with status code 409 (Conflict) and error code SharingViolation
     * if the file is open on an SMB client.
     *
     * Delete File is not supported on a share snapshot, which is a read-only copy of
     * a share. An attempt to perform this operation on a share snapshot will fail with 400 (InvalidQueryParameterValue)
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-file2
     *
     * @param fileName - Name of the file to delete
     * @param options - Options to File Delete operation.
     * @returns File deletion response data.
     */
    deleteFile(fileName: string, options?: FileDeleteOptions): Promise<FileDeleteResponse>;
    /**
     * Creates a {@link ShareFileClient} object.
     *
     * @param fileName - A file name.
     * @returns A new ShareFileClient object for the given file name.
     *
     * Example usage:
     *
     * ```js
     * const content = "Hello world!"
     *
     * const fileClient = directoryClient.getFileClient("<file name>");
     *
     * await fileClient.create(content.length);
     * console.log("Created file successfully!");
     *
     * await fileClient.uploadRange(content, 0, content.length);
     * console.log("Updated file successfully!")
     * ```
     */
    getFileClient(fileName: string): ShareFileClient;
    /**
     * Returns true if the specified directory exists; false otherwise.
     *
     * NOTE: use this function with care since an existing directory might be deleted by other clients or
     * applications. Vice versa new directories might be added by other clients or applications after this
     * function completes.
     *
     * @param options - options to Exists operation.
     */
    exists(options?: DirectoryExistsOptions): Promise<boolean>;
    /**
     * Returns all system properties for the specified directory, and can also be used to check the
     * existence of a directory. The data returned does not include the files in the directory or any
     * subdirectories.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-directory-properties
     *
     * @param options - Options to Directory Get Properties operation.
     * @returns Response data for the Directory Get Properties operation.
     */
    getProperties(options?: DirectoryGetPropertiesOptions): Promise<DirectoryGetPropertiesResponse>;
    /**
     * Removes the specified empty directory. Note that the directory must be empty before it can be
     * deleted.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-directory
     *
     * @param options - Options to Directory Delete operation.
     * @returns Response data for the Directory Delete operation.
     */
    delete(options?: DirectoryDeleteOptions): Promise<DirectoryDeleteResponse>;
    /**
     * Removes the specified empty directory if it exists. Note that the directory must be empty before it can be
     * deleted.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-directory
     *
     * @param options -
     */
    deleteIfExists(options?: DirectoryDeleteOptions): Promise<DirectoryDeleteIfExistsResponse>;
    /**
     * Updates user defined metadata for the specified directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-directory-metadata
     *
     * @param metadata - If no metadata provided, all existing directory metadata will be removed
     * @param options - Options to Directory Set Metadata operation.
     * @returns Response data for the Directory Set Metadata operation.
     */
    setMetadata(metadata?: Metadata, options?: DirectorySetMetadataOptions): Promise<DirectorySetMetadataResponse>;
    /**
     * Returns an AsyncIterableIterator for {@link DirectoryListFilesAndDirectoriesSegmentResponse} objects
     *
     * @param marker - A string value that identifies the portion of
     *                          the list of files and directories to be returned with the next listing operation. The
     *                          operation returns the ContinuationToken value within the response body if the
     *                          listing operation did not return all files and directories remaining to be listed
     *                          with the current page. The ContinuationToken value can be used as the value for
     *                          the marker parameter in a subsequent call to request the next page of list
     *                          items. The marker value is opaque to the client.
     * @param options - Options to list files and directories operation.
     */
    private iterateFilesAndDirectoriesSegments;
    /**
     * Returns an AsyncIterableIterator for file and directory items
     *
     * @param options - Options to list files and directories operation.
     */
    private listFilesAndDirectoriesItems;
    /**
     * Returns an async iterable iterator to list all the files and directories
     * under the specified account.
     *
     * .byPage() returns an async iterable iterator to list the files and directories in pages.
     *
     * Example using `for await` syntax:
     *
     * ```js
     * let i = 1;
     * for await (const entity of directoryClient.listFilesAndDirectories()) {
     *   if (entity.kind === "directory") {
     *     console.log(`${i++} - directory\t: ${entity.name}`);
     *   } else {
     *     console.log(`${i++} - file\t: ${entity.name}`);
     *   }
     * }
     * ```
     *
     * Example using `iter.next()`:
     *
     * ```js
     * let i = 1;
     * let iter = directoryClient.listFilesAndDirectories();
     * let entity = await iter.next();
     * while (!entity.done) {
     *   if (entity.value.kind === "directory") {
     *     console.log(`${i++} - directory\t: ${entity.value.name}`);
     *   } else {
     *     console.log(`${i++} - file\t: ${entity.value.name}`);
     *   }
     *   entity = await iter.next();
     * }
     * ```
     *
     * Example using `byPage()`:
     *
     * ```js
     * // passing optional maxPageSize in the page settings
     * let i = 1;
     * for await (const response of directoryClient
     *   .listFilesAndDirectories()
     *   .byPage({ maxPageSize: 20 })) {
     *   for (const fileItem of response.segment.fileItems) {
     *     console.log(`${i++} - file\t: ${fileItem.name}`);
     *   }
     *   for (const dirItem of response.segment.directoryItems) {
     *     console.log(`${i++} - directory\t: ${dirItem.name}`);
     *   }
     * }
     * ```
     *
     * Example using paging with a marker:
     *
     * ```js
     * let i = 1;
     * let iterator = directoryClient.listFilesAndDirectories().byPage({ maxPageSize: 3 });
     * let response = (await iterator.next()).value;
     *
     * // Prints 3 file and directory names
     * for (const fileItem of response.segment.fileItems) {
     *   console.log(`${i++} - file\t: ${fileItem.name}`);
     * }
     *
     * for (const dirItem of response.segment.directoryItems) {
     *   console.log(`${i++} - directory\t: ${dirItem.name}`);
     * }
     *
     * // Gets next marker
     * let dirMarker = response.continuationToken;
     *
     * // Passing next marker as continuationToken
     * iterator = directoryClient
     *   .listFilesAndDirectories()
     *   .byPage({ continuationToken: dirMarker, maxPageSize: 4 });
     * response = (await iterator.next()).value;
     *
     * // Prints 10 file and directory names
     * for (const fileItem of response.segment.fileItems) {
     *   console.log(`${i++} - file\t: ${fileItem.name}`);
     * }
     *
     * for (const dirItem of response.segment.directoryItems) {
     *   console.log(`${i++} - directory\t: ${dirItem.name}`);
     * }
     * ```
     *
     * @param options - Options to list files and directories operation.
     * @returns An asyncIterableIterator that supports paging.
     */
    listFilesAndDirectories(options?: DirectoryListFilesAndDirectoriesOptions): PagedAsyncIterableIterator<({
        kind: "file";
    } & FileItem) | ({
        kind: "directory";
    } & DirectoryItem), DirectoryListFilesAndDirectoriesSegmentResponse>;
    /**
     * Returns a list of files or directories under the specified share or directory. It lists the
     * contents only for a single level of the directory hierarchy.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/list-directories-and-files
     *
     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
     * @param options - Options to Directory List Files and Directories Segment operation.
     * @returns Response data for the Directory List Files and Directories operation.
     */
    private listFilesAndDirectoriesSegment;
    /**
     * Returns an AsyncIterableIterator for {@link DirectoryListHandlesResponse}
     *
     * @param marker - A string value that identifies the portion of the list to be
     *                          returned with the next list handles operation. The operation returns a
     *                          marker value within the response body if the list returned was not complete.
     *                          The marker value may then be used in a subsequent call to request the next
     *                          set of list items.
     * @param options - Options to list handles operation.
     */
    private iterateHandleSegments;
    /**
     * Returns an AsyncIterableIterator for handles
     *
     * @param options - Options to list handles operation.
     */
    private listHandleItems;
    /**
     * Returns an async iterable iterator to list all the handles.
     * under the specified account.
     *
     * .byPage() returns an async iterable iterator to list the handles in pages.
     *
     * Example using `for await` syntax:
     *
     * ```js
     * let i = 1;
     * let iter = dirClient.listHandles();
     * for await (const handle of iter) {
     *   console.log(`Handle ${i++}: ${handle.path}, opened time ${handle.openTime}, clientIp ${handle.clientIp}`);
     * }
     * ```
     *
     * Example using `iter.next()`:
     *
     * ```js
     * let i = 1;
     * let iter = dirClient.listHandles();
     * let handleItem = await iter.next();
     * while (!handleItem.done) {
     *   console.log(`Handle ${i++}: ${handleItem.value.path}, opened time ${handleItem.value.openTime}, clientIp ${handleItem.value.clientIp}`);
     *   handleItem = await iter.next();
     * }
     * ```
     *
     * Example using `byPage()`:
     *
     * ```js
     * // passing optional maxPageSize in the page settings
     * let i = 1;
     * for await (const response of dirClient.listHandles({ recursive: true }).byPage({ maxPageSize: 20 })) {
     *   if (response.handleList) {
     *     for (const handle of response.handleList) {
     *       console.log(`Handle ${i++}: ${handle.path}, opened time ${handle.openTime}, clientIp ${handle.clientIp}`);
     *     }
     *   }
     * }
     * ```
     *
     * Example using paging with a marker:
     *
     * ```js
     * let i = 1;
     * let iterator = dirClient.listHandles().byPage({ maxPageSize: 2 });
     * let response = await iterator.next();
     *
     * // Prints 2 handles
     * if (response.value.handleList) {
     *   for (const handle of response.value.handleList) {
     *     console.log(`Handle ${i++}: ${handle.path}, opened time ${handle.openTime}, clientIp ${handle.clientIp}`);
     *   }
     * }
     *
     * // Gets next marker
     * let marker = response.value.continuationToken;
     *
     * // Passing next marker as continuationToken
     * console.log(`    continuation`);
     * iterator = dirClient.listHandles().byPage({ continuationToken: marker, maxPageSize: 10 });
     * response = await iterator.next();
     *
     * // Prints 2 more handles assuming you have more than four directory/files opened
     * if (!response.done && response.value.handleList) {
     *   for (const handle of response.value.handleList) {
     *     console.log(`Handle ${i++}: ${handle.path}, opened time ${handle.openTime}, clientIp ${handle.clientIp}`);
     *   }
     * }
     * ```
     *
     * @param options - Options to list handles operation.
     *
     * An asyncIterableIterator that supports paging.
     */
    listHandles(options?: DirectoryListHandlesOptions): PagedAsyncIterableIterator<HandleItem, DirectoryListHandlesResponse>;
    /**
     * Lists handles for a directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/list-handles
     *
     * @param marker - Optional. A string value that identifies the portion of the list to be
     *                          returned with the next list handles operation. The operation returns a
     *                          marker value within the response body if the list returned was not complete.
     *                          The marker value may then be used in a subsequent call to request the next
     *                          set of list items.
     * @param options -
     */
    private listHandlesSegment;
    /**
     * Force close all handles for a directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param marker - Optional. A string value that identifies the position of handles that will
     *                          be closed with the next force close handles operation.
     *                          The operation returns a marker value within the response
     *                          body if there are more handles to close. The marker value
     *                          may then be used in a subsequent call to close the next set of handles.
     * @param options -
     */
    private forceCloseHandlesSegment;
    /**
     * Force close all handles for a directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param options -
     */
    forceCloseAllHandles(options?: DirectoryForceCloseHandlesSegmentOptions): Promise<CloseHandlesInfo>;
    /**
     * Force close a specific handle for a directory.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param aborter - Create a new Aborter instance with Aborter.none or Aborter.timeout(),
     *                          goto documents of Aborter for more examples about request cancellation
     * @param handleId - Specific handle ID, cannot be asterisk "*".
     *                          Use forceCloseHandlesSegment() to close all handles.
     * @param options -
     */
    forceCloseHandle(handleId: string, options?: DirectoryForceCloseHandlesOptions): Promise<DirectoryForceCloseHandlesResponse>;
    /**
     * Renames a directory.
     * This API only supports renaming a directory in the same share.
     *
     * @param destinationPath - Specifies the destination path to rename to. The path will be encoded to put into a URL to specify the destination.
     * @param options - Options for the renaming operation.
     * @returns Response data for the file renaming operation.
     *
     * Example usage:
     *
     * ```js
     *
     * // Rename the directory
     * await diretoryClient.rename(destinationPath);
     * console.log("Renamed directory successfully!");
     * ```
     */
    rename(destinationPath: string, options?: DirectoryRenameOptions): Promise<{
        destinationDirectoryClient: ShareDirectoryClient;
        directoryRenameResponse: DirectoryRenameResponse;
    }>;
}

/**
 * Options to configure the {@link ShareClient.exists} operation.
 */
export declare interface ShareExistsOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * A ShareFileClient represents a URL to an Azure Storage file.
 */
export declare class ShareFileClient extends StorageClient {
    /**
     * context provided by protocol layer.
     */
    private context;
    private _shareName;
    private _path;
    private _name;
    private shareClientConfig?;
    /**
     * The share name corresponding to this file client
     */
    get shareName(): string;
    /**
     * The full path of the file
     */
    get path(): string;
    /**
     * The name of the file
     */
    get name(): string;
    /**
     * Creates an instance of ShareFileClient.
     *
     * @param url - A URL string pointing to Azure Storage file, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory/file". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory/file?sasString".
     *                     This method accepts an encoded URL or non-encoded URL pointing to a file.
     *                     Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped.
     *                     However, if a file or directory name includes %, file or directory name must be encoded in the URL.
     *                     Such as a file named "myfile%", the URL should be "https://myaccount.file.core.windows.net/myshare/mydirectory/myfile%25".
     * @param credential - Such as , StorageSharedKeyCredential or TokenCredential,
     *                                  If not specified, AnonymousCredential is used.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(url: string, credential?: Credential_2 | TokenCredential, options?: ShareClientOptions);
    /**
     * Creates an instance of ShareFileClient.
     *
     * @param url - A URL string pointing to Azure Storage file, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory/file". You can
     *                     append a SAS if using AnonymousCredential, such as
     *                     "https://myaccount.file.core.windows.net/myshare/mydirectory/file?sasString".
     *                     This method accepts an encoded URL or non-encoded URL pointing to a file.
     *                     Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped.
     *                     However, if a file or directory name includes %, file or directory name must be encoded in the URL.
     *                     Such as a file named "myfile%", the URL should be "https://myaccount.file.core.windows.net/myshare/mydirectory/myfile%25".
     * @param pipeline - Call newPipeline() to create a default
     *                            pipeline, or provide a customized pipeline.
     */
    constructor(url: string, pipeline: Pipeline, options?: ShareClientConfig);
    /**
     * Creates a new ShareFileClient object identical to the source but with the specified share snapshot timestamp.
     * Provide "" will remove the snapshot and return a URL to the base ShareFileClient.
     *
     * @param shareSnapshot - The share snapshot timestamp.
     * @returns A new ShareFileClient object identical to the source but with the specified share snapshot timestamp.
     */
    withShareSnapshot(shareSnapshot: string): ShareFileClient;
    /**
     * Creates a new file or replaces a file. Note it only initializes the file with no content.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-file
     *
     * @param size - Specifies the maximum size in bytes for the file, up to 4 TB.
     * @param options - Options to File Create operation.
     * @returns Response data for the File Create  operation.
     *
     * Example usage:
     *
     * ```js
     * const content = "Hello world!";
     *
     * // Create the file
     * await fileClient.create(content.length);
     * console.log("Created file successfully!");
     *
     * // Then upload data to the file
     * await fileClient.uploadRange(content, 0, content.length);
     * console.log("Updated file successfully!")
     * ```
     */
    create(size: number, options?: FileCreateOptions): Promise<FileCreateResponse>;
    /**
     * Reads or downloads a file from the system, including its metadata and properties.
     *
     * * In Node.js, data returns in a Readable stream `readableStreamBody`
     * * In browsers, data returns in a promise `contentAsBlob`
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-file
     *
     * @param offset - From which position of the file to download, greater than or equal to 0
     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
     * @param options - Options to File Download operation.
     * @returns Response data for the File Download operation.
     *
     * Example usage (Node.js):
     *
     * ```js
     * // Download a file to a string
     * const downloadFileResponse = await fileClient.download();
     * console.log(
     *   "Downloaded file content:",
     *   (await streamToBuffer(downloadFileResponse.readableStreamBody)).toString()}
     * );
     *
     * // A helper method used to read a Node.js readable stream into string
     * async function streamToBuffer(readableStream) {
     *   return new Promise((resolve, reject) => {
     *     const chunks = [];
     *     readableStream.on("data", (data) => {
     *       chunks.push(typeof data === "string" ? Buffer.from(data) : data);
     *     });
     *     readableStream.on("end", () => {
     *       resolve(Buffer.concat(chunks));
     *     });
     *     readableStream.on("error", reject);
     *   });
     * }
     * ```
     *
     * Example usage (browsers):
     *
     * ```js
     * // Download a file to a string
     * const downloadFileResponse = await fileClient.download(0);
     * console.log(
     *   "Downloaded file content:",
     *   await blobToString(await downloadFileResponse.blobBody)}
     * );
     *
     * // A helper method used to convert a browser Blob into string.
     * export async function blobToString(blob: Blob): Promise<string> {
     *   const fileReader = new FileReader();
     *   return new Promise<string>((resolve, reject) => {
     *     fileReader.onloadend = (ev: any) => {
     *       resolve(ev.target!.result);
     *     };
     *     fileReader.onerror = reject;
     *     fileReader.readAsText(blob);
     *   });
     * }
     * ```
     */
    download(offset?: number, count?: number, options?: FileDownloadOptions): Promise<FileDownloadResponseModel>;
    /**
     * Returns true if the specified file exists; false otherwise.
     *
     * NOTE: use this function with care since an existing file might be deleted by other clients or
     * applications. Vice versa new files might be added by other clients or applications after this
     * function completes.
     *
     * @param options - options to Exists operation.
     */
    exists(options?: FileExistsOptions): Promise<boolean>;
    /**
     * Returns all user-defined metadata, standard HTTP properties, and system properties
     * for the file. It does not return the content of the file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-file-properties
     *
     * @param options - Options to File Get Properties operation.
     * @returns Response data for the File Get Properties operation.
     */
    getProperties(options?: FileGetPropertiesOptions): Promise<FileGetPropertiesResponse>;
    /**
     * Sets properties on the file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-file-properties
     *
     * @param properties - File properties. For file HTTP headers(e.g. Content-Type),
     *                                       if no values are provided, existing HTTP headers will be removed.
     *                                       For other file properties(e.g. fileAttributes), if no values are provided,
     *                                       existing values will be preserved.
     */
    setProperties(properties?: FileProperties): Promise<SetPropertiesResponse>;
    /**
     * Removes the file from the storage account.
     * When a file is successfully deleted, it is immediately removed from the storage
     * account's index and is no longer accessible to clients. The file's data is later
     * removed from the service during garbage collection.
     *
     * Delete File will fail with status code 409 (Conflict) and error code SharingViolation
     * if the file is open on an SMB client.
     *
     * Delete File is not supported on a share snapshot, which is a read-only copy of
     * a share. An attempt to perform this operation on a share snapshot will fail with 400 (InvalidQueryParameterValue)
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-file2
     *
     * @param options - Options to File Delete operation.
     * @returns Response data for the File Delete operation.
     */
    delete(options?: FileDeleteOptions): Promise<FileDeleteResponse>;
    /**
     * Removes the file from the storage account if it exists.
     * When a file is successfully deleted, it is immediately removed from the storage
     * account's index and is no longer accessible to clients. The file's data is later
     * removed from the service during garbage collection.
     *
     * Delete File will fail with status code 409 (Conflict) and error code SharingViolation
     * if the file is open on an SMB client.
     *
     * Delete File is not supported on a share snapshot, which is a read-only copy of
     * a share. An attempt to perform this operation on a share snapshot will fail with 400 (InvalidQueryParameterValue)
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-file2
     *
     * @param options -
     */
    deleteIfExists(options?: FileDeleteOptions): Promise<FileDeleteIfExistsResponse>;
    /**
     * Sets HTTP headers on the file.
     *
     * If no option provided, or no value provided for the file HTTP headers in the options,
     * these file HTTP headers without a value will be cleared.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-file-properties
     *
     * @param FileHttpHeaders - File HTTP headers like Content-Type.
     *                                             Provide undefined will remove existing HTTP headers.
     * @param options - Options to File Set HTTP Headers operation.
     * @returns Response data for the File Set HTTP Headers operation.
     */
    setHttpHeaders(fileHttpHeaders?: FileHttpHeaders, options?: FileSetHttpHeadersOptions): Promise<FileSetHTTPHeadersResponse>;
    /**
     * Resize file.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-file-properties
     *
     * @param length - Resizes a file to the specified size in bytes.
     *                        If the specified byte value is less than the current size of the file,
     *                        then all ranges above the specified byte value are cleared.
     * @param options - Options to File Resize operation.
     * @returns Response data for the File Set HTTP Headers operation.
     */
    resize(length: number, options?: FileResizeOptions): Promise<FileSetHTTPHeadersResponse>;
    /**
     * Updates user-defined metadata for the specified file.
     *
     * If no metadata defined in the option parameter, the file
     * metadata will be removed.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-file-metadata
     *
     * @param metadata - If no metadata provided, all existing directory metadata will be removed
     * @param options - Options to File Set Metadata operation.
     * @returns Response data for the File Set Metadata operation.
     */
    setMetadata(metadata?: Metadata, options?: FileSetMetadataOptions): Promise<FileSetMetadataResponse>;
    /**
     * Upload a range of bytes to a file. This operation can only be called on an existing file.
     * It won't change the size, properties or metadata of the file.
     * Both the start and count of the range must be specified. The range can be up to 4 MB in size.
     *
     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
     *                               which returns a new Readable stream whose offset is from data source beginning.
     * @param offset - Offset position of the destination Azure File to upload.
     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
     *                               string including non non-Base64/Hex-encoded characters.
     * @param options - Options to File Upload Range operation.
     * @returns Response data for the File Upload Range operation.
     *
     * Example usage:
     *
     * ```js
     * const content = "Hello world!";
     *
     * // Create the file
     * await fileClient.create(content.length);
     * console.log("Created file successfully!");
     *
     * // Then upload data to the file
     * await fileClient.uploadRange(content, 0, content.length);
     * console.log("Updated file successfully!")
     * ```
     */
    uploadRange(body: HttpRequestBody, offset: number, contentLength: number, options?: FileUploadRangeOptions): Promise<FileUploadRangeResponse>;
    /**
     * Upload a range of bytes to a file where the contents are read from a another file's URL.
     * The range can be up to 4 MB in size.
     *
     * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication.
     * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source file.
     * @param destOffset - Offset of destination file.
     * @param count - Number of bytes to be uploaded from source file.
     * @param options - Options to configure File - Upload Range from URL operation.
     */
    uploadRangeFromURL(sourceURL: string, sourceOffset: number, destOffset: number, count: number, options?: FileUploadRangeFromURLOptions): Promise<FileUploadRangeFromURLResponse>;
    /**
     * Clears the specified range and
     * releases the space used in storage for that range.
     *
     * @param offset -
     * @param contentLength -
     * @param options - Options to File Clear Range operation.
     */
    clearRange(offset: number, contentLength: number, options?: FileClearRangeOptions): Promise<FileUploadRangeResponse>;
    /**
     * Returns the list of valid ranges for a file.
     *
     * @param options - Options to File Get range List operation.
     */
    getRangeList(options?: FileGetRangeListOptions): Promise<FileGetRangeListResponse>;
    /**
     * Returns the list of ranges that differ between a previous share snapshot and this file.
     *
     * @param prevShareSnapshot - The previous snapshot parameter is an opaque DateTime value that specifies the previous share snapshot to compare with.
     * @param options -
     */
    getRangeListDiff(prevShareSnapshot: string, options?: FileGetRangeListOptions): Promise<FileGetRangeListDiffResponse>;
    /**
     * Copies a blob or file to a destination file within the storage account.
     *
     * @param copySource - Specifies the URL of the source file or blob, up to 2 KB in length.
     * To copy a file to another file within the same storage account, you may use Shared Key to
     * authenticate the source file. If you are copying a file from another storage account, or if you
     * are copying a blob from the same storage account or another storage account, then you must
     * authenticate the source file or blob using a shared access signature. If the source is a public
     * blob, no authentication is required to perform the copy operation. A file in a share snapshot
     * can also be specified as a copy source.
     * @param options - Options to File Start Copy operation.
     */
    startCopyFromURL(copySource: string, options?: FileStartCopyOptions): Promise<FileStartCopyResponse>;
    /**
     * Aborts a pending Copy File operation, and leaves a destination file with zero length and full
     * metadata.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/abort-copy-file
     *
     * @param copyId - Id of the Copy File operation to abort.
     * @param options - Options to File Abort Copy From URL operation.
     */
    abortCopyFromURL(copyId: string, options?: FileAbortCopyFromURLOptions): Promise<FileAbortCopyResponse>;
    /**
     * Creates a new Azure File or replaces an existing Azure File, and then uploads a Buffer(Node)/Blob/ArrayBuffer/ArrayBufferView to it.
     *
     * @param data - Buffer(Node), Blob, ArrayBuffer or ArrayBufferView
     * @param options -
     */
    uploadData(data: Buffer | Blob | ArrayBuffer | ArrayBufferView, options?: FileParallelUploadOptions): Promise<void>;
    /**
     * ONLY AVAILABLE IN BROWSERS.
     *
     * Uploads a browser Blob object to an Azure file. Requires a blobFactory as the data source,
     * which need to return a Blob object with the offset and size provided.
     *
     * @param blobFactory -
     * @param size -
     * @param options -
     */
    uploadSeekableBlob(blobFactory: (offset: number, size: number) => Blob, size: number, options?: FileParallelUploadOptions): Promise<void>;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME.
     *
     * Creates a new Azure File or replaces an existing Azure File, and then uploads a local file to it.
     *
     * @param filePath - Full path of local file
     * @param fileClient - ShareFileClient
     * @param options -
     */
    uploadFile(filePath: string, options?: FileParallelUploadOptions): Promise<void>;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME.
     *
     * Accepts a Node.js Readable stream factory, and uploads in blocks to an Azure File.
     * The Readable stream factory must returns a Node.js Readable stream starting from the offset defined. The offset
     * is the offset in the Azure file to be uploaded.
     *
     * @param streamFactory - Returns a Node.js Readable stream starting
     *                                                                  from the offset defined
     * @param size - Size of the Azure file
     * @param fileClient - ShareFileClient
     * @param options -
     */
    uploadResetableStream(streamFactory: (offset: number, count?: number) => NodeJS.ReadableStream, size: number, options?: FileParallelUploadOptions): Promise<void>;
    /**
     *
     * @param bodyFactory -
     * @param size - Size of the Azure file
     * @param fileClient - ShareFileClient
     * @param options -
     */
    private uploadSeekableInternal;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME.
     *
     * Downloads an Azure file in parallel to a buffer.
     * Offset and count are optional, pass 0 for both to download the entire file.
     *
     * Warning: Buffers can only support files up to about one gigabyte on 32-bit systems or about two
     * gigabytes on 64-bit systems due to limitations of Node.js/V8. For files larger than this size,
     * consider {@link downloadToFile}.
     *
     * @param buffer - Buffer to be fill, must have length larger than count
     * @param offset - From which position of the Azure File to download
     * @param count - How much data to be downloaded. Will download to the end when passing undefined
     * @param options -
     */
    downloadToBuffer(buffer: Buffer, offset?: number, count?: number, options?: FileDownloadToBufferOptions): Promise<Buffer>;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME
     *
     * Downloads an Azure file in parallel to a buffer.
     * Offset and count are optional, pass 0 for both to download the entire file
     *
     * Warning: Buffers can only support files up to about one gigabyte on 32-bit systems or about two
     * gigabytes on 64-bit systems due to limitations of Node.js/V8. For files larger than this size,
     * consider {@link downloadToFile}.
     *
     * @param offset - From which position of the Azure file to download
     * @param count - How much data to be downloaded. Will download to the end when passing undefined
     * @param options -
     */
    downloadToBuffer(offset?: number, count?: number, options?: FileDownloadToBufferOptions): Promise<Buffer>;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME.
     *
     * Creates a new Azure File or replaces an existing Azure File, and then uploads a Node.js Readable stream into it.
     * This method will try to create an Azure File, then starts uploading chunk by chunk.
     * Size of chunk is defined by `bufferSize` parameter.
     * Please make sure potential size of stream doesn't exceed file size.
     *
     * PERFORMANCE IMPROVEMENT TIPS:
     * * Input stream highWaterMark is better to set a same value with bufferSize
     *   parameter, which will avoid Buffer.concat() operations.
     *
     * @param stream - Node.js Readable stream. Must be less or equal than file size.
     * @param size - Size of file to be created. Maximum size allowed is 4 TB.
     *                      If this value is larger than stream size, there will be empty bytes in file tail.
     * @param bufferSize - Size of every buffer allocated in bytes, also the chunk/range size during
     *                            the uploaded file. Size must be greater than 0 and lesser than or equal to 4 * 1024 * 1024 (4MB)
     * @param maxBuffers - Max buffers will allocate during uploading, positive correlation
     *                            with max uploading concurrency
     * @param options -
     */
    uploadStream(stream: Readable, size: number, bufferSize: number, maxBuffers: number, options?: FileUploadStreamOptions): Promise<void>;
    /**
     * ONLY AVAILABLE IN NODE.JS RUNTIME.
     *
     * Downloads an Azure Blob to a local file.
     * Fails if the the given file path already exits.
     * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.
     *
     * @param filePath -
     * @param offset - From which position of the block blob to download.
     * @param count - How much data to be downloaded. Will download to the end when passing undefined.
     * @param options - Options to Blob download options.
     * @returns The response data for blob download operation,
     *                                                 but with readableStreamBody set to undefined since its
     *                                                 content is already read and written into a local file
     *                                                 at the specified path.
     */
    downloadToFile(filePath: string, offset?: number, count?: number, options?: FileDownloadOptions): Promise<FileDownloadResponseModel>;
    /**
     * Lists handles for a file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/list-handles
     *
     * @param marker - Optional. A string value that identifies the portion of the list to be
     *                          returned with the next list handles operation. The operation returns a
     *                          marker value within the response body if the list returned was not complete.
     *                          The marker value may then be used in a subsequent call to request the next
     *                          set of list items.
     * @param options -
     */
    private listHandlesSegment;
    /**
     * Returns an AsyncIterableIterator for FileListHandlesResponse
     *
     * @param marker - A string value that identifies the portion of the list to be
     *                          returned with the next list handles operation. The operation returns a
     *                          marker value within the response body if the list returned was not complete.
     *                          The marker value may then be used in a subsequent call to request the next
     *                          set of list items.
     * @param options - Options to list handles operation.
     */
    private iterateHandleSegments;
    /**
     * Returns an AsyncIterableIterator for handles
     *
     * @param options - Options to list handles operation.
     */
    private listHandleItems;
    /**
     * Returns an async iterable iterator to list all the handles.
     * under the specified account.
     *
     * .byPage() returns an async iterable iterator to list the handles in pages.
     *
     * @param options - Options to list handles operation.
     *
     * An asyncIterableIterator that supports paging.
     */
    listHandles(options?: FileListHandlesOptions): PagedAsyncIterableIterator<HandleItem, FileListHandlesResponse>;
    /**
     * Force close all handles for a file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param marker - Optional. A string value that identifies the position of handles that will
     *                          be closed with the next force close handles operation.
     *                          The operation returns a marker value within the response
     *                          body if there are more handles to close. The marker value
     *                          may then be used in a subsequent call to close the next set of handles.
     * @param options - Options to force close handles operation.
     */
    private forceCloseHandlesSegment;
    /**
     * Force close all handles for a file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param options - Options to force close handles operation.
     */
    forceCloseAllHandles(options?: FileForceCloseHandlesOptions): Promise<CloseHandlesInfo>;
    /**
     * Force close a specific handle for a file.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/force-close-handles
     *
     * @param handleId - Specific handle ID, cannot be asterisk "*".
     *                          Use forceCloseAllHandles() to close all handles.
     * @param FileForceCloseHandlesOptions - Options to force close handles operation.
     */
    forceCloseHandle(handleId: string, options?: FileForceCloseHandlesOptions): Promise<FileForceCloseHandlesResponse>;
    /**
     * NFS only.  Creates a hard link to the file file specified by path.
     * @param targetFile - Path of the file to create the hard link to, not including the share.
     *  For example: "targetDirectory/targetSubDirectory/.../targetFile"
     * @param options - Options to create hard link operation.
     */
    createHardLink(targetFile: string, options?: FileCreateHardLinkOptions): Promise<FileCreateHardLinkResponse>;
    /**
     * Get a {@link ShareLeaseClient} that manages leases on the file.
     *
     * @param proposeLeaseId - Initial proposed lease Id.
     * @returns A new ShareLeaseClient object for managing leases on the file.
     */
    getShareLeaseClient(proposeLeaseId?: string): ShareLeaseClient;
    /**
     * Only available for clients constructed with a shared key credential.
     *
     * Generates a Service Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
     *
     * @param options - Optional parameters.
     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateSasUrl(options: FileGenerateSasUrlOptions): string;
    /**
     * Only available for clients constructed with a shared key credential.
     *
     * Generates string to sign for a Service Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
     *
     * @param options - Optional parameters.
     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateSasStringToSign(options: FileGenerateSasUrlOptions): string;
    /**
     * Renames a file.
     * This API only supports renaming a file in the same share.
     *
     * @param destinationPath - Specifies the destination path to rename to. The path will be encoded to put into a URL to specify the destination.
     * @param options - Options for the renaming operation.
     * @returns Response data for the file renaming operation.
     *
     * Example usage:
     *
     * ```js
     *
     * // Rename the file
     * await fileClient.rename(destinationPath);
     * console.log("Renamed file successfully!");
     * ```
     */
    rename(destinationPath: string, options?: FileRenameOptions): Promise<{
        destinationFileClient: ShareFileClient;
        fileRenameResponse: FileRenameResponse;
    }>;
}

/** Defines values for AccessRight. */
export declare type ShareFileHandleAccessRights = "Read" | "Write" | "Delete";

/** The list of file ranges */
export declare interface ShareFileRangeList {
    ranges?: RangeModel[];
    clearRanges?: ClearRange[];
}

/**
 * Options to configure {@link ShareClient.generateSasUrl} operation.
 */
export declare interface ShareGenerateSasUrlOptions extends CommonGenerateSasUrlOptions {
    /**
     * Optional only when identifier is provided. Specifies the list of permissions to be associated with the SAS.
     */
    permissions?: ShareSASPermissions;
}

/** Defines headers for Share_getAccessPolicy operation. */
export declare interface ShareGetAccessPolicyHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareGetAccessPolicyOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
}

/**
 * Options to configure the {@link ShareClient.getAccessPolicy} operation.
 */
export declare interface ShareGetAccessPolicyOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

export declare type ShareGetAccessPolicyResponse = WithResponse<{
    signedIdentifiers: SignedIdentifier[];
} & ShareGetAccessPolicyHeaders, ShareGetAccessPolicyHeaders, SignedIdentifierModel[]>;

/** Contains response data for the getAccessPolicy operation. */
declare type ShareGetAccessPolicyResponse_2 = ShareGetAccessPolicyHeaders & SignedIdentifierModel[];

/** Defines headers for Share_getPermission operation. */
export declare interface ShareGetPermissionHeaders {
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareGetPermissionOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned. Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format. If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission */
    filePermissionFormat?: FilePermissionFormat;
}

/**
 * Options to configure the {@link ShareClient.getPermission} operation.
 */
export declare interface ShareGetPermissionOptions extends CommonOptions {
    /**
     * Optional. Available for version 2023-06-01 and later. Specifies the format in which the permission is returned.
     * Acceptable values are SDDL or binary. If x-ms-file-permission-format is unspecified or explicitly set to SDDL, the permission is returned in SDDL format.
     * If x-ms-file-permission-format is explicitly set to binary, the permission is returned as a base64 string representing the binary encoding of the permission
     */
    filePermissionFormat?: FilePermissionFormat;
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
}

/** Contains response data for the getPermission operation. */
export declare type ShareGetPermissionResponse = WithResponse<ShareGetPermissionHeaders & SharePermission, ShareGetPermissionHeaders, SharePermission>;

/** Contains response data for the getPermission operation. */
declare type ShareGetPermissionResponse_2 = ShareGetPermissionHeaders & SharePermission;

/** Defines headers for Share_getProperties operation. */
export declare interface ShareGetPropertiesHeaders {
    /** A set of name-value pairs that contain the user-defined metadata of the share. */
    metadata?: {
        [propertyName: string]: string;
    };
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Returns the current share quota in GB. */
    quota?: number;
    /** Returns the current share provisioned ipos. */
    provisionedIops?: number;
    /** Returns the current share provisioned ingress in megabytes per second. */
    provisionedIngressMBps?: number;
    /** Returns the current share provisioned egress in megabytes per second. */
    provisionedEgressMBps?: number;
    /** Returns the current share next allowed quota downgrade time. */
    nextAllowedQuotaDowngradeTime?: Date;
    /** Returns the current share provisioned bandwidth in mebibytes per second. */
    provisionedBandwidthMibps?: number;
    /** When a share is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    /** Lease state of the share. */
    leaseState?: LeaseStateType;
    /** The current lease status of the share. */
    leaseStatus?: LeaseStatusType;
    /** Returns the access tier set on the share. */
    accessTier?: string;
    /** Returns the last modified time (in UTC) of the access tier of the share. */
    accessTierChangeTime?: Date;
    /** Returns the transition state between access tiers, when present. */
    accessTierTransitionState?: string;
    /** The protocols that have been enabled on the share. */
    enabledProtocols?: string;
    /** Valid for NFS shares only. */
    rootSquash?: ShareRootSquash;
    /** Version 2023-08-03 and newer. Specifies whether the snapshot virtual directory should be accessible at the root of share mount point when NFS is enabled. This header is only returned for shares, not for snapshots. */
    enableSnapshotVirtualDirectoryAccess?: boolean;
    /** Optional. Boolean. Default if not specified is false. This property enables paid bursting. */
    paidBurstingEnabled?: boolean;
    /** Optional. Integer. Default if not specified is the maximum IOPS the file share can support. Current maximum for a file share is 102,400 IOPS. */
    paidBurstingMaxIops?: number;
    /** Optional. Integer. Default if not specified is the maximum throughput the file share can support. Current maximum for a file share is 10,340 MiB/sec. */
    paidBurstingMaxBandwidthMibps?: number;
    /** Return the calculated burst IOPS of the share. */
    includedBurstIops?: number;
    /** Returned the calculated maximum burst credits. This is not the current burst credit level, but the maximum burst credits the share can have. */
    maxBurstCreditsForIops?: number;
    /** Returns the current share next allowed provisioned iops downgrade time. */
    nextAllowedProvisionedIopsDowngradeTime?: Date;
    /** Returns the current share next allowed provisioned bandwidth downgrade time. */
    nextAllowedProvisionedBandwidthDowngradeTime?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareGetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
}

/**
 * Options to configure the {@link ShareClient.getProperties} operation.
 */
export declare interface ShareGetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * Contains response data for the {@link ShareClient.getProperties} operation.
 */
export declare type ShareGetPropertiesResponse = ShareGetPropertiesResponseModel & {
    /**
     * The protocols that have been enabled on the share.
     */
    protocols?: ShareProtocols;
};

/** Contains response data for the getProperties operation. */
declare type ShareGetPropertiesResponse_2 = ShareGetPropertiesHeaders;

/** Contains response data for the getProperties operation. */
export declare type ShareGetPropertiesResponseModel = WithResponse<ShareGetPropertiesHeaders, ShareGetPropertiesHeaders>;

/** Defines headers for Share_getStatistics operation. */
export declare interface ShareGetStatisticsHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareGetStatisticsOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
}

/**
 * Options to configure the {@link ShareClient.getStatistics} operation.
 */
export declare interface ShareGetStatisticsOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * Response data for the {@link ShareClient.getStatistics} Operation.
 */
export declare type ShareGetStatisticsResponse = ShareGetStatisticsResponseModel & {
    /**
     * @deprecated shareUsage is going to be deprecated. Please use ShareUsageBytes instead.
     *
     * The approximate size of the data stored on the share, rounded up to the nearest gigabyte. Note
     * that this value may not include all recently created or recently resized files.
     */
    shareUsage: number;
};

/** Contains response data for the getStatistics operation. */
declare type ShareGetStatisticsResponse_2 = ShareGetStatisticsHeaders & ShareStats;

/** Contains response data for the getStatistics operation. */
export declare type ShareGetStatisticsResponseModel = WithResponse<ShareGetStatisticsHeaders & ShareStats, ShareGetStatisticsHeaders, ShareStats>;

/**
 * A listed Azure Storage share item.
 */
export declare interface ShareItem {
    name: string;
    snapshot?: string;
    deleted?: boolean;
    version?: string;
    properties: ShareProperties;
    metadata?: {
        [propertyName: string]: string;
    };
}

/** A listed Azure Storage share item. */
export declare interface ShareItemInternal {
    name: string;
    snapshot?: string;
    deleted?: boolean;
    version?: string;
    /** Properties of a share. */
    properties: SharePropertiesInternal;
    /** Dictionary of <string> */
    metadata?: {
        [propertyName: string]: string;
    };
}

/**
 * A client that manages leases for a {@link ShareFileClient} or {@link ShareClient}.
 * @see https://learn.microsoft.com/rest/api/storageservices/lease-file
 * and
 * @see https://learn.microsoft.com/rest/api/storageservices/lease-share
 */
export declare class ShareLeaseClient {
    private _leaseId;
    private _url;
    private fileOrShare;
    private shareClientConfig?;
    /**
     * Gets the lease Id.
     *
     * @readonly
     */
    get leaseId(): string;
    /**
     * Gets the url.
     *
     * @readonly
     */
    get url(): string;
    /**
     * Creates an instance of ShareLeaseClient.
     * @param client - The client to make the lease operation requests.
     * @param leaseId - Initial proposed lease id.
     */
    constructor(client: ShareFileClient | ShareClient, leaseId?: string);
    /**
     * Establishes and manages a lock on a file, share or share snapshot for write and delete operations.
     *
     * @param duration - Specifies the duration of lease in seconds. For file, the only allowed value is -1 for a lease that never expires. For share, must be -1 or between 15 to 60.
     * @param options - Options for the lease management operation.
     * @returns Response data for acquire lease operation.
     */
    acquireLease(duration?: number, options?: LeaseOperationOptions): Promise<LeaseOperationResponse>;
    /**
     * To change the ID of an existing lease.
     *
     * @param proposedLeaseId - the proposed new lease Id.
     * @param options - Options for the lease management operation.
     * @returns Response data for change lease operation.
     */
    changeLease(proposedLeaseId: string, options?: LeaseOperationOptions): Promise<LeaseOperationResponse>;
    /**
     * To free the lease if it is no longer needed so that another client may
     * immediately acquire a lease.
     *
     * @param options - Options for the lease management operation.
     * @returns Response data for release lease operation.
     */
    releaseLease(options?: LeaseOperationOptions): Promise<LeaseOperationResponse>;
    /**
     * To force end the lease.
     *
     * @param options - Options for the lease management operation.
     * @returns Response data for break lease operation.
     */
    breakLease(options?: LeaseOperationOptions): Promise<LeaseOperationResponse>;
    /**
     * To renew the lease. Only available for lease on share or share snapshot.
     * Note that the lease may be renewed even if it has expired as long as the share has not been leased again since the expiration of that lease.
     * When you renew a lease, the lease duration clock resets.
     *
     * @param options - Options for the lease management operation.
     * @returns Response data for renew lease operation.
     */
    renewLease(options?: LeaseOperationOptions): Promise<LeaseOperationResponse>;
}

/** A permission (a security descriptor) at the share level. */
export declare interface SharePermission {
    /** The permission in the Security Descriptor Definition Language (SDDL). */
    permission: string;
    format?: FilePermissionFormat;
}

/**
 * Properties of a share.
 */
export declare type ShareProperties = SharePropertiesInternal & {
    /**
     * The protocols that have been enabled on the share.
     */
    protocols?: ShareProtocols;
};

/** Properties of a share. */
export declare interface SharePropertiesInternal {
    lastModified: Date;
    etag: string;
    quota: number;
    provisionedIops?: number;
    provisionedIngressMBps?: number;
    provisionedEgressMBps?: number;
    provisionedBandwidthMiBps?: number;
    nextAllowedQuotaDowngradeTime?: Date;
    deletedTime?: Date;
    remainingRetentionDays?: number;
    accessTier?: string;
    accessTierChangeTime?: Date;
    accessTierTransitionState?: string;
    /** The current lease status of the share. */
    leaseStatus?: LeaseStatusType;
    /** Lease state of the share. */
    leaseState?: LeaseStateType;
    /** When a share is leased, specifies whether the lease is of infinite or fixed duration. */
    leaseDuration?: LeaseDurationType;
    enabledProtocols?: string;
    rootSquash?: ShareRootSquash;
    enableSnapshotVirtualDirectoryAccess?: boolean;
    paidBurstingEnabled?: boolean;
    paidBurstingMaxIops?: number;
    paidBurstingMaxBandwidthMibps?: number;
    includedBurstIops?: number;
    maxBurstCreditsForIops?: number;
    nextAllowedProvisionedIopsDowngradeTime?: Date;
    nextAllowedProvisionedBandwidthDowngradeTime?: Date;
}

/**
 * Protocols to enable on the share. For now, only support SMB or NFS.
 */
export declare interface ShareProtocols {
    /**
     * The share can be accessed by SMBv3.0, SMBv2.1 and REST.
     */
    smbEnabled?: boolean;
    /**
     * The share can be accessed by NFSv4.1.
     */
    nfsEnabled?: boolean;
}

/** Protocol settings */
export declare interface ShareProtocolSettings {
    /** Settings for SMB protocol. */
    smb?: ShareSmbSettings;
}

/** Defines headers for Share_releaseLease operation. */
declare interface ShareReleaseLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** UTC date/time value generated by the service that indicates the time at which the response was initiated */
    date?: Date;
}

/** Optional parameters. */
declare interface ShareReleaseLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/** Contains response data for the releaseLease operation. */
declare type ShareReleaseLeaseResponse = ShareReleaseLeaseHeaders;

/** Defines headers for Share_renewLease operation. */
declare interface ShareRenewLeaseHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** Uniquely identifies a share's lease */
    leaseId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** Returns the current share next allowed quota downgrade time. */
    date?: Date;
}

/** Optional parameters. */
declare interface ShareRenewLeaseOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The snapshot parameter is an opaque DateTime value that, when present, specifies the share snapshot to query. */
    shareSnapshot?: string;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
}

/** Contains response data for the renewLease operation. */
declare type ShareRenewLeaseResponse = ShareRenewLeaseHeaders;

/** Defines headers for Share_restore operation. */
declare interface ShareRestoreHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** If a client request id header is sent in the request, this header will be present in the response with the same value. */
    clientRequestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Returns the current share quota in GB. */
    quota?: number;
    /** Returns the current share provisioned ipos. */
    provisionedIops?: number;
    /** Returns the current share provisioned bandwidth in mebibytes per second. */
    provisionedBandwidthMibps?: number;
    /** Return the calculated burst IOPS of the share. */
    includedBurstIops?: number;
    /** Returned the calculated maximum burst credits. This is not the current burst credit level, but the maximum burst credits the share can have. */
    maxBurstCreditsForIops?: number;
}

/** Optional parameters. */
declare interface ShareRestoreOptionalParams extends coreClient.OperationOptions {
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. */
    requestId?: string;
    /** Specifies the name of the previously-deleted share. */
    deletedShareName?: string;
    /** Specifies the version of the previously-deleted share. */
    deletedShareVersion?: string;
}

/** Contains response data for the restore operation. */
declare type ShareRestoreResponse = ShareRestoreHeaders;

/** Defines values for ShareRootSquash. */
export declare type ShareRootSquash = "NoRootSquash" | "RootSquash" | "AllSquash";

/**
 * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a share.
 * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
 * Once all the values are set, this should be serialized with toString and set as the permissions field on a
 * {@link FileSASSignatureValues} object. It is possible to construct the permissions string without this class, but
 * the order of the permissions is particular and this class guarantees correctness.
 */
export declare class ShareSASPermissions {
    /**
     * Creates an {@link ShareSASPermissions} from the specified permissions string. This method will throw an
     * Error if it encounters a character that does not correspond to a valid permission.
     *
     * @param permissions -
     */
    static parse(permissions: string): ShareSASPermissions;
    /**
     * Specifies Read access granted.
     */
    read: boolean;
    /**
     * Specifies Create access granted.
     */
    create: boolean;
    /**
     * Specifies Write access granted.
     */
    write: boolean;
    /**
     * Specifies Delete access granted.
     */
    delete: boolean;
    /**
     * Specifies List access granted.
     */
    list: boolean;
    /**
     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
     * order accepted by the service.
     *
     * The order of the characters should be as specified here to ensure correctness.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
     *
     */
    toString(): string;
}

/**
 * A ShareServiceClient represents a URL to the Azure Storage File service allowing you
 * to manipulate file shares.
 */
export declare class ShareServiceClient extends StorageClient {
    /**
     * serviceContext provided by protocol layer.
     */
    private serviceContext;
    private shareClientConfig?;
    /**
     *
     * Creates an instance of ShareServiceClient from connection string.
     *
     * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.
     *                                  [ Note - Account connection string can only be used in NODE.JS runtime. ]
     *                                  Account connection string example -
     *                                  `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`
     *                                  SAS connection string example -
     *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
     * @param options - Options to configure the HTTP pipeline.
     * @returns A new ShareServiceClient from the given connection string.
     */
    static fromConnectionString(connectionString: string, options?: ShareClientOptions): ShareServiceClient;
    /**
     * Creates an instance of ShareServiceClient.
     *
     * @param url - A URL string pointing to Azure Storage file service, such as
     *                     "https://myaccount.file.core.windows.net". You can Append a SAS
     *                     if using AnonymousCredential, such as "https://myaccount.file.core.windows.net?sasString".
     * @param credential - Such as AnonymousCredential, StorageSharedKeyCredential, or TokenCredential,
     *                                  If not specified, AnonymousCredential is used.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(url: string, credential?: Credential_2 | TokenCredential, options?: ShareClientOptions);
    /**
     * Creates an instance of ShareServiceClient.
     *
     * @param url - A URL string pointing to Azure Storage file service, such as
     *                     "https://myaccount.file.core.windows.net". You can Append a SAS
     *                     if using AnonymousCredential, such as "https://myaccount.file.core.windows.net?sasString".
     * @param pipeline - Call newPipeline() to create a default
     *                            pipeline, or provide a customized pipeline.
     * @param options - Optional. Options to configure the HTTP pipeline.
     */
    constructor(url: string, pipeline: Pipeline, options?: ShareClientConfig);
    /**
     * Creates a ShareClient object.
     *
     * @param shareName - Name of a share.
     * @returns The ShareClient object for the given share name.
     *
     * Example usage:
     *
     * ```js
     * const shareClient = serviceClient.getShareClient("<share name>");
     * await shareClient.create();
     * console.log("Created share successfully!");
     * ```
     */
    getShareClient(shareName: string): ShareClient;
    /**
     * Creates a Share.
     *
     * @param shareName -
     * @param options -
     * @returns Share creation response and the corresponding share client.
     */
    createShare(shareName: string, options?: ShareCreateOptions): Promise<{
        shareCreateResponse: ShareCreateResponse;
        shareClient: ShareClient;
    }>;
    /**
     * Deletes a Share.
     *
     * @param shareName -
     * @param options -
     * @returns Share deletion response and the corresponding share client.
     */
    deleteShare(shareName: string, options?: ShareDeleteMethodOptions): Promise<ShareDeleteResponse>;
    /**
     * Gets the properties of a storage account’s file service, including properties
     * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-file-service-properties
     *
     * @param options - Options to Get Properties operation.
     * @returns Response data for the Get Properties operation.
     */
    getProperties(options?: ServiceGetPropertiesOptions): Promise<ServiceGetPropertiesResponse>;
    /**
     * Sets properties for a storage account’s file service endpoint, including properties
     * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-file-service-properties
     *
     * @param properties -
     * @param options - Options to Set Properties operation.
     * @returns Response data for the Set Properties operation.
     */
    setProperties(properties: FileServiceProperties, options?: ServiceSetPropertiesOptions): Promise<ServiceSetPropertiesResponse>;
    /**
     * Returns an AsyncIterableIterator for {@link ServiceListSharesSegmentResponse} objects
     *
     * @param marker - A string value that identifies the portion of
     *                          the list of shares to be returned with the next listing operation. The
     *                          operation returns the ContinuationToken value within the response body if the
     *                          listing operation did not return all shares remaining to be listed
     *                          with the current page. The ContinuationToken value can be used as the value for
     *                          the marker parameter in a subsequent call to request the next page of list
     *                          items. The marker value is opaque to the client.
     * @param options - Options to list shares operation.
     */
    private listSegments;
    /**
     * Returns an AsyncIterableIterator for share items
     *
     * @param options - Options to list shares operation.
     */
    private listItems;
    /**
     * Returns an async iterable iterator to list all the shares
     * under the specified account.
     *
     * .byPage() returns an async iterable iterator to list the shares in pages.
     *
     * Example using `for await` syntax:
     *
     * ```js
     * let i = 1;
     * for await (const share of serviceClient.listShares()) {
     *   console.log(`Share ${i++}: ${share.name}`);
     * }
     * ```
     *
     * Example using `iter.next()`:
     *
     * ```js
     * let i = 1;
     * let iter = serviceClient.listShares();
     * let shareItem = await iter.next();
     * while (!shareItem.done) {
     *   console.log(`Share ${i++}: ${shareItem.value.name}`);
     *   shareItem = await iter.next();
     * }
     * ```
     *
     * Example using `byPage()`:
     *
     * ```js
     * // passing optional maxPageSize in the page settings
     * let i = 1;
     * for await (const response of serviceClient.listShares().byPage({ maxPageSize: 20 })) {
     *   if (response.shareItems) {
     *    for (const share of response.shareItems) {
     *        console.log(`Share ${i++}: ${share.name}`);
     *     }
     *   }
     * }
     * ```
     *
     * Example using paging with a marker:
     *
     * ```js
     * let i = 1;
     * let iterator = serviceClient.listShares().byPage({ maxPageSize: 2 });
     * let response = (await iterator.next()).value;
     *
     * // Prints 2 share names
     * if (response.shareItems) {
     *   for (const share of response.shareItems) {
     *     console.log(`Share ${i++}: ${share.name}`);
     *   }
     * }
     *
     * // Gets next marker
     * let marker = response.continuationToken;
     *
     * // Passing next marker as continuationToken
     * iterator = serviceClient.listShares().byPage({ continuationToken: marker, maxPageSize: 10 });
     * response = (await iterator.next()).value;
     *
     * // Prints 10 share names
     * if (response.shareItems) {
     *   for (const share of response.shareItems) {
     *     console.log(`Share ${i++}: ${share.name}`);
     *   }
     * }
     * ```
     *
     * @param options - Options to list shares operation.
     *
     * An asyncIterableIterator that supports paging.
     */
    listShares(options?: ServiceListSharesOptions): PagedAsyncIterableIterator<ShareItem, ServiceListSharesSegmentResponse>;
    /**
     * Gets the properties of a storage account's File service, including properties for Storage
     * Analytics metrics and CORS (Cross-Origin Resource Sharing) rules.
     *
     * @param marker - A string value that identifies the portion of
     *                          the list to be returned with the next list operation. The operation
     *                          returns a marker value within the response body if the list returned was
     *                          not complete. The marker value may then be used in a subsequent call to
     *                          request the next set of list items. The marker value is opaque to the
     *                          client.
     * @param options - Options to List Shares Segment operation.
     * @returns Response data for the List Shares Segment operation.
     */
    private listSharesSegment;
    /**
     * Restores a previously deleted share.
     * This API is only functional if Share Soft Delete is enabled
     * for the storage account associated with the share.
     *
     * @param deletedShareName - The name of the previously deleted share.
     * @param deletedShareVersion - The version of the previously deleted share.
     * @param options - Options to Share undelete operation.
     * @returns Restored share.
     */
    undeleteShare(deletedShareName: string, deletedShareVersion: string, options?: ServiceUndeleteShareOptions): Promise<ShareClient>;
    /**
     * Only available for ShareServiceClient constructed with a shared key credential.
     *
     * Generates an account Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-account-sas
     *
     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not specified.
     * @param permissions - Specifies the list of permissions to be associated with the SAS.
     * @param resourceTypes - Specifies the resource types associated with the shared access signature.
     * @param options - Optional parameters.
     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateAccountSasUrl(expiresOn?: Date, permissions?: AccountSASPermissions, resourceTypes?: string, options?: ServiceGenerateAccountSasUrlOptions): string;
    /**
     * Only available for ShareServiceClient constructed with a shared key credential.
     *
     * Generates string to sign for an account Shared Access Signature (SAS) URI based on the client properties
     * and parameters passed in. The SAS is signed by the shared key credential of the client.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-account-sas
     *
     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not specified.
     * @param permissions - Specifies the list of permissions to be associated with the SAS.
     * @param resourceTypes - Specifies the resource types associated with the shared access signature.
     * @param options - Optional parameters.
     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
     */
    generateSasStringToSign(expiresOn?: Date, permissions?: AccountSASPermissions, resourceTypes?: string, options?: ServiceGenerateAccountSasUrlOptions): string;
}

/** Defines headers for Share_setAccessPolicy operation. */
export declare interface ShareSetAccessPolicyHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareSetAccessPolicyOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** The ACL for the share. */
    shareAcl?: SignedIdentifierModel[];
}

/**
 * Options to configure the {@link ShareClient.setAccessPolicy} operation.
 */
export declare interface ShareSetAccessPolicyOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the setAccessPolicy operation. */
export declare type ShareSetAccessPolicyResponse = WithResponse<ShareSetAccessPolicyHeaders, ShareGetAccessPolicyHeaders>;

/** Contains response data for the setAccessPolicy operation. */
declare type ShareSetAccessPolicyResponse_2 = ShareSetAccessPolicyHeaders;

/** Defines headers for Share_setMetadata operation. */
export declare interface ShareSetMetadataHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareSetMetadataOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** A name-value pair to associate with a file storage object. */
    metadata?: {
        [propertyName: string]: string;
    };
}

/**
 * Options to configure the {@link ShareClient.setMetadata} operation.
 */
export declare interface ShareSetMetadataOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/** Contains response data for the setMetadata operation. */
export declare type ShareSetMetadataResponse = WithResponse<ShareSetMetadataHeaders, ShareSetMetadataHeaders>;

/** Contains response data for the setMetadata operation. */
declare type ShareSetMetadataResponse_2 = ShareSetMetadataHeaders;

/** Defines headers for Share_setProperties operation. */
export declare interface ShareSetPropertiesHeaders {
    /** The ETag contains a value that you can use to perform operations conditionally, in quotes. */
    etag?: string;
    /** Returns the date and time the share was last modified. Any operation that modifies the share or its properties updates the last modified time. Operations on files do not affect the last modified time of the share. */
    lastModified?: Date;
    /** This header uniquely identifies the request that was made and can be used for troubleshooting the request. */
    requestId?: string;
    /** Indicates the version of the File service used to execute the request. */
    version?: string;
    /** A UTC date/time value generated by the service that indicates the time at which the response was initiated. */
    date?: Date;
    /** Returns the current share quota in GB. */
    quota?: number;
    /** Returns the current share provisioned ipos. */
    provisionedIops?: number;
    /** Returns the current share provisioned bandwidth in mebibytes per second. */
    provisionedBandwidthMibps?: number;
    /** Return the calculated burst IOPS of the share. */
    includedBurstIops?: number;
    /** Returned the calculated maximum burst credits. This is not the current burst credit level, but the maximum burst credits the share can have. */
    maxBurstCreditsForIops?: number;
    /** Returns the current share next allowed quota downgrade time. */
    nextAllowedQuotaDowngradeTime?: Date;
    /** Returns the current share next allowed provisioned iops downgrade time. */
    nextAllowedProvisionedIopsDowngradeTime?: Date;
    /** Returns the current share next allowed provisioned bandwidth downgrade time. */
    nextAllowedProvisionedBandwidthDowngradeTime?: Date;
    /** Error Code */
    errorCode?: string;
}

/** Optional parameters. */
declare interface ShareSetPropertiesOptionalParams extends coreClient.OperationOptions {
    /** Parameter group */
    leaseAccessConditions?: LeaseAccessConditions;
    /** The timeout parameter is expressed in seconds. For more information, see <a href="https://docs.microsoft.com/en-us/rest/api/storageservices/Setting-Timeouts-for-File-Service-Operations?redirectedfrom=MSDN">Setting Timeouts for File Service Operations.</a> */
    timeoutInSeconds?: number;
    /** Valid value is backup */
    fileRequestIntent?: ShareTokenIntent;
    /** Specifies the maximum size of the share, in gigabytes. */
    quota?: number;
    /** Specifies the access tier of the share. */
    accessTier?: ShareAccessTier;
    /** Root squash to set on the share.  Only valid for NFS shares. */
    rootSquash?: ShareRootSquash;
    enableSnapshotVirtualDirectoryAccess?: boolean;
    /** Optional. Boolean. Default if not specified is false. This property enables paid bursting. */
    paidBurstingEnabled?: boolean;
    /** Optional. Integer. Default if not specified is the maximum throughput the file share can support. Current maximum for a file share is 10,340  MiB/sec. */
    paidBurstingMaxBandwidthMibps?: number;
    /** Optional. Integer. Default if not specified is the maximum IOPS the file share can support. Current maximum for a file share is 102,400 IOPS. */
    paidBurstingMaxIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned number of input/output operations per second (IOPS) of the share. If this is not specified, the provisioned IOPS is set to value calculated based on recommendation formula. */
    shareProvisionedIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned bandwidth of the share, in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. */
    shareProvisionedBandwidthMibps?: number;
}

/**
 * Options to configure the {@link ShareClient.setProperties} operation.
 */
export declare interface ShareSetPropertiesOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * Specifies the access tier of the share. Possible values include: 'TransactionOptimized',
     * 'Hot', 'Cool'.
     */
    accessTier?: ShareAccessTier;
    /**
     * Specifies the maximum size of the share, in gigabytes.
     */
    quotaInGB?: number;
    /**
     * Root squash to set on the share.  Only valid for NFS shares. Possible values include:
     * 'NoRootSquash', 'RootSquash', 'AllSquash'.
     */
    rootSquash?: ShareRootSquash;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
    /**
     * Specifies whether the snapshot virtual directory should be accessible at the root of share mount point when NFS is enabled.
     * If not specified, the default is true.
     */
    enableSnapshotVirtualDirectoryAccess?: boolean;
    /**
     * Optional. Boolean. Default if not specified is false. This property enables paid bursting.
     */
    paidBurstingEnabled?: boolean;
    /**
     * Optional. Integer. Default if not specified is the maximum throughput the file share can support. Current maximum for a file share is 10,340  MiB/sec.
     */
    paidBurstingMaxBandwidthMibps?: number;
    /**
     * Optional. Integer. Default if not specified is the maximum IOPS the file share can support. Current maximum for a file share is 102,400 IOPS.
     */
    paidBurstingMaxIops?: number;
    /**
     * Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares.
     * Specifies the provisioned number of input/output operations per second (IOPS) of the share. If this is not specified, the provisioned IOPS is set to value calculated based on recommendation formula.
     */
    shareProvisionedIops?: number;
    /** Optional. Supported in version 2025-01-05 and later. Only allowed for provisioned v2 file shares. Specifies the provisioned bandwidth of the share, in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. */
    shareProvisionedBandwidthMibps?: number;
}

/** Contains response data for the setProperties operation. */
export declare type ShareSetPropertiesResponse = WithResponse<ShareSetPropertiesHeaders, ShareSetPropertiesHeaders>;

/** Contains response data for the setProperties operation. */
declare type ShareSetPropertiesResponse_2 = ShareSetPropertiesHeaders;

/**
 * Defines headers for setQuota operation.
 */
export declare type ShareSetQuotaHeaders = ShareSetPropertiesHeaders;

/**
 * Options to configure the {@link ShareClient.setQuota} operation.
 */
export declare interface ShareSetQuotaOptions extends CommonOptions {
    /**
     * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
     * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
     */
    abortSignal?: AbortSignalLike;
    /**
     * If specified, the operation only succeeds if the resource's lease is active and matches this ID.
     */
    leaseAccessConditions?: LeaseAccessConditions;
}

/**
 * Contains response data for the setQuota operation.
 */
export declare type ShareSetQuotaResponse = WithResponse<ShareSetQuotaHeaders, ShareSetQuotaHeaders>;

/** Settings for SMB protocol. */
export declare interface ShareSmbSettings {
    /** Settings for SMB Multichannel. */
    multichannel?: SmbMultichannel;
}

/** Stats for the share. */
export declare interface ShareStats {
    /** The approximate size of the data stored in bytes. Note that this value may not include all recently created or recently resized files. */
    shareUsageBytes: number;
}

/**
 * Defines values for ShareTokenIntent. \
 * {@link KnownShareTokenIntent} can be used interchangeably with ShareTokenIntent,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **backup**
 */
export declare type ShareTokenIntent = string;

/**
 * Signed Identifier
 */
export declare interface SignedIdentifier {
    /**
     * a unique id
     */
    id: string;
    /**
     * Access Policy
     */
    accessPolicy: {
        /**
         * the date-time the policy is active.
         */
        startsOn: Date;
        /**
         * the date-time the policy expires.
         */
        expiresOn: Date;
        /**
         * the permissions for the acl policy
         * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-share-acl
         */
        permissions: string;
    };
}

/** Signed identifier. */
export declare interface SignedIdentifierModel {
    /** A unique id. */
    id: string;
    /** The access policy. */
    accessPolicy?: AccessPolicy;
}

/** Settings for SMB multichannel */
export declare interface SmbMultichannel {
    /** If SMB multichannel is enabled. */
    enabled?: boolean;
}

/** Parameter group */
declare interface SourceLeaseAccessConditions {
    /** Required if the source file has an active infinite lease. */
    sourceLeaseId?: string;
}

/** Parameter group */
export declare interface SourceModifiedAccessConditions {
    /** Specify the crc64 value to operate only on range with a matching crc64 checksum. */
    sourceIfMatchCrc64?: Uint8Array;
    /** Specify the crc64 value to operate only on range without a matching crc64 checksum. */
    sourceIfNoneMatchCrc64?: Uint8Array;
}

/**
 * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:
 *
 * 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.
 * StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL
 * thus avoid the browser cache.
 *
 * 2. Remove cookie header for security
 *
 * 3. Remove content-length header to avoid browsers warning
 */
export declare class StorageBrowserPolicy extends BaseRequestPolicy {
    /**
     * Creates an instance of StorageBrowserPolicy.
     * @param nextPolicy -
     * @param options -
     */
    constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions);
    /**
     * Sends out request.
     *
     * @param request -
     */
    sendRequest(request: WebResource): Promise<HttpOperationResponse>;
}

/**
 * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
 */
export declare class StorageBrowserPolicyFactory implements RequestPolicyFactory {
    /**
     * Creates a StorageBrowserPolicyFactory object.
     *
     * @param nextPolicy -
     * @param options -
     */
    create(nextPolicy: RequestPolicy, options: RequestPolicyOptions): StorageBrowserPolicy;
}

/**
 * A StorageClient represents a base client class for ServiceClient, ContainerClient and etc.
 */
declare abstract class StorageClient {
    /**
     * URL string value.
     */
    readonly url: string;
    readonly accountName: string;
    /* Excluded from this release type: pipeline */
    /* Excluded from this release type: credential */
    /**
     * StorageClient is a reference to protocol layer operations entry, which is
     * generated by AutoRest generator.
     */
    protected readonly storageClientContext: StorageClient_2;
    /**
     * Creates an instance of StorageClient.
     * @param url -
     * @param pipeline -
     */
    protected constructor(url: string, pipeline: Pipeline);
}

declare class StorageClient_2 extends coreHttpCompat.ExtendedServiceClient {
    url: string;
    version: string;
    fileRangeWriteFromUrl: string;
    /**
     * Initializes a new instance of the StorageClient class.
     * @param url The URL of the service account, share, directory or file that is the target of the
     *            desired operation.
     * @param options The parameter options
     */
    constructor(url: string, options?: StorageClientOptionalParams);
    service: Service;
    share: Share;
    directory: Directory;
    file: File_2;
}

/** Optional parameters. */
declare interface StorageClientOptionalParams extends coreHttpCompat.ExtendedServiceClientOptions {
    /** Specifies the version of the operation to use for this request. */
    version?: string;
    /** Only update is supported: - Update: Writes the bytes downloaded from the source url into the specified range. */
    fileRangeWriteFromUrl?: string;
    /** Overrides client endpoint. */
    endpoint?: string;
}

/**
 * Defines the known cloud audiences for Storage.
 */
export declare enum StorageFileAudience {
    /**
     * The OAuth scope to use to retrieve an AAD token for Azure Storage.
     */
    StorageOAuthScopes = "https://storage.azure.com/.default"
}

/**
 * The OAuth scope to use with Azure Storage.
 */
export declare const StorageOAuthScopes: string | string[];

/**
 * Options interface for the {@link newPipeline} function.
 */
export declare interface StoragePipelineOptions {
    /**
     * Options to configure a proxy for outgoing requests.
     */
    proxyOptions?: ProxySettings;
    /**
     * Options for adding user agent details to outgoing requests.
     */
    userAgentOptions?: UserAgentPolicyOptions;
    /**
     * Configures the built-in retry policy behavior.
     */
    retryOptions?: StorageRetryOptions;
    /**
     * Keep alive configurations. Default keep-alive is enabled.
     */
    keepAliveOptions?: KeepAliveOptions;
    /**
     * Configures the HTTP client to send requests and receive responses.
     */
    httpClient?: RequestPolicy;
    /**
     * The audience used to retrieve an AAD token.
     * By default, audience 'https://storage.azure.com/.default' will be used.
     */
    audience?: string;
}

/**
 * Storage Blob retry options interface.
 */
export declare interface StorageRetryOptions {
    /**
     * Optional. StorageRetryPolicyType, default is exponential retry policy.
     */
    readonly retryPolicyType?: StorageRetryPolicyType;
    /**
     * Optional. Max try number of attempts, default is 4.
     * A value of 1 means 1 try and no retries.
     * A value smaller than 1 means default retry number of attempts.
     */
    readonly maxTries?: number;
    /**
     * Optional. Indicates the maximum time in ms allowed for any single try of an HTTP request.
     * A value of zero or undefined means no default timeout on SDK client, Azure
     * Storage server's default timeout policy will be used.
     *
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/setting-timeouts-for-blob-service-operations
     */
    readonly tryTimeoutInMs?: number;
    /**
     * Optional. Specifies the amount of delay to use before retrying an operation (default is 4s or 4 * 1000ms).
     * The delay increases (exponentially or linearly) with each retry up to a maximum specified by
     * maxRetryDelayInMs. If you specify 0, then you must also specify 0 for maxRetryDelayInMs.
     */
    readonly retryDelayInMs?: number;
    /**
     * Optional. Specifies the maximum delay allowed before retrying an operation (default is 120s or 120 * 1000ms).
     * If you specify 0, then you must also specify 0 for retryDelayInMs.
     */
    readonly maxRetryDelayInMs?: number;
}

/**
 * Retry policy with exponential retry and linear retry implemented.
 */
export declare class StorageRetryPolicy extends BaseRequestPolicy {
    /**
     * RetryOptions.
     */
    private readonly retryOptions;
    /**
     * Creates an instance of RetryPolicy.
     *
     * @param nextPolicy -
     * @param options -
     * @param retryOptions -
     */
    constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, retryOptions?: StorageRetryOptions);
    /**
     * Sends request.
     *
     * @param request -
     */
    sendRequest(request: WebResource): Promise<HttpOperationResponse>;
    /**
     * Decide and perform next retry. Won't mutate request parameter.
     *
     * @param request -
     * @param secondaryHas404 -  If attempt was against the secondary & it returned a StatusNotFound (404), then
     *                                   the resource was not found. This may be due to replication delay. So, in this
     *                                   case, we'll never try the secondary again for this operation.
     * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes
     *                                   the attempt will be performed by this method call.
     */
    protected attemptSendRequest(request: WebResource, secondaryHas404: boolean, attempt: number): Promise<HttpOperationResponse>;
    /**
     * Decide whether to retry according to last HTTP response and retry counters.
     *
     * @param isPrimaryRetry -
     * @param attempt -
     * @param response -
     * @param err -
     */
    protected shouldRetry(isPrimaryRetry: boolean, attempt: number, response?: HttpOperationResponse, err?: RestError): boolean;
    /**
     * Delay a calculated time between retries.
     *
     * @param isPrimaryRetry -
     * @param attempt -
     * @param abortSignal -
     */
    private delay;
}

/**
 * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
 */
export declare class StorageRetryPolicyFactory implements RequestPolicyFactory {
    private retryOptions?;
    /**
     * Creates an instance of StorageRetryPolicyFactory.
     * @param retryOptions -
     */
    constructor(retryOptions?: StorageRetryOptions);
    /**
     * Creates a StorageRetryPolicy object.
     *
     * @param nextPolicy -
     * @param options -
     */
    create(nextPolicy: RequestPolicy, options: RequestPolicyOptions): StorageRetryPolicy;
}

/**
 * RetryPolicy types.
 */
export declare enum StorageRetryPolicyType {
    /**
     * Exponential retry. Retry time delay grows exponentially.
     */
    EXPONENTIAL = 0,
    /**
     * Linear retry. Retry time delay grows linearly.
     */
    FIXED = 1
}

/**
 * ONLY AVAILABLE IN NODE.JS RUNTIME.
 *
 * StorageSharedKeyCredential for account key authorization of Azure Storage service.
 */
export declare class StorageSharedKeyCredential extends Credential_2 {
    /**
     * Azure Storage account name; readonly.
     */
    readonly accountName: string;
    /**
     * Azure Storage account key; readonly.
     */
    private readonly accountKey;
    /**
     * Creates an instance of StorageSharedKeyCredential.
     * @param accountName -
     * @param accountKey -
     */
    constructor(accountName: string, accountKey: string);
    /**
     * Creates a StorageSharedKeyCredentialPolicy object.
     *
     * @param nextPolicy -
     * @param options -
     */
    create(nextPolicy: RequestPolicy, options: RequestPolicyOptions): StorageSharedKeyCredentialPolicy;
    /**
     * Generates a hash signature for an HTTP request or for a SAS.
     *
     * @param stringToSign -
     */
    computeHMACSHA256(stringToSign: string): string;
}

/**
 * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
 */
export declare class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
    /**
     * Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy
     */
    private readonly factory;
    /**
     * Creates an instance of StorageSharedKeyCredentialPolicy.
     * @param nextPolicy -
     * @param options -
     * @param factory -
     */
    constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, factory: StorageSharedKeyCredential);
    /**
     * Signs request.
     *
     * @param request -
     */
    protected signRequest(request: WebResource): WebResource;
    /**
     * Retrieve header value according to shared key sign rules.
     * @see https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
     *
     * @param request -
     * @param headerName -
     */
    private getHeaderValueToSign;
    /**
     * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
     * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
     * 2. Convert each HTTP header name to lowercase.
     * 3. Sort the headers lexicographically by header name, in ascending order.
     *    Each header may appear only once in the string.
     * 4. Replace any linear whitespace in the header value with a single space.
     * 5. Trim any whitespace around the colon in the header.
     * 6. Finally, append a new-line character to each canonicalized header in the resulting list.
     *    Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
     *
     * @param request -
     */
    private getCanonicalizedHeadersString;
    /**
     * Retrieves the webResource canonicalized resource string.
     *
     * @param request -
     */
    private getCanonicalizedResourceString;
}

declare interface StringEncoded {
    encoded?: boolean;
    content?: string;
}

/**
 * Indicates setting as the time of the request.
 */
export declare type TimeNowType = "now";

/**
 * Indicates keep existing time value unchanged.
 */
export declare type TimePreserveType = "preserve";

/**
 * Convert {@link NfsFileMode} structure to a 4-digit octal string represenation.
 */
export declare function toOctalFileMode(input?: NfsFileMode): string | undefined;

/**
 * Convert a {@link NfsFileMode} to a string in symbolic notation.
 */
export declare function toSymbolicFileMode(input?: NfsFileMode): string | undefined;

export { WebResource }

/**
 * A type that represents an operation result with a known _response property.
 */
export declare type WithResponse<T, Headers = undefined, Body = undefined> = T & (Body extends object ? ResponseWithBody<Headers, Body> : Headers extends object ? ResponseWithHeaders<Headers> : ResponseLike);

export { }
