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