export interface VfsEntry {
    name: string;
    isDirectory: boolean;
    /** Decompressed size for files, 0 for directories */
    size: number;
}
/**
 * Virtual filesystem that merges all .pak files in the game's addons/ directory
 * into a single unified file tree. Supports directory listing, file existence
 * checks, and on-demand file reading with automatic zlib decompression.
 *
 * Instantiated lazily as a singleton and cached for the session lifetime.
 */
export declare class PakVirtualFS {
    private static instance;
    private static instanceGamePath;
    /** Flat lookup: normalized virtual path → file reference */
    private fileIndex;
    /** Merged directory tree for browsing */
    private root;
    /**
     * Get or create the singleton VFS for the given game path.
     * Returns null if no .pak files are found.
     */
    static get(gamePath: string): PakVirtualFS | null;
    private constructor();
    /**
     * List entries in a virtual directory.
     * Path uses forward slashes, no leading slash (e.g., "Prefabs/Weapons").
     * Empty string = root.
     */
    listDir(virtualPath: string): VfsEntry[];
    /** Check if a path exists (file or directory). */
    exists(virtualPath: string): boolean;
    /**
     * Read a file's raw bytes from the pak archive.
     * Opens the .pak, seeks to the correct offset, reads, decompresses if needed.
     */
    readFile(virtualPath: string): Buffer;
    /** Read a file as UTF-8 text. */
    readTextFile(virtualPath: string): string;
    /** Get decompressed file size without reading/inflating. Returns -1 if not found. */
    fileSize(virtualPath: string): number;
    /** Get all file paths in the VFS (for building the asset search index). */
    allFilePaths(): string[];
    /** Get the number of indexed files. */
    get fileCount(): number;
    /**
     * Merge a parsed pak tree into the unified directory tree.
     * Returns the number of file entries added.
     */
    private mergeTree;
    /** Resolve a virtual path to a directory entry, or null if not found. */
    private resolveDir;
}
//# sourceMappingURL=vfs.d.ts.map