/// /// import EventEmitter from 'events'; import { ConnectionOptions, Data, Socket } from './index.js'; import { SatelliteError, SocketCloseReason } from '../util/index.js'; type WriteType = SupportBuffer extends false ? Data : Data | Buffer; interface MessageEvent { data: T; } interface CloseEvent { code: number; reason: string; } export interface IWebSocket { send(data: WriteType): void; addEventListener(event: 'open', cb: () => void): void; addEventListener(event: 'message', cb: (ev: MessageEvent) => void): void; addEventListener(event: 'error', cb: (ev: any) => void): void; addEventListener(event: 'close', cb: (ev: CloseEvent) => void): void; removeEventListener(event: 'open' | 'message' | 'error' | 'close', cb: (...args: any[]) => void): void; close(): void; } export declare abstract class GenericWebSocket extends EventEmitter implements Socket { protected abstract socket?: IWebSocket; protected abstract makeSocket(opts: ConnectionOptions): IWebSocket; private openListener; protected messageListener: (ev: MessageEvent) => void; private errorListener; private closeListener; constructor(); open(opts: ConnectionOptions): this; write(data: WriteType): this; closeAndRemoveListeners(): this; onMessage(cb: (data: Data) => void): void; onError(cb: (error: SatelliteError) => void): void; onClose(cb: (reason: SocketCloseReason) => void): void; onceConnect(cb: () => void): void; onceError(cb: (error: SatelliteError) => void): void; removeErrorListener(cb: (error: SatelliteError) => void): void; } export {};