using SVSim.BattleNode.Bridge; namespace SVSim.EmulatedEntrypoint.Matching; /// /// Picks a bot opponent for an incoming AI rank battle. Used by /// RankBattleController.AiStart to compose oppo_info. /// /// /// Backed by the BotRoster table (seeded from /// SVSim.Bootstrap/Data/seeds/bot-roster.json). Edit the seed + re-run /// SVSim.Bootstrap to change the pool without recompiling. /// public interface IBotRoster { /// /// Returns a bot profile. Deterministic per so a /// mid-flight retry of /ai_<fmt>/start picks the same opponent, /// but different battles get different bots. /// Task PickAsync(MatchContext selfCtx, string battleId, CancellationToken ct = default); }