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.
     */
    static inputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[];
    /**
     * Normalize a built-in's output signature declaration to an array.
     */
    static outputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[];
    /**
     * Minimum accepted argument count for one signature.
     */
    static arityMinimum(signature: BuiltInFunctionInputSignature): number;
    /**
     * Maximum accepted argument count for one signature.
     */
    static arityMaximum(signature: BuiltInFunctionInputSignature): number;
    /**
     * Return the 1-based variadic position, when a signature is variadic.
     */
    static variadicPosition(signature: BuiltInFunctionInputSignature, preferParameterPosition?: boolean): number | undefined;
    /**
     * Derive the `nargin`/`nargout` display arity for one or more overloads.
     */
    static declaredArity(signatures: BuiltInFunctionInputSignature[]): number | undefined;
    /**
     * Check whether a count satisfies one signature's arity interval.
     */
    static arityMatches(signature: BuiltInFunctionInputSignature, argCount: number): boolean;
    /**
     * Return input overloads whose arity matches the supplied arguments.
     */
    static matchingInputSignatures(node: NodeBuiltInFunction, argCount: number): BuiltInFunctionInputSignature[];
    /**
     * Check whether a built-in accepts the supplied number of inputs.
     */
    static inputArityIsValid(node: NodeBuiltInFunction, argCount: number): boolean;
    /**
     * Check whether at least one matching overload accepts the argument values.
     */
    static inputParametersAreValid(node: NodeBuiltInFunction, args: NodeInput[]): boolean;
}
export { FunctionSignature };
declare const _default: {
    FunctionSignature: typeof FunctionSignature;
};
export default _default;
