import { IFile, IStorageProvider } from "../types.js";
export declare class VirtualFile implements IFile {
    path: string;
    name: string;
    extension: string;
    fullPath: string;
    data: Buffer;
    constructor(fullPath: string, data: Buffer);
    readData(): Promise<Buffer>;
    writeData(data: Buffer): Promise<void>;
    getDataHash(algo?: string): Promise<string>;
}
export type VirtualDirectoryMockCallbackArgs = [
    "has",
    boolean,
    string
] | [
    "get",
    VirtualMockedEntry | undefined,
    string
] | [
    "set",
    VirtualMockedEntry,
    string,
    VirtualMockedEntry
] | [
    "delete",
    boolean,
    string
] | [
    "clear",
    void
] | [
    "keys",
    IterableIterator<string>
] | [
    "values",
    IterableIterator<VirtualMockedEntry>
] | [
    "entries",
    IterableIterator<[string, VirtualMockedEntry]>
] | [
    "forEach",
    void,
    (value: VirtualMockedEntry, path: string, map: VirtualMockedDirectory) => void,
    any
];
export declare class VirtualDirectoryMock {
    callback: (...args: VirtualDirectoryMockCallbackArgs) => any;
    content: VirtualDirectory;
    constructor(callback: (...args: VirtualDirectoryMockCallbackArgs) => any);
    initializeProxies(): void;
    get size(): number;
    has: (path: string) => boolean;
    get: (path: string) => VirtualMockedEntry | undefined;
    set: (path: string, value: VirtualMockedEntry) => this;
    delete: (path: string) => boolean;
    clear: () => void;
    keys: () => IterableIterator<string>;
    values: () => IterableIterator<VirtualMockedEntry>;
    entries: () => IterableIterator<[string, VirtualMockedEntry]>;
    forEach: (callback: (value: VirtualMockedEntry, path: string, map: VirtualDirectoryMock) => void, thisArg?: any) => void;
}
export declare class VirtualDirectoryOverrideMock extends VirtualDirectoryMock {
    initializeProxies(): void;
}
export type VirtualEntry = VirtualFile | VirtualDirectory;
export type VirtualMockedEntry = VirtualEntry | VirtualDirectoryMock;
export type VirtualMockedDirectory = VirtualDirectory | VirtualDirectoryMock;
export type VirtualDirectory = Map<string, VirtualMockedEntry>;
export declare class VirtualStorageProvider implements IStorageProvider {
    static separator: string;
    files: VirtualMockedDirectory;
    constructor();
    normalizePath(targetPath: string): string;
    relativePath(targetPath: string, basePath?: string): string;
    splitPath(path: string): [string, string];
    mkDir(path: string): VirtualMockedDirectory;
    rm(path: string): void;
    getEntry(path: string): VirtualMockedEntry | undefined;
    exists(path: string): Promise<boolean>;
    isFile(path: string): Promise<boolean>;
    readFile(filePath: string): Promise<VirtualFile>;
    createFile(filePath: string, content: Buffer): Promise<VirtualFile>;
    moveFile(sourcePath: string, targetPath: string): Promise<VirtualFile>;
    copyFile(sourcePath: string, targetPath: string): Promise<VirtualFile>;
    isDir(path: string): Promise<boolean>;
    readDir(dirPath: string, ignore?: string[]): Promise<string[]>;
    readDirDeep(dirPath: string, ignore?: string[]): Promise<string[]>;
    createDir(dirPath: string): Promise<string>;
    mockDir(dirPath: string, mock: VirtualMockedDirectory): Promise<string>;
    deleteFileOrDir(path: string): Promise<void>;
}
