The simple answer is, there are a bunch of things that can't even be detected right now, because the game loop doesn't allow access to them without such a library.
For example, it's unclear when, exactly, a ProjectileAPI has done damage, unless you check that last frame, didDamage() was false, because it keeps returning true even though the game engine has applied the damage and the projectile's now fading out. So we have to track the projectiles that did damage this frame manually.
And there's no common way to detect if we use the built-in damage functions, either. If that existed, it would be useful.
But getting modders here to adopt that universally is asking a lot, unfortunately, and it's not really worth using unless it's universally adopted. So I'd probably build something like this and pitch for it to be included in LazyLib, since that's the only semi-mandatory code repo that the modders here are willing to adopt in large numbers