import { SyntaxNode } from '../nodeTypes';
import { Scope, Executor } from './index';
import { Value } from './value';
declare type GroqFunctionArg = any;
declare type WithArity<T> = T & {
    arity?: GroqFunctionArity;
};
export declare type GroqFunctionArity = number | ((count: number) => boolean);
export declare type GroqFunction = (args: GroqFunctionArg[], scope: Scope, execute: Executor) => PromiseLike<Value>;
export declare const functions: {
    [key: string]: WithArity<GroqFunction>;
};
export declare type GroqPipeFunction = (base: Value, args: SyntaxNode[], scope: Scope, execute: Executor) => PromiseLike<Value>;
export declare const pipeFunctions: {
    [key: string]: WithArity<GroqPipeFunction>;
};
export {};
