using System.Diagnostics.CodeAnalysis;
namespace NeonSprawl.Server.Game.Npc;
///
/// Session in-memory NPC runtime behavior state (NEO-93).
/// HTTP projection lands in NEO-94; lazy tick advance reads/writes rows here.
///
public interface INpcRuntimeStateStore
{
/// UTC instant of the last successful call.
DateTimeOffset LastAdvancedUtc { get; set; }
/// Reads runtime state for a known prototype NPC instance. Lazy-initializes an idle row.
bool TryGet(string? npcInstanceId, [NotNullWhen(true)] out NpcRuntimeStateSnapshot snapshot);
/// Writes runtime state for a known prototype NPC instance.
bool TryWrite(string? npcInstanceId, in NpcRuntimeStateSnapshot snapshot);
/// Resets one prototype NPC runtime row to idle with no active telegraph.
bool TryResetPrototypeRow(string? npcInstanceId);
/// Resets all prototype NPC runtime rows to idle.
void ResetAllPrototypeRows();
}