import { type BindingOrigin, type FlowExpressionContext, type ResolvedNodeBindings } from "../contract/expression.js"; import type { FlowDefinition, FlowNode, NodeExecutionSnapshot } from "./types.js"; /** Build the bounded expression context from immutable definition and snapshot state. */ export declare function buildFlowExpressionContext(flow: FlowDefinition, snapshots: Map): FlowExpressionContext; /** * Classify what one producer node's output counts as for a downstream binding. * * Transitive by induction, in a single lookup: a producer's persisted * `inputOrigins` were themselves classified under this rule when it ran, so * they already carry any taint from its own ancestors — no graph walk. Absent * origins read as `"agent"` (fail-closed): a snapshot persisted before the * field existed cannot prove the node's inputs were clean, and this label is * one a human approver acts on. `{}` — a node that bound nothing — is * `"runtime"`. */ export declare function producerOutputObtainedBy(producer: FlowNode, snapshot: NodeExecutionSnapshot | undefined): "agent" | "runtime"; /** Resolve one node's named inputs and derive their runtime/agent origins. */ export declare function resolveNodeBindings(flow: FlowDefinition, node: FlowNode, snapshots: Map, flowInputOrigins?: Record): ResolvedNodeBindings; /** Interpolate named, already-resolved binding values into an agent instruction. */ export declare function interpolateNodeInstruction(instruction: string, values: Record): string; //# sourceMappingURL=bindings.d.ts.map