///
///
import { CompleteObjectType, FunctionType, CompleteClassType, PotentiallyCompleteObjectType } from "../../compilation/types";
import { ExpressionContext, ConstructDescription, SemanticContext } from "../../compilation/contexts";
import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct";
import { FunctionEntity, MemberVariableEntity } from "../../compilation/entities";
import { LexicalIdentifier } from "../../compilation/lexical";
import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { DotExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { AnalyticConstruct } from "../../../analysis/predicates";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { DotExpressionASTNode } from "../../../ast/ast_expressions";
export declare class DotExpression extends Expression {
readonly construct_type = "dot_expression";
readonly type?: PotentiallyCompleteObjectType | FunctionType;
readonly valueCategory = "lvalue";
readonly operand: Expression;
readonly memberName: LexicalIdentifier;
readonly entity?: MemberVariableEntity | FunctionEntity;
static createFromAST(ast: DotExpressionASTNode, context: ExpressionContext): DotExpression;
constructor(context: ExpressionContext, ast: DotExpressionASTNode, operand: Expression, memberName: LexicalIdentifier);
createDefaultOutlet(this: CompiledObjectDotExpression | CompiledFunctionDotExpression, element: JQuery, parent?: ConstructOutlet): DotExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
entitiesUsed(): (FunctionEntity> | MemberVariableEntity)[];
isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean;
}
export interface TypedObjectDotExpression extends DotExpression, t_TypedExpression {
readonly type: T;
readonly entity: MemberVariableEntity;
readonly operand: TypedExpression;
}
export interface CompiledObjectDotExpression extends TypedObjectDotExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression;
}
export interface TypedFunctionDotExpression extends DotExpression, t_TypedExpression {
readonly type: T;
readonly entity: FunctionEntity;
readonly operand: TypedExpression;
}
export interface CompiledFunctionDotExpression extends TypedFunctionDotExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression;
}
export declare class RuntimeObjectDotExpression extends RuntimeExpression> {
readonly operand: RuntimeExpression;
constructor(model: CompiledObjectDotExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}
export declare class RuntimeFunctionDotExpression extends RuntimeExpression {
readonly operand: RuntimeExpression;
constructor(model: CompiledFunctionDotExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
get contextualReceiver(): import("../../runtime/objects").CPPObject;
}