/**
 * Walk every live manifold and produce a contact event for each pair whose
 * touched state changed (or persisted) since the previous step:
 *
 *   touched + !prev_touched  → ContactBegin
 *   touched +  prev_touched  → ContactStay
 *   !touched + prev_touched  → ContactEnd
 *   !touched + !prev_touched → no event (slot is about to be evicted by
 *                              advance_frame's grace counter)
 *
 * MUST be called BEFORE {@link ManifoldStore#advance_frame} so the touched
 * bits still reflect the just-finished step.
 *
 * Output is in slot-iteration order, which matches the deterministic
 * insertion order of slots in the dense live list. That's stable for a given
 * input sequence; not the same as `(idA, idB)` lex order, which would
 * require a sort. For v1 callers want stable-replay determinism rather than
 * any specific external order, so we don't sort.
 *
 * @param {ManifoldStore} manifolds
 * @param {BodyStorage} storage
 * @param {ContactEventBuffer} out_events cleared and refilled
 */
export function diff_manifolds(manifolds: ManifoldStore, storage: BodyStorage, out_events: ContactEventBuffer): void;
//# sourceMappingURL=diff_manifolds.d.ts.map