using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Gathering; /// /// Read-only access to validated resource-node definitions and yield rows loaded at startup /// (). /// /// /// E3.M1 (gather / depletion / interact): callers resolving node defs or yields should depend on this /// interface rather than so gather lens, capacity, and yield metadata stay /// centralized. /// NEO-60: HTTP/read-model projections should depend on this interface rather than reaching into the /// catalog. /// public interface IResourceNodeDefinitionRegistry { /// /// Attempts to resolve a node def by stable nodeDefId (see resource-node-def.schema.json). /// Unknown ids and null return false without throwing. /// bool TryGetDefinition(string? nodeDefId, [NotNullWhen(true)] out ResourceNodeDefRow? definition); /// /// Attempts to resolve the fixed yield row for (see /// resource-yield-row.schema.json). Unknown ids and null return false without throwing. /// bool TryGetYield(string? nodeDefId, [NotNullWhen(true)] out ResourceYieldRow? yield); /// Every loaded node definition, ordered by (ordinal). IReadOnlyList GetDefinitionsInIdOrder(); }