/** * window/removal — "these messages left" → the facts the ledger needs. * * Pattern: Pure function over the meter's provenance. * Role: core/ layer. The stage binds this into every * `WindowStrategyInput.removalFacts`, so a strategy can name what it * removed without ever touching the meter — and cannot file a * removal it is unable to name. * Emits: N/A. */ import type { MessageOrigin } from '../../../recorders/core/CompactionMeter.js'; import type { RemovalFacts } from './strategy.js'; /** * Resolve which stages wrote the removed messages, and how long each lived. * * `survivalMs` is measured (`atMs - bornAtMs`), and is 0 — not a guess — when * a message's birth is unknown, which happens only for a window seeded from * outside this run. */ export declare function removalFacts(origins: readonly MessageOrigin[], indices: readonly number[], atMs: number): RemovalFacts; /** `[from, toExclusive)` as a list of indices. */ export declare function indexRange(from: number, toExclusive: number): number[];