IFClite TypeScript API
    Preparing search index...

    Type Alias GeometryHash

    GeometryHash: bigint | string

    A geometry fingerprint. The WASM geometry hash surfaces as a bigint (MeshCollection.geometryHashValues is a BigUint64Array); strings are accepted for callers that fingerprint geometry another way. undefined means the entity carries no geometry.

    Both revisions must use the same representation. Equality is String(a) === String(b), so a bigint matches its own decimal string form (42n and '42') but nothing else: '0x2a' is a different fingerprint from 42n. The engine deliberately does not try to parse or canonicalize string forms, because a string hash is an opaque token from the caller's own scheme and reinterpreting one that happens to look numeric would collide it with an unrelated bigint.

    Content matching's first tier sub-buckets on String(hash), which is where mixing representations costs the most: 42n and '42' land in one sub-bucket and retire as renamed, while 42n and '0x2a' land in two, so that tier resolves neither. They are not lost — they fall to the bucket's residue, where a 1:1 leftover still pairs and ContentMatchKinds as moved/reshaped, and a larger residue can end up an ambiguous group. So the cost of mixing is a missed renamed and a spurious geometry difference, not an unpairable entity.