Spaces:
Sleeping
Sleeping
| """Pydantic models for Watchlist and FR History.""" | |
| from datetime import datetime | |
| from typing import Optional, List | |
| from pydantic import BaseModel, Field | |
| class WatchlistItem(BaseModel): | |
| """Watchlist item model.""" | |
| symbol: str = Field(..., description="Trading pair symbol, e.g., BTC_USDT") | |
| added_at: datetime = Field(default_factory=datetime.utcnow) | |
| notes: Optional[str] = Field(None, description="User notes about this coin") | |
| class WatchlistItemWithFR(WatchlistItem): | |
| """Watchlist item with current FR data.""" | |
| funding_rate: Optional[float] = None | |
| funding_rate_percent: Optional[str] = None | |
| last_price: Optional[float] = None | |
| change_24h: Optional[float] = None | |
| signal: Optional[str] = None | |
| class WatchlistResponse(BaseModel): | |
| """Response model for watchlist endpoints.""" | |
| success: bool = True | |
| data: List[WatchlistItemWithFR] | |
| count: int | |
| class AddWatchlistRequest(BaseModel): | |
| """Request model for adding to watchlist.""" | |
| symbol: str | |
| notes: Optional[str] = None | |
| class FRHistoryRecord(BaseModel): | |
| """FR history record model.""" | |
| symbol: str | |
| funding_rate: float | |
| funding_rate_percent: str | |
| last_price: float | |
| recorded_at: datetime = Field(default_factory=datetime.utcnow) | |
| class FRHistoryResponse(BaseModel): | |
| """Response model for FR history endpoint.""" | |
| success: bool = True | |
| symbol: str | |
| data: List[FRHistoryRecord] | |
| count: int | |