type EventHandler = (data: T) => void | Promise; interface EventEmitter> { on(event: Event, handler: EventHandler): number; once(event: Event, handler: EventHandler): number; off(id: number): void; emit(event: Event, value: EventTypes[Event]): void; } declare class EventEmitter> { protected index: number; protected subscriptions: Map; } export { EventEmitter, type EventHandler };