/**
 * Bill James Sabermetric Engine for Rainmaker MLB Forecasts
 *
 * Implements foundational concepts from:
 *   - "The New Bill James Historical Baseball Abstract" (Runs Created, Pythagorean W%, Log5, Secondary Average)
 *   - "Win Shares" (Park Factors, Component ERA)
 *
 * All formulas are computed from existing FanGraphs data already in the database.
 * Output is a formatted prompt section injected into the LLM alongside FanGraphs raw stats.
 */
export interface ParkFactor {
    name: string;
    team: string;
    runs: number;
    hr: number;
    hits: number;
    doubles: number;
    triples: number;
    so: number;
}
export declare const PARK_FACTORS: Record<string, ParkFactor>;
export declare function getParkFactor(homeTeam: string): ParkFactor | null;
export interface RunsCreated {
    team: string;
    rc: number;
    rcPerGame: number;
    rcParkAdj: number;
    ab: number;
    h: number;
    bb: number;
    tb: number;
    playerCount: number;
}
export declare function computeRunsCreated(team: string, season: number, parkTeam?: string): Promise<RunsCreated | null>;
export interface PythagoreanRecord {
    team: string;
    runsScored: number;
    runsAllowed: number;
    pythWinPct: number;
    pythWins: number;
    pythLosses: number;
    runDifferential: number;
    strengthRating: string;
}
export declare function computePythagorean(team: string, season: number): Promise<PythagoreanRecord | null>;
export interface Log5Matchup {
    homeTeam: string;
    awayTeam: string;
    homeWinPct: number;
    awayWinPct: number;
    homeWinProb: number;
    homeWinProbHFA: number;
    impliedSpread: number;
    strengthDiff: string;
}
export declare function computeLog5(homePyth: PythagoreanRecord, awayPyth: PythagoreanRecord): Log5Matchup;
export interface SecondaryAvg {
    player: string;
    team: string;
    secAvg: number;
    avg: number;
    gap: number;
    interpretation: string;
}
export declare function getTeamSecondaryAverages(team: string, season: number): Promise<SecondaryAvg[]>;
export interface ComponentERA {
    pitcher: string;
    team: string;
    era: number;
    componentERA: number;
    regression: number;
    flag: string;
    ip: number;
}
export declare function getStarterComponentERA(name: string, team: string, season: number): Promise<ComponentERA | null>;
export interface PowerSpeed {
    player: string;
    team: string;
    hr: number;
    sb: number;
    psn: number;
    tier: string;
}
export declare function getTeamPowerSpeed(team: string, season: number): Promise<PowerSpeed[]>;
export interface BillJamesMatchup {
    park: ParkFactor | null;
    homeRC: RunsCreated | null;
    awayRC: RunsCreated | null;
    homePyth: PythagoreanRecord | null;
    awayPyth: PythagoreanRecord | null;
    log5: Log5Matchup | null;
    homeSecAvg: SecondaryAvg[];
    awaySecAvg: SecondaryAvg[];
    homeStarterERC: ComponentERA | null;
    awayStarterERC: ComponentERA | null;
    homePSN: PowerSpeed[];
    awayPSN: PowerSpeed[];
}
export declare function getBillJamesMatchup(homeTeam: string, awayTeam: string, season: number, homeStarter?: string, awayStarter?: string): Promise<BillJamesMatchup>;
export declare function formatBillJamesForPrompt(data: BillJamesMatchup, homeTeam: string, awayTeam: string): string;
//# sourceMappingURL=bill-james.d.ts.map