import { SdapiClient } from './sdapi-client.js';
import type { BreakpointInput, DebugSessionCallbacks, DebugSessionConfig, SdapiBreakpoint, SdapiScriptThread } from './types.js';
export declare class DebugSessionManager {
    readonly client: SdapiClient;
    private readonly config;
    private readonly callbacks;
    private readonly logger;
    private pollTimer?;
    private keepaliveTimer?;
    /** Last known thread states keyed by thread id */
    private knownThreads;
    private connected;
    constructor(config: DebugSessionConfig, callbacks?: DebugSessionCallbacks);
    /**
     * Connect to the debugger: enable the client, start polling and keepalive.
     */
    connect(): Promise<void>;
    /**
     * Disconnect: stop timers, delete client.
     */
    disconnect(): Promise<void>;
    /**
     * Set breakpoints (replaces all current breakpoints).
     */
    setBreakpoints(breakpoints: BreakpointInput[]): Promise<SdapiBreakpoint[]>;
    /**
     * Resume a halted thread.
     */
    resume(threadId: number): Promise<void>;
    /**
     * Step over (next line).
     */
    stepOver(threadId: number): Promise<void>;
    /**
     * Step into function.
     */
    stepInto(threadId: number): Promise<void>;
    /**
     * Step out of function.
     */
    stepOut(threadId: number): Promise<void>;
    /**
     * Get the current list of known threads (from last poll).
     */
    getKnownThreads(): SdapiScriptThread[];
    private stopTimers;
    private keepalive;
    private haltLocationChanged;
    private logThreadHalted;
    private pollThreads;
}
