import type { Ary } from './ary.js'; import type { Cast, Eq$ } from './common.js'; import type { Assume, HKT1, HKT2, Pipe2 } from './hkt.js'; import type { List } from './list.js'; type _ToList> = { 0: _ToList, [LastU, ...LN]>; 1: LN; }[[U] extends [never] ? 1 : 0]; type Last = IntersectOf void : never> extends ( x: infer P, ) => void ? P : never; export type IntersectOf = ( U extends unknown ? (k: U) => void : never ) extends (k: infer I) => void ? I : never; export declare namespace Union { type ToList = _ToList extends infer X ? Cast : never; type Of1 = A; interface Of1$ extends HKT1 { new: (a: Assume) => Of1; } type Of2 = A | B; interface Of2$ extends HKT1 { new: (a: Assume) => Of2; } interface Of2$$ extends HKT2 { new: (a: Assume) => Of2; } type ExcludeEmptyObject = Pipe2< ToList, List.Reject$>>, Ary.Elem$ >; interface ExcludeEmptyObject$ extends HKT1 { new: (u: Assume) => ExcludeEmptyObject; } } export {}; //# sourceMappingURL=union.d.ts.map