Type Alias EmitFn<Options, Event>
EmitFn<Options, Event>: Options extends (infer V)[] ? ((event: V,
...args: any[]) => void) : {} extends Options ? ((event: string,
...args: any[]) => void) : UnionToIntersection<{ [key in Event]: Options[key] extends ((...args: infer Args) => any) ? ((event: key,
...args: Args) => void) : Options[key] extends any[] ? ((event: key,
...args: Options[key]) => void) : ((event: key,
...args: any[]) => void) }[Event]>