import type { conform } from "./generics.js" import type { join } from "./lists.js" export type stringifyUnion = join, ", "> export type unionToTuple = unionToTupleRecurse extends infer result ? conform : never type unionToTupleRecurse< t, result extends unknown[] > = getLastBranch extends infer current ? [t] extends [never] ? result : unionToTupleRecurse, [current, ...result]> : never type getLastBranch = intersectUnion< t extends unknown ? (x: t) => void : never > extends (x: infer branch) => void ? branch : never export type intersectUnion = ( t extends unknown ? (_: t) => void : never ) extends (_: infer intersection) => void ? intersection : never