/** * Primitive node contracts — minimal stubs to support `each` testing. * * Phase 1 PR-2 registers contracts for the control-flow primitives that * `each` fixtures need to compose realistic bodies: * * - `__trace` — test-only node; emits one configurable trace event * - `break` — sets completion to `{kind: 'break'}` * - `continue` — sets completion to `{kind: 'continue'}` * - `return` — sets completion to `{kind: 'return', value}` * - `throw` — sets completion to `{kind: 'throw', error}` * - `__breakIfEqual` — fixture helper for conditional loop exits * - `__assignIndex` — fixture helper for mutating an indexed binding * * These are explicitly minimal and stay until Phase 2 lands full * contracts for `do`/`let`/`assign`. `__trace` is a permanent fixture * helper — it is never emitted by user code. */ import { type NodeContract } from './index.js'; /** Test-only: emits one trace event. Props.event must be a serialized TraceEvent. */ export declare const traceContract: NodeContract; export declare const breakContract: NodeContract; export declare const continueContract: NodeContract; export declare const returnContract: NodeContract; export declare const throwContract: NodeContract; export declare const breakIfEqualContract: NodeContract; export declare const assignIndexContract: NodeContract; /** * Idempotently register all primitive contracts. Safe to call from multiple * test files; subsequent calls are no-ops. Test cleanup that clears the * registry must re-call this. */ export declare function registerPrimitives(): void; /** Reset the registered flag — only for test cleanup that clears the registry. */ export declare function _resetPrimitivesForTest(): void;