import type { JSONRPCValidationResult } from "./schemas/jsonrpc"; declare global { interface WebSocketStream { readonly opened: Promise<{ readable: ReadableStream; writable: WritableStream; }>; readonly closed: Promise; close(code?: number, reason?: string): void; } const WebSocketStream: { new (url: string): WebSocketStream; }; } interface WebSocketConfig { maxReconnectAttempts: number; initialReconnectDelay: number; maxReconnectDelay: number; lastReconnectDelay: number; heartbeatInterval: number; enableKeepAlive: boolean; handleMessage: (validMessage: JSONRPCValidationResult, ws: WebSocketClient) => void; onReceiveMessage?: (event: any) => void; } interface WebSocketInfo { url: string; connected: boolean; clientId: string; connectionId: number | null; pendingCalls?: number; } export declare class WebSocketClient { private ws; private wsStream; private streamWriter; private url; private config; private connectionId; private cleanupInterval; private isManualDisconnect; private reconnectAttempts; private reconnectDelay; private heartbeatInterval; constructor(url: string, config?: Partial); private isValidWebSocketUrl; private stopCleanupInterval; private stopHeartbeat; private startHeartbeat; private attemptReconnect; private onOpen; private onClose; private getClientId; private initializeWebSocketStream; send(data: any, useStream?: boolean): Promise; isConnected(): boolean; getInfo(): WebSocketInfo; /** * Force reconnection even if currently connected */ forceReconnect(): void; /** * Get heartbeat interval in milliseconds (for testing) */ getHeartbeatInterval(): number; /** * Get keep-alive enabled status (for testing) */ getEnableKeepAlive(): boolean; disconnect(): void; connect(): void; } export {};