namespace NeonSprawl.Server.Game.Rewards;
/// Idempotent per-player reward delivery records (NEO-126).
public interface IRewardDeliveryStore
{
/// First record returns true; replays for the same player+source return false.
bool TryRecord(RewardDeliveryEvent deliveryEvent);
bool TryGet(string playerId, string questId, out RewardDeliveryEvent deliveryEvent);
bool TryGet(string playerId, string sourceKind, string sourceId, 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);
bool TryClear(string playerId, string sourceKind, string sourceId);
}