namespace NeonSprawl.Server.Game.Gathering;

/// <summary>
/// Server-internal gather resolution envelope (NEO-62). May promote to wire JSON when the client needs explicit
/// gather payloads; until then prototype verification uses inventory GET + interact response (NEO-63).
/// NEO-64 telemetry hook sites live in <see cref="GatherOperations.TryGather"/>.
/// </summary>
/// <param name="GrantsApplied">Item grants on success; empty when denied.</param>
/// <param name="RemainingGathers">Authoritative capacity after success, or current capacity on depletion deny.</param>
/// <param name="XpGrantSummary">Skill XP applied on success; null when denied.</param>
public readonly record struct GatherResult(
    bool Success,
    string? ReasonCode,
    IReadOnlyList<GatherGrantApplied> GrantsApplied,
    int? RemainingGathers,
    GatherXpGrantSummary? XpGrantSummary);
