import { Driver, Disk, DriverConstructor } from '@abstract-filesystem/types';
import MemoryDriver from './memory-driver';
export declare class FilesystemManagement {
    protected _drivers: Map<string, DriverConstructor<Driver<{
        [x: string]: any;
    }>>>;
    protected _disks: Map<string, {
        driverName: string;
        instance: Disk;
    }>;
    protected _defaultDisk: string | null;
    registerDriver(name: string, driver: DriverConstructor<Driver>): this;
    driver<D extends Driver>(name: string): DriverConstructor<D>;
    drivers(): string[];
    hasDriver(name: string): boolean;
    hasDisk(name: string): boolean;
    disks(): string[];
    /**
     * Make disk by driver
     */
    makeDisk<Drv extends Driver>(driver: DriverConstructor<Drv>, options?: Drv['options']): Promise<Drv>;
    /**
     * Create disk by driver class
     */
    registerDisk<Drv extends Driver>(diskName: string, driver: DriverConstructor<Drv>, options?: Drv['options']): Promise<Drv>;
    /**
     * Create disk by driver name
     */
    createDisk<Drv extends Driver>(name: string, driverName: string, options?: Drv['options']): Promise<Disk<Drv>>;
    disk<Drv extends Driver, D extends Disk<Drv> = Disk<Drv>>(name: string): D;
    defaultDiskName(): string | null;
    defaultDisk<Drv extends Driver>(): Disk<Drv>;
    setDefaultDisk(disk: string): this;
}
declare const fsm: FilesystemManagement;
export default fsm;
export { MemoryDriver };
export type { Driver, Disk, DriverConstructor };
//# sourceMappingURL=index.d.ts.map