import type { RuntimeHooks } from '../types/hooks';
export type StepMode = 'continue' | 'over' | 'into' | 'out' | 'pause';
export interface BreakpointCondition {
    id: string;
    type: 'command' | 'element' | 'expression';
    value: string;
    enabled: boolean;
    hitCount: number;
}
export interface DebugSnapshot {
    commandName: string;
    element: Element | null;
    variables: Record<string, unknown>;
    timestamp: number;
    depth: number;
    index: number;
}
export interface DebugState {
    enabled: boolean;
    paused: boolean;
    stepMode: StepMode;
    callDepth: number;
    pauseDepth: number;
    currentSnapshot: DebugSnapshot | null;
}
export type DebugEventType = 'paused' | 'resumed' | 'snapshot' | 'enabled' | 'disabled';
export type DebugEventListener = (data: DebugSnapshot | undefined) => void;
export declare class DebugController {
    private state;
    private history;
    private breakpoints;
    private snapshotIndex;
    private _resumeResolver;
    private listeners;
    readonly hooks: RuntimeHooks;
    constructor();
    on(event: DebugEventType, listener: DebugEventListener): () => void;
    private emit;
    enable(): void;
    disable(): void;
    get enabled(): boolean;
    continue(): void;
    pause(): void;
    stepOver(): void;
    stepInto(): void;
    stepOut(): void;
    private resume;
    setBreakpoint(condition: Omit<BreakpointCondition, 'id' | 'hitCount'>): string;
    removeBreakpoint(id: string): boolean;
    getBreakpoints(): BreakpointCondition[];
    clearBreakpoints(): void;
    getState(): Readonly<DebugState>;
    getHistory(): DebugSnapshot[];
    clearHistory(): void;
    private beforeExecute;
    private afterExecute;
    private shouldPause;
    private hitBreakpoint;
    private evaluateCondition;
    private captureSnapshot;
}
//# sourceMappingURL=debug-controller.d.ts.map