namespace NeonSprawl.Server.Game.Rewards; /// Idempotent per-player quest completion reward delivery record (NEO-126). public interface IRewardDeliveryStore { /// First record returns true; replays for the same player+quest return false. bool TryRecord(RewardDeliveryEvent deliveryEvent); bool TryGet(string playerId, string questId, out RewardDeliveryEvent deliveryEvent); /// /// Dev fixture only — removes one delivery row so completion grants can re-apply on Bruno reset. /// Idempotent when the row is already absent. /// bool TryClear(string playerId, string questId); }