/** * 評価モデル: 攻撃EV − 防御EV の総合評価 * 設計ノート Section 4.1 の評価式を実装 */ import type { TileId } from "../core/tile.js"; import type { HandArray } from "../core/hand.js"; import type { MCResult } from "../mc/simulator.js"; import type { GameContext } from "../scoring/types.js"; import { type FuroAnalysis } from "./furo-boost.js"; export interface EvalOptions { turn: number; hasRiichiPlayer: boolean; riichiTurn?: number; riichiPlayerDiscards?: TileId[] | null; visibleTiles?: HandArray; numOpponents?: number; context?: GameContext; remaining?: HandArray; turnsLeft?: number; } export interface EvalResult { discard: TileId; shantenAfter: number; acceptCount: number; attackEV: number; defenseEV: number; totalEV: number; menzenEV: number; furoEV: number; furoAnalysis: FuroAnalysis | null; } /** * 評価式: 和了確率 × 平均打点 − 放銃確率 × 平均失点 * * @param hand 14枚手牌(打牌前) * @param mcResults MCシミュレーションの結果 * @param options 評価オプション(リーチ者情報等) */ export declare function evaluateDiscards(hand: HandArray, mcResults: MCResult[], options: EvalOptions): EvalResult[];