import { type TSchema } from '../../types/schema.mjs'; import { type TParameter } from '../../types/parameter.mjs'; import { type TCallConstruct } from '../../types/call.mjs'; import { type TRef } from '../../types/ref.mjs'; import { type TGeneric } from '../../types/generic.mjs'; import { type TProperties } from '../../types/properties.mjs'; import { type TEvaluateUnion } from '../evaluate/index.mjs'; import { type TInstantiateType } from '../instantiate.mjs'; import { type TInstantiateTypes } from '../instantiate.mjs'; import { type TState } from '../instantiate.mjs'; import { type TDistributeArguments } from './distribute_arguments.mjs'; import { type TResolveTarget } from './resolve_target.mjs'; import { type TResolveArgumentsContext } from './resolve_arguments.mjs'; type TPeek = Result; type TIsTailCall extends Name ? true : false> = Result; type TCallDispatch, ReturnType extends TSchema = TInstantiateType, Expression>> = TInstantiateType, ReturnType>; type TCallDistributed = (DistributedArguments extends [infer Arguments extends TSchema[], ...infer DistributedArguments extends TSchema[][]] ? TCallDispatch extends infer ReturnType extends TSchema ? TCallDistributed : never : Result); type TCallImmediate, ReturnTypes extends TSchema[] = TCallDistributed, Result extends TSchema = ReturnTypes['length'] extends 1 ? ReturnTypes[0] : TEvaluateUnion> = Result; export type TCallInstantiate, Resolved extends [string, TSchema] = TResolveTarget, Name extends string = Resolved[0], Type extends TSchema = Resolved[1], Result extends TSchema = (Type extends TGeneric ? TIsTailCall extends true ? TCallConstruct, InstantiatedArguments> : TCallImmediate, Parameters, Expression, InstantiatedArguments> : TCallConstruct)> = Result; export declare function CallInstantiate(context: Context, state: State, target: Target, arguments_: [...Arguments]): TCallInstantiate; export {};