/**
 * General call expression converter
 *
 * Two-pass argument resolution with generic type inference.
 * ALICE'S SPEC: All call resolution goes through TypeSystem.resolveCall().
 */
import * as ts from "typescript";
import { IrCallExpression, IrAsInterfaceExpression, IrTryCastExpression, IrStackAllocExpression, IrDefaultOfExpression, IrNameOfExpression, IrSizeOfExpression } from "../../../types.js";
import { IrType } from "../../../types.js";
import type { ProgramContext } from "../../../program-context.js";
export declare const getSourceBackedCallParameterTypes: (node: ts.CallExpression, callee: IrCallExpression["callee"], receiverType: IrType | undefined, argumentCount: number, selectedParameterTypes: readonly (IrType | undefined)[] | undefined, actualArgTypes: readonly (IrType | undefined)[] | undefined, expectedType: IrType | undefined, explicitTypeArgs: readonly IrType[] | undefined, ctx: ProgramContext) => {
    readonly parameterTypes: readonly (IrType | undefined)[];
    readonly surfaceParameterTypes: readonly (IrType | undefined)[];
    readonly returnType: IrType;
    readonly restParameter: {
        readonly index: number;
        readonly arrayType: IrType | undefined;
        readonly elementType: IrType | undefined;
    } | undefined;
} | undefined;
/**
 * Convert call expression
 */
export declare const convertCallExpression: (node: ts.CallExpression, ctx: ProgramContext, expectedType?: IrType) => IrCallExpression | IrAsInterfaceExpression | IrTryCastExpression | IrStackAllocExpression | IrDefaultOfExpression | IrNameOfExpression | IrSizeOfExpression;
//# sourceMappingURL=call-general.d.ts.map