from typing import Any, Optional

from pydantic import BaseModel, ConfigDict


class EventResponse(BaseModel):
    id: str
    label: str
    sub_label: Optional[str]
    camera: str
    start_time: float
    end_time: Optional[float]
    false_positive: Optional[bool]
    zones: list[str]
    thumbnail: Optional[str]
    has_clip: bool
    has_snapshot: bool
    retain_indefinitely: bool
    plus_id: Optional[str]
    model_hash: Optional[str]
    detector_type: Optional[str]
    model_type: Optional[str]
    data: dict[str, Any]

    model_config = ConfigDict(protected_namespaces=())


class EventCreateResponse(BaseModel):
    success: bool
    message: str
    event_id: str


class EventMultiDeleteResponse(BaseModel):
    success: bool
    deleted_events: list[str]
    not_found_events: list[str]


class EventUploadPlusResponse(BaseModel):
    success: bool
    plus_id: str
