use typed_arena::Arena;

use crate::{game_state::GameState, action::PlayerAction, agent::PlayerAgent};

pub struct GameStateMachine<'a> {
  pub state_arena: Arena<GameState>,
  pub action_arena: Arena<PlayerAction>,
  pub history: Vec<&'a GameState>,
  pub action_history: Vec<&'a PlayerAction>,
  pub current_state: &'a GameState,
  pub player_agent1: PlayerAgent,
  pub player_agent2: PlayerAgent,
}