export interface DebugResult {
    exitCode: number;
    stdout: string;
    stderr: string;
}
export interface DapBreakpoint {
    file: string;
    line: number;
}
export interface DapLaunchOptions {
    sessionId: string;
    adapterCommand: string;
    adapterArgs?: string[];
    program: string;
    args?: string[];
    breakpoints?: DapBreakpoint[];
}
export interface DapSessionResult {
    sessionId: string;
    initialized: boolean;
    output: string[];
    stoppedReason?: string;
    exited?: boolean;
}
export interface DapClientLike {
    launch(scriptPath: string, args?: string[]): Promise<DebugResult>;
    startSession(options: DapLaunchOptions): Promise<DapSessionResult>;
    setBreakpoints(sessionId: string, file: string, lines: number[]): Promise<unknown>;
    continue(sessionId: string, threadId?: number): Promise<unknown>;
    stackTrace(sessionId: string, threadId?: number): Promise<unknown>;
    scopes(sessionId: string, frameId: number): Promise<unknown>;
    variables(sessionId: string, variablesReference: number): Promise<unknown>;
    evaluate(sessionId: string, expression: string, frameId?: number): Promise<unknown>;
    disconnect(sessionId: string): Promise<void>;
    status(): DapStatus[];
    disconnectAll(): Promise<void>;
}
export interface DapStatus {
    sessionId: string;
    running: boolean;
    outputEvents: number;
    stoppedReason?: string;
}
export declare class DapClient {
    private cwd;
    private sessions;
    constructor(cwd: string);
    launch(scriptPath: string, args?: string[]): Promise<DebugResult>;
    startSession(options: DapLaunchOptions): Promise<DapSessionResult>;
    setBreakpoints(sessionId: string, file: string, lines: number[]): Promise<unknown>;
    continue(sessionId: string, threadId?: number): Promise<unknown>;
    stackTrace(sessionId: string, threadId?: number): Promise<unknown>;
    scopes(sessionId: string, frameId: number): Promise<unknown>;
    variables(sessionId: string, variablesReference: number): Promise<unknown>;
    evaluate(sessionId: string, expression: string, frameId?: number): Promise<unknown>;
    disconnect(sessionId: string): Promise<void>;
    status(): DapStatus[];
    disconnectAll(): Promise<void>;
    private getSession;
}
export declare function getOrCreateDapClient(cwd: string): DapClient;
export declare function closeDapClient(): Promise<void>;
//# sourceMappingURL=dap-client.d.ts.map