from typing import List, TypedDict

from pydantic import BaseModel


class ArticleSummary(TypedDict):
    """Type definition for article summary data returned from the LLM."""
    title: str
    summary_de: str
    summary_en: str


# Pydantic models for API requests and responses
class CronSettings(BaseModel):
    """Settings for the cron job that harvests news."""
    hours: float


class FeedData(BaseModel):
    """Data for a news feed."""
    country: str
    url: str


class ModelStatus(BaseModel):
    """Status of the LLM model."""
    name: str
    status: str
    available_models: List[str]


class ErrorResponse(BaseModel):
    """Standard error response."""
    status: str
    message: str


class SuccessResponse(BaseModel):
    """Standard success response."""
    status: str


class TimestampResponse(BaseModel):
    """Response containing a timestamp."""
    ts: int


class HoursResponse(BaseModel):
    """Response containing hours setting."""
    hours: float
