type EventMap = Record; type EventKey = string & keyof KeyMap; type EventReceiver = (params: KeyMap) => void; export interface Emitter { on>(eventName: Key, fn: EventReceiver): void; off>(eventName: Key, fn: EventReceiver): void; emit>(eventName: Key, params: KeyMap[Key]): void; } export declare class EventEmitter implements Emitter { listeners: { [Key in keyof EventMap]?: ((p: EventMap[Key]) => void)[]; }; on>(eventName: Key, fn: EventReceiver): void; off>(eventName: Key, fn: EventReceiver): void; emit>(eventName: Key, data?: KeyMap[Key]): void; } export {};