import { Fs, OverlayFsOptions, DirsMerger } from '../type';
import { OverlayFs } from '../entity/overlayfs';
export interface OverlayFsFactory {
    create(fss: Fs[]): OverlayFs;
    createWithOptions(options: OverlayFsOptions): OverlayFs;
    createReadOnly(fss: Fs[]): OverlayFs;
    createWritable(fss: Fs[]): OverlayFs;
    createWithMerger(fss: Fs[], merger: DirsMerger): OverlayFs;
}
export declare class Factory implements OverlayFsFactory {
    create(fss: Fs[]): OverlayFs;
    createWithOptions(options: OverlayFsOptions): OverlayFs;
    createReadOnly(fss: Fs[]): OverlayFs;
    createWritable(fss: Fs[]): OverlayFs;
    createWithMerger(fss: Fs[], merger: DirsMerger): OverlayFs;
}
export declare function newOverlayFsFactory(): Factory;
export declare function createOverlayFileSystem(fss: Fs[], options?: {
    firstWritable?: boolean;
    dirsMerger?: DirsMerger;
}): OverlayFs;
export declare function createReadOnlyOverlayFs(fss: Fs[]): OverlayFs;
export declare function createWritableOverlayFs(fss: Fs[], dirsMerger?: DirsMerger): OverlayFs;
export declare function appendToOverlayFs(overlayFs: OverlayFs, ...fss: Fs[]): OverlayFs;
export declare function createOverlayFromPairs(pairs: Array<{
    fs: Fs;
    priority: number;
}>): OverlayFs;
export declare function createMultilayerOverlayFs(readOnlyLayers: Fs[], writableLayer?: Fs, dirsMerger?: DirsMerger): OverlayFs;
