type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; type LastOf = UnionToIntersection T : never> extends () => infer R ? R : never; type Push = [...T, V]; export type TuplifyUnion, N = [T] extends [never] ? true : false> = true extends N ? [] : Push>, L>; export {};