///
///
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 {};