namespace NeonSprawl.Server.Game.Gathering; /// Persisted remaining gathers per world resource-node instance (NEO-61). public interface IResourceNodeInstanceStore { /// Reads the current snapshot when a row exists for . bool TryGetRemainingGathers(string interactableId, out ResourceNodeInstanceSnapshot snapshot); /// /// Creates a row at when absent; no-op when a row already exists. /// bool TryEnsureInitialized(string interactableId, int initialRemainingGathers); /// /// Atomically decrements when remaining > 0. Returns false when the row is missing or already /// depleted. /// bool TryDecrementRemainingGathers( string interactableId, out int previousRemaining, out int remainingGathers); /// Sets remaining gathers (upsert). Used by dev Bruno fixture reset. bool TrySetRemainingGathers(string interactableId, int remainingGathers); }