import { Street } from '../types';
/**
 * Each PlayerStreetStats record represents stats for a single street in a hand.
 * For example, one record might capture all actions on the preflop or on the flop.
 * These values are recorded per street and must be aggregated to get overall metrics.
 */
export interface PlayerStreetStats {
    /** Unique identifier for each game */
    gameId: string;
    /** Unique identifier for each hand */
    hand: number;
    /** Unique identifier for the table */
    tableId: string;
    /** Identifier for the player */
    playerId: string;
    /** Timestamp when player started on the street */
    timestamp: number;
    /** Current street (e.g., 'preflop', 'flop', 'turn', 'river') */
    street: Street;
    /** Total time spent by the player on decisions on the street*/
    decisionDuration: number;
    /** Number of aggressions on this street */
    aggressions: number;
    /** Count of calls or checks made on this street */
    passivities: number;
    /** Decisions made on this street */
    decisions: number;
    /** Count of bets made on this street */
    bets: number;
    /** Count of raises made on this street */
    raises: number;
    /** Count of calls made on this street */
    calls: number;
    /** Count of checks made on this street */
    checks: number;
    /** Player folded on this street */
    folds: number;
    /** 1 if the player went all-in on this street, else 0 */
    allIns: number;
    /** 1 if the player voluntarily put money in the pot (beyond forced bets), else 0 */
    voluntaryPutMoneyInPotTimes: number;
    /** 1 if the player made the first aggression on this street, else 0 */
    firstAggressions: number;
    /** 1 if the player made the last aggression on this street, else 0 */
    lastAggressions: number;
    /** Number of times the player limped (called without raising) on this street */
    limps: number;
    /** Number of opportunities for a limp */
    limpOpportunities: number;
    /** Number of times the player made a 3-bet (re-raise) on this street */
    threeBets: number;
    /** Number of opportunities for a 3-bet */
    threeBetOpportunities: number;
    /** Number of times the player folded when facing a 3-bet */
    threeBetFolds: number;
    /** Number of times the player faced a 3-bet */
    threeBetChallenges: number;
    /** Number of times the player won after facing a 3-bet */
    threeBetDefenses: number;
    /** Number of times the player made a 4-bet (re-re-raise) on this street */
    fourBets: number;
    /** Number of opportunities for a 4-bet */
    fourBetOpportunities: number;
    /** Number of times the player folded when facing a 4-bet */
    fourBetFolds: number;
    /** Number of times the player faced a 4-bet */
    fourBetChallenges: number;
    /** Number of times the player won after facing a 4-bet */
    fourBetDefenses: number;
    /** Whether the player made a continuation bet */
    cbet: number;
    /** Number of opportunities for a continuation bet */
    cbetOpportunities: number;
    /** Number of times the player folded when facing a continuation bet */
    cbetFolds: number;
    /** Number of times the player faced a continuation bet */
    cbetChallenges: number;
    /** Number of times the player won after facing a continuation bet */
    cbetDefenses: number;
    /** Count of steal attempts (raising from late position to win the blinds) */
    steals: number;
    /** Number of opportunities to attempt a steal */
    stealOpportunities: number;
    /** Number of times the player folded when facing a steal */
    stealFolds: number;
    /** Number of times the player faced a steal */
    stealChallenges: number;
    /** Number of times the player won after facing a steal */
    stealDefenses: number;
    /** Count of donk bets made (betting out-of-position into the pre-flop aggressor) */
    donkBets: number;
    /** Opportunities for donk bets */
    donkBetOpportunities: number;
    /** Number of times the player folded when facing a donk bet */
    donkBetFolds: number;
    /** Number of times the player faced a donk bet */
    donkBetChallenges: number;
    /** Number of times the player won after facing a donk bet */
    donkBetDefenses: number;
    /** Count of check raises executed */
    checkRaises: number;
    /** Opportunities to perform a check raise */
    checkRaiseOpportunities: number;
    /** Number of times the player folded when facing a check raise */
    checkRaiseFolds: number;
    /** Number of times the player faced a check raise */
    checkRaiseChallenges: number;
    /** Number of times the player won after facing a check raise */
    checkRaiseDefenses: number;
    /** Number of times the player folded when facing a shove */
    shoveFolds: number;
    /** Number of times the player faced a shove */
    shoveChallenges: number;
    /** Number of times the player won after facing a shove */
    shoveDefenses: number;
    /** Number of times the player made an open shove */
    openShoves: number;
    /** Number of opportunities for an open shove */
    openShoveOpportunities: number;
    /** Number of times the player folded when facing an open shove */
    openShoveFolds: number;
    /** Number of times the player faced an open shove */
    openShoveChallenges: number;
    /** Number of times the player won after facing an open shove */
    openShoveDefenses: number;
    /** Whether the player won subsequently */
    success: number;
    /** Whether the player went to showdown */
    wentToShowdown: number;
    /** Whether the player won money at showdown (success) */
    wonAtShowdown: number;
    /** Whether the player won money at showdown (success) */
    wonWithoutShowdown: number;
    /** Chip stack at the start of the hand */
    stackBefore: number;
    /** Chip stack at the end of the hand */
    stackAfter: number;
    /** Big blind value used for normalizing profit (for bb100 calculations) */
    bigBlind: number;
    /** Times the player won */
    won: number;
    /** Times the player lost */
    lost: number;
    /** Currency of the game */
    currency: string;
    /** Rate of the currency at the time of the game */
    currencyRate: number;
    /** Amount invested on this street */
    investments: number;
    /** Amount of earned money with investment subtracted */
    profits: number;
    /** Amount of earned money with investment subtracted */
    balance: number;
    /** Amount won on this street (positive only) */
    winnings: number;
    /** Amount lost on this street (positive only) */
    losses: number;
    /** Amount taken by the house from the pot */
    rake: number;
}
/**
 * The PokerMetrics interface defines aggregated metrics computed over multiple hands.
 * Each metric includes its calculation, an explanation of its usefulness (importance),
 * and notes on how certain the metric is (certainty), based on the data quality.
 */
export interface PokerMetrics extends PlayerStreetStats {
    gameIds: Set<string>;
    gameCount: number;
    limpFrequency: number;
    limpSuccesses: number;
    limpSuccessFrequency: number;
    aggressionFactor: number;
    aggressionFrequency: number;
    cbetFrequency: number;
    cbetFoldFrequency: number;
    cbetDefenseFrequency: number;
    cbetSuccesses: number;
    cbetSuccessFrequency: number;
    threeBetFrequency: number;
    threeBetFoldFrequency: number;
    threeBetDefenseFrequency: number;
    threeBetSuccesses: number;
    threeBetSuccessFrequency: number;
    fourBetFrequency: number;
    fourBetFoldFrequency: number;
    fourBetDefenseFrequency: number;
    fourBetSuccesses: number;
    fourBetSuccessFrequency: number;
    stealFrequency: number;
    stealFoldFrequency: number;
    stealDefenseFrequency: number;
    stealSuccesses: number;
    stealSuccessFrequency: number;
    donkBetFrequency: number;
    donkBetFoldFrequency: number;
    donkBetDefenseFrequency: number;
    donkBetSuccesses: number;
    donkBetSuccessFrequency: number;
    checkRaiseFrequency: number;
    checkRaiseFoldFrequency: number;
    checkRaiseDefenseFrequency: number;
    checkRaiseSuccesses: number;
    checkRaiseSuccessFrequency: number;
    openShoveFrequency: number;
    openShoveFoldFrequency: number;
    openShoveDefenseFrequency: number;
    openShoveSuccesses: number;
    openShoveSuccessFrequency: number;
    wentToShowdownFrequency: number;
    wonAtShowdownFrequency: number;
    wonWithoutShowdownFrequency: number;
    decisionDurationAverage: number;
    decisionDuration: number;
    winningsAverage: number;
    investmentsAverage: number;
    profitAverage: number;
    lossesAverage: number;
    bb100: number;
    profitFactor: number;
    returnOnInvestmentFactor: number;
    stackToPotFactor: number;
}
//# sourceMappingURL=types.d.ts.map