import { EventEmitter } from 'events'; import ITypedEventEmitter from '../interfaces/ITypedEventEmitter'; import { IBoundLog } from '../interfaces/ILog'; import IRegisteredEventListener from '../interfaces/IRegisteredEventListener'; export default class TypedEventEmitter extends EventEmitter implements ITypedEventEmitter { #private; storeEventsWithoutListeners: boolean; EventTypes: T; onEventListenerAdded?: (event: K) => void; private pendingIdCounter; private pendingWaitEventsById; private eventsToLog; private storedEventsByType; private reemitterCountByEventType; constructor(); cancelPendingEvents(message?: string, excludeEvents?: (keyof T & string)[]): void; setEventsToLog(logger: IBoundLog, events: K[]): void; waitOn(eventType: K, listenerFn?: (this: this, event?: T[K]) => boolean, timeoutMillis?: number): Promise; addEventEmitter(emitter: TypedEventEmitter, eventTypes: K[]): IRegisteredEventListener[]; on(eventType: K, listenerFn: (this: this, event?: T[K]) => any, includeUnhandledEvents?: boolean): this; off(eventType: K, listenerFn: (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], sendInitiator?: object): boolean; addListener(eventType: K, listenerFn: (this: this, event?: T[K]) => any, includeUnhandledEvents?: boolean): this; removeListener(eventType: K, listenerFn: (this: this, event?: T[K]) => any): this; prependListener(eventType: K, listenerFn: (this: this, event?: T[K]) => void, includeUnhandledEvents?: boolean): this; prependOnceListener(eventType: K, listenerFn: (this: this, event?: T[K]) => void, includeUnhandledEvents?: boolean): this; protected defaultErrorLogger(this: this, error: Error): void; private replayOrClearMissedEvents; private logEvent; }