namespace NeonSprawl.Server.Game.Skills;
/// Persisted totals of skill XP per player (NEO-38); level is derived, not stored.
public interface IPlayerSkillProgressionStore
{
/// Keyed by catalog SkillDef.id; omitted skills imply XP 0.
IReadOnlyDictionary GetXpTotals(string playerId);
///
/// Adds to for .
/// Returns false when the player cannot be written (e.g. in-memory store has no bucket; Postgres player missing from player_position).
///
bool TryApplyXpDelta(string playerId, string skillId, int amount, out int previousXp, out int newXp);
/// Sets absolute XP for one skill (NEO-48 dev fixture API). must be >= 0.
bool TrySetSkillXpTotal(string playerId, string skillId, int xp);
}