/** * ReferenceRunner — the canonical TS interpreter that judges both emitters. * * Three-way parity (council convergence): naive TS-vs-Python comparison hits * the "which side is right?" problem. The reference runner is a pure TS * implementation of the spec; the [[harness]] compares both emitters against * it. A 3-way disagreement isolates which leg is wrong. * * Phase 1 (PR-1) shipped the dispatcher; concrete node contracts register * their behavior through the shared registry. */ import type { IRNode } from '../../types.js'; import { type SemanticEnv } from './index.js'; import { type Trace } from './trace.js'; /** * Execute `node` under `env` and return its observable trace. * * Dispatch is by `node.type` against the contract registry. Nodes with no * registered contract throw — better than silently passing through, since * the differential harness needs a known judgment. */ export declare function referenceRun(node: IRNode, env: SemanticEnv): Trace; /** Run a sequence of nodes, threading the env. Stops on non-normal completion. */ export declare function referenceRunSequence(nodes: readonly IRNode[], env: SemanticEnv): Trace; export declare class ReferenceRunnerError extends Error { readonly node: IRNode; constructor(message: string, node: IRNode); }