import { Context, Parameter, Position, IEvaluator, Operand, OperandType } from '../../shared/domain'; export interface ParameterDoc { name: string; description: string; } export interface OperatorDoc { description: string; params?: ParameterDoc[]; } export interface OperatorAdditionalInfo { priority: number; description: string; doc?: OperatorDoc; async?: boolean; } export interface FunctionAdditionalInfo { deterministic?: boolean; description: string; doc?: OperatorDoc; async?: boolean; } export declare abstract class Evaluator implements IEvaluator { protected readonly operand: Operand; constructor(operand: Operand); abstract eval(context: Context): any; abstract evalAsync(context: Context): Promise; protected evalAsyncChildren(context: Context): Promise; isAsync(): boolean; } export interface EvaluatorBuilder { build(operand: Operand): IEvaluator; } export declare abstract class PrototypeEvaluator implements IEvaluator { protected operand?: Operand | undefined; constructor(operand?: Operand | undefined); abstract clone(operand: Operand): IEvaluator; abstract eval(context: Context): any; abstract evalAsync(context: Context): Promise; } export interface OperandMetadata { pos: Position; type: OperandType; name: string; children?: OperandMetadata[]; returnType?: string; number?: number; } export interface OperatorMetadata { params: Parameter[]; deterministic: boolean; operands: number; returnType: string; doc: OperatorDoc; priority?: number; function?: Function; custom?: PrototypeEvaluator; async: boolean; }