neon-sprawl/server/NeonSprawl.Server/Game/Rewards/IRewardDeliveryStore.cs

21 lines
855 B
C#

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