/**
 * NodeExecutor registry (M2; plan §M2 "NodeExecutor 注册表").
 *
 * Single source of truth mapping node `kind` → executor. fail-loud on unknown kinds and
 * duplicate registration. Built-in deterministic executors (set / if / merge) register here;
 * host-backed executors (agent / tool / http / mcp / channel) are injected by the host so the
 * engine stays a pure executor (plan D12/D13).
 */
import type { NodeExecutor } from "./node-schema.js";
export declare class NodeRegistry {
    private executors;
    constructor(includeBuiltins?: boolean);
    register(kind: string, executor: NodeExecutor): void;
    /** Replace an existing executor (e.g. host overrides a built-in). Must already exist. */
    override(kind: string, executor: NodeExecutor): void;
    has(kind: string): boolean;
    get(kind: string): NodeExecutor;
    kinds(): string[];
}
