import * as fs from 'fs';
import { TaskEither } from '@eleven-am/fp';
export declare class FileStorage {
    private readonly cacheDirectory;
    constructor(cacheDirectory: string);
    /**
     * Generates a unique file ID based on the file's inode number.
     * @param filePath The path to the file.
     * @returns A TaskEither containing the generated file ID or an error.
     */
    generateFileId(filePath: string): TaskEither<string>;
    /**
     * Deletes a file at the specified path.
     * @param path The path to the file to delete.
     * @returns A TaskEither indicating success or failure.
     */
    deleteFile(path: string): TaskEither<void>;
    /**
     * Deletes all files with a specified prefix.
     * @param prefix The prefix to match files against.
     * @returns A TaskEither indicating success or failure.
     */
    deleteFilesWithPrefix(prefix: string): TaskEither<void>;
    /**
     * Checks if a file exists at the specified path.
     * @param path The path to check.
     * @returns A TaskEither containing true if the file exists, false otherwise.
     */
    exists(path: string): TaskEither<boolean>;
    /**
     * Gets the base path for a given file ID.
     * @param fileId The file ID.
     * @returns The base path for the file ID.
     */
    getBasePath(fileId: string): string;
    /**
     * Gets a media source for a file at the specified path.
     * @param filePath The path to the file.
     * @returns A MediaSource object for the file.
     */
    getFileStream(filePath: string): TaskEither<fs.ReadStream>;
    /**
     * Lists all files that begin with the given prefix.
     * @param prefix The path prefix to search for.
     */
    listFiles(prefix: string): TaskEither<string[]>;
    /**
     * Saves data from a readable stream to storage.
     * @param filePath The destination path.
     * @param content The readable stream containing the data to save.
     */
    saveFile(filePath: string, content: NodeJS.ReadableStream): TaskEither<void>;
    /**
     * Gets the size of a file in bytes.
     * @param path The path to the file.
     * @returns A TaskEither containing the file size or an error.
     */
    getFileSize(path: string): TaskEither<number>;
    /**
     * Ensures that the directory for a given path exists.
     * @param path The path of the directory to check.
     * @returns A TaskEither containing the path if successful, or an error.
     */
    ensureDirectoryExists(path: string): TaskEither<string>;
}
//# sourceMappingURL=fileStorage.d.ts.map