Hands & equity
Card lists use CardInput: string[] or packed Uint8Array (deck ids 0..51). See Card notation.
evaluateBestHand— Best five of 1–7 cards; returnsHandEvalResult(rank,rankCategory,strength,kickers) or slim{ rankCategory, strength }.evaluateHandStrength— Encoded strength asnumber(uint64: rank in high bits + five kicker nibbles); comparable across spots.evaluateHandStrengthFast— Same encoding asevaluateHandStrength; forge stack evaluator used on MC / exact hot paths.benchmarkEvaluatorThroughput—{ legacyEvalsPerSecond, fastEvalsPerSecond, implementation }for legacy vs forge paths.benchmarkEvaluatorThroughputAsync— Non-blocking benchmark; optionalAbortSignal.evaluateHandStrengthFastBatch— Packed batch strength encoding.evaluateHandCategory— Category label only (highCard…royalFlush); see Hand rank labels.validateCardString—trueifcardparses as one card (Ah,10c, …).cardStringsHaveDuplicate—trueif two entries map to the same card; acceptsstring[]or packedUint8Array; throws if invalid.canonicalCardString— Canonical two-character card (Th,Ac, …); throws if invalid.parseCompactCardList— Parse compact card text; defaultstring[], optional{ outFormat: 'packed' }→Uint8Array.compareBestHands—-1/0/1best-hand order; optional{ assumeDisjoint: true }when lists cannot overlap.handRankCategoryOrder— Integer order0..9forevaluateHandCategorylabels (highCard…royalFlush).exactHuEquityVsKnownHand— Exact HU vs known villain holes.exactHuEquityVsRange— Exact HU vs weighted range.buildPreflopEquityMatrix— 169×169 preflop matrix.