from pydantic import BaseModel, constr, condecimal
from typing import Optional

class PaymentCreateSchema(BaseModel):
    amount: condecimal(gt=0)  # Amount must be greater than 0
    currency: constr(min_length=3, max_length=3)  # Currency code must be 3 characters
    description: str
    return_url: str
    capture: bool = True
    metadata: Optional[dict] = None

class PaymentResponseSchema(BaseModel):
    id: str
    status: str
    confirmation_url: str

class PaymentStatusSchema(BaseModel):
    id: str
    status: str
    amount: condecimal(gt=0)
    currency: constr(min_length=3, max_length=3)  # Currency code must be 3 characters
    description: str
    created_at: str  # ISO format date string
    confirmation_url: Optional[str] = None