import { type TSchema } from '../../types/schema.mjs'; import { type TAny } from '../../types/any.mjs'; import { type TNever } from '../../types/never.mjs'; import { type TObject } from '../../types/object.mjs'; import { type TUnknown } from '../../types/unknown.mjs'; import { type TCompare, CompareResultLeftInside, CompareResultEqual, CompareResultDisjoint } from './compare.mjs'; import { type TFlatten } from './flatten.mjs'; import { type TEvaluateType } from './evaluate.mjs'; type TBroadenFilter = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TCompare extends typeof CompareResultLeftInside | typeof CompareResultEqual ? All : TCompare extends typeof CompareResultDisjoint ? TBroadenFilter : TBroadenFilter : [...Result, Type]); type TBroadenType> = (Evaluated extends TAny ? [Evaluated] : Evaluated extends TUnknown ? [Evaluated] : Evaluated extends TNever ? TBroadenTypes : Evaluated extends TObject ? TBroadenTypes : TBroadenTypes>); type TBroadenTypes = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TBroadenType : Result); export type TBroaden, Flattened extends TSchema[] = TFlatten> = Flattened; /** Broadens a set of types and returns either the most broad type, or union or disjoint types. */ export declare function Broaden(types: [...Types]): TBroaden; export {};