from typing import Optional from pydantic import BaseModel, Field from datetime import datetime import enum class DepositStatus(str, enum.Enum): PENDING = "pending" APPROVED = "approved" REJECTED = "rejected" class DepositBase(BaseModel): amount: float = Field(..., gt=0) transaction_hash: str admin_notes: Optional[str] = None class DepositCreate(DepositBase): user_id: int class DepositUpdate(BaseModel): status: Optional[DepositStatus] = None admin_notes: Optional[str] = None class DepositInDBBase(DepositBase): id: int user_id: int status: DepositStatus proof_image_path: Optional[str] = None created_at: datetime updated_at: datetime class Config: orm_mode = True class Deposit(DepositInDBBase): pass class DepositRequest(BaseModel): amount: float = Field(..., gt=0) transaction_hash: str class DepositApprove(BaseModel): admin_notes: Optional[str] = None class DepositReject(BaseModel): admin_notes: str