declare type EventArgs = T extends any[] ? T : T extends any ? [T] : never[]; declare type EventReceiver = (...args: EventArgs) => void; interface EventMap { [event: string]: any; } export declare class Emitter { private callbacks; on(event: E, callback: EventReceiver): this; once(event: E, fn: EventReceiver): this; off(event: E, callback: EventReceiver): this; emit(event: E, ...args: EventArgs): this; removeListeners(): void; } export {};