export type RecordToUnion> = T[keyof T] export type UnionToIntersection = ( U extends unknown ? (arg: U) => 0 : never ) extends (arg: infer I) => 0 ? I : never export type ShortEmits> = UnionToIntersection< RecordToUnion<{ [K in keyof T]: T[K] extends (...args: any[]) => any ? (evt: K, ...args: Parameters) => void : (evt: K, ...args: T[K]) => void }> > export function defineEmits< T extends ((...args: any[]) => any) | Record, >(): T extends (...args: any[]) => any ? T : ShortEmits