import { Fs, OverlayFsOptions, DirsMerger } from '../type';
import { OverlayFs } from '../entity/overlayfs';
/**
 * OverlayFs factory interface
 */
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;
}
/**
 * OverlayFs factory implementation
 */
export declare class Factory implements OverlayFsFactory {
    /**
     * Create overlay filesystem with default settings
     */
    create(fss: Fs[]): OverlayFs;
    /**
     * Create overlay filesystem with custom options
     */
    createWithOptions(options: OverlayFsOptions): OverlayFs;
    /**
     * Create read-only overlay filesystem
     */
    createReadOnly(fss: Fs[]): OverlayFs;
    /**
     * Create writable overlay filesystem (first filesystem is writable)
     */
    createWritable(fss: Fs[]): OverlayFs;
    /**
     * Create overlay filesystem with custom directory merger
     */
    createWithMerger(fss: Fs[], merger: DirsMerger): OverlayFs;
}
/**
 * Create new OverlayFs factory
 */
export declare function newOverlayFsFactory(): Factory;
/**
 * Convenience function to create overlay filesystem
 */
export declare function createOverlayFileSystem(fss: Fs[], options?: {
    firstWritable?: boolean;
    dirsMerger?: DirsMerger;
}): OverlayFs;
/**
 * Create read-only overlay filesystem (convenience function)
 */
export declare function createReadOnlyOverlayFs(fss: Fs[]): OverlayFs;
/**
 * Create writable overlay filesystem (convenience function)
 */
export declare function createWritableOverlayFs(fss: Fs[], dirsMerger?: DirsMerger): OverlayFs;
/**
 * Append filesystems to existing overlay (convenience function)
 */
export declare function appendToOverlayFs(overlayFs: OverlayFs, ...fss: Fs[]): OverlayFs;
/**
 * Create overlay filesystem from array of filesystem pairs
 */
export declare function createOverlayFromPairs(pairs: Array<{
    fs: Fs;
    priority: number;
}>): OverlayFs;
/**
 * Create multilayer overlay filesystem
 */
export declare function createMultilayerOverlayFs(readOnlyLayers: Fs[], writableLayer?: Fs, dirsMerger?: DirsMerger): OverlayFs;
//# sourceMappingURL=overlayfs-factory.d.ts.map