from pydantic import BaseModel class PricingCoverageResponse(BaseModel): scheme_id: str scheme_version_id: str total_seats: int priced_seats: int unpriced_seats: int coverage_percent: float class UnpricedSeatItem(BaseModel): seat_record_id: str seat_id: str | None element_id: str | None sector_id: str | None group_id: str | None row_label: str | None seat_number: str | None reason_code: str reason_message: str class UnpricedSeatListResponse(BaseModel): scheme_id: str scheme_version_id: str total: int items: list[UnpricedSeatItem] class ExplainMatchedRule(BaseModel): matched_rule_level: str matched_target_ref: str pricing_category_id: str amount: str currency: str class ExplainSeatPriceResponse(BaseModel): scheme_id: str scheme_version_id: str seat_id: str element_id: str | None sector_id: str | None group_id: str | None row_label: str | None seat_number: str | None has_price: bool reason_code: str reason_message: str matched_rule: ExplainMatchedRule | None