import type { CatalogDiagnostic, CatalogEntry, ResourceRevision } from '@forgeax/engine-types'; import { type AssetLoadError, type Result } from '@forgeax/engine-types'; import type { CatalogSource } from '../catalog-source.js'; import { type RuntimeCatalogRow } from './validate-runtime-row.js'; export interface CatalogSessionOptions { readonly scopeId?: string; readonly generation?: number; } export interface CatalogSessionSnapshot { readonly scopeId: string; readonly generation: number; readonly epoch: number; readonly revision?: ResourceRevision; readonly entries: readonly CatalogEntry[]; readonly changed: readonly string[]; readonly removed: readonly string[]; readonly diagnostics: readonly CatalogDiagnostic[]; readonly listenerFailures: number; readonly stale: boolean; } type SessionResult = Result; type SessionListener = (snapshot: CatalogSessionSnapshot) => void; export declare class CatalogSession { private readonly source; private readonly scopeId; private readonly generation; private readonly entries; private readonly reads; private readonly lifetime; private readonly listeners; private unsubscribe; private baselinePromise; private reconcilePromise; private pending; private currentSnapshot; private revision; private diagnostics; private listenerFailures; private changed; private removed; private epoch; private stale; private staleGeneration; private started; private disposed; constructor(source: CatalogSource, options?: CatalogSessionOptions); start(): Promise; reconcile(): Promise; current(guid: string): CatalogEntry | undefined; get(guid: string): Promise>; snapshot(): CatalogSessionSnapshot; discontinuity(): AssetLoadError | undefined; subscribe(listener: SessionListener): () => void; dispose(): void; private receive; private resolveRow; private fold; private addDiagnostic; private markStale; private publish; private disposedError; } export {}; //# sourceMappingURL=catalog-session.d.ts.map