import type { WorkspaceTarget } from './dist-lib/types/workspace/contracts.js'; import type { WorkspaceSourceBaseline, WorkspaceSourceReconcileInput, WorkspaceSourceReconcileResult } from './dist-lib/types/workspace/source/flowContracts.js'; import type { compileWorkspaceDocumentSource } from './dist-lib/types/workspace/source/structure.js'; import type { JsxStructureAnchor, JsxStructureIdentity, JsxStructureSourceNode, JsxStructureWrapperEvidence } from './source-structure.js'; export type ReconcileSourceInputs = Readonly>; export interface ReconcileSourceProjection { anchors: JsxStructureAnchor[]; nodes: JsxStructureSourceNode[] } export interface JsxSourceReconcilerOptions { file: string; identityFile: string; /** Additional nullable inputs, captured at construction. Each requires an own input key and proof on both sides. * Names must be unique, nonblank, and different from file. identityFile is always included and may appear once. Default: []. */ optionalInputFiles?: readonly string[]; rootId: string; definitionId: string; screenId: string; documentId: string; opaqueNodeIds: readonly string[]; /** The owner validates original expressions and allowed source structure. */ projectSource(input: { source: string; identity: JsxStructureIdentity | null; sourceInputs: ReconcileSourceInputs }): ReconcileSourceProjection; resolveWrapper?(inputs: ReconcileSourceInputs): JsxStructureWrapperEvidence | undefined; /** Pass the SDK's document compiler; injecting it avoids loading the browser bundle in Node. */ compileDocumentSource: typeof compileWorkspaceDocumentSource; /** Explicit policy for a unique byte-identical island; changed or duplicate islands remain conflicts. Default: false. */ allowUnchangedIslandRelocation?: boolean; } export interface JsxReconcileInputs { baselineInputs: ReconcileSourceInputs; externalInputs: ReconcileSourceInputs; baselineIdentity?: JsxStructureIdentity; } export interface JsxSourceReconciler { projectInputs(input: JsxReconcileInputs): { identity: JsxStructureIdentity; projectedStructure: ReconcileSourceProjection }; reconcile(input: WorkspaceSourceReconcileInput & JsxReconcileInputs & { loadBaseline(input: { target: WorkspaceTarget; sourceInputs: ReconcileSourceInputs; projectedStructure: ReconcileSourceProjection }, signal?: AbortSignal): Promise; }, signal?: AbortSignal): Promise; } export declare function createJsxSourceReconciler(options: JsxSourceReconcilerOptions): JsxSourceReconciler;