///
///
import { CompleteObjectType, PointerType, Int } from "../../compilation/types";
import { ExpressionContext, ConstructDescription } from "../../compilation/contexts";
import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct";
import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { SubscriptExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { SubscriptExpressionASTNode } from "../../../ast/ast_expressions";
import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression";
import { OperatorOverloadExpression } from "./OperatorOverloadExpression";
export declare class SubscriptExpression extends Expression {
readonly construct_type = "subscript_expression";
readonly type?: CompleteObjectType;
readonly valueCategory = "lvalue";
readonly operand: Expression;
readonly offset: Expression;
constructor(context: ExpressionContext, ast: SubscriptExpressionASTNode, operand: Expression, offset: Expression);
static createFromAST(ast: SubscriptExpressionASTNode, context: ExpressionContext): SubscriptExpression | OperatorOverloadExpression;
createDefaultOutlet(this: CompiledSubscriptExpression, element: JQuery, parent?: ConstructOutlet): SubscriptExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
}
export interface TypedSubscriptExpression extends SubscriptExpression, t_TypedExpression {
readonly type: T;
readonly operand: TypedExpression, "prvalue">;
}
export interface CompiledSubscriptExpression extends TypedSubscriptExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression, "prvalue">;
readonly offset: CompiledExpression;
}
export declare class RuntimeSubscriptExpression extends SimpleRuntimeExpression> {
operand: RuntimeExpression, "prvalue">;
offset: RuntimeExpression;
constructor(model: CompiledSubscriptExpression, parent: RuntimeConstruct);
protected operate(): void;
}