namespace NeonSprawl.Server.Game.AbilityInput; /// In-memory per-player hotbar slot cooldown ends (NEO-32). public interface IPlayerAbilityCooldownStore { /// Returns true when the slot has a cooldown end strictly after . bool IsOnCooldown(string playerId, int slotIndex, DateTimeOffset now); /// Sets cooldown end for a slot to + . void StartCooldown(string playerId, int slotIndex, DateTimeOffset now, TimeSpan duration); /// Gets active cooldown end when is strictly before that end; removes expired entries (same hygiene as ). bool TryGetCooldownEndUtc(string playerId, int slotIndex, DateTimeOffset now, out DateTimeOffset endUtc); /// Clears all slot cooldowns for (dev Bruno fixture). void ClearPlayer(string playerId); }