from pydantic import BaseModel, Field from typing import List, Optional, Dict, Any from datetime import datetime class AssetBase(BaseModel): id: str rank: Optional[str] = None symbol: str name: str supply: Optional[str] = None max_supply: Optional[str] = None market_cap_usd: Optional[str] = None volume_usd_24hr: Optional[str] = None price_usd: Optional[str] = None change_percent_24hr: Optional[str] = None vwap_24hr: Optional[str] = None explorer: Optional[str] = None class AssetCreate(AssetBase): pass class AssetInDB(AssetBase): last_updated: datetime class Config: orm_mode = True class AssetResponse(BaseModel): timestamp: int data: List[AssetBase] class SingleAssetResponse(BaseModel): timestamp: int data: AssetBase class AssetHistoryPoint(BaseModel): price_usd: str time: int # Unix timestamp in milliseconds date: datetime class AssetHistoryResponse(BaseModel): timestamp: int data: List[AssetHistoryPoint] class AssetMarket(BaseModel): exchange_id: str base_id: str quote_id: str base_symbol: str quote_symbol: str volume_usd_24hr: str price_usd: str volume_percent: str class AssetMarketsResponse(BaseModel): timestamp: int data: List[AssetMarket] class ErrorResponse(BaseModel): error: str timestamp: Optional[int] = None