"""Cache-related Pydantic models."""

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, Field


class CacheOptions(BaseModel):
    """Cache options."""

    ttl: Optional[int] = None  # seconds
    tags: List[str] = Field(default_factory=list)
    immutable: bool = False


class CacheStats(BaseModel):
    """Cache statistics."""

    size: int
    hit_rate: float
    miss_rate: float
    total_size: int  # bytes
    oldest_entry: Optional[datetime] = None
    newest_entry: Optional[datetime] = None