import { type TSchema } from '../../types/schema.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TDeferred } from '../../types/deferred.mjs'; import { type TEnum, type TEnumValue } from '../../types/enum.mjs'; import { type TTemplateLiteral } from '../../types/template_literal.mjs'; import { type TRef } from '../../types/ref.mjs'; import { type TParameter } from '../../types/parameter.mjs'; import { type TEvaluateTemplateLiteral } from '../evaluate/evaluate.mjs'; import { type TEvaluateEnum } from '../evaluate/evaluate.mjs'; type TCollectDistributionNames = (Expression extends TDeferred<'Conditional', [infer Left extends TSchema, infer _Right extends TSchema, infer True extends TSchema, infer False extends TSchema]> ? Left extends TRef ? TCollectDistributionNames> : TCollectDistributionNames> : Expression extends TDeferred<'Mapped', [infer _Identifier extends TSchema, infer Type extends TSchema, infer _As extends TSchema, infer _Property extends TSchema]> ? (Type extends TDeferred<'KeyOf', [infer Ref extends TRef]> ? [...Result, Ref['$ref']] : Result) : Result); type TBuildDistributionArray = (Parameters extends [infer Left extends TParameter, ...infer Right extends TParameter[]] ? Left['name'] extends Names[number] ? TBuildDistributionArray : TBuildDistributionArray : Result); type TZipDistributionArray = (Arguments extends [infer ArgumentLeft extends TSchema, ...infer ArgumentRight extends TSchema[]] ? DistributionArray extends [infer BooleanLeft extends boolean, ...infer BooleanRight extends boolean[]] ? TZipDistributionArray : Result : Result); type TCanonicalArgument = (Type extends TTemplateLiteral ? TEvaluateTemplateLiteral : Type extends TEnum ? TEvaluateEnum : Type); type TExpand> = (CanonicalArgument extends TUnion ? [...Types] : [CanonicalArgument]); type TAppend = (Current extends [infer Left extends TSchema[], ...infer Right extends TSchema[][]] ? TAppend : Result); type TCross = (Variants extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TCross]> : Result); type TDistribute = (ZippedArguments extends [infer Left extends [boolean, TSchema], ...infer Right extends [boolean, TSchema][]] ? Left[0] extends true ? TDistribute>> : TDistribute> : Result); export type TDistributeArguments, DistributionArray extends boolean[] = TBuildDistributionArray, ZippedArguments extends [boolean, TSchema][] = TZipDistributionArray, Result extends TSchema[][] = (Expression extends TDeferred<'Conditional', TSchema[]> ? TDistribute : Expression extends TDeferred<'Mapped', TSchema[]> ? TDistribute : [Arguments])> = Result; export declare function DistributeArguments(parameters: [...Parameters], arguments_: [...Arguments], expression: Expression): TDistributeArguments; export {};