/** * An EventEmitter that supports events given by the interface in {T} * Where each Key represents the eventName and the type represents the payload * This interface is based on the implementation here: https://github.com/Gozala/events/blob/master/events.js * * @export * @interface TypedEventEmitter * @template T */ export default interface TypedEventEmitter { on(name: K, listener: (v: T[K]) => void): this; addListener(event: K, listener: (v: T[K]) => void): this; once(event: K, listener: (v: T[K]) => void): this; prependListener(event: K, listener: (v: T[K]) => void): this; prependOnceListener(event: K, listener: (v: T[K]) => void): this; removeListener(event: K, listener: (v: T[K]) => void): this; off(event: K, listener: (v: T[K]) => void): this; removeAllListeners(event?: K): this; setMaxListeners(n: number): this; getMaxListeners(): number; listeners(event: K): (v: T[K]) => void[]; rawListeners(event: K): (v: T[K]) => void[]; emit(event: K, args: T[K]): boolean; eventNames(): Array; listenerCount(type: K): number; }