export interface SocketTransport { send(data: string): void; close(): void; /** @returns unsubscribe */ onMessage(listener: (data: string) => void): () => void; /** @returns unsubscribe */ onClose(listener: () => void): () => void; } /** The `addEventListener` shape: browsers, Deno, Cloudflare Workers. */ interface EventTargetLike { send(data: string): void; close(): void; addEventListener(type: string, listener: (event: any) => void): void; removeEventListener(type: string, listener: (event: any) => void): void; } /** The `.on()` shape: `ws` on Node. */ interface EventEmitterLike { send(data: string): void; close(): void; on(type: string, listener: (...args: any[]) => void): void; off(type: string, listener: (...args: any[]) => void): void; } /** * Adapts an `addEventListener`-style socket — a browser `WebSocket`, * `Deno.upgradeWebSocket`'s socket, or a Cloudflare Workers `WebSocketPair` end. */ export declare function fromEventTarget(socket: EventTargetLike): SocketTransport; /** * Adapts a Node `EventEmitter`-style socket — a `ws` connection. * * `ws` v8 hands the payload as a `Buffer` even for text frames, so it is * stringified here. Binary frames therefore arrive as their UTF-8 * interpretation; this package only ever speaks JSON. */ export declare function fromEventEmitter(socket: EventEmitterLike): SocketTransport; export {}; //# sourceMappingURL=transport.d.ts.map