from datetime import datetime from decimal import Decimal from pydantic import BaseModel, ConfigDict, Field class DevLoginRequest(BaseModel): telegram_id: int = Field(default=100001, ge=1) username: str | None = "dev_user" first_name: str | None = "Traveler" class TelegramAuthRequest(BaseModel): init_data: str class TokenResponse(BaseModel): access_token: str token_type: str = "bearer" class UserResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int telegram_id: int | None username: str | None first_name: str | None balance: Decimal agreement_accepted: bool agreement_accepted_at: datetime | None created_at: datetime class DepositRequest(BaseModel): amount: Decimal = Field(..., description="Allowed stub amounts: 100, 500, 1000") class DepositResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int amount: Decimal created_at: datetime class WalletResponse(BaseModel): balance: Decimal deposits: list[DepositResponse] class GameStub(BaseModel): slug: str title: str description: str status: str = "coming_soon"