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]; type TuplifyUnion, N = [T] extends [never] ? true : false> = true extends N ? [] : Push>, L>; export type ObjectToTuple, R extends any[] = []> = KS extends [infer K, ...infer KT] ? ObjectToTuple : R; export type TupleDifference = IsUndefined> extends infer R ? R : never>>; type IsUndefined = T extends Array ? [] : T; export {};