import { MatrixActor } from '../../core/MatrixActor';
import type { SExpr } from '../SExpr';
import type { ITravelingMessage } from '../ITravelingMessage';
/**
 * BootstrapNode - The foundation of the Virtual LISP Machine
 *
 * This component implements the bare minimum needed to bootstrap LISP:
 * - McCarthy's 7 primitives: quote, atom, eq, car, cdr, cons, cond
 * - Essential additions: null?, pair?, list, number?, boolean?, and, or, not
 * - Special forms: if, lambda, letrec, apply
 * - Arithmetic for practical use: +, -, *, /, <, >, =
 *
 * The magic: It can receive a TravelingMessage containing the interpreter
 * itself as data. This enables the "interpreter-in-message" pattern where
 * the evaluation semantics travel with the computation.
 *
 * Mount: {namespace}.bootstrap
 *
 * @example
 * // Simple evaluation
 * await callComponent('flowpad.bootstrap', 'eval', {
 *   expr: ['+', 1, 2, 3]
 * })
 * // → 6
 *
 * @example
 * // Traveling interpreter pattern
 * await callComponent('flowpad.bootstrap', 'evalTraveling', {
 *   expr: ['*', 5, 5],
 *   eval: METACIRCULAR_EVAL,  // The interpreter travels with the message!
 *   continuation: 'results.topic'
 * })
 */
export declare class BootstrapNode extends MatrixActor {
    static accepts: {
        eval: {
            expr: string;
        };
        evalTraveling: {
            expr: string;
            eval: string;
            continuation: string;
        };
    };
    static emits: {
        evaluated: {
            expr: string;
            result: string;
            durationMs: string;
        };
        evalError: {
            expr: string;
            error: string;
        };
        resultSent: {
            continuation: string;
            result: string;
        };
    };
    protected onBootstrap(): Promise<void>;
    /**
     * Evaluate expression with bootstrap primitives only
     */
    onEval(params: {
        expr: SExpr;
    }): Promise<unknown>;
    /**
     * Evaluate traveling message (interpreter-in-message pattern)
     *
     * THIS IS THE KEY: The eval field contains the LISP interpreter as data.
     * The bootstrap node runs the traveling interpreter on the expression.
     * The continuation field is where to send the result.
     *
     * If no eval is provided, use the default METACIRCULAR_EVAL.
     */
    onEvalTraveling(params: ITravelingMessage): Promise<unknown>;
    /**
     * Bootstrap evaluator - the "last turtle"
     * Knows ONLY McCarthy's 7 primitives + essential additions.
     */
    private _bootstrapEval;
}
//# sourceMappingURL=BootstrapNode.d.ts.map