import type { WebSocket, Event as OpenEvent, MessageEvent, ErrorEvent, CloseEvent } from 'ws'; import { TypedArray } from '@blackglory/prelude'; import { Queue, Emitter } from '@blackglory/structures'; export declare enum BinaryType { NodeBuffer = 0, ArrayBuffer = 1, Fragments = 2 } export declare enum State { Closed = 0, Connecting = 1, Connected = 2, Closing = 3 } type Data = string | ArrayBufferLike | Buffer | TypedArray | DataView; export declare class ExtraWebSocket extends Emitter<{ open: [event: OpenEvent]; message: [event: MessageEvent]; error: [event: ErrorEvent]; close: [event: CloseEvent]; }> { private createWebSocket; private instance?; private binaryType; protected unsentMessages: Queue; constructor(createWebSocket: () => WebSocket); getState(): State; getBinaryType(): BinaryType; setBinaryType(val: BinaryType): void; connect(signal?: AbortSignal): Promise; close(code?: number, reason?: string): Promise; send(data: Data): void; ping(): void; } export {};