export interface PairingRecord { /** Battles Team A won outright. */ wins: number; ties: number; battles: number; /** Team A's win-rate in [0, 1]; ties count as half. */ winRate: number; } /** One Team-vs-opponent pairing to run, tagged with a caller key. */ export interface MatchupSpec { key: string; aPacked: string; bPacked: string; /** Stable indices for reproducible per-Battle seeds (same as RunPairingOptions). */ teamIndex: number; opponentIndex: number; } /** * Run many pairings at once. Every Battle across every pairing is flattened into * one job list and dispatched together, so a worker pool stays saturated instead * of idling between pairings (per-pairing dispatch left workers waiting on a * single long stall mirror). Seeds are unchanged, so results are identical to * running the pairings one at a time. */ export declare function runMatchups(specs: MatchupSpec[], battles: number, master: string, maxTurns?: number): Promise>;