import { DebugMessage } from "../debug-protocol.js"; //#region src/debug/bus-websocket.d.ts /** TLV section ids for the WS wire (distinct from data FEATURE_IDs). */ declare const WIRE_SECTION: { readonly JSON: 100; readonly BIN: 101; }; declare function isProviderToConsumer(type: string): boolean; declare function isConsumerToProvider(type: string): boolean; /** * Encode a DebugMessage (+ its origin channel name) into a wire frame. * Binary payloads (ArrayBuffers and typed-array views anywhere in the * message) travel as raw TLV sections instead of JSON. */ declare function encodeDebugMessage(msg: DebugMessage, channelName: string): ArrayBuffer; /** Decode a wire frame back into `{ message, channelName }`. */ declare function decodeDebugMessage(buffer: ArrayBuffer): { message: DebugMessage; channelName: string; }; /** Minimal WebSocket surface (browser WebSocket and `ws` both satisfy it). */ interface WebSocketLike { binaryType: string; readyState: number; send(data: ArrayBuffer): void; close(): void; addEventListener(type: string, listener: (event: never) => void): void; removeEventListener(type: string, listener: (event: never) => void): void; } interface RemoteBridgeHandle { dispose(): void; } interface ProviderBridgeOptions { /** An open (or connecting) WebSocket, or a URL to connect to. */ remote: WebSocketLike | string; /** The provider's per-provider data channel name. */ dataChannelName: string; /** The discovery channel name. */ discoveryChannelName: string; /** * Provider id — lets the bridge send `provider:gone` over the wire * synchronously on dispose (BroadcastChannel delivery is async, so * the provider's own goodbye can't reach the tap before it closes). */ providerId?: string; } /** * Provider-side bridge: taps the provider's BroadcastChannels * (in-process bus untouched) and mirrors provider→consumer traffic to * the socket; decoded consumer→provider traffic is re-posted onto the * matching local channel, where the provider picks it up exactly as if * a local consumer had sent it. */ declare function createProviderRemoteBridge(options: ProviderBridgeOptions): RemoteBridgeHandle; interface ConsumerBridgeOptions { /** An open (or connecting) WebSocket, or a URL to connect to. */ remote: WebSocketLike | string; /** The discovery channel name (defaults handled by the caller). */ discoveryChannelName: string; } /** * Consumer/dashboard-side bridge: decoded provider traffic is posted * onto the local channels (the dashboard sees a remote provider exactly * like a local one); consumer control traffic on those channels is * encoded back over the socket. Per-provider data channels are learned * lazily from the frames' channel tags. */ declare function createConsumerRemoteBridge(options: ConsumerBridgeOptions): RemoteBridgeHandle; //#endregion export { ConsumerBridgeOptions, ProviderBridgeOptions, RemoteBridgeHandle, WIRE_SECTION, WebSocketLike, createConsumerRemoteBridge, createProviderRemoteBridge, decodeDebugMessage, encodeDebugMessage, isConsumerToProvider, isProviderToConsumer }; //# sourceMappingURL=bus-websocket.d.ts.map