import type { FileSystem } from '../internal/filesystem.js';
import type { InodeLike } from '../internal/inode.js';
import type { Mixin } from './shared.js';
/**
 * @internal
 */
export interface ReadonlyMixin {
    rename(oldPath: string, newPath: string): Promise<never>;
    renameSync(oldPath: string, newPath: string): never;
    createFile(path: string, flag: string, mode: number): Promise<never>;
    createFileSync(path: string, flag: string, mode: number): never;
    unlink(path: string): Promise<never>;
    unlinkSync(path: string): never;
    rmdir(path: string): Promise<never>;
    rmdirSync(path: string): never;
    mkdir(path: string, mode: number): Promise<never>;
    mkdirSync(path: string, mode: number): never;
    link(srcpath: string, dstpath: string): Promise<never>;
    linkSync(srcpath: string, dstpath: string): never;
    touch(path: string, metadata: Readonly<InodeLike>): Promise<never>;
    touchSync(path: string, metadata: Readonly<InodeLike>): never;
    sync(): Promise<never>;
    syncSync(): never;
    write(path: string, buffer: Uint8Array, offset: number): Promise<never>;
    writeSync(path: string, buffer: Uint8Array, offset: number): never;
}
/**
 * Implements the non-readonly methods to throw `EROFS`
 * @category Internals
 */
export declare function Readonly<T extends abstract new (...args: any[]) => FileSystem>(FS: T): Mixin<T, ReadonlyMixin>;
