import { Context } from './context'; import { Position } from './base'; import { Type } from 'typ3s'; export declare enum OperandType { Const = "Const", Var = "Var", Env = "Env", Property = "Property", Template = "Template", KeyVal = "KeyVal", List = "List", Obj = "Obj", Operator = "Operator", CallFunc = "CallFunc", Arrow = "Arrow", ChildFunc = "ChildFunc", Block = "Block", If = "If", ElseIf = "ElseIf", Else = "Else", While = "While", For = "For", ForIn = "ForIn", Switch = "Switch", Case = "Case", Default = "Default", Break = "Break", Continue = "Continue", Func = "Func", Return = "Return", Try = "Try", Catch = "Catch", Throw = "Throw", Args = "Args" } export interface IEvaluator { eval(context: Context): any; evalAsync(context: Context): Promise; } export declare class Operand { readonly pos: Position; name: any; readonly type: OperandType; children: Operand[]; returnType?: Type | undefined; evaluator?: IEvaluator; number?: number; id?: string; constructor(pos: Position, name: any, type: OperandType, children?: Operand[], returnType?: Type | undefined); eval(context: Context): any; evalAsync(context: Context): Promise; isAsync(): boolean; solve(context: Context): Promise; }