export interface CdpSocket { addEventListener(event: string, listener: (event: { data: string; }) => void): void; removeEventListener(event: string, listener: (event: { data: string; }) => void): void; send(payload: string): void; close(): void; } export interface CdpMessage { id?: number; method?: string; params?: unknown; result?: unknown; error?: { message?: string; code?: number; }; sessionId?: string; } export type CdpEventListener = (message: CdpMessage) => void; export interface CdpConnectionOptions { endpoint: string; connectSocket?: (webSocketUrl: string) => Promise; timeoutMs?: number; } export declare class CdpConnection { private readonly options; private nextId; private socket?; private readonly pending; private readonly eventListeners; constructor(options: CdpConnectionOptions); connect(): Promise; call(method: string, params?: Record, sessionId?: string): Promise; close(): void; onEvent(listener: CdpEventListener): () => void; waitForEvent(predicate: (message: CdpMessage) => boolean, timeoutMs?: number): Promise; private readonly handleMessage; }