export declare class RowStateGate { private templateReadsState; private gatingViable; private stateGatable; private readonly statePathSet; private rowStateSegs; private prevStateVals; /** Has any row read component state? Drives the default (conservative) sweep. */ get readsState(): boolean; /** Is gating still viable (no ungatable row seen yet)? `each` guards its per-row * capture with this to match the original short-circuit; once false it stays false. */ get canGate(): boolean; /** Latch: some row reads component state (monotonic — only ever turns ON). */ markReadsState(): void; /** Latch OFF: a row that can't be gated (structural child / rebased part / * whole-`state` read). Every state change now sweeps all rows, permanently. */ disableGating(): void; /** Capture the component-state value paths a GATABLE state-reading row reads * (each path already stripped of its `state.` prefix). No-op once gating has been * latched off. Growing the captured set rebuilds the split segments and forces a * recapture (see the RESET invariant). Callers pass a non-empty path set. */ captureGatablePaths(paths: Iterable): void; /** * Reconcile-time decision: must this state re-evaluate EVERY row? * * Returns the conservative default (`readsState`) unless the list is gatable, in * which case it returns true only when a captured state path's value changed * since the last call. ALWAYS refreshes the value snapshot as a side effect, so a * subsequent call compares against this reconcile's values. Call exactly once per * reconcile, before the per-row update sweep. */ shouldSweep(rowState: unknown): boolean; } //# sourceMappingURL=row-state-gate.d.ts.map