/**
 * The Node-backed seam.
 *
 * The kernel deliberately hands tools only two abstract capabilities — {@link Fs}
 * and {@link Shell} — and forbids any tool from reaching for `node:fs` or
 * `node:child_process` on its own. This module is the single sanctioned place
 * where those abstractions are bound to the real operating system. Everything
 * here talks to Node directly *on purpose*; nothing above this layer does.
 *
 * Three things are exported: {@link nodeFs}, a filesystem backed by
 * `node:fs/promises`; {@link nodeShell}, a command runner backed by
 * `node:child_process`; and {@link makeNodeContext}, which staples those two
 * onto a working directory, a cancellation signal, and an output budget to
 * produce the {@link ToolContext} that tests and the live runtime feed to tools.
 */
import type { Fs, Shell, ToolContext, OutputBudget } from "../kernel";
/** The shared Node-backed {@link Fs} instance. */
export declare const nodeFs: Fs;
/** The shared Node-backed {@link Shell} instance. */
export declare const nodeShell: Shell;
/**
 * Assemble a {@link ToolContext} backed by the real Node filesystem and shell.
 *
 * This is the production wiring as well as the default test seam: a `cwd` is
 * required, while the cancellation `signal` and output `budget` fall back to a
 * never-aborting signal and the kernel's standard window when omitted.
 */
export declare function makeNodeContext(cwd: string, signal?: AbortSignal, budget?: OutputBudget, framework?: {
    readonly [key: string]: unknown;
}): ToolContext;
