import { type TUnreachable } from '../../../system/unreachable/index.mjs'; import { type TSchema } from '../../types/schema.mjs'; import { type TArray } from '../../types/array.mjs'; import { type TConstructor } from '../../types/constructor.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, type TPropertyValues } from '../../types/properties.mjs'; import { type TRecord } from '../../types/record.mjs'; import { type TTuple } from '../../types/tuple.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TRef } from '../../types/ref.mjs'; import { type TInterfaceDeferred } from '../../action/interface.mjs'; type TFromRef = Ref extends Dependencies[number] ? Dependencies : Ref extends keyof Context ? TFromType : TUnreachable; type TFromProperties> = TFromTypes; type TFromTypes = Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TFromTypes> : Dependencies; type TFromType = (Type extends TRef ? TFromRef : Type extends TArray ? TFromType : Type extends TConstructor ? TFromTypes : Type extends TFunction ? TFromTypes : Type extends TInterfaceDeferred ? TFromProperties : Type extends TIntersect ? TFromTypes : Type extends TObject ? TFromProperties : Type extends TUnion ? TFromTypes : Type extends TTuple ? TFromTypes : Type extends TRecord ? TFromType : Result); /** Returns dependent cyclic keys for the given type. This function is used to dead-type-eliminate (DTE) for initializing TCyclic types. */ export type TCyclicDependencies> = Result; /** Returns dependent cyclic keys for the given type. This function is used to dead-type-eliminate (DTE) for initializing TCyclic types. */ export declare function CyclicDependencies(context: Context, key: Key, type: Type): TCyclicDependencies; export {};