from decimal import Decimal from pydantic import BaseModel,Field from src.application.domain.enums import SbpWithdrawalStatus class SbpBankResponse(BaseModel): id: str name: str class SbpBanksResponse(BaseModel): status_code: int banks: list[SbpBankResponse] class CreateSbpWithdrawal(BaseModel): bank_id: str = Field(min_length=1,max_length=32) phone: str = Field(min_length=5,max_length=32) usdt_amount: Decimal = Field(ge=Decimal('100'),le=Decimal('5000'),decimal_places=2,max_digits=20) class SbpWithdrawalResponse(BaseModel): id: str | None = None created_at: str | None = None updated_at: str | None = None user_id: str | None = None bank_id: str | None = None bank_name: str | None = None phone: str | None = None wallet_address: str | None = None usdt_amount: str | None = None rub_amount: str | None = None usdt_exchange_rate: str | None = None service_fee_rate: str | None = None service_fee_usdt: str | None = None mozen_order_id: str | None = None trace_id: str | None = None status: SbpWithdrawalStatus | None = None provider_error: str | None = None usdt_received_at: str | None = None payout_created_at: str | None = None payout_completed_at: str | None = None class CreateSbpWithdrawalResponse(BaseModel): status_code: int withdrawal: SbpWithdrawalResponse class SbpWithdrawalDetailResponse(BaseModel): status_code: int withdrawal: SbpWithdrawalResponse