import { EventEmitter } from 'events'; type EventMap = Record; type EventKey = string & keyof T; type IsUnion = T extends unknown ? ([U] extends [T] ? 0 : 1) : 2; type EventReceiver = IsUnion extends 1 ? (event: T) => void : T extends (...args: any[]) => any ? T : T extends undefined ? () => void : (event: T) => void; export interface TypedEmitter { on>(eventName: K, fn: EventReceiver): this; once>(eventName: K, fn: EventReceiver): this; addListener>(eventName: K, fn: EventReceiver): this; prependListener>(eventName: K, fn: EventReceiver): this; prependOnceListener>(eventName: K, fn: EventReceiver): this; off>(eventName: K, fn: EventReceiver): this; removeListener>(eventName: K, fn: EventReceiver): this; removeAllListeners>(event?: K): this; emit>(eventName: K, ...params: Parameters>): boolean; listeners>(eventName: K): EventReceiver[]; rawListeners>(eventName: K): EventReceiver[]; } export declare class TypedEmitter extends EventEmitter { listenerCount>(eventName: K): number; } export {}; //# sourceMappingURL=typedEventEmitter.d.ts.map