import { ExpressionType } from "../../compilation/types"; import { RuntimeConstruct } from "../CPPConstruct"; import { RuntimePotentialFullExpression } from "../RuntimePotentialFullExpression"; import { ValueCategory, CompiledExpression, VCResultTypes } from "./Expression"; export declare abstract class RuntimeExpression = CompiledExpression> extends RuntimePotentialFullExpression { /** * WARNING: The evalResult property may be undefined, even though it's type suggests it will always * be defined. In most places where it is accessed, there is an implicit assumption that the expression * will already have been evaluated and the client code would end up needing a non-null assertion anyway. * However, those non-null assertions actually introduce some tricky complications with VCResultTypes, * which cause type errors and are a huge pain. So instead we tell the type system to trust us. */ readonly evalResult: VCResultTypes; constructor(model: C, parent: RuntimeConstruct); protected setEvalResult(value: VCResultTypes): void; }