import { Bool, AtomicType, IntegralType, Int, PointerToCompleteType } from "../compilation/types"; export declare type RawValueType = number; export declare class Value { private static _name; readonly type: T; private readonly _isValid; readonly rawValue: RawValueType; constructor(rawValue: RawValueType, type: T, isValid?: boolean); get isValid(): boolean; isTyped(predicate: (t: AtomicType) => t is NarrowedT): this is Value; clone(valueToClone?: RawValueType): Value; cvUnqualified(): Value; cvQualified(isConst: boolean, isVolatile?: boolean): Value; invalidated(): Value; equals(otherValue: Value): Value; rawEquals(otherRawValue: RawValueType): boolean; combine(otherValue: Value, combiner: (a: RawValueType, b: RawValueType) => RawValueType): Value; pointerOffset(this: Value, offsetValue: Value, subtract?: boolean): Value; pointerOffsetRaw(this: Value, rawOffsetValue: number, subtract?: boolean): Value; pointerDifference(this: Value, otherValue: Value): Value; compare(otherValue: Value, comparer: (a: RawValueType, b: RawValueType) => boolean): Value; modify(modifier: (a: RawValueType) => RawValueType): Value; add(otherValue: Value): Value; addRaw(x: number): Value; sub(otherValue: Value): Value; subRaw(x: number): Value; arithmeticNegate(): Value; logicalNot(): Value; toString(): string; valueString(): string; valueToOstreamString(): string; /** * This should be used VERY RARELY. The only time to use it is if you have a temporary Value instance * that you're using locally and want to keep updating its raw value to something else before passing * to something like memory.dereference(). For example, this is done when traversing through a cstring by * getting the value of the pointer initially, then ad hoc updating that value as you move through the cstring. */ setRawValue(rawValue: RawValueType): void; describe(): { message: string; }; }