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

18 lines
744 B
C#

namespace NeonSprawl.Server.Game.Rewards;
/// <summary>
/// Idempotent reward delivery record (NEO-126).
/// Persisted via <see cref="IRewardDeliveryStore"/> after router apply succeeds (NEO-127).
/// E9.M1 <c>reward_delivery</c> hook site: <see cref="RewardRouterOperations"/> (NEO-130).
/// </summary>
public readonly record struct RewardDeliveryEvent(
string PlayerId,
string QuestId,
DateTimeOffset DeliveredAt,
IReadOnlyList<RewardItemGrantApplied> GrantedItems,
IReadOnlyList<RewardSkillXpGrantApplied> GrantedSkillXp,
IReadOnlyList<RewardReputationGrantApplied> GrantedReputation,
string IdempotencyKey,
string SourceKind = RewardDeliverySourceKinds.QuestCompletion,
string ContractInstanceId = "");