import type * as http from 'http'; import type * as https from 'https'; export type { http, https }; import type * as wsTypes from 'ws'; export declare namespace ws { type WebSocket = wsTypes.WebSocket; type WebSocketServer = wsTypes.WebSocketServer; type RawData = wsTypes.RawData; } /** * Unified WebSocket type supporting both browser and Node.js environments */ export type TWebSocket = WebSocket | ws.WebSocket; /** * Message event type for WebSocket messages (browser and Node.js compatible) */ export type TMessageEvent = MessageEvent | { data: string; }; /** * WebSocket-like interface for adapters (e.g., smartserve peer adapter) */ export interface IWebSocketLike { readyState: number; send(data: string): void; close(code?: number, reason?: string): void; addEventListener(event: 'message', listener: (event: TMessageEvent) => void): void; addEventListener(event: 'close', listener: () => void): void; addEventListener(event: 'error', listener: () => void): void; removeEventListener?(event: string, listener: (...args: any[]) => void): void; } export interface ISmartserveWebSocketPeer { id: string; url: string; readyState: 0 | 1 | 2 | 3; protocol: string; extensions: string; send(data: string): void; sendBinary(data: Uint8Array | ArrayBuffer): void; close(code?: number, reason?: string): void; ping(data?: Uint8Array): void; terminate(): void; context: any; data: Map; tags: Set; } export interface ISmartserveWebSocketMessage { type: 'text' | 'binary'; text?: string; data?: Uint8Array; size: number; } export interface ISmartserveWebSocketHooks { onOpen?: (peer: ISmartserveWebSocketPeer) => void | Promise; onMessage?: (peer: ISmartserveWebSocketPeer, message: ISmartserveWebSocketMessage) => void | Promise; onClose?: (peer: ISmartserveWebSocketPeer, code: number, reason: string) => void | Promise; onError?: (peer: ISmartserveWebSocketPeer, error: Error) => void | Promise; }