from __future__ import annotations

from typing import Optional, List
from pydantic import BaseModel


class FontEntry(BaseModel):
    name: str
    status: str                     # 'safe' | 'professional' | 'unknown'
    substitute: Optional[str] = None
    substitute_quality: Optional[str] = None
    used_for: str = ''


class ScanWarning(BaseModel):
    type: str
    severity: str                   # 'info' | 'warning' | 'error'
    page: Optional[int] = None
    message: str


class ScanReport(BaseModel):
    session_id: str = ''
    pages: int
    stories: int
    images: int
    tables: int
    fonts: List[FontEntry] = []
    warnings: List[ScanWarning] = []
