/**
 * InterpretStage - Interpreter creation and script execution.
 *
 * Creates the Interpreter instance with appropriate options and
 * runs the parsed AST, producing a BashExecResult. If a defense
 * handle is active, execution runs inside its sandboxed context.
 */
import type { AgenticHealer } from "../../agentic/agentic-healer.js";
import type { Bash, BashOptions, ExecOptions } from "../../Bash.js";
import type { MountableFs } from "../../fs/mountable-fs/index.js";
import type { DebuggerBridge } from "../../interpreter/index.js";
import type { ExecutionLimits } from "../../limits.js";
import type { SemanticEngine } from "../../lsp/semantic-engine.js";
import type { SecureFetch } from "../../network/index.js";
import type { BashExecResult, CommandRegistry, FeatureCoverageWriter, TraceCallback } from "../../types.js";
import type { PipelineContext, PipelineStage, StageResult } from "../types.js";
/**
 * Configuration needed by the interpret stage that comes from the Bash instance.
 * These are set once at pipeline construction time.
 */
export interface InterpretStageConfig {
    fs: MountableFs;
    commands: CommandRegistry;
    limits: Required<ExecutionLimits>;
    execFn: (commandLine: string, options?: ExecOptions) => Promise<BashExecResult>;
    secureFetch: SecureFetch | undefined;
    sleepFn: ((ms: number) => Promise<void>) | undefined;
    traceFn: TraceCallback | undefined;
    coverageWriter: FeatureCoverageWriter | undefined;
    jsBootstrapCode: string | undefined;
    onCommandNotFound: BashOptions["onCommandNotFound"];
    agentic: boolean;
    debugger: DebuggerBridge | undefined;
    semanticEngine: SemanticEngine;
    agenticHealer: AgenticHealer | undefined;
    bash: Bash;
    /**
     * Whether the interpreter should require an active defense-in-depth context.
     * Mirrors the monolith's `defenseBox?.isEnabled() === true` computed in
     * Bash.exec from the real DefenseInDepthBox (NOT inferred from the handle,
     * because a box may be activated yet report isEnabled() === false).
     */
    requireDefenseContext: boolean;
}
export declare class InterpretStage implements PipelineStage {
    readonly name = "interpret";
    private readonly config;
    constructor(config: InterpretStageConfig);
    execute(context: PipelineContext): Promise<StageResult>;
}
