import { type TSchema } from '../../types/schema.mjs'; import { type TAny } from '../../types/any.mjs'; import { type TArray } from '../../types/array.mjs'; import { type TConstructor } from '../../types/constructor.mjs'; import { type TCyclic } from '../../types/cyclic.mjs'; import { type TFunction } from '../../types/function.mjs'; import { type TIntersect } from '../../types/intersect.mjs'; import { type TObject } from '../../types/object.mjs'; import { type TProperties } from '../../types/properties.mjs'; import { type TRecord } from '../../types/record.mjs'; import { type TRef } from '../../types/ref.mjs'; import { type TTuple } from '../../types/tuple.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TUnknown } from '../../types/unknown.mjs'; type TFromRef<_Ref extends string> = (TAny); type TFromProperties; }> = { [Key in keyof Result]: Result[Key]; }; type TFromTypes = Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TFromTypes]> : Result; type TFromType = (Type extends TRef ? TFromRef : Type extends TArray ? TArray> : Type extends TConstructor ? TFunction, TFromType> : Type extends TFunction ? TFunction, TFromType> : Type extends TIntersect ? TIntersect> : Type extends TObject ? TObject> : Type extends TRecord ? TRecord> : Type extends TUnion ? TUnion> : Type extends TTuple ? TTuple> : Type); type TCyclicAnyFromParameters = (Ref extends keyof Defs ? TFromType : TUnknown); /** Transforms TCyclic TRef's into TAny's. This function is used prior to TExtends checks to enable cyclics to be structurally checked and terminated (with TAny) at first point of recursion, what would otherwise be a recursive TRef.*/ export type TCyclicExtends> = Result; /** Transforms TCyclic TRef's into TAny's. This function is used prior to TExtends checks to enable cyclics to be structurally checked and terminated (with TAny) at first point of recursion, what would otherwise be a recursive TRef.*/ export declare function CyclicExtends(type: Type): TCyclicExtends; export {};