using SVSim.BattleNode.Bridge; using SVSim.Database.Enums; namespace SVSim.EmulatedEntrypoint.Services; /// /// Per-mode assembler for the battle-node MatchContext. Each multiplayer mode that /// fronts a do_matching endpoint adds one method here that reads its mode-specific /// state (TK2 run, current-deck pointer, open-room set_deck, ...) and produces a /// MatchContext for the bridge. /// public interface IMatchContextBuilder { /// /// Build a context from the viewer's active TK2 run + viewer cosmetics + config. /// Throws on missing run / incomplete draft. /// Task BuildForTwoPickAsync(long viewerId); /// /// Build a context for a rank-battle viewer + format (rotation / unlimited). Pulls the /// viewer's deck #1 for that format + viewer cosmetics. Throws if the viewer has no /// deck registered for the format. /// /// /// Deck-selection persistence (which deck number is "current" for this format) is a /// separate concern; deck #1 is a placeholder until that lands. /// Task BuildForRankBattleAsync(long viewerId, Format format); }