"""Typed contracts for the minimal component registry.""" from typing import Literal from uuid import UUID from pydantic import AwareDatetime, BaseModel, ConfigDict, Field ComponentType = Literal["control_board", "hashboard", "power_supply", "fan"] class ComponentCreateRequest(BaseModel): model_config = ConfigDict(extra="forbid", str_strip_whitespace=True) component_type: ComponentType asset_id: str | None = Field(default=None, max_length=255) manufacturer: str | None = Field(default=None, max_length=255) model: str | None = Field(default=None, max_length=255) manufacturer_serial: str | None = Field(default=None, max_length=255) class ComponentDetail(BaseModel): component_id: UUID component_type: ComponentType asset_id: str | None = None manufacturer: str | None = None model: str | None = None manufacturer_serial: str | None = None created_at: AwareDatetime created_by: UUID class ComponentResponse(BaseModel): data: ComponentDetail meta: dict[str, object] = Field(default_factory=dict) error: None = None