import type { SchemaOptions, TSchema } from '../schema/index'; import { type TNever } from '../never/index'; import { type TOptional } from '../optional/index'; import type { TReadonly } from '../readonly/index'; import type { TUnion } from './union-type'; type TIsUnionOptional = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? Left extends TOptional ? true : TIsUnionOptional : false); type TRemoveOptionalFromRest = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? Left extends TOptional ? TRemoveOptionalFromRest]> : TRemoveOptionalFromRest : Result); type TRemoveOptionalFromType = (Type extends TReadonly ? TReadonly> : Type extends TOptional ? TRemoveOptionalFromType : Type); type TResolveUnion, IsOptional extends boolean = TIsUnionOptional> = (IsOptional extends true ? TOptional> : TUnion); export type TUnionEvaluated = (Types extends [TSchema] ? Types[0] : Types extends [] ? TNever : TResolveUnion); /** `[Json]` Creates an evaluated Union type */ export declare function UnionEvaluated>(T: [...Types], options?: SchemaOptions): Result; export {};