import IFolder, { FolderErrorStatus } from "./IFolder";
import IFile from "./IFile";
import IStorage, { IFolderMove } from "./IStorage";
export default abstract class FolderBase implements IFolder {
    #private;
    abstract get name(): string;
    get ensuredName(): string;
    isDisposed: boolean;
    abstract get parentFolder(): IFolder | null;
    abstract get storage(): IStorage;
    manager?: any;
    errorStatus?: FolderErrorStatus;
    get onFolderMoved(): import("ste-events").IEvent<FolderBase, IFolderMove>;
    get onChildFolderMoved(): import("ste-events").IEvent<FolderBase, IFolderMove>;
    get isLoaded(): boolean;
    get canIgnore(): boolean;
    get allFiles(): AsyncIterable<IFile>;
    get folderCount(): number;
    get fileCount(): number;
    get storageRelativePath(): string;
    get lastLoadedOrSaved(): Date;
    get fullPath(): string;
    get extendedPath(): string;
    constructor();
    updateLastLoadedOrSaved(): void;
    getFolderRelativePath(toFolder: IFolder): string | undefined;
    dispose(): void;
    setStructureFromFileList(fileList: string[]): Promise<void>;
    isSameFolder(newFolderStorageRelativePath: string): boolean;
    _addExistingFolderToParent(folder: IFolder): void;
    _removeExistingFolderFromParent(folder: IFolder): void;
    folderExists(name: string): boolean;
    fileExists(name: string): boolean;
    deleteFileFromRelativePath(path: string): Promise<boolean>;
    canonicalizePath(path: string): string;
    getFileFromRelativePath(path: string): Promise<IFile | undefined>;
    clearAllManagers(): void;
    getFolderFromRelativePath(path: string): Promise<IFolder | undefined>;
    getFolderByIndex(index: number): IFolder;
    getSortedFolderKeys(): string[];
    getSortedFileKeys(): string[];
    getSummary(): string;
    getFolderFromRelativePathLocal(path: string): IFolder | undefined;
    saveAll(force?: boolean): Promise<boolean>;
    ensureFolderFromRelativePath(path: string, ignoreLoad?: boolean): Promise<IFolder>;
    ensureFileFromRelativePath(path: string, ignoreLoad?: boolean): Promise<IFile>;
    deleteFile(name: string): Promise<boolean>;
    removeFolder(name: string): boolean;
    rename(name: string): Promise<boolean>;
    recursiveDeleteThisFolder(): Promise<boolean>;
    recursiveDeleteContentsOfThisFolder(): Promise<boolean>;
    notifyFolderMoved(folderMove: IFolderMove): void;
    notifyChildFolderMoved(folderMove: IFolderMove): void;
    removeMeFromParent(): void;
    abstract scanForChanges(): Promise<void>;
    abstract deleteThisFolder(): Promise<boolean>;
    abstract deleteAllFolderContents(): Promise<boolean>;
    abstract exists(): Promise<boolean>;
    abstract ensureExists(): Promise<boolean>;
    abstract folders: {
        [name: string]: IFolder | undefined;
    };
    abstract files: {
        [name: string]: IFile | undefined;
    };
    abstract moveTo(newStorageRelativePath: string): Promise<boolean>;
    abstract load(force?: boolean): Promise<Date>;
    abstract ensureFolder(name: string): IFolder;
    abstract ensureFile(name: string): IFile;
    abstract createFile(name: string): Promise<IFile>;
}
