import { CID } from "multiformats/cid";
import FileSystem from "./fs/index.js";
import { Maybe } from "./common/index.js";
import { Permissions } from "./ucan/permissions.js";
/**
 * Load a user's file system.
 *
 * @param permissions The permissions from initialise.
 *                    Pass `null` if working without permissions
 * @param username Optional, username of the user to load the file system from.
 *                 Will try to load the file system of the authenticated user
 *                 by default. Throws an error if there's no authenticated user.
 * @param rootKey Optional, AES key to be the root key of a new filesystem.
 *                Will be used if a filesystem hasn't been created yet.
 */
export declare function loadFileSystem(permissions: Maybe<Permissions>, username?: string, rootKey?: string): Promise<FileSystem>;
/**
 * Create a new filesystem and assign it to a user.
 *
 * @param permissions The permissions to initialize the filesystem
 * @param options Optional params
 * @param options.reset Override an existing filesystem with an empty one
 */
export declare const bootstrapFileSystem: (permissions: Permissions, options?: {
    reset?: boolean;
}) => Promise<FileSystem>;
export declare function checkFileSystemVersion(filesystemCID: CID): Promise<void>;
/**
 * Load a user's root file system.
 */
export declare const loadRootFileSystem: () => Promise<FileSystem>;
/**
 * Create a new filesystem with public and private roots and assign it to a user.
 *
 * @param options Optional params
 * @param options.reset Override an existing filesystem with an empty one
 */
export declare const bootstrapRootFileSystem: (options?: {
    reset?: boolean;
}) => Promise<FileSystem>;
/**
 * Create or get a read key for accessing the WNFS private root.
 */
export declare function readKey(): Promise<string>;
