from typing import List, Optional, Tuple

class Turn:
    BLACK: "Turn"
    WHITE: "Turn"

    def __eq__(self, other: object) -> bool: ...
    def __str__(self) -> str: ...

class Color:
    EMPTY: "Color"
    BLACK: "Color"
    WHITE: "Color"

    def __eq__(self, other: object) -> bool: ...
    def __str__(self) -> str: ...

class Board:
    def __init__(self) -> None: ...
    def get_board(self) -> Tuple[int, int, Turn]: ...
    def set_board(self, player_board: int, opponent_board: int, turn: Turn) -> None: ...
    def set_board_str(self, line: str, turn: Turn) -> None: ...
    def get_board_line(self) -> str: ...
    def get_board_vec_black(self) -> List[Color]: ...
    def get_board_vec_turn(self) -> List[Color]: ...
    def get_board_matrix(self) -> List[List[List[int]]]: ...
    def player_piece_num(self) -> int: ...
    def opponent_piece_num(self) -> int: ...
    def black_piece_num(self) -> int: ...
    def white_piece_num(self) -> int: ...
    def piece_sum(self) -> int: ...
    def diff_piece_num(self) -> int: ...
    def get_legal_moves(self) -> int: ...
    def get_legal_moves_vec(self) -> List[int]: ...
    def get_legal_moves_tf(self) -> List[bool]: ...
    def is_legal_move(self, pos: int) -> bool: ...
    def get_child_boards(self) -> List["Board"]: ...
    def do_move(self, pos: int) -> None: ...
    def do_pass(self) -> None: ...
    def is_pass(self) -> bool: ...
    def is_game_over(self) -> bool: ...
    def is_win(self) -> bool: ...
    def is_lose(self) -> bool: ...
    def is_draw(self) -> bool: ...
    def is_black_win(self) -> bool: ...
    def is_white_win(self) -> bool: ...
    def get_winner(self) -> Optional[Turn]: ...
    def get_random_move(self) -> int: ...
    def __str__(self) -> str: ...
    def clone(self) -> "Board": ...

class Arena:
    def __init__(self, command1: List[str], command2: List[str]) -> None: ...
    def play_n(self, n: int) -> None: ...
    def get_stats(self) -> Tuple[int, int, int]: ...
    def get_pieces(self) -> Tuple[int, int]: ...
