export type ListenerSignature = { [E in keyof L]: (...args: any[]) => any; }; export type DefaultListener = { [k: string]: (...args: any[]) => any; }; export class TypedEmitter = DefaultListener> { static defaultMaxListeners: number; addListener(event: U, listener: L[U]): this; prependListener(event: U, listener: L[U]): this; prependOnceListener(event: U, listener: L[U]): this; removeListener(event: U, listener: L[U]): this; removeAllListeners(event?: keyof L): this; once(event: U, listener: L[U]): this; on(event: U, listener: L[U]): this; off(event: U, listener: L[U]): this; emit(event: U, ...args: Parameters): boolean; eventNames(): U[]; listenerCount(type: keyof L): number; listeners(type: U): L[U][]; rawListeners(type: U): L[U][]; getMaxListeners(): number; setMaxListeners(n: number): this; }