import type { LevelCodeFileSystem } from '../../types/filesystem';
import type { Mock } from 'bun:test';
import type { PathLike, Stats } from 'node:fs';
export interface CreateMockFsOptions {
    files?: Record<string, string>;
    directories?: Record<string, string[]>;
    readFileImpl?: (path: string) => Promise<string>;
    readdirImpl?: (path: string) => Promise<string[]>;
    writeFileImpl?: (path: string, content: string) => Promise<void>;
    mkdirImpl?: (path: string, options?: {
        recursive?: boolean;
    }) => Promise<string | undefined>;
    statImpl?: (path: string) => Promise<Stats>;
}
export interface MockFs extends LevelCodeFileSystem {
}
export interface MockFsWithMocks {
    readFile: Mock<(path: PathLike, options?: {
        encoding?: BufferEncoding;
    }) => Promise<string>>;
    readdir: Mock<(path: PathLike) => Promise<string[]>>;
    writeFile: Mock<(path: PathLike, data: string) => Promise<void>>;
    mkdir: Mock<(path: PathLike, options?: {
        recursive?: boolean;
    }) => Promise<string | undefined>>;
    stat: Mock<(path: PathLike) => Promise<Stats>>;
}
/** Creates a mock filesystem compatible with LevelCodeFileSystem. */
export declare function createMockFs(options?: CreateMockFsOptions): MockFs;
export declare function restoreMockFs(mockFs: MockFs): void;
export declare function clearMockFs(mockFs: MockFs): void;
