import { Observable } from 'rxjs'; type O = Record; export type Event

= { type: string; payload: P; }; export type FireEvent = (event: E) => void; export type EventBus = { event$: Observable; fire: FireEvent; type(): EventBus; filter(fn: EventBusFilter): EventBus; }; export type EventBusFilter = (e: E) => boolean;