declare type StringKeyOf = Extract; declare type CallbackType, EventName extends StringKeyOf> = T[EventName] extends any[] ? T[EventName] : [T[EventName]]; declare type CallbackFunction, EventName extends StringKeyOf> = (...props: CallbackType) => any; export declare class EventEmitter> { private callbacks; on>(event: EventName, fn: CallbackFunction): this; protected emit>(event: EventName, ...args: CallbackType): this; off>(event: EventName, fn?: CallbackFunction): this; protected removeAllListeners(): void; } export {};