using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Crafting; /// /// Read-only access to validated entries loaded at startup (). /// /// /// E3.M2 (craft / refine): callers validating CraftRequest and resolving I/O rows should depend on this interface /// rather than so recipe metadata stays centralized. /// NEO-68: HTTP/read-model projections should depend on this interface rather than reaching into the catalog. /// public interface IRecipeDefinitionRegistry { /// Attempts to resolve a recipe by stable id (see recipe-def.schema.json). Unknown ids and null return false without throwing. bool TryGetDefinition(string? recipeId, [NotNullWhen(true)] out RecipeDefRow? definition); /// Every loaded definition, ordered by (ordinal). IReadOnlyList GetDefinitionsInIdOrder(); }