| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | /** * Minimal `EventEmitter` interface that is molded against the Node.js * `EventEmitter` interface. */declare class EventEmitter<  EventTypes extends EventEmitter.ValidEventTypes = string | symbol,  Context extends any = any> {  static prefixed: string | boolean;  /**   * Return an array listing the events for which the emitter has registered   * listeners.   */  eventNames(): Array<EventEmitter.EventNames<EventTypes>>;  /**   * Return the listeners registered for a given event.   */  listeners<T extends EventEmitter.EventNames<EventTypes>>(    event: T  ): Array<EventEmitter.EventListener<EventTypes, T>>;  /**   * Return the number of listeners listening to a given event.   */  listenerCount(event: EventEmitter.EventNames<EventTypes>): number;  /**   * Calls each of the listeners registered for a given event.   */  emit<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    ...args: EventEmitter.EventArgs<EventTypes, T>  ): boolean;  /**   * Add a listener for a given event.   */  on<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    fn: EventEmitter.EventListener<EventTypes, T>,    context?: Context  ): this;  addListener<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    fn: EventEmitter.EventListener<EventTypes, T>,    context?: Context  ): this;  /**   * Add a one-time listener for a given event.   */  once<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    fn: EventEmitter.EventListener<EventTypes, T>,    context?: Context  ): this;  /**   * Remove the listeners of a given event.   */  removeListener<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    fn?: EventEmitter.EventListener<EventTypes, T>,    context?: Context,    once?: boolean  ): this;  off<T extends EventEmitter.EventNames<EventTypes>>(    event: T,    fn?: EventEmitter.EventListener<EventTypes, T>,    context?: Context,    once?: boolean  ): this;  /**   * Remove all listeners, or those of the specified event.   */  removeAllListeners(event?: EventEmitter.EventNames<EventTypes>): this;}declare namespace EventEmitter {  export interface ListenerFn<Args extends any[] = any[]> {    (...args: Args): void;  }  export interface EventEmitterStatic {    new <      EventTypes extends ValidEventTypes = string | symbol,      Context = any    >(): EventEmitter<EventTypes, Context>;  }  /**   * `object` should be in either of the following forms:   * ```   * interface EventTypes {   *   'event-with-parameters': any[]   *   'event-with-example-handler': (...args: any[]) => void   * }   * ```   */  export type ValidEventTypes = string | symbol | object;  export type EventNames<T extends ValidEventTypes> = T extends string | symbol    ? T    : keyof T;  export type ArgumentMap<T extends object> = {    [K in keyof T]: T[K] extends (...args: any[]) => void      ? Parameters<T[K]>      : T[K] extends any[]      ? T[K]      : any[];  };  export type EventListener<    T extends ValidEventTypes,    K extends EventNames<T>  > = T extends string | symbol    ? (...args: any[]) => void    : (        ...args: ArgumentMap<Exclude<T, string | symbol>>[Extract<K, keyof T>]      ) => void;  export type EventArgs<    T extends ValidEventTypes,    K extends EventNames<T>  > = Parameters<EventListener<T, K>>;  export const EventEmitter: EventEmitterStatic;}export { EventEmitter }export default EventEmitter;
 |