import type { FileEntry, FileStat, FileMetadata } from "../types/FileEntry"; import type { Disposable } from "../types/Common"; import type { FSEvent } from "../types/Events"; import type { IFileSystemCapabilities } from "./FileSystemCapabilities"; /** * Virtual File System interface * Provides a uniform API for different storage backends */ export interface IFileSystem { // File operations readFile(path: string): Promise; writeFile( path: string, content: any, metadata?: FileMetadata, ): Promise; deleteFile(path: string): Promise; exists(path: string): Promise; // Directory operations readDir(path: string): Promise; mkdir(path: string, recursive?: boolean): Promise; rmdir(path: string, recursive?: boolean): Promise; // File system operations rename(oldPath: string, newPath: string): Promise; move(sourcePaths: string[], targetPath: string): Promise; copy(sourcePath: string, targetPath: string): Promise; // Watch operations watch(pattern: string, callback: (event: FSEvent) => void): Disposable; // Utility operations stat(path: string): Promise; glob(pattern: string): Promise; // Storage management clear(): Promise; size(): Promise; // Permission checking /** * Verifica se o caminho pode ser modificado (escrita/delete) * @returns true se permitido, false se readonly ou sem permissão */ canModify(path: string): Promise; /** * Verifica se pode criar arquivos no diretório * @returns true se permitido, false se readonly ou sem permissão */ canCreateIn(parentPath: string): Promise; // Atomic operations /** * Escreve arquivo de forma atômica (write to temp + rename) * Fallback para writeFile normal se não suportado */ writeFileAtomic?( path: string, content: any, metadata?: FileMetadata, ): Promise; /** * Retorna as capacidades deste file system */ readonly capabilities?: IFileSystemCapabilities; }