/** Event union — every payload is JSON-serialisable. */ export type DashboardEvent = { type: 'session.spawned'; body: { session: any; }; } | { type: 'session.update'; body: { sessionId: string; patch: Record; }; } | { type: 'session.exited'; body: { sessionId: string; reason?: string; }; } | { type: 'schedule.created'; body: { schedule: any; }; } | { type: 'schedule.updated'; body: { id: string; patch: Record; }; } | { type: 'schedule.deleted'; body: { id: string; }; } | { type: 'schedule.fired'; body: { id: string; runAt: number; status: 'ok' | 'error'; error?: string; }; } | { type: 'schedule.timezone'; body: { timezone: string; }; } | { type: 'bots.changed'; body: { signature: string; }; } | { type: 'heartbeat'; body: { ts: number; }; }; export type Subscriber = (event: DashboardEvent) => void; export declare class DashboardEventBus { private subs; subscribe(fn: Subscriber): () => void; publish(event: DashboardEvent): void; } /** Process-wide singleton — daemon publishers and IPC SSE handler share. */ export declare const dashboardEventBus: DashboardEventBus; //# sourceMappingURL=dashboard-events.d.ts.map