from pydantic import BaseModel, validator from typing import Literal, Optional class SipFrequency(BaseModel): value: int unit: Literal["days", "minutes"] class StrategyStartRequest(BaseModel): strategy_name: str initial_cash: Optional[float] = None sip_amount: float sip_frequency: SipFrequency mode: Literal["PAPER"] @validator("initial_cash") def validate_cash(cls, v): if v is None: return v if v < 10000: raise ValueError("Initial cash must be at least 10,000") return v class AuthPayload(BaseModel): email: Optional[str] = None username: Optional[str] = None password: Optional[str] = None class PasswordResetRequest(BaseModel): email: str class PasswordResetConfirm(BaseModel): email: str otp: str new_password: str