import { Fs, DirsMerger, OverlayFsOptions } from '../type';
/**
 * Default directory merger implementation
 * TypeScript version of Go's defaultDirMerger
 */
export declare const defaultDirMerger: DirsMerger;
/**
 * OverlayFs options value object
 * TypeScript version of Go's Options struct
 */
export declare class OverlayOptions implements OverlayFsOptions {
    readonly fss: Fs[];
    readonly firstWritable: boolean;
    readonly dirsMerger: DirsMerger;
    constructor(options: {
        fss: Fs[];
        firstWritable?: boolean;
        dirsMerger?: DirsMerger;
    });
    /**
     * Create new options with additional filesystems
     */
    withFilesystems(...additionalFss: Fs[]): OverlayOptions;
    /**
     * Create new options with different writability
     */
    withFirstWritable(writable: boolean): OverlayOptions;
    /**
     * Create new options with different directory merger
     */
    withDirsMerger(merger: DirsMerger): OverlayOptions;
    /**
     * Get writable filesystem (first if firstWritable is true)
     */
    getWritableFs(): Fs | null;
    /**
     * Validate options
     */
    isValid(): boolean;
    /**
     * Get filesystem count
     */
    getFilesystemCount(): number;
    /**
     * Get filesystem by index
     */
    getFilesystem(index: number): Fs | null;
    /**
     * Check if filesystem exists in overlay
     */
    hasFilesystem(fs: Fs): boolean;
    /**
     * Get all filesystems as readonly array
     */
    getFilesystems(): readonly Fs[];
}
/**
 * Factory function to create OverlayOptions
 */
export declare function newOverlayOptions(fss: Fs[], firstWritable?: boolean, dirsMerger?: DirsMerger): OverlayOptions;
/**
 * Create overlay options with default settings
 */
export declare function createDefaultOverlayOptions(fss: Fs[]): OverlayOptions;
/**
 * Create overlay options for read-write scenario
 */
export declare function createWritableOverlayOptions(fss: Fs[], dirsMerger?: DirsMerger): OverlayOptions;
//# sourceMappingURL=overlayoptions.d.ts.map