import { IWebSocketTransport, TWireData } from '../types'; export type TConnectCall = { url: string; protocols?: string | string[]; }; export type TDisconnectCall = { code?: number; reason?: string; }; /** * In-memory WebSocket transport for tests. Implements `IWebSocketTransport` * so it can be passed to `WebSocketManager` in place of the real browser * transport. * * `TWire` mirrors the manager's wire type and defaults to `string` (the * manager's own default), so `sentMessages` is `string[]` in the common * case. Widen it to match a binary manager: * `new MockTransport()`. * * ```ts * const transport = new MockTransport(); * const manager = new WebSocketManager({ * url: "ws://test", * serialize: (m) => JSON.stringify(m), * deserialize: (r) => JSON.parse(r), * transport, * }); * * manager.connect(); * transport.simulateOpen(); * transport.simulateMessage(JSON.stringify({ type: "hello" })); * expect(transport.sentMessages).toContain(...); * ``` */ export declare class MockTransport implements IWebSocketTransport { onopen: ((event: Event) => void) | null; onclose: ((event: CloseEvent) => void) | null; onmessage: ((event: MessageEvent) => void) | null; onerror: ((event: Event) => void) | null; binaryType?: "blob" | "arraybuffer"; readyState: number; /** Every `connect(url, protocols?)` call captured in order. */ connectCalls: TConnectCall[]; /** * Every payload passed to `send(data)` in order. Typed as the mock's * `TWire` parameter (default `string`); widen the parameter when the * manager runs in binary mode. */ sentMessages: TWire[]; /** Every `disconnect(code?, reason?)` call captured in order. */ disconnectCalls: TDisconnectCall[]; connect(url: string, protocols?: string | string[]): void; disconnect(code?: number, reason?: string): void; send(data: TWireData): void; /** Drive the transport into the OPEN state and fire `onopen`. No-op unless CONNECTING. */ simulateOpen(): void; /** * Close the connection. Defaults to code 1006 (abnormal close) so the * manager treats it as a drop and schedules a reconnect. Pass 1000 to * simulate a clean close. No-op when already CLOSED. */ simulateClose(code?: number, reason?: string): void; /** Deliver a server message frame to the manager. No-op unless OPEN. */ simulateMessage(data: string): void; /** Fire `onerror`. No-op when CLOSED. */ simulateError(): void; /** Wipe captured calls and messages. Listeners stay attached. */ reset(): void; } /** Factory for `MockTransport`. Equivalent to `new MockTransport()`. */ export declare function createMockTransport(): MockTransport; //# sourceMappingURL=mock-transport.d.ts.map