import { type WebSocketAudience } from "./ws-audience"; export type WebSocketClusterEnvelope = { id: string; sourceNodeId: string; targetNodeIds?: string[]; namespace?: string; audience: WebSocketAudience; event: string; data: unknown; emittedAt: number; }; export type WebSocketClusterEnvelopeHandler = ( envelope: WebSocketClusterEnvelope, ) => void | Promise; export interface WebSocketClusterBus { publish(envelope: WebSocketClusterEnvelope): void | Promise; subscribe(handler: WebSocketClusterEnvelopeHandler): () => void; shutdown(): void | Promise; } export class NoopWebSocketClusterBus implements WebSocketClusterBus { publish(_envelope: WebSocketClusterEnvelope): void {} subscribe(_handler: WebSocketClusterEnvelopeHandler): () => void { return () => {}; } shutdown(): void {} }