import type { Expression, SplatExpression } from "../../types.js";
import type { FunctionCall, FunctionParameter } from "../../types/function.js";
/**
 * Lower a function call's argument list from "positional + named" form
 * into pure positional form aligned to the callee's parameter list.
 *
 * Used only for Agency-defined functions, which are the only callees whose
 * parameter list is statically known at emit time. Imported / built-in
 * functions go through a different code path.
 *
 * Returns the args unwrapped (no `NamedArgument` wrappers) in the order
 * matching the callee's non-variadic, non-block parameters. Skipped
 * optional parameters in the middle of the list are filled with a `null`
 * literal placeholder; trailing skipped params are simply omitted (the
 * caller pads with `undefined`/`null` later, in `emitDirectFunctionCall`
 * and friends).
 *
 * Rules (Python-style):
 * - Positional args must come before named args.
 * - Named args can appear in any order.
 * - Named args can skip optional params (those with default values).
 * - Named args are only supported for Agency-defined functions.
 *
 * Throws if any of those rules are violated, or if a named arg refers to
 * an unknown / required-but-omitted parameter, or if there are duplicate
 * named args.
 */
export declare function resolveNamedArgs(node: FunctionCall, paramList: FunctionParameter[] | undefined, isAgencyFunction: boolean): (Expression | SplatExpression)[];
