/**
 * @import { SymbolToken, Word } from "@helios-lang/compiler-utils"
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("../typecheck/index.js").EvalEntity} EvalEntity
 */
/**
 * @type {{[name: string]: string}}
 */
export const BINARY_SYMBOLS_MAP: {
    [name: string]: string;
};
/**
 * Binary operator expression
 */
export class BinaryExpr extends Expr {
    /**
     * @param {SymbolToken} op
     * @param {Expr} a
     * @param {Expr} b
     */
    constructor(op: SymbolToken, a: Expr, b: Expr);
    /**
     * @private
     * @readonly
     * @typedef {SymbolToken}
     */
    private readonly _op;
    /**
     * @private
     * @readonly
     * @typedef {Expr}
     */
    private readonly _a;
    /**
     * @private
     * @readonly
     * @typedef {Expr}
     */
    private readonly _b;
    /**
     * @private
     * @type {boolean}
     */
    private _swap;
    /**
     * @private
     * @type {number}
     */
    private _alt;
    /**
     * @type {Expr}
     */
    get first(): Expr;
    /**
     * @type {Expr}
     */
    get second(): Expr;
    /**
     * Turns op symbol into internal name
     * @param {number} alt
     * @returns {Word}
     */
    translateOp(alt?: number): Word;
    /**
     * @returns {boolean}
     */
    isCommutative(): boolean;
}
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type EvalEntity = import("../typecheck/index.js").EvalEntity;
import { Expr } from "./Expr.js";
import type { Word } from "@helios-lang/compiler-utils";
import type { SymbolToken } from "@helios-lang/compiler-utils";
//# sourceMappingURL=BinaryExpr.d.ts.map