from __future__ import annotations from typing import Optional from pydantic import BaseModel as PydanticBaseModel from hopper.enums import PlayerState class BaseModel(PydanticBaseModel): class Config: orm_mode = True class PingResponse(BaseModel): message: str class BoardDto(BaseModel): width: int height: int class PositionDto(BaseModel): x: int y: int class PlayerDto(BaseModel): id: str name: str active: bool position: PositionDto move_count: int move_attempt_count: int state: PlayerState class DestinationDto(BaseModel): position: PositionDto class ProductDto(BaseModel): name: str id: str description: Optional[str] = None class StartGameRequestDto(BaseModel): player_name: str class GameInfoDto(BaseModel): board: BoardDto destination: DestinationDto class StartGameResponseDto(GameInfoDto): player: PlayerDto class MovePlayerResponseDto(BaseModel): player: PlayerDto class PlayerInfoResponseDto(MovePlayerResponseDto): ... class ErrorResponseDto(BaseModel): detail: str class GetProductsResponse(BaseModel): products: list[ProductDto] class PurchaseProductDto(BaseModel): product_id: str