from pydantic import BaseModel, Field


class TopupPlanOut(BaseModel):
    topupPlanId: str
    name: str
    price: str
    images: int
    videos: int
    productId: str


class VerifyTopupRequest(BaseModel):
    purchaseToken: str = Field(..., min_length=1)
    productId: str = Field(..., min_length=1)


class VerifyTopupResponse(BaseModel):
    status: str
    topupPlanId: str | None = None
    imagesAdded: int | None = None
    videosAdded: int | None = None
    message: str | None = None


class PlanInfo(BaseModel):
    maxImages: int
    maxVideos: int
    maxPpts: int
    windowHours: int


class RemainingInfo(BaseModel):
    planImages: int
    planVideos: int
    planPpts: int
    topupImages: int
    topupVideos: int
    totalImages: int
    totalVideos: int


class UsageResponse(BaseModel):
    isPremium: bool
    tier: str
    plan: PlanInfo
    remaining: RemainingInfo
