import { type Result } from '@forgeax/engine-rhi'; import type { AssetPublicationEnvelope, CatalogEntry, ScenePublicationFence as EngineScenePublicationFence } from '@forgeax/engine-types'; export declare const SCENE_PUBLICATION_FENCE_SCHEMA: "scene-publication-fence/1"; export declare const SCENE_PUBLICATION_RECOVERY_ACTIONS: readonly ["continue-last-known-good", "retry-rebuild", "fresh-reopen"]; export type ScenePublicationFence = EngineScenePublicationFence; export type ScenePublicationFencePhase = 'publication' | 'catalog' | 'observation' | 'instantiate'; export interface ScenePublicationFenceError { readonly code: 'asset-generation-fence-mismatch'; readonly phase: ScenePublicationFencePhase; readonly hint: string; readonly sourcePath?: string; readonly sourceRevision?: string; readonly expected?: ScenePublicationFence; readonly actual?: ScenePublicationFence; readonly currentGeneration?: number; readonly lastKnownGood?: ScenePublicationFence; readonly retryable: boolean; readonly recoveryActions: readonly string[]; } export interface ScenePublicationObservation { readonly fence: ScenePublicationFence; readonly outputs: readonly string[]; } /** Convert one complete Engine publication into the serializable Scene fence. */ export declare function createScenePublicationFence(publication: AssetPublicationEnvelope): Result; /** Parse the persisted fence without guessing legacy generation or identity. */ export declare function parseScenePublicationFence(value: unknown): Result; /** Compare all fence fields; no single generation or GUID may stand in for it. */ export declare function compareScenePublicationFences(expected: ScenePublicationFence, actual: ScenePublicationFence, lastKnownGood?: ScenePublicationFence): Result; /** Derive a fence only when every Catalog row for the source publication is present and aligned. */ export declare function scenePublicationFenceFromCatalog(entries: readonly CatalogEntry[], outputGuid: string): Result; export declare function observeScenePublication(input: { readonly publication: AssetPublicationEnvelope; readonly waitForOutput: (guid: string) => Promise; readonly timeoutMs?: number; readonly lastKnownGood?: ScenePublicationFence; }): Promise>; //# sourceMappingURL=scene-publication-fence.d.ts.map