/* eslint-disable no-unused-vars */ import { EventEmitter } from 'events'; import { EventArgs, Events } from './structures/Events'; type ValueOf = T[keyof T]; export class ApplicationEventEmitter extends EventEmitter { public emit(event: K, ...args: EventArgs[K]) { return super.emit(event, ...args); } public on>(event: K, listener: (...args: EventArgs[K]) => any) { return super.on(event, listener as () => void); } public off>(event: K, listener: (...args: EventArgs[K]) => any) { return super.off(event, listener as () => void); } }