import { Index } from './file_index.js';
import { FileSystem, type CreationOptions, type UsageInfo } from './filesystem.js';
import { Inode, type InodeLike } from './inode.js';
/**
 * A file system that uses an `Index` for metadata.
 * @category Internals
 * @internal
 */
export declare abstract class IndexFS extends FileSystem {
    readonly index: Index;
    constructor(id: number, name: string, index?: Index);
    usage(): UsageInfo;
    /**
     * Finds all the paths in the index that need to be moved for a rename
     */
    private pathsForRename;
    rename(oldPath: string, newPath: string): Promise<void>;
    renameSync(oldPath: string, newPath: string): void;
    stat(path: string): Promise<Inode>;
    statSync(path: string): Inode;
    touch(path: string, metadata: InodeLike): Promise<void>;
    touchSync(path: string, metadata: InodeLike): void;
    protected _remove(path: string, isUnlink: boolean): void;
    protected abstract remove(path: string): Promise<void>;
    protected abstract removeSync(path: string): void;
    unlink(path: string): Promise<void>;
    unlinkSync(path: string): void;
    rmdir(path: string): Promise<void>;
    rmdirSync(path: string): void;
    protected create(path: string, options: CreationOptions): Inode;
    createFile(path: string, options: CreationOptions): Promise<InodeLike>;
    createFileSync(path: string, options: CreationOptions): InodeLike;
    protected _mkdir?(path: string, options: CreationOptions): Promise<void>;
    protected _mkdirSync?(path: string, options: CreationOptions): void;
    mkdir(path: string, options: CreationOptions): Promise<InodeLike>;
    mkdirSync(path: string, options: CreationOptions): InodeLike;
    link(target: string, link: string): Promise<void>;
    linkSync(target: string, link: string): void;
    readdir(path: string): Promise<string[]>;
    readdirSync(path: string): string[];
    sync(): Promise<void>;
    syncSync(): void;
}
