namespace NeonSprawl.Server.Game.Targeting;

/// <summary>In-memory per-player combat target lock for prototype HTTP (NEO-23).</summary>
public interface IPlayerTargetLockStore
{
    /// <summary>Current lock id (lowercase registry key) and sequence; missing player ⇒ <c>(null, 0)</c>.</summary>
    (string? LockIdLowercase, int Sequence) GetLockState(string playerId);

    /// <summary>Clears lock; bumps sequence only if a lock was present.</summary>
    (string? LockIdLowercase, int Sequence) ApplyClear(string playerId);

    /// <summary>Sets lock to <paramref name="targetIdLowercase"/>; no sequence bump if already equal (idempotent).</summary>
    (string? LockIdLowercase, int Sequence) ApplySet(string playerId, string targetIdLowercase);
}
