import { IfcExpressionContext } from "../context/IfcExpressionContext.js"; import { ExprBase } from "./ExprBase.js"; import { ExprKind } from "./ExprKind.js"; import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult.js"; import { Expr } from "./Expr.js"; export declare abstract class Expr2 extends ExprBase { readonly left: Expr; readonly right: Expr; protected constructor(exprKind: ExprKind, left: Expr, right: Expr); getChildren(): Array>; protected abstract calculateResult(ctx: IfcExpressionContext, localCtx: Map, leftOperand: L, rightOperand: R): E | ExprEvalError; protected onBeforeRecursion(ctx: IfcExpressionContext, localCtx: Map): void; protected onAfterLeftRecursion(ctx: IfcExpressionContext, localCtx: Map, leftResult: L): void; evaluate(ctx: IfcExpressionContext, localCtx: Map): ExprEvalResult; protected makeResultForRightSubExprError(ctx: IfcExpressionContext, localCtx: Map, leftResult: ExprEvalResult, rightResult: ExprEvalError): ExprEvalResult; protected makeErrorForLeftSubExprError(ctx: IfcExpressionContext, localCtx: Map, leftResult: ExprEvalError): ExprEvalError; protected handleError(error: any, leftResult: ExprEvalResult, rightResult: ExprEvalResult): ExprEvalError; }