using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Skills; /// /// Read-only access to validated entries loaded at startup (). /// /// /// E2.M2 (XP grants): callers issuing skill XP must ensure XpGrantEvent.sourceKind (or successor) /// is listed on the target skill’s ; the award engine should reject /// grants outside that set once implemented. /// NEO-36: HTTP/read-model projections should depend on this interface rather than reaching into the catalog. /// public interface ISkillDefinitionRegistry { /// Attempts to resolve a skill by stable id (see skill-def.schema.json). Unknown ids and null return false without throwing. bool TryGetDefinition(string? skillId, [NotNullWhen(true)] out SkillDefRow? definition); /// Every loaded definition, ordered by (ordinal). IReadOnlyList GetDefinitionsInIdOrder(); }