import type { SourceMap } from "../backends/sourceMap.js";
import { DebuggerState } from "./debuggerState.js";
import type { Interrupt } from "../runtime/interrupts.js";
import type { AgencyCallbacks } from "../runtime/hooks.js";
import { Checkpoint } from "../runtime/state/checkpointStore.js";
import type { CheckpointStore } from "../runtime/state/checkpointStore.js";
import type { DebuggerIO } from "./types.js";
import type { FunctionParameter } from "../types.js";
import type { TraceHeader } from "../runtime/trace/types.js";
import type { InterruptResponse } from "../runtime/interrupts.js";
type ModuleFunctions = {
    respondToInterrupts: (interrupts: Interrupt[], responses: InterruptResponse[], opts?: {
        overrides?: Record<string, unknown>;
        metadata?: Record<string, any>;
    }) => Promise<any>;
    rewindFrom: (checkpoint: Checkpoint, overrides: Record<string, unknown>, opts?: {
        metadata?: Record<string, any>;
    }) => Promise<any>;
    __setDebugger: (dbg: DebuggerState) => void;
    __getCheckpoints: () => CheckpointStore;
};
type DriverOpts = {
    mod: ModuleFunctions;
    sourceMap: SourceMap;
    rewindSize: number;
    ui: DebuggerIO;
    checkpoints?: Checkpoint[];
    traceHeader?: TraceHeader;
};
type DriverRunOpts = Partial<{
    interceptConsole: boolean;
}>;
export declare class DebuggerDriver {
    private mod;
    private sourceMap;
    private ui;
    debuggerState: DebuggerState;
    private originalConsoleLog;
    private originalConsoleError;
    private programFinished;
    constructor(opts: DriverOpts);
    promptForNodeArgs(parameters: FunctionParameter[]): Promise<unknown[]>;
    private interceptConsole;
    private restoreConsole;
    getCallbacks(): AgencyCallbacks;
    run(initialResult: any, _opts?: DriverRunOpts): Promise<any>;
    private handleInterrupt;
    private handleCommand;
    private resumeInterrupt;
    private resume;
    private rewindTo;
    private lookupVariable;
    private isInSourceMap;
}
export {};
