///
///
import { PointerType, CompleteClassType } from "../../compilation/types";
import { ExpressionContext, ConstructDescription } from "../../compilation/contexts";
import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct";
import { Expression, t_TypedExpression } from "./Expression";
import { ThisExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { ThisExpressionASTNode } from "../../../ast/ast_expressions";
import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression";
export declare class ThisExpression extends Expression {
readonly construct_type = "this_expression";
readonly type?: PointerType;
readonly valueCategory = "prvalue";
constructor(context: ExpressionContext, ast: ThisExpressionASTNode);
static createFromAST(ast: ThisExpressionASTNode, context: ExpressionContext): ThisExpression;
createDefaultOutlet(this: CompiledThisExpression, element: JQuery, parent?: ConstructOutlet): ThisExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
}
export interface TypedThisExpression = PointerType> extends ThisExpression, t_TypedExpression {
readonly type: T;
}
export interface CompiledThisExpression = PointerType> extends TypedThisExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
}
export declare class RuntimeThisExpression = PointerType> extends SimpleRuntimeExpression> {
constructor(model: CompiledThisExpression, parent: RuntimeConstruct);
protected operate(): void;
}