import { Checkpoint, type ThreadMessages } from "../runtime/state/checkpointStore.js";
export type ValWithOverride = {
    key: string;
    value: unknown;
    override?: unknown;
};
export declare class UIState {
    private callStack;
    private activityLog;
    private pendingOverrides;
    private mode;
    private checkpoint?;
    private sourceMap?;
    private currentLine?;
    private args;
    private locals;
    private globals;
    private stdoutContent;
    private sourceMapCache;
    constructor();
    static fromCheckpoint(checkpoint: Checkpoint | undefined): UIState;
    /**
     * Resolve a moduleId (e.g., "stdlib/index.agency") to an actual file path,
     * trying the given extensions. Handles stdlib modules that live inside
     * node_modules/agency-lang/stdlib/ when running from an external project.
     */
    resolveModulePath(moduleId: string, extensions: string[]): string | null;
    private agencyToJsFile;
    setCheckpoint(checkpoint: Checkpoint | undefined): Promise<void>;
    setWithOverrides(obj: Record<string, unknown>, array: ValWithOverride[]): void;
    log(message: string): void;
    setSourceMap(): Promise<void>;
    setMode(mode: "stepping" | "running"): void;
    setOverride(key: string, value: unknown): void;
    getThreadMessages(displayIndex?: number): ThreadMessages | null;
    getModuleId(): string;
    getCurrentLine(): number;
    getArgs(): ValWithOverride[];
    getLocals(): ValWithOverride[];
    getGlobals(): ValWithOverride[];
    pushCallStackEntry({ functionName, moduleId, line, }: {
        functionName: string;
        moduleId: string;
        line: number;
    }): void;
    removeWithFuncName(functionName: string): void;
    getCallStack(): {
        functionName: string;
        moduleId: string;
        line: number;
    }[];
    resetCallStack(): void;
    getOverrides(): Record<string, unknown>;
    resetOverrides(): void;
    getActivityLog(): string[];
    stepping(): void;
    addToStdout(text: string): void;
    getStdout(): string[];
    getTokenStats(): {
        totalTokens: number;
        totalCost: number;
    };
    toJSON(): {
        callStack: {
            functionName: string;
            moduleId: string;
            line: number;
        }[];
        activityLog: string[];
        pendingOverrides: Record<string, unknown>;
        mode: "stepping" | "running";
        checkpoint: {
            id: number;
            stack: import("../runtime/state/stateStack.js").StateStackJSON;
            globals: import("../runtime/state/globalStore.js").GlobalStoreJSON;
            nodeId: string;
            moduleId: string;
            scopeName: string;
            stepPath: string;
            label: string | null;
            pinned: boolean;
        } | undefined;
        args: ValWithOverride[];
        locals: ValWithOverride[];
        globals: ValWithOverride[];
        stdoutContent: string[];
    };
    static fromJSON(json: any): UIState;
    clone(): UIState;
    private isInternalVar;
    private filterDupeVals;
}
