/** * Accessor cache (spec: Phase 2 "Accessor cache (memoize by source string)"). * Same string (+ shape + bound param) always returns the same compiled * reference — this is the reference-stability half of the reconciliation * story (see "Memoize-by-source" in Layer Reconciliation); the correctness * half (`updateTriggers` fingerprinting) is the reconciler's job (see * runtime-core.ts / LayerIR.updateTriggers), not this module's — but this * module's key format IS the fingerprint value, so the same string serves * both purposes. * * Eviction (Q4: mark-and-sweep against the reconciler's live accessor set) * is implemented here as `sweep()`, but this cache still doesn't know what's * live on its own — the caller (parse-manifest.ts, once per full reconcile, * across all layers) collects the live key set via `cacheKey()` and passes * it in. */ import { type CompileOptions, type CompiledExpression } from "./compile"; /** The cache key — also used directly as the deck.gl `updateTrigger` fingerprint. */ export declare function cacheKey(source: string, opts: CompileOptions): string; export declare class AccessorCache { #private; compile(source: string, opts: CompileOptions): CompiledExpression; keys(): IterableIterator; delete(key: string): boolean; /** Drop every cached entry whose key is not in `liveKeys` (mark-and-sweep, Q4). */ sweep(liveKeys: ReadonlySet): void; get size(): number; }