import type { BuiltInFunctionInputSignature, NodeBuiltInFunction, NodeInput } from './AST';
/**
 * Utilities for the declarative built-in function signature table.
 *
 * Signatures describe valid input/output arities and parameter validators in a
 * form that can be shared by built-ins instead of hand-written argument checks.
 */
declare class FunctionSignature {
    /**
     * Normalize a built-in's input signature declaration to an array.
     *
     * @param node Built-in function node.
     * @returns Input overloads, or an empty array when the built-in is unchecked.
     */
    static inputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[];
    /**
     * Normalize a built-in's output signature declaration to an array.
     *
     * @param node Built-in function node.
     * @returns Output overloads, or an empty array when no output signature is declared.
     */
    static outputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[];
    /**
     * Minimum accepted argument count for one signature.
     *
     * @param signature Declarative built-in signature.
     * @returns Minimum accepted input/output count.
     */
    static arityMinimum(signature: BuiltInFunctionInputSignature): number;
    /**
     * Maximum accepted argument count for one signature.
     *
     * @param signature Declarative built-in signature.
     * @returns Maximum accepted input/output count, or `Infinity` for variadic signatures.
     */
    static arityMaximum(signature: BuiltInFunctionInputSignature): number;
    /**
     * Return the 1-based variadic position, when a signature is variadic.
     *
     * @param signature Declarative built-in signature.
     * @param preferParameterPosition Prefer explicit parameter metadata over legacy negative arity.
     * @returns One-based variadic parameter position, if any.
     */
    static variadicPosition(signature: BuiltInFunctionInputSignature, preferParameterPosition?: boolean): number | undefined;
    /**
     * Derive the `nargin`/`nargout` display arity for one or more overloads.
     *
     * @param signatures Built-in overload declarations.
     * @returns MATLAB-like arity value, including negative variadic encodings.
     */
    static declaredArity(signatures: BuiltInFunctionInputSignature[]): number | undefined;
    /**
     * Check whether a count satisfies one signature's arity interval.
     *
     * @param signature Declarative built-in signature.
     * @param argCount Count to test.
     * @returns `true` when the count is accepted by the signature.
     */
    static arityMatches(signature: BuiltInFunctionInputSignature, argCount: number): boolean;
    /**
     * Return input overloads whose arity matches the supplied arguments.
     *
     * @param node Built-in function node.
     * @param argCount Input count to match.
     * @returns Matching input overloads.
     */
    static matchingInputSignatures(node: NodeBuiltInFunction, argCount: number): BuiltInFunctionInputSignature[];
    /**
     * Check whether a built-in accepts the supplied number of inputs.
     *
     * @param node Built-in function node.
     * @param argCount Input count to test.
     * @returns `true` when the built-in has no signature or an arity match exists.
     */
    static inputArityIsValid(node: NodeBuiltInFunction, argCount: number): boolean;
    /**
     * Check whether at least one matching overload accepts the argument values.
     *
     * @param node Built-in function node.
     * @param args Evaluated input values.
     * @returns `true` when parameter validators accept the values.
     */
    static inputParametersAreValid(node: NodeBuiltInFunction, args: NodeInput[]): boolean;
}
export { FunctionSignature };
declare const _default: {
    FunctionSignature: typeof FunctionSignature;
};
export default _default;
