using System.Diagnostics.CodeAnalysis;
namespace NeonSprawl.Server.Game.Npc;
///
/// Read-only access to validated entries loaded at startup ().
///
///
/// E5.M2 (NPC runtime / instance binding): callers validating behavior ids and resolving aggro/telegraph metadata should depend on this interface
/// rather than so behavior defs stay centralized.
/// NEO-90: HTTP/read-model projections should depend on this interface rather than reaching into the catalog.
///
public interface INpcBehaviorDefinitionRegistry
{
/// Attempts to resolve a behavior by stable id (see npc-behavior-def.schema.json). Unknown ids and null return false without throwing.
bool TryGetDefinition(string? behaviorId, [NotNullWhen(true)] out NpcBehaviorDefRow? definition);
/// Trims and lowercases ; returns true when the normalized id exists in the loaded catalog. null, empty, and whitespace return false without throwing.
bool TryNormalizeKnown(string? rawBehaviorId, [NotNullWhen(true)] out string normalized);
/// Every loaded definition, ordered by (ordinal).
IReadOnlyList GetDefinitionsInIdOrder();
}