/**
 * @template T
 * @extends {ReactiveExpression<T>}
 */
export class ReactiveBinaryExpression<T> extends ReactiveExpression<T> {
    /**
     *
     * @type {ReactiveExpression|null}
     */
    left: ReactiveExpression<any> | null;
    /**
     *
     * @type {ReactiveExpression|null}
     */
    right: ReactiveExpression<any> | null;
    /**
     *
     * @type {T}
     * @private
     */
    private __oldValue;
    copy(other: any): void;
    equals(other: any): any;
    hash(): number;
    evaluate(scope: any): number | boolean | T;
    update(): void;
    /**
     *
     * @returns {T|boolean|number}
     */
    transform(left: any, right: any): T | boolean | number;
    traverse(visitor: any, thisArg: any): void;
    /**
     *
     * @param left
     * @param right
     */
    connect(left: any, right: any): void;
    disconnect(): void;
    getValue(): number | boolean | T;
    /**
     * Binary expression is commutative if changing the order of operands does not change the result
     * This property should be overridden in subclasses as necessary
     * Property is used to guide expression transformation
     * @readonly
     * @type {boolean}
     */
    readonly isCommutative: boolean;
    /**
     * @readonly
     * @type {boolean}
     */
    readonly isBinaryExpression: boolean;
}
import { ReactiveExpression } from "./ReactiveExpression.js";
//# sourceMappingURL=ReactiveBinaryExpression.d.ts.map