import { ListenerFn } from 'eventemitter3'; interface IEventMap extends Array { [0]: string; [1]: ListenerFn; [2]?: any; } interface IEventEmitter { on(event: string, fn: ListenerFn, context?: any): this; off(event: string, fn?: ListenerFn, context?: any, once?: boolean): this; emitAsync(event: string | symbol, ...args: any[]): Promise | void; bindEvents(eventsMap: IEventMap[], defaultFnContext?: any): () => void; destroy(): void; } interface IEventEmitterAPI { on?(event: string, fn: ListenerFn, context?: any): this; off?(event: string, fn?: ListenerFn, context?: any, once?: boolean): this; } export { IEventEmitterAPI, IEventEmitter, IEventMap };