import { Expr } from '../parser/expr'; import { Token } from '../parser/lex/token'; import { Type } from '../types/datatype'; import { Phrases } from '../types/phrase'; import { Unit } from '../types/units'; import { Converter } from './converter'; import { Environment } from './environment'; import { Scale } from './scale'; declare class Evaluator implements Expr.IVisitor { readonly environment: Environment; private readonly ast; private readonly source?; private readonly parser?; private strict; constructor(source: string | Expr, phrases: Phrases, units: Unit.List, environment: Environment, c: Converter, scale: Scale, strict: boolean); getAST(): string; toJSON(): string; toObj(): object; getScannedTokens(): Token[] | undefined; visitCallExpr(expr: Expr.Call): Type; visitAssignExpr(expr: Expr.Assign): Type; visitVariableExpr(expr: Expr.Variable): Type; evaluateExpression(): Type; visitConversionExpr(expr: Expr.ConversionExpr): Type; visitUnitExpr(expr: Expr.UnitExpr): Type; visitTernaryExpr(expr: Expr.Ternary): Type; visitLogicalExpr(expr: Expr.Logical): Type; visitBinaryExpr(expr: Expr.Binary): Type; visitGroupingExpr(expr: Expr.Grouping): Type; visitLiteralExpr(expr: Expr.Literal): Type; visitUnaryExpr(expr: Expr.Unary): Type; visitPercentageExpr(expr: Expr.Percentage): Type; private evaluate; private checkInvalidOperation; private throwUnexpectedUnits; } export { Evaluator };