type OptionalKeys> = { [K in keyof T]: T extends Record ? never : K }[keyof T] type RequiredKeys> = Exclude< keyof T, OptionalKeys > type MonoArgEmitter = ( evt: K, arg?: T[K], ) => void type BiArgEmitter = ( evt: K, arg: T[K], ) => void export type EventEmitter> = MonoArgEmitter< T, OptionalKeys > & BiArgEmitter> export type AnyFunction = (...args: any[]) => T export type PartialReturnType< T extends (...args: unknown[]) => unknown > = Partial>