/** * Damage and type-matchup estimation for the Pilot. * * These are *heuristic* estimates, not the sim's exact damage calc: enough to * rank moves, judge KOs, and weigh switch-ins for competent greedy play. Gen 3 * specifics baked in here: a move's Physical/Special category follows its * TYPE (the sim's gen3 dex already reflects this), STAB is 1.5x, and the * effectiveness multiplier is `2 ** dex.getEffectiveness(...)`. */ import type { Battle, Pokemon } from '@pkmn/sim'; export interface ResolvedMove { id: string; name: string; type: string; category: 'Physical' | 'Special' | 'Status'; basePower: number; /** Accuracy as a probability in [0, 1] (a never-miss move is 1). */ accuracy: number; } /** Resolve a move by its set name (so `Hidden Power Bug` gets its real type/power). */ export declare function resolveMove(battle: Battle, name: string): ResolvedMove; /** * Type-effectiveness multiplier of `moveType` against a defender, accounting * for the ability-based immunities that matter for Gen 3 OU switching. */ export declare function typeMultiplier(battle: Battle, moveType: string, defender: Pokemon): number; /** * Estimated damage as a fraction of the defender's max HP if the move hits. * Uses the Gen 3 damage formula at level 100 with an average roll; folds in * STAB, type effectiveness, burn, and Choice Band. */ export declare function estimateDamageFraction(battle: Battle, attacker: Pokemon, defender: Pokemon, move: ResolvedMove): number; /** The single move (across all of `attacker`'s slots) that hits `defender` hardest. */ export declare function bestDamageFraction(battle: Battle, attacker: Pokemon, defender: Pokemon): number;