import { type TAddImmutableAction } from './immutable/instantiate_add.mjs'; import { type TAddReadonlyAction } from './readonly/instantiate_add.mjs'; import { type TAddOptionalAction } from './optional/instantiate_add.mjs'; import { type TSchema } from '../types/schema.mjs'; import { type TArray } from '../types/array.mjs'; import { type TConstructor } from '../types/constructor.mjs'; import { type TDeferred } from '../types/deferred.mjs'; import { type TFunction } from '../types/function.mjs'; import { type TCall } from '../types/call.mjs'; import { type TIdentifier } from '../types/identifier.mjs'; import { type TDependent } from '../types/dependent.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 TTuple } from '../types/tuple.mjs'; import { type TUnion } from '../types/union.mjs'; import { type TRef } from '../types/ref.mjs'; import { type TRest } from '../types/rest.mjs'; import { type TAddImmutableInstantiate } from './immutable/instantiate_add.mjs'; import { type TRemoveImmutableInstantiate } from './immutable/instantiate_remove.mjs'; import { type TAddReadonlyInstantiate } from './readonly/instantiate_add.mjs'; import { type TRemoveReadonlyInstantiate } from './readonly/instantiate_remove.mjs'; import { type TAddOptionalInstantiate } from './optional/instantiate_add.mjs'; import { type TRemoveOptionalInstantiate } from './optional/instantiate_remove.mjs'; import { type TOptional } from '../types/_optional.mjs'; import { type TImmutable } from '../types/_immutable.mjs'; import { type TReadonly } from '../types/_readonly.mjs'; import { type TCallInstantiate } from './call/instantiate.mjs'; import { type TCapitalizeInstantiate } from './intrinsics/instantiate.mjs'; import { type TConditionalInstantiate } from './conditional/index.mjs'; import { type TConstructorParametersInstantiate } from './constructor_parameters/instantiate.mjs'; import { type TEvaluateInstantiate } from './evaluate/instantiate.mjs'; import { type TExcludeInstantiate } from './exclude/instantiate.mjs'; import { type TExtractInstantiate } from './extract/instantiate.mjs'; import { type TIndexInstantiate } from './indexed/instantiate.mjs'; import { type TInstanceTypeInstantiate } from './instance_type/instantiate.mjs'; import { type TInterfaceInstantiate } from './interface/instantiate.mjs'; import { type TKeyOfInstantiate } from './keyof/instantiate.mjs'; import { type TLowercaseInstantiate } from './intrinsics/instantiate.mjs'; import { type TMappedInstantiate } from './mapped/instantiate.mjs'; import { type TModuleInstantiate } from './module/instantiate.mjs'; import { type TNonNullableInstantiate } from './non_nullable/instantiate.mjs'; import { type TOmitInstantiate } from './omit/instantiate.mjs'; import { type TParametersInstantiate } from './parameters/instantiate.mjs'; import { type TPartialInstantiate } from './partial/instantiate.mjs'; import { type TPickInstantiate } from './pick/instantiate.mjs'; import { type TReadonlyObjectInstantiate } from './readonly_object/instantiate.mjs'; import { type TRecordInstantiate } from './record/instantiate.mjs'; import { type TRefInstantiate } from './ref/instantiate.mjs'; import { type TRequiredInstantiate } from './required/instantiate.mjs'; import { type TReturnTypeInstantiate } from './return_type/instantiate.mjs'; import { type TTemplateLiteralInstantiate } from './template_literal/instantiate.mjs'; import { type TUncapitalizeInstantiate } from './intrinsics/instantiate.mjs'; import { type TUppercaseInstantiate } from './intrinsics/instantiate.mjs'; import { type TWithInstantiate } from './with/instantiate.mjs'; import { type TRestSpread } from './rest/index.mjs'; export interface TState { callstack: CallStack; visited: Visited; } export declare function State(callstack: CallStack, visited: Visited): TState; export type TCanInstantiate = Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? Left extends TRef ? false : TCanInstantiate : true; export declare function CanInstantiate(types: [...Types]): TCanInstantiate; export type TInstantiateProperties; }> = Result; export declare function InstantiateProperties(context: Context, state: State, properties: TProperties): TInstantiateProperties; export type TInstantiateElements, Result extends TSchema[] = TRestSpread> = Result; export declare function InstantiateElements(context: Context, state: State, types: [...Types]): TInstantiateElements; export type TInstantiateTypes = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TInstantiateTypes]> : Result); export declare function InstantiateTypes(context: Context, state: State, types: [...Types]): TInstantiateTypes; type TWithModifiers : InstantiatedType, WithReadonly extends TSchema = Type extends TReadonly ? TAddReadonlyAction : WithOptional, WithImmutable extends TSchema = Type extends TImmutable ? TAddImmutableAction : WithReadonly> = WithImmutable; type TInstantiateDeferred = ([ Action, Parameters ] extends ['AddImmutable', [infer Type extends TSchema]] ? TAddImmutableInstantiate : [ Action, Parameters ] extends ['RemoveImmutable', [infer Type extends TSchema]] ? TRemoveImmutableInstantiate : [ Action, Parameters ] extends ['AddReadonly', [infer Type extends TSchema]] ? TAddReadonlyInstantiate : [ Action, Parameters ] extends ['RemoveReadonly', [infer Type extends TSchema]] ? TRemoveReadonlyInstantiate : [ Action, Parameters ] extends ['AddOptional', [infer Type extends TSchema]] ? TAddOptionalInstantiate : [ Action, Parameters ] extends ['RemoveOptional', [infer Type extends TSchema]] ? TRemoveOptionalInstantiate : [ Action, Parameters ] extends ['Capitalize', [infer Type extends TSchema]] ? TCapitalizeInstantiate : [ Action, Parameters ] extends ['Conditional', [infer Left extends TSchema, infer Right extends TSchema, infer True extends TSchema, infer False extends TSchema]] ? TConditionalInstantiate : [ Action, Parameters ] extends ['ConstructorParameters', [infer Type extends TSchema]] ? TConstructorParametersInstantiate : [ Action, Parameters ] extends ['Evaluate', [infer Type extends TSchema]] ? TEvaluateInstantiate : [ Action, Parameters ] extends ['Exclude', [infer Left extends TSchema, infer Right extends TSchema]] ? TExcludeInstantiate : [ Action, Parameters ] extends ['Extract', [infer Left extends TSchema, infer Right extends TSchema]] ? TExtractInstantiate : [ Action, Parameters ] extends ['Index', [infer Type extends TSchema, infer Indexer extends TSchema]] ? TIndexInstantiate : [ Action, Parameters ] extends ['InstanceType', [infer Type extends TSchema]] ? TInstanceTypeInstantiate : [ Action, Parameters ] extends ['Interface', [infer Heritage extends TSchema[], infer Properties extends TProperties]] ? TInterfaceInstantiate : [ Action, Parameters ] extends ['KeyOf', [infer Type extends TSchema]] ? TKeyOfInstantiate : [ Action, Parameters ] extends ['Lowercase', [infer Type extends TSchema]] ? TLowercaseInstantiate : [ Action, Parameters ] extends ['Mapped', [infer Name extends TIdentifier, infer Key extends TSchema, infer As extends TSchema, infer Property extends TSchema]] ? TMappedInstantiate : [ Action, Parameters ] extends ['Module', [infer Declarations extends TProperties]] ? TModuleInstantiate : [ Action, Parameters ] extends ['NonNullable', [infer Type extends TSchema]] ? TNonNullableInstantiate : [ Action, Parameters ] extends ['Pick', [infer Type extends TSchema, infer Indexer extends TSchema]] ? TPickInstantiate : [ Action, Parameters ] extends ['Parameters', [infer Type extends TSchema]] ? TParametersInstantiate : [ Action, Parameters ] extends ['Partial', [infer Type extends TSchema]] ? TPartialInstantiate : [ Action, Parameters ] extends ['Omit', [infer Type extends TSchema, infer Indexer extends TSchema]] ? TOmitInstantiate : [ Action, Parameters ] extends ['ReadonlyObject', [infer Type extends TSchema]] ? TReadonlyObjectInstantiate : [ Action, Parameters ] extends ['Record', [infer Key extends TSchema, infer Value extends TSchema]] ? TRecordInstantiate : [ Action, Parameters ] extends ['Required', [infer Type extends TSchema]] ? TRequiredInstantiate : [ Action, Parameters ] extends ['ReturnType', [infer Type extends TSchema]] ? TReturnTypeInstantiate : [ Action, Parameters ] extends ['TemplateLiteral', [infer Types extends TSchema[]]] ? TTemplateLiteralInstantiate : [ Action, Parameters ] extends ['Uncapitalize', [infer Type extends TSchema]] ? TUncapitalizeInstantiate : [ Action, Parameters ] extends ['Uppercase', [infer Type extends TSchema]] ? TUppercaseInstantiate : [ Action, Parameters ] extends ['With', [infer Type extends TSchema, infer Options extends TSchema]] ? TWithInstantiate : TDeferred); type TInstantiateImmediate ? TRefInstantiate : Type extends TArray ? TArray> : Type extends TCall ? TCallInstantiate : Type extends TConstructor ? TConstructor, TInstantiateType> : Type extends TFunction ? TFunction, TInstantiateType> : Type extends TDependent ? TDependent, TInstantiateType, TInstantiateType> : Type extends TIntersect ? TIntersect> : Type extends TObject ? TObject> : Type extends TRecord ? TRecord> : Type extends TRest ? TRest> : Type extends TTuple ? TTuple> : Type extends TUnion ? TUnion> : Type), WithModifiers extends TSchema = TWithModifiers> = WithModifiers; export type TInstantiateType ? TInstantiateDeferred : TInstantiateImmediate> = Result; export declare function InstantiateType(context: Context, state: State, type: Type): TInstantiateImmediate; /** Instantiates computed schematics using the given context and type. */ export type TInstantiate = (TInstantiateType, Type>); /** Instantiates computed schematics using the given context and type. */ export declare function Instantiate(context: Context, type: Type): TInstantiate; export {};