import WebSocket from "isomorphic-ws"; import EventEmitter from "events"; import { TaskQueue } from "@welshman/lib"; import { RelayMessage, ClientMessage } from "./message.js"; import { AuthState } from "./auth.js"; import { Unsubscriber } from "./util.js"; export declare enum SocketStatus { Open = "open", Opening = "opening", Closing = "closing", Closed = "closed", Error = "error" } export declare enum SocketEvent { Error = "error", Status = "status", Send = "send", Sending = "sending", Receive = "receive", Receiving = "receiving" } export type SocketEvents = { [SocketEvent.Error]: (error: string, url: string) => void; [SocketEvent.Status]: (status: SocketStatus, url: string) => void; [SocketEvent.Send]: (message: ClientMessage, url: string) => void; [SocketEvent.Sending]: (message: ClientMessage, url: string) => void; [SocketEvent.Receive]: (message: RelayMessage, url: string) => void; [SocketEvent.Receiving]: (message: RelayMessage, url: string) => void; }; export type SocketPolicy = (socket: Socket) => Unsubscriber; export declare class Socket extends EventEmitter { readonly url: string; readonly policies: SocketPolicy[]; static batchSize: number; static batchDelay: number; auth: AuthState; status: SocketStatus; unsubscribers: Unsubscriber[]; _ws?: WebSocket; _sendQueue: TaskQueue; _recvQueue: TaskQueue; constructor(url: string, policies?: SocketPolicy[]); open: () => void; attemptToOpen: () => void; close: () => void; cleanup: () => void; send: (message: ClientMessage) => void; } //# sourceMappingURL=socket.d.ts.map