import type { CompilerContext } from "../context/context"; import type * as Ast from "../ast/ast"; import type { AstUtil } from "../ast/util"; import type { InterpreterConfig } from "./interpreter"; import type { SrcInfo } from "../grammar"; export declare const getOptimizer: (util: AstUtil) => { partiallyEvalUnaryOp: (op: Ast.UnaryOperation, operand: Ast.Expression, source: SrcInfo, ctx: CompilerContext) => Ast.Expression; partiallyEvalBinaryOp: (op: Ast.BinaryOperation, left: Ast.Expression, right: Ast.Expression, source: SrcInfo, ctx: CompilerContext) => Ast.Expression; partiallyEvalExpression: (ast: Ast.Expression, ctx: CompilerContext, interpreterConfig?: InterpreterConfig) => Ast.Expression; }; export declare function evalConstantExpression(ast: Ast.Expression, ctx: CompilerContext, util: AstUtil, interpreterConfig?: InterpreterConfig): Ast.Literal;