///
///
import { AnalyticConstruct } from "../../../analysis/predicates";
import { IdentifierExpressionASTNode } from "../../../ast/ast_expressions";
import { IdentifierOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { ConstructDescription, ExpressionContext, SemanticContext } from "../../compilation/contexts";
import { FunctionEntity, GlobalVariableEntity, LocalVariableEntity, MemberVariableEntity } from "../../compilation/entities";
import { LexicalIdentifier } from "../../compilation/lexical";
import { CompleteObjectType, FunctionType, PotentiallyCompleteObjectType } from "../../compilation/types";
import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { Expression, TypedExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
export declare class IdentifierExpression extends Expression {
readonly construct_type = "identifier_expression";
readonly type?: PotentiallyCompleteObjectType | FunctionType;
readonly valueCategory = "lvalue";
readonly name: LexicalIdentifier;
readonly entity?: LocalVariableEntity | GlobalVariableEntity | MemberVariableEntity | FunctionEntity;
constructor(context: ExpressionContext, ast: IdentifierExpressionASTNode | undefined, name: LexicalIdentifier);
static createFromAST(ast: IdentifierExpressionASTNode, context: ExpressionContext): IdentifierExpression;
getEntity(this: TypedExpression): LocalVariableEntity | GlobalVariableEntity | MemberVariableEntity;
getEntity(this: TypedExpression): FunctionEntity;
createDefaultOutlet(this: CompiledObjectIdentifierExpression | CompiledFunctionIdentifierExpression, element: JQuery, parent?: ConstructOutlet): IdentifierOutlet;
describeEvalResult(depth: number): ConstructDescription;
entitiesUsed(): (FunctionEntity> | LocalVariableEntity | import("../../compilation/entities").GlobalObjectEntity> | MemberVariableEntity)[];
isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean;
}
export interface TypedObjectIdentifierExpression extends IdentifierExpression, t_TypedExpression {
readonly type: T;
readonly entity: LocalVariableEntity | GlobalVariableEntity | MemberVariableEntity;
}
export interface CompiledObjectIdentifierExpression extends TypedObjectIdentifierExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
}
export interface TypedFunctionIdentifierExpression extends IdentifierExpression, t_TypedExpression {
readonly type: T;
readonly entity: FunctionEntity;
}
export interface CompiledFunctionIdentifierExpression extends TypedFunctionIdentifierExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
}
export declare class RuntimeObjectIdentifierExpression extends RuntimeExpression> {
constructor(model: CompiledObjectIdentifierExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}
export declare class RuntimeFunctionIdentifierExpression extends RuntimeExpression {
constructor(model: CompiledFunctionIdentifierExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}