/** * Content-based change tracking for the per-frame hide/isolate sets. * * The renderer caches per-batch visibility keyed by the version this tracker * produces, so correctness demands the version bumps EXACTLY when the * effective filter changes: * - Callers may mutate the SAME Set object in place between frames (the * per-mesh filters read the live set every frame, so a reference-compare * epoch would silently diverge from them) — content comparison against a * snapshot catches this. * - Callers may pass a FRESH Set with identical content every frame (zustand * slices rebuild the Set on every action) — content comparison avoids a * needless cache rebuild that a reference compare would force. */ export declare class VisibilityEpochTracker { private version; private hiddenSnapshot; private isolatedSnapshot; /** * Feed the sets passed to render(); returns the current version, bumped when * the content changed since the previous call. An EMPTY hidden set is * equivalent to no hidden filter; an EMPTY isolated set is NOT equivalent to * null (it isolates nothing, i.e. hides everything). Cost is * O(|hidden| + |isolated|) membership checks per call — strictly below the * O(scene elements) per-batch scan this version key lets the renderer skip. */ update(hiddenIds: ReadonlySet | null | undefined, isolatedIds: ReadonlySet | null | undefined): number; getVersion(): number; } //# sourceMappingURL=visibility-epoch.d.ts.map