///
///
import { AtomicType } from "../../compilation/types";
import { ExpressionContext } from "../../compilation/contexts";
import { SuccessfullyCompiled } from "../CPPConstruct";
import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { BinaryOperatorExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { BinaryOperatorExpressionASTNode, t_BinaryOperators } from "../../../ast/ast_expressions";
import { LogicalBinaryOperatorExpression } from "./LogicalBinaryOperatorExpression";
import { PointerComparisonExpression } from "./PointerComparisonExpression";
import { RelationalBinaryOperatorExpression } from "./RelationalBinaryOperatorExpression";
import { InputOperatorExpression } from "./InputOperatorExpression";
import { OutputOperatorExpression } from "./OutputOperatorExpression";
import { PointerOffsetExpression } from "./PointerOffsetExpression";
import { PointerDifferenceExpression } from "./PointerDifferenceExpression";
import { ArithmeticBinaryOperatorExpression } from "./ArithmeticBinaryOperatorExpression";
export declare abstract class BinaryOperatorExpression extends Expression {
abstract readonly construct_type: "arithmetic_binary_operator_expression" | "relational_binary_operator_expression" | "logical_binary_operator_expression" | "pointer_offset_expression" | "pointer_difference_expression" | "pointer_comparison_expression";
abstract readonly type?: AtomicType;
readonly valueCategory = "prvalue";
abstract readonly left: Expression;
abstract readonly right: Expression;
readonly operator: t_BinaryOperators;
protected constructor(context: ExpressionContext, ast: ASTType | undefined, operator: t_BinaryOperators);
createDefaultOutlet(this: CompiledBinaryOperatorExpression, element: JQuery, parent?: ConstructOutlet): BinaryOperatorExpressionOutlet;
}
export declare type AnalyticBinaryOperatorExpression = ArithmeticBinaryOperatorExpression | PointerDifferenceExpression | PointerOffsetExpression | OutputOperatorExpression | InputOperatorExpression | RelationalBinaryOperatorExpression | PointerComparisonExpression | LogicalBinaryOperatorExpression;
export interface TypedBinaryOperatorExpression extends BinaryOperatorExpression, t_TypedExpression {
readonly type: T;
readonly left: TypedExpression;
readonly right: TypedExpression;
}
export interface CompiledBinaryOperatorExpression extends TypedBinaryOperatorExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly left: CompiledExpression;
readonly right: CompiledExpression;
}
export interface RuntimeBinaryOperator extends RuntimeExpression> {
readonly left: RuntimeExpression;
readonly right: RuntimeExpression;
}