/** * Apply a row predicate across a depth-ordered row list, keeping group banners * consistent with what survives beneath them. * * The row list interleaves group banners with their descendants, banner first. * A predicate written by a user is about DATA, so it is only tested against * leaf rows; a banner then survives only if something under it did. Testing a * banner directly would drop whole groups because its cells are aggregates, not * row values. * * Note the existing column-filter and facet stages do test banners directly. * That is a separate pre-existing inconsistency; this helper is written to be * reusable if those are ever brought in line, but changing them is deliberately * not bundled into the advanced filter. */ /** Apply `keep` to leaf rows, dropping banners left with no surviving child. */ export declare function applyRowPredicate(rows: ReadonlyArray, keep: (row: TRow) => boolean, isGroup: (row: TRow) => boolean): TRow[];