import IfcExpressionVisitor from "../gen/parser/IfcExpressionVisitor.js";
import { ArrayElementListContext, ArrayExprContext, BooleanLiteralContext, ExprContext, ExprListContext, FunctionCallContext, LiteralContext, LogicalLiteralContext, MethodCallChainEndContext, MethodCallChainInnerContext, NumLiteralContext, SEAddSubContext, SEArrayExprContext, SEBooleanBinaryOpContext, SEComparisonContext, SEFunctionCallContext, SELiteralContext, SEMethodCallContext, SEMulDivContext, SENotContext, SEParenthesisContext, SEPowerContext, SEUnaryMinusContext, SEUnaryMultipleMinusContext, SEVariableRefContext, StringLiteralContext, VariableRefContext } from "../gen/parser/IfcExpressionParser.js";
import { Expr } from "../expression/Expr.js";
import { TypeManager } from "./TypeManager.js";
import { ExprManager } from "./ExprManager.js";
export declare class ExprCompiler extends IfcExpressionVisitor<Expr<any>> {
    private readonly methodCallTargetStack;
    private readonly typeManager;
    private readonly exprManager;
    constructor(typeManager: TypeManager);
    getExprManager(): ExprManager;
    visitExpr: (ctx: ExprContext) => Expr<any>;
    private associateContextAndReturn;
    visitVariableRef: (ctx: VariableRefContext) => Expr<any>;
    visitSEComparison: (ctx: SEComparisonContext) => Expr<any>;
    visitSEMethodCall: (ctx: SEMethodCallContext) => Expr<any>;
    visitSELiteral: (ctx: SELiteralContext) => Expr<any>;
    visitSEVariableRef: (ctx: SEVariableRefContext) => Expr<any>;
    visitSEArrayExpr: (ctx: SEArrayExprContext) => Expr<any>;
    visitSEFunctionCall: (ctx: SEFunctionCallContext) => Expr<any>;
    visitSEParenthesis: (ctx: SEParenthesisContext) => Expr<any>;
    visitMethodCallChainInner: (ctx: MethodCallChainInnerContext) => Expr<any>;
    visitMethodCallChainEnd: (ctx: MethodCallChainEndContext) => Expr<any>;
    visitSEAddSub: (ctx: SEAddSubContext) => Expr<any>;
    private makePlusExpr;
    visitSEMulDiv: (ctx: SEMulDivContext) => Expr<any>;
    visitStringLiteral: (ctx: StringLiteralContext) => Expr<any>;
    visitNumLiteral: (ctx: NumLiteralContext) => Expr<any>;
    visitSEUnaryMultipleMinus: (ctx: SEUnaryMultipleMinusContext) => Expr<any>;
    visitSEPower: (ctx: SEPowerContext) => Expr<any>;
    visitSEUnaryMinus: (ctx: SEUnaryMinusContext) => Expr<any>;
    visitSEBooleanBinaryOp: (ctx: SEBooleanBinaryOpContext) => Expr<any>;
    visitBooleanLiteral: (ctx: BooleanLiteralContext) => Expr<any>;
    visitLogicalLiteral: (ctx: LogicalLiteralContext) => Expr<any>;
    visitSENot: (ctx: SENotContext) => Expr<any>;
    visitArrayExpr: (ctx: ArrayExprContext) => Expr<any>;
    collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>>;
    visitFunctionCall: (ctx: FunctionCallContext) => Expr<any>;
    collectFunctionArguments: (ctx: ExprListContext, resultSoFar?: Array<Expr<any>>) => Array<Expr<any>>;
    private static failNode;
    visitLiteral: (ctx: LiteralContext) => Expr<any>;
}
