import { Fs, File, FileInfo, OverlayFs as IOverlayFs, DirsMerger, OverlayFsOptions } from '../type';
import { OverlayOptions } from '@internal/domain/fs/vo/overlayoptions';
export declare class OverlayFs implements IOverlayFs {
    private fss;
    private mergeDirs;
    private firstWritable;
    constructor(options: OverlayOptions);
    name(): string;
    filesystem(i: number): Fs | null;
    numFilesystems(): number;
    append(...fss: Fs[]): OverlayFs;
    withDirsMerger(merger: DirsMerger): OverlayFs;
    private writeFs;
    private collectDirs;
    private collectDirsRecursive;
    private statInternal;
    private statRecursive;
    private isNotExistError;
    create(name: string): Promise<File>;
    mkdir(name: string, perm: number): Promise<void>;
    mkdirAll(path: string, perm: number): Promise<void>;
    open(name: string): Promise<File>;
    openFile(name: string, flag: number, perm: number): Promise<File>;
    remove(name: string): Promise<void>;
    removeAll(path: string): Promise<void>;
    rename(oldname: string, newname: string): Promise<void>;
    stat(name: string): Promise<FileInfo>;
    chmod(name: string, mode: number): Promise<void>;
    chown(name: string, uid: number, gid: number): Promise<void>;
    chtimes(name: string, atime: Date, mtime: Date): Promise<void>;
}
export declare function newOverlayFs(options: OverlayOptions): OverlayFs;
export declare function createOverlayFs(opts: OverlayFsOptions): OverlayFs;
