export type EventName = string | symbol; export type EventHandlers = Record; export type EventHandler = (event: T[K]) => void; export type AllEventsHandler = (type: K, event: T[K]) => void; /** * Lightweight event emitter */ export declare class Emitter { private handlers; /** * Add a listener for an event */ on(name: '*', handler: AllEventsHandler): void; on(name: K, handler: EventHandler): void; /** * Remove a listener from an event */ off(name: K, handler: EventHandler): void; /** * Subscribe to an event and return an unsubscribe function. */ subscribe(name: K, handler: EventHandler): () => void; /** * Emit an event. */ emit(name: K, event: T[K]): void; }