from __future__ import annotations

from pydantic import BaseModel, Field


class CryptoSnapshotItemInput(BaseModel):
    asset_id: str
    quantity: str


class CryptoSnapshotWalletInput(BaseModel):
    wallet_id: str
    evidence_source: str
    note: str = ""
    items: list[CryptoSnapshotItemInput] = Field(default_factory=list)


class CryptoSnapshotPreviewRequest(BaseModel):
    observed_at: str
    wallets: list[CryptoSnapshotWalletInput]


class CryptoSnapshotConfirmRequest(CryptoSnapshotPreviewRequest):
    preview_id: str
    confirmation_key: str
    confirm: bool


class CryptoTransferPairPreviewRequest(BaseModel):
    withdrawal_transaction_id: str
    deposit_transaction_id: str
    evidence_reference: str
    note: str = ""


class CryptoTransferPairConfirmRequest(CryptoTransferPairPreviewRequest):
    preview_id: str
    confirmation_key: str
    confirm: bool
