import { type TSchema } from '../../types/schema.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TNarrow } from './narrow.mjs'; import { type TEvaluateIntersect } from './evaluate.mjs'; import { type TEvaluateType } from './evaluate.mjs'; type TShouldEvaluate = Result; type TDistributeOperation, EvaluatedRight extends TSchema = TEvaluateType, ShouldEvaluate extends boolean = TShouldEvaluate, Result extends TSchema = [ShouldEvaluate] extends [true] ? TEvaluateIntersect<[EvaluatedLeft, EvaluatedRight]> : TNarrow> = Result; type TDistributeType = (Distribution extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TDistributeType]> : Result extends [] ? [Type] : Result); type TDistributeUnion = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TDistributeUnion]> : Result); export type TDistribute = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? Left extends TUnion ? TDistribute> : TDistribute> : Result); export declare function Distribute(types: [...Types], result?: TSchema[]): TDistribute; export {};