import type { AdminMode } from './admin-adapter'; export interface FrontendFileEntry { path: string; isDir: boolean; size: number; modTime: string; } export interface FrontendFileDocument { path: string; content: string; size: number; } export interface FrontendUploadFile { name: string; text: string; } export interface FrontendWorkspaceTransport { listFiles(): Promise; readFile(path: string): Promise; writeFile(path: string, content: string): Promise; movePath(fromPath: string, toPath: string): Promise; deletePath(path: string): Promise; uploadFiles(files: FrontendUploadFile[], directory?: string): Promise; } export interface FrontendTreeNode { name: string; path: string; isDir: boolean; children?: FrontendTreeNode[]; } export interface FrontendWorkspaceSnapshot { mode: AdminMode; files: FrontendFileEntry[]; tree: FrontendTreeNode[]; selectedPath: string | null; status: string; editor: { value: string; dirty: boolean; language: string; }; } export interface FrontendWorkspace { connect(): Promise; selectPath(path: string): Promise; editContent(content: string): FrontendWorkspaceSnapshot; save(): Promise; moveSelection(nextPath: string): Promise; deleteSelection(): Promise; upload(files: FrontendUploadFile[], directory?: string): Promise; refresh(): Promise; snapshot(): FrontendWorkspaceSnapshot; } export interface FrontendWorkspaceOptions { mode: AdminMode; transport: FrontendWorkspaceTransport; } interface ResponseLike { ok: boolean; status: number; json(): Promise; } type FetchLike = (input: string, init?: RequestInit) => Promise; export interface ServerFrontendTransportOptions { baseUrl: string; fetch?: FetchLike; } export declare function createFrontendWorkspace(options: FrontendWorkspaceOptions): FrontendWorkspace; export declare function createServerFrontendTransport(options: ServerFrontendTransportOptions): FrontendWorkspaceTransport; export declare function createLocalFrontendTransport(files?: Record): FrontendWorkspaceTransport; export declare function buildFrontendTree(files: FrontendFileEntry[]): FrontendTreeNode[]; export {}; //# sourceMappingURL=frontend-workspace.d.ts.map