import { type TSchema } from '../../types/schema.mjs'; import { type TDependent } from '../../types/dependent.mjs'; import { type TEnum, type TEnumValue } from '../../types/enum.mjs'; import { type TIntersect } from '../../types/intersect.mjs'; import { type TLiteral } from '../../types/literal.mjs'; import { type TNever } from '../../types/never.mjs'; import { type TTemplateLiteral } from '../../types/template_literal.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TDistribute } from './distribute.mjs'; import { type TBroaden } from './broaden.mjs'; import { type TExcludeOperation } from '../exclude/operation.mjs'; import { type TTemplateLiteralDecode } from '../template_literal/decode.mjs'; export type TEvaluateDependent, Excluded extends TSchema = TExcludeOperation, Result extends TSchema = TEvaluateUnion<[Intersected, Excluded]>> = Result; export declare function EvaluateDependent(if_: If, then_: Then, else_: Else): TEvaluateDependent; export type TEvaluateEnum = (Values extends [infer Left extends TEnumValue, ...infer Right extends TEnumValue[]] ? TEvaluateEnum]> : TEvaluateUnion); export declare function EvaluateEnum(values: [...Values], result?: TSchema[]): TEvaluateEnum; export type TEvaluateIntersect, Broadend extends TSchema[] = TBroaden, Result extends TSchema = TEvaluateUnion> = Result; export declare function EvaluateIntersect(types: [...Types]): TEvaluateIntersect; export type TEvaluateTemplateLiteral, Result extends TSchema = TEvaluateType> = Result; export declare function EvaluateTemplateLiteral(pattern: Pattern): TEvaluateTemplateLiteral; export type TEvaluateUnion, Result extends TSchema = TEvaluateUnionFast> = Result; export declare function EvaluateUnion(types: [...Types]): TEvaluateUnion; export type TEvaluateType ? TEvaluateDependent : Type extends TEnum ? TEvaluateEnum : Type extends TIntersect ? TEvaluateIntersect : Type extends TTemplateLiteral ? TEvaluateTemplateLiteral : Type extends TUnion ? TEvaluateUnion : Type)> = Result; export declare function EvaluateType(type: Type): TEvaluateType; export type TEvaluateUnionFast)> = Result; export declare function EvaluateUnionFast(types: [...Types]): TEvaluateUnionFast;