///
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][];
}