import { TokenProvider } from '../Utilities/Network';
import { NetworkAdapter } from './NetworkAdapter';
import { CdmFileMetadata } from '../internal';
import { azureCloudEndpoint } from '../Enums/azureCloudEndpoint';
export declare class ADLSAdapter extends NetworkAdapter {
    /**
     * @internal
     */
    readonly type: string;
    private readonly adlsDefaultTimeout;
    get root(): string;
    set root(val: string);
    get tenant(): string;
    get hostname(): string;
    set hostname(val: string);
    get sasToken(): string;
    /**
     * The SAS token. If supplied string begins with '?' symbol, the symbol gets stripped away.
     */
    set sasToken(val: string);
    clientId: string;
    secret: string;
    sharedKey: string;
    tokenProvider: TokenProvider;
    httpMaxResults: number;
    endpoint?: azureCloudEndpoint;
    private readonly adapterPaths;
    private readonly httpAuthorization;
    private readonly httpXmsDate;
    private readonly httpXmsVersion;
    private readonly httpXmsContinuation;
    private readonly resource;
    private readonly scopes;
    private _hostname;
    private _root;
    private _tenant;
    private _sasToken;
    private context;
    private formattedHostname;
    private formattedHostnameNoProtocol;
    private rootBlobContainer;
    private unescapedRootSubPath;
    private escapedRootSubPath;
    private fileModifiedTimeCache;
    constructor(hostname?: string, root?: string, tenantOrSharedKeyorTokenProvider?: string | TokenProvider, clientId?: string, secret?: string, endpoint?: azureCloudEndpoint);
    canRead(): boolean;
    readAsync(corpusPath: string): Promise<string>;
    writeAsync(corpusPath: string, data: string): Promise<void>;
    canWrite(): boolean;
    createAdapterPath(corpusPath: string): string;
    createCorpusPath(adapterPath: string): string;
    computeLastModifiedTimeAsync(corpusPath: string): Promise<Date>;
    fetchAllFilesAsync(folderCorpusPath: string): Promise<string[]>;
    fetchAllFilesMetadataAsync(folderCorpusPath: string): Promise<Map<string, CdmFileMetadata>>;
    clearCache(): void;
    fetchConfig(): string;
    updateConfig(config: string): void;
    private applySharedKey;
    /**
     * Appends SAS token to the given URL.
     * @param url URL to be appended with the SAS token
     * @returns URL with the SAS token appended
     */
    private applySasToken;
    private buildRequest;
    private createFormattedAdapterPath;
    private createFileAtPath;
    private deleteContentAtPath;
    private ensurePath;
    private escapePath;
    private extractRootBlobContainerAndSubPath;
    private formatCorpusPath;
    private formatHostname;
    private generateBearerToken;
    private getEscapedRoot;
    private updateRootSubPath;
    private buildContext;
    /**
     * Check if the hostname has a leading protocol.
     * if it doesn't have, return the hostname
     * if the leading protocol is not "https://", throw an error
     * otherwise, return the hostname with no leading protocol.
     * @param {string} hostname The hostname.
     * @return The hostname without the leading protocol "https://" if original hostname has it, otherwise it is same as hostname.
     */
    private removeProtocolFromHostname;
}
