import { CdmContainerDefinition, CdmCorpusContext, CdmCorpusDefinition, CdmFolderDefinition, CdmObject, StorageAdapterBase } from '../internal';
export declare class StorageManager {
    private TAG;
    /**
     * @internal
     */
    readonly corpus: CdmCorpusDefinition;
    namespaceAdapters: Map<string, StorageAdapterBase>;
    /**
     * @internal
     */
    namespaceFolders: Map<string, CdmFolderDefinition>;
    defaultNamespace: string;
    /**
     * Maximum number of documents read concurrently when loading imports.
     */
    get maxConcurrentReads(): number | undefined;
    /**
     * Maximum number of documents read concurrently when loading imports.
     */
    set maxConcurrentReads(value: number | undefined);
    private readonly systemDefinedNamespaces;
    private readonly registeredAdapterTypes;
    /**
     * @internal
     */
    get ctx(): CdmCorpusContext;
    constructor(corpus: CdmCorpusDefinition);
    /**
     * Mounts a namespace to the specified adapter
     */
    mount(namespace: string, adapter: StorageAdapterBase): void;
    /**
     * Mounts the config JSON to the storage manager/corpus.
     * @param adapterConfig The adapters config in JSON.
     * @param adapterOrDoesReturnErrorList A boolean value that denotes whether we want to return a list of adapters that were not found.
     */
    mountFromConfig(adapterConfig: string, doesReturnErrorList?: boolean): string[];
    /**
     * Unmounts a namespace
     */
    unMount(nameSpace: string): boolean;
    /**
     * @internal
     * Allow replacing a storage adapter with another one for testing, leaving folders intact.
     */
    setAdapter(nameSpace: string, adapter: StorageAdapterBase): void;
    /**
     * Retrieves the adapter for the specified namespace.
     */
    fetchAdapter(namespace: string): StorageAdapterBase;
    /**
     * Given the namespace of a registered storage adapter, returns the root folder containing the sub-folders and documents.
     */
    fetchRootFolder(namespace: string): CdmFolderDefinition;
    /**
     * Takes a storage adapter domain path, figures out the right adapter to use and then returns a corpus path.
     */
    adapterPathToCorpusPath(adapterPath: string): string;
    /**
     * Takes a corpus path, figures out the right adapter to use and then returns an adapter domain path.
     */
    corpusPathToAdapterPath(corpusPath: string): string;
    createAbsoluteCorpusPath(objectPath: string, obj?: CdmObject): string;
    /**
     * Takes a corpus path (relative or absolute) and creates a valid relative corpus path with namespace.
     * @param objectPath The path that should be made relative, if possible
     * @param relativeTo The object that the path should be made relative with respect to.
     */
    createRelativeCorpusPath(objectPath: string, relativeTo?: CdmContainerDefinition): string;
    /**
     * @inheritdoc
     */
    fetchConfig(): string;
    /**
     * Saves adapters config into a file.
     */
    saveAdaptersConfigAsync(name: string, adapter: StorageAdapterBase): Promise<void>;
    /**
     * Checks whether the paths has an unsupported format, such as starting with ./ or containing ../  or  /./
     * In case unsupported path format is found, function calls statusRpt and returns true.
     * Returns false if path seems OK.
     * @param path The path to be checked.
     * @returns True if an unsupported path format was found.
     */
    private containsUnsupportedPathFormat;
}
