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);
}