namespace NeonSprawl.Server.Game.Encounters; /// Per-player encounter activation and defeat-target progress (NEO-104). public interface IEncounterProgressStore { /// Returns false when no row exists for the player+encounter pair. bool TryGetProgress(string playerId, string encounterId, out EncounterProgressSnapshot snapshot); /// /// Creates a started row with an empty defeated set. /// Returns true on first activation; false when already started. /// Does not consult — callers that must block activation after completion /// (e.g. ) must gate before calling this method. /// bool TryActivate(string playerId, string encounterId); /// /// Adds one defeated NPC id to an existing started row. /// Returns true when newly added; false when duplicate, not started, or invalid ids. /// bool TryAddDefeatedTarget(string playerId, string encounterId, string npcInstanceId); }