export type DumpTupleRecordEntriesToUnion = { [id in keyof T]-?: T[id] extends [infer Event, infer EventOpt] ? T[id] : never; }[keyof T]; type UnionToIntersection = (U extends any ? (a: (k: U) => void) => void : never) extends (a: infer I) => void ? I : never; type UnionLast = UnionToIntersection extends (a: infer I) => void ? I : never; export type UnionToTuple = [ U ] extends [never] ? [] : [ ...UnionToTuple>>, UnionLast ]; export type Equals = (() => T extends X ? 1 : 2) extends (() => T extends Y ? 1 : 2) ? true : false; export {};