import type { DapCapabilities, DapClientState, DapEventMessage, DapInitializeArguments, DapRequestMessage, DapResolvedAdapter } from "./types"; interface DapSpawnOptions { adapter: DapResolvedAdapter; cwd: string; } /** Minimal write interface shared by Bun.FileSink and Bun TCP sockets. */ interface DapWriteSink { write(data: string | Uint8Array): number | Promise; flush(): number | Promise | undefined; } type DapEventHandler = (body: unknown, event: DapEventMessage) => void | Promise; type DapReverseRequestHandler = (args: unknown) => unknown | Promise; export declare class DapClient { #private; readonly adapter: DapResolvedAdapter; readonly cwd: string; readonly proc: DapClientState["proc"]; constructor(adapter: DapResolvedAdapter, cwd: string, proc: DapClientState["proc"], options?: { readable?: ReadableStream; writeSink?: DapWriteSink; socket?: { end(): void; }; }); static spawn({ adapter, cwd }: DapSpawnOptions): Promise; get capabilities(): DapCapabilities | undefined; get lastActivity(): number; isAlive(): boolean; initialize(args: DapInitializeArguments, signal?: AbortSignal, timeoutMs?: number): Promise; onEvent(event: string, handler: DapEventHandler): () => void; onAnyEvent(handler: DapEventHandler): () => void; onReverseRequest(command: string, handler: DapReverseRequestHandler): () => void; waitForEvent(event: string, predicate?: (body: TBody) => boolean, signal?: AbortSignal, timeoutMs?: number): Promise; sendRequest(command: string, args?: unknown, signal?: AbortSignal, timeoutMs?: number): Promise; sendResponse(request: DapRequestMessage, success: boolean, body?: unknown, message?: string): Promise; dispose(): Promise; } export {};