export interface WebsocketEvents { close: { code: number; reason: string }; message: { data: unknown }; open: unknown; } export interface PingMsg { type: "ping"; time: number; dc: string; } export interface AnyWebSocket { addEventListener( type: K, listener: (event: WebsocketEvents[K]) => void, options?: { once: boolean }, ): void; removeEventListener( type: K, listener: (event: WebsocketEvents[K]) => void, ): void; close(): void; send(data: string): void; readyState: number; bufferedAmount: number; } export interface AnyWebSocketConstructor { new (url: string): AnyWebSocket; }