import { File, FileInfo, DirsMerger, InfoFunc, OverlayDirOptions, Fs } from '../type';
/**
 * OverlayDir entity - represents a merged directory from multiple filesystems
 * TypeScript version of Go's Dir struct
 */
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);
    /**
     * Get file name
     */
    name(): string;
    /**
     * Check if directory is closed
     */
    private isClosed;
    /**
     * Read directory entries
     */
    readdir(count: number): Promise<FileInfo[]>;
    /**
     * Read directory names
     */
    readdirnames(n: number): Promise<string[]>;
    /**
     * Load directory entries from all filesystems
     */
    private loadDirectoryEntries;
    /**
     * Read directory entries from a specific filesystem or file
     */
    private readFromFilesystem;
    /**
     * Get file statistics
     */
    stat(): Promise<FileInfo>;
    /**
     * Close directory
     */
    close(): Promise<void>;
    /**
     * Not supported operations for directories
     */
    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;
    }>;
}
/**
 * Get a directory from the pool
 */
export declare function getDir(): OverlayDir;
/**
 * Release a directory back to the pool
 */
export declare function releaseDir(dir: OverlayDir): void;
/**
 * Open a new merged directory
 * TypeScript version of Go's OpenDir function
 */
export declare function openDir(name: string, merge: DirsMerger | null, info: InfoFunc | null, fss: Fs[]): Promise<OverlayDir>;
/**
 * Create a new OverlayDir instance
 */
export declare function newOverlayDir(options?: OverlayDirOptions): OverlayDir;
//# sourceMappingURL=overlaydir.d.ts.map