from __future__ import annotations

from datetime import datetime
from typing import Optional
from uuid import UUID

from pydantic import BaseModel, Field


class RuntimeAiPackagePublic(BaseModel):
    slug: str
    name: str
    description: Optional[str] = None
    credits: int
    price_minor: int
    currency: str
    stripe_ready: bool = False


class RuntimeAiBalanceResponse(BaseModel):
    millicredits: int
    credits: float
    packages: list[RuntimeAiPackagePublic]


class RuntimeAiCheckoutRequest(BaseModel):
    package_slug: str
    success_url: Optional[str] = None
    cancel_url: Optional[str] = None
    idempotency_key: Optional[str] = Field(default=None, min_length=1, max_length=255)


class RuntimeAiPriceRow(BaseModel):
    provider: str
    model: str
    meter: str
    millicredits_per_unit: int
    unit: str
