from __future__ import annotations

from decimal import Decimal
from typing import Optional

from pydantic import BaseModel


class PaymentTokenLookupResponse(BaseModel):
    cemetery_name: str
    cemetery_logo_url: Optional[str] = None
    family_name: Optional[str] = None
    plot_reference: Optional[str] = None
    contract_reference: str
    amount_due: str
    currency: str
    stripe_publishable_key: str


class CreateIntentResponse(BaseModel):
    client_secret: str


class WebhookEventIn(BaseModel):
    """Minimal typed representation of the Stripe webhook event used internally."""
    stripe_payment_intent_id: str
    stripe_charge_id: Optional[str] = None
    amount: Decimal
    currency: str
    contract_id: str
    tenant_id: str
    receipt_email: Optional[str] = None
