export interface EventDefinitions { [key: string]: EventListener; } export declare type EventKeys = keyof T; export declare type EventListener = (...args: any[]) => void; export interface IEventSource { on>(event: T, listener: TEvents[T]): void; off>(event: T, listener: TEvents[T]): void; } export declare class EventEmitter any; }> implements IEventSource { listeners: Map; on>(event: T, listener: TEvents[T]): void; off>(event: T, listener: TEvents[T]): void; emit>(event: T, ...args: Parameters): void; with(): EventEmitter; }