import type { TreeInterpreter } from './TreeInterpreter'; import type { ExpressionNode } from './Lexer'; import type { JSONValue } from '.'; export declare enum InputArgument { TYPE_NUMBER = 0, TYPE_ANY = 1, TYPE_STRING = 2, TYPE_ARRAY = 3, TYPE_OBJECT = 4, TYPE_BOOLEAN = 5, TYPE_EXPREF = 6, TYPE_NULL = 7, TYPE_ARRAY_NUMBER = 8, TYPE_ARRAY_STRING = 9 } export interface InputSignature { types: InputArgument[]; variadic?: boolean; optional?: boolean; } export declare type RuntimeFunction = (resolvedArgs: T) => U; export interface FunctionSignature { _func: RuntimeFunction; _signature: InputSignature[]; } export interface FunctionTable { [functionName: string]: FunctionSignature; } export declare class Runtime { _interpreter?: TreeInterpreter; TYPE_NAME_TABLE: { [InputArgument: number]: string; }; constructor(interpreter: TreeInterpreter); registerFunction(name: string, customFunction: RuntimeFunction, signature: InputSignature[]): void; callFunction(name: string, resolvedArgs: any): unknown; private validateInputSignatures; private validateArgs; private typeMatches; private getTypeName; createKeyFunction(exprefNode: ExpressionNode, allowedTypes: InputArgument[]): ((x: JSONValue) => JSONValue) | undefined; private functionAbs; private functionAvg; private functionCeil; private functionContains; private functionEndsWith; private functionFloor; private functionJoin; private functionKeys; private functionLength; private functionMap; private functionMax; private functionMaxBy; private functionMerge; private functionMin; private functionMinBy; private functionNotNull; private functionReverse; private functionSort; private functionSortBy; private functionStartsWith; private functionSum; private functionToArray; private functionToNumber; private functionToString; private functionType; private functionValues; private functionTable; }