"""Pydantic schemas for tax rate lookups."""
from typing import Optional, List
from pydantic import BaseModel


class TaxRateResponse(BaseModel):
    zip: str
    city: Optional[str] = None
    state: Optional[str] = None
    country: str
    combined_rate: float        # fraction, e.g. 0.0825
    state_rate: float
    county_rate: float
    city_rate: float
    special_district_rate: float
    label: str                  # "90210 — Beverly Hills, CA (8.25%)"


class TaxSearchResult(BaseModel):
    zip: str
    city: Optional[str] = None
    state: Optional[str] = None
    country: str
    combined_rate: float
    label: str


class TaxSearchResponse(BaseModel):
    results: List[TaxSearchResult]
