import { Context, Effect, Layer } from "effect"; import { EventBroadcaster } from "./event-broadcaster.js"; export interface EventHubSubscription { readonly subscriberId: string; readonly stream: ReadableStream; readonly latestEventId: number; readonly replayGap: boolean; } export interface EventHubSessionStats { readonly sessionId: string; readonly connected: boolean; readonly subscribers: number; readonly replayBytes: number; readonly replayEvents: number; readonly latestEventId: number; readonly oldestEventId: number | null; } export interface EventHubStats { readonly sessions: number; readonly connectedSessions: number; readonly subscribers: number; readonly replayBytes: number; readonly replayEvents: number; readonly bySession: ReadonlyArray; } declare const EventHub_base: Context.TagClass EventBroadcaster; readonly remove: (sessionId: string) => void; readonly subscribe: (sessionId: string, afterEventId?: number) => Effect.Effect; readonly unsubscribe: (sessionId: string, subscriberId: string) => Effect.Effect; readonly broadcast: (sessionId: string, event: unknown) => void; readonly markConnected: (sessionId: string) => void; readonly markDisconnected: (sessionId: string) => void; readonly stats: () => EventHubStats; }>; export declare class EventHub extends EventHub_base { static readonly layer: Layer.Layer; } export {};