import { File, FileInfo, DirsMerger, InfoFunc, OverlayDirOptions, Fs } from '../type';
export declare class OverlayDir implements File {
    private _name;
    private fss;
    private dirOpeners;
    private info?;
    private merge;
    private err?;
    private offset;
    private fis;
    private closed;
    constructor(options?: OverlayDirOptions);
    name(): string;
    private isClosed;
    readdir(count: number): Promise<FileInfo[]>;
    readdirnames(n: number): Promise<string[]>;
    private loadDirectoryEntries;
    private readFromFilesystem;
    stat(): Promise<FileInfo>;
    close(): Promise<void>;
    private notSupported;
    read(buffer: Uint8Array): Promise<{
        bytesRead: number;
        buffer: Uint8Array;
    }>;
    readAt(buffer: Uint8Array, offset: number): Promise<{
        bytesRead: number;
        buffer: Uint8Array;
    }>;
    seek(offset: number, whence: number): Promise<number>;
    write(buffer: Uint8Array): Promise<{
        bytesWritten: number;
        buffer: Uint8Array;
    }>;
    writeAt(buffer: Uint8Array, offset: number): Promise<{
        bytesWritten: number;
        buffer: Uint8Array;
    }>;
    sync(): Promise<void>;
    truncate(size: number): Promise<void>;
    writeString(s: string): Promise<{
        bytesWritten: number;
    }>;
}
export declare function getDir(): OverlayDir;
export declare function releaseDir(dir: OverlayDir): void;
export declare function openDir(name: string, merge: DirsMerger | null, info: InfoFunc | null, fss: Fs[]): Promise<OverlayDir>;
export declare function newOverlayDir(options?: OverlayDirOptions): OverlayDir;
