/// import type { EventEmitter } from 'events'; export type EventKey = string & keyof T; export type EventListener> = (...params: T) => void; export type EventMap = Record>>; export interface TypedEmitter extends EventEmitter { eventNames(): (string | symbol)[]; getMaxListeners(): number; setMaxListeners(n: number): this; on>(eventName: K, fn: T[K]): this; off>(eventName: K, fn: T[K]): this; once>(eventName: K, fn: T[K]): this; addListener>(eventName: K, fn: T[K]): this; prependListener>(eventName: K, fn: T[K]): this; prependOnceListener>(eventName: K, fn: T[K]): this; removeListener>(eventName: K, fn: T[K]): this; removeAllListeners>(eventName?: K): this; emit>(eventName: K, ...args: Parameters): boolean; listenerCount>(eventName: K): number; listeners>(eventName: K): T[K][]; rawListeners>(eventName: K): T[K][]; }