export default interface ITypedEventEmitter { waitOn(eventType: K, listenerFn?: (this: this, event?: T[K]) => boolean, timeoutMillis?: number): Promise; on(eventType: K, listenerFn: (this: this, event?: T[K]) => any, includeUnhandledEvents?: boolean): this; off(event: K, listener: (this: this, event?: T[K]) => any): this; once(eventType: K, listenerFn: (this: this, event?: T[K]) => any, includeUnhandledEvents?: boolean): this; emit(eventType: K, event?: T[K]): boolean; addListener(event: K, listener: (this: this, event?: T[K]) => any, includeUnhandledEvents?: boolean): this; removeListener(event: K, listener: (this: this, event?: T[K]) => any): this; prependListener(event: K, listener: (this: this, event?: T[K]) => void, includeUnhandledEvents?: boolean): this; prependOnceListener(event: K, listener: (this: this, event?: T[K]) => void, includeUnhandledEvents?: boolean): this; }