/** * RPC message transport abstraction. * * A transport moves whole Cap'n Proto RPC messages (unpacked, stream-framed) between * two vats. WebSocket is the reference implementation: ws frames delimit messages, so * no additional length-prefix framing is needed. */ export declare function isWebSocketLike(value: unknown): value is WebSocketLike; export interface Transport { close(): void; /** Register the (single) close/error callback. */ onClose(cb: (err?: Error) => void): void; /** Register the (single) incoming-message callback. */ onMessage(cb: (data: Uint8Array) => void): void; /** Send one complete RPC message. */ send(data: Uint8Array): void; } /** * The subset of the WHATWG WebSocket surface Conn needs; satisfied by both the browser * WebSocket and the `ws` package's server-side sockets. */ export interface WebSocketLike { addEventListener(type: "message", listener: (event: { data: unknown; }) => void): void; addEventListener(type: "close", listener: () => void): void; addEventListener(type: "error", listener: (event: unknown) => void): void; addEventListener(type: "open", listener: () => void): void; binaryType: string; close(): void; readyState: number; send(data: ArrayBufferLike | ArrayBufferView): void; } export declare class WebSocketTransport implements Transport { /** Messages sent before the socket opened; flushed on open. */ private pending?; private readonly ws; constructor(ws: WebSocketLike); close(): void; onClose(cb: (err?: Error) => void): void; onMessage(cb: (data: Uint8Array) => void): void; send(data: Uint8Array): void; }