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) + the
/// caller-selected deck number (from do_matching's deck_no). Pulls the
/// viewer's deck for that format/number + viewer cosmetics. Throws if the viewer has
/// no deck at that slot.
///
Task BuildForRankBattleAsync(long viewerId, Format format, int deckNo);
}