def initial_state(players, small_blind: 10, big_blind: 20, deck_seed: 1)
      reversed_position_order = POSITIONS_ORDER[:preflop].reverse
      positions = players.map.with_index do |player, index|
        last_index = players.count - 1

        [player[:id], reversed_position_order[last_index - index]]
      end.to_h

      normalized_players = players.map do |id:, balance:, **|
        [
          id,
          {
            id: id,
            active: true,
            balance: balance,
            money_in_pot: 0,
            position: positions[id],
            cards: [],
            last_move: {},
          },
        ]
      end.to_h

      Hamster.from(
        players: normalized_players,
        aggressor_id: nil,
        board: [],
        small_blind: small_blind,
        big_blind: big_blind,
        pot: 0,
        pending_request: false,
        winner_ids: [],
        top_hands: {},
        game_ended: false,
        last_action: { type: :game_start },
        current_stage: nil,
        current_player_id: nil,
        deck: Card.french_deck.shuffle(random: Random.new(deck_seed))
      )
    end
def initial_state(players, small_blind: 10, big_blind: 20, deck_seed: 1)
      reversed_position_order = POSITIONS_ORDER[:preflop].reverse
      positions = players.map.with_index do |player, index|
        last_index = players.count - 1

        [player[:id], reversed_position_order[last_index - index]]
      end.to_h

      normalized_players = players.map do |id:, balance:, **|
        [
          id,
          {
            id: id,
            active: true,
            balance: balance,
            money_in_pot: 0,
            position: positions[id],
            cards: [],
            last_move: {},
          },
        ]
      end.to_h

      Hamster.from(
        players: normalized_players,
        aggressor_id: nil,
        board: [],
        small_blind: small_blind,
        big_blind: big_blind,
        pot: 0,
        pending_request: false,
        winner_ids: [],
        top_hands: {},
        game_ended: false,
        last_action: { type: :game_start },
        current_stage: nil,
        current_player_id: nil,
        deck: Card.french_deck.shuffle(random: Random.new(deck_seed))
      )
    end
TODO: remove blinds defaults