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();
}