import { open } from "node:fs/promises"; import { type SessionLayout } from "./layout.js"; export interface StoredFileMetadata { readonly version: 1; readonly fileId: string; readonly sessionId: string; readonly fileRef: string; readonly displayName: string; readonly declaredType: string | null; readonly detectedType: string; readonly sourceSha256: string; readonly size: number; readonly createdAt: string; readonly draft: boolean; } export interface StoredManifest { readonly version: 1; readonly file_ref: string; readonly source_sha256: string; readonly parser: string; readonly parts: readonly unknown[]; readonly [key: string]: unknown; } export interface PublishInput { readonly uploadId: string; readonly fileId: string; readonly displayName: string; readonly declaredType: string | null; readonly detectedType: string; readonly sourceSha256: string; readonly size: number; readonly createdAt: string; readonly draft: boolean; readonly manifest: { readonly version: 1; readonly parser: string; readonly parts: readonly unknown[]; readonly [key: string]: unknown; }; } export interface PublishedFile { readonly fileRef: string; readonly directory: string; readonly metadata: StoredFileMetadata; } export interface ResolvedSourceFile { readonly path: string; readonly metadata: StoredFileMetadata; } export declare class WorkspaceRepository { readonly layout: SessionLayout; readonly sessionId: string; private constructor(); static open(workspace: string, sessionId: string): Promise; createIncoming(uploadId: string): Promise>>; incomingPath(uploadId: string): string; fileDirectory(fileId: string): string; publishIncoming(input: PublishInput): Promise; readMetadata(fileId: string): Promise; readManifest(fileId: string): Promise; readSource(fileId: string): Promise; sourcePath(fileId: string): string; artifactPath(fileId: string, kind: "parts" | "renders", name: string): string; writeManifest(fileId: string, manifest: StoredManifest): Promise; resolveAttachment(fileRef: string): Promise; resolveSource(fileRef: string): Promise; adopt(fileId: string): Promise; removeDraft(fileId: string): Promise; }