import type { BindingNodeContext, HostDataCapabilities } from '../binding/contracts.js'; import { WorkspaceDataCatalogs } from '../binding/workspaceData.js'; import type { DesignDocument, DocumentDiagnostic, DocumentEngine } from '../document/contracts.js'; import { type WorkspaceConfiguration, type WorkspaceTargetConfiguration, type WorkspaceDocumentLoadProgress } from './configuration.js'; import type { WorkspaceTarget } from './contracts.js'; export interface WorkspaceDocumentSession { target: WorkspaceTarget; status: 'idle' | 'loading' | 'ready' | 'error'; engine?: DocumentEngine; error?: string; loadProgress?: WorkspaceDocumentLoadProgress; saving: boolean; reimporting: boolean; savedRevision: number; dirty: boolean; /** Includes persisted edits even after autosave clears dirty. */ hasDraft: boolean; configuration?: WorkspaceTargetConfiguration; configurationRevision: number; } export declare function documentBindingNodes(document: DesignDocument): BindingNodeContext[]; /** Bindings participate in the document commit, never in a parallel history. */ export declare function documentBindingPreflight(capabilities: HostDataCapabilities | undefined | (() => HostDataCapabilities | undefined)): ({ before, after }: { before: DesignDocument; after: DesignDocument; }) => readonly DocumentDiagnostic[]; /** A runtime owns this collection; mode switches do not destroy its draft engines. */ export declare class WorkspaceDocumentSessions { readonly dataCatalogs: WorkspaceDataCatalogs; private sessions; private pending; private restoring; private pendingReimports; private subscriptions; private configurations; private baselines; private savedSnapshots; private pendingSaves; private listeners; private disposed; subscribe: (listener: () => void) => () => void; getSnapshot: (target: WorkspaceTarget) => WorkspaceDocumentSession; private update; restore(target: WorkspaceTarget, configuration: WorkspaceConfiguration): Promise; /** Stop an abandoned import while retaining every already-loaded draft. */ cancelLoad(target: WorkspaceTarget): boolean; load(target: WorkspaceTarget, configuration: WorkspaceConfiguration, savedOnly?: boolean): Promise; save(target: WorkspaceTarget, explicitSave?: NonNullable): Promise; /** An explicit recovery replaces only the in-memory draft, in one undoable transaction. */ reimport(target: WorkspaceTarget): Promise; /** Reset means the snapshot first loaded for this target, including a persisted draft. */ reset(target: WorkspaceTarget): boolean; hasUnsavedChanges(): boolean; dispose(): void; }