import { Ensure, Evaluate } from '../helpers/index'; import { type TSchema } from '../schema/index'; import { type TArray } from '../array/index'; import { type TAwaited } from '../awaited/index'; import { type TAsyncIterator } from '../async-iterator/index'; import { TComputed } from '../computed/index'; import { type TConstructor } from '../constructor/index'; import { type TIndex, type TIndexPropertyKeys } from '../indexed/index'; import { TEnum, type TEnumRecord } from '../enum/index'; import { type TFunction } from '../function/index'; import { type TIntersect, type TIntersectEvaluated } from '../intersect/index'; import { type TIterator } from '../iterator/index'; import { type TKeyOf } from '../keyof/index'; import { type TObject, type TProperties } from '../object/index'; import { type TOmit } from '../omit/index'; import { type TOptional } from '../optional/index'; import { type TPick } from '../pick/index'; import { type TNever } from '../never/index'; import { TPartial } from '../partial/index'; import { type TReadonly } from '../readonly/index'; import { type TRecordOrObject, type TRecord } from '../record/index'; import { type TRef } from '../ref/index'; import { type TRequired } from '../required/index'; import { type TTransform } from '../transform/index'; import { type TTuple } from '../tuple/index'; import { type TUnion, type TUnionEvaluated } from '../union/index'; type TDereferenceParameters = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? Left extends TRef ? TDereferenceParameters]> : TDereferenceParameters]> : Result); type TDereference ? TDereference : TFromType : TNever)> = Result; type TFromAwaited = (Parameters extends [infer T0 extends TSchema] ? TAwaited : never); type TFromIndex = (Parameters extends [infer T0 extends TSchema, infer T1 extends TSchema] ? TIndex> extends infer Result extends TSchema ? Result : never : never); type TFromKeyOf = (Parameters extends [infer T0 extends TSchema] ? TKeyOf : never); type TFromPartial = (Parameters extends [infer T0 extends TSchema] ? TPartial : never); type TFromOmit = (Parameters extends [infer T0 extends TSchema, infer T1 extends TSchema] ? TOmit : never); type TFromPick = (Parameters extends [infer T0 extends TSchema, infer T1 extends TSchema] ? TPick : never); type TFromRequired = (Parameters extends [infer T0 extends TSchema] ? TRequired : never); type TFromComputed> = (Target extends 'Awaited' ? TFromAwaited : Target extends 'Index' ? TFromIndex : Target extends 'KeyOf' ? TFromKeyOf : Target extends 'Partial' ? TFromPartial : Target extends 'Omit' ? TFromOmit : Target extends 'Pick' ? TFromPick : Target extends 'Required' ? TFromRequired : TNever); type TFromArray = (Ensure>>); type TFromAsyncIterator = (TAsyncIterator>); type TFromConstructor = (TConstructor, TFromType>); type TFromFunction = Ensure, TFromType>>>; type TFromIntersect = (Ensure>>); type TFromIterator = (TIterator>); type TFromObject = Ensure; }>>>; type TFromRecord>> = Result; type TFromTransform ? TTransform, Output> : TTransform> = Result; type TFromTuple = (Ensure>>); type TFromUnion = (Ensure>>); type TFromTypes = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TFromTypes]> : Result); export type TFromType = (Type extends TOptional ? TOptional> : Type extends TReadonly ? TReadonly> : Type extends TTransform ? TFromTransform : Type extends TArray ? TFromArray : Type extends TAsyncIterator ? TFromAsyncIterator : Type extends TComputed ? TFromComputed : Type extends TConstructor ? TFromConstructor : Type extends TFunction ? TFromFunction : Type extends TIntersect ? TFromIntersect : Type extends TIterator ? TFromIterator : Type extends TObject ? TFromObject : Type extends TRecord ? TFromRecord : Type extends TTuple ? TFromTuple : Type extends TEnum ? Type : Type extends TUnion ? TFromUnion : Type); export declare function FromType(moduleProperties: ModuleProperties, type: Type): TFromType; export type TComputeType = (Key extends keyof ModuleProperties ? TFromType : TNever); export declare function ComputeType(moduleProperties: ModuleProperties, key: Key): TComputeType; export type TComputeModuleProperties = Evaluate<{ [Key in keyof ModuleProperties]: TComputeType; }>; export declare function ComputeModuleProperties(moduleProperties: ModuleProperties): TComputeModuleProperties; export {};