///
///
import { Simulation } from "../../runtime/Simulation";
import { ArithmeticType, PointerToCompleteType as PointerToCompleteObjectType } from "../../compilation/types";
import { ExpressionContext, ConstructDescription, SemanticContext } from "../../compilation/contexts";
import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct";
import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { CompoundAssignmentExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { AnalyticConstruct } from "../../../analysis/predicates";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { CompoundAssignmentExpressionASTNode, t_ArithmeticBinaryOperators, t_CompoundAssignmentOperators } from "../../../ast/ast_expressions";
import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression";
import { OperatorOverloadExpression } from "./OperatorOverloadExpression";
export declare class CompoundAssignmentExpression extends Expression {
readonly construct_type = "compound_assignment_expression";
readonly type?: PointerToCompleteObjectType | ArithmeticType;
readonly valueCategory = "lvalue";
readonly lhs: Expression;
readonly rhs: Expression;
readonly operator: t_CompoundAssignmentOperators;
readonly equivalentBinaryOp: t_ArithmeticBinaryOperators;
private constructor();
static createFromAST(ast: CompoundAssignmentExpressionASTNode, context: ExpressionContext): CompoundAssignmentExpression | OperatorOverloadExpression;
createDefaultOutlet(this: CompiledCompoundAssignmentExpression, element: JQuery, parent?: ConstructOutlet): CompoundAssignmentExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
explain(sim: Simulation, rtConstruct: RuntimeConstruct): {
message: string;
};
isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean;
}
export interface TypedCompoundAssignmentExpression extends CompoundAssignmentExpression, t_TypedExpression {
readonly type: T;
readonly lhs: TypedExpression;
}
export interface CompiledCompoundAssignmentExpression extends TypedCompoundAssignmentExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly lhs: CompiledExpression;
readonly rhs: CompiledExpression;
}
export declare class RuntimeCompoundAssignment extends SimpleRuntimeExpression> {
readonly lhs: RuntimeExpression;
readonly rhs: RuntimeExpression;
constructor(model: CompiledCompoundAssignmentExpression, parent: RuntimeConstruct);
protected operate(): void;
}