import type { z } from "zod"; import type { IInboundDescriptor } from "./realtime-handler.interface"; export interface IRealtimeHandlerRegistry { register(entry: IInboundDescriptor>): void; getInboundDescriptor(channelName: string): IInboundDescriptor | null; list(): IInboundDescriptor[]; } export class RealtimeHandlerRegistry implements IRealtimeHandlerRegistry { private readonly entries = new Map>(); register(entry: IInboundDescriptor>): void { this.entries.set(entry.descriptor.name, entry as IInboundDescriptor); } getInboundDescriptor(channelName: string): IInboundDescriptor | null { return this.entries.get(channelName) ?? null; } list(): IInboundDescriptor[] { return Array.from(this.entries.values()); } }