use crate::board::state::BasicBoardState;
use crate::game::Game;
use crate::play::PlayRecord;
use primitive_types::{U256, U512};
use crate::game::logic::GameLogic;
use crate::game::state::GameState;
pub type SmallBitfield = u64;
pub type MediumBitfield = u128;
pub type LargeBitfield = U256;
pub type HugeBitfield = U512;
pub type SmallBasicBoardState = BasicBoardState<SmallBitfield>;
pub type MediumBasicBoardState = BasicBoardState<MediumBitfield>;
pub type LargeBasicBoardState = BasicBoardState<LargeBitfield>;
pub type HugeBasicBoardState = BasicBoardState<HugeBitfield>;
pub type SmallPlayRecord = PlayRecord<SmallBasicBoardState>;
pub type MediumPlayRecord = PlayRecord<MediumBasicBoardState>;
pub type LargePlayRecord = PlayRecord<LargeBasicBoardState>;
pub type HugePlayRecord = PlayRecord<HugeBasicBoardState>;
pub type SmallBasicGameState = GameState<SmallBasicBoardState>;
pub type MediumBasicGameState = GameState<MediumBasicBoardState>;
pub type LargeBasicGameState = GameState<LargeBasicBoardState>;
pub type HugeBasicGameState = GameState<HugeBasicBoardState>;
pub type SmallBasicGameLogic = GameLogic<SmallBasicBoardState>;
pub type MediumBasicGameLogic = GameLogic<MediumBasicBoardState>;
pub type LargeBasicGameLogic = GameLogic<LargeBasicBoardState>;
pub type HugeBasicGameLogic = GameLogic<HugeBasicBoardState>;
pub type SmallBasicGame = Game<SmallBasicBoardState>;
pub type MediumBasicGame = Game<MediumBasicBoardState>;
pub type LargeBasicGame = Game<LargeBasicBoardState>;
pub type HugeBasicGame = Game<HugeBasicBoardState>;