"""Pydantic DTOs for LSEG bond scoring outputs."""
from __future__ import annotations

from typing import Optional
from pydantic import BaseModel


class BondRiskResult(BaseModel):
    isin: str
    composite_score: float          # 0–100
    composite_grade: str            # "LOW RISK" | "MODERATE RISK" | "ELEVATED RISK" | "HIGH RISK"
    rating_score: Optional[float] = None
    rating_grade: Optional[str] = None   # "Investment Grade" | "High Yield" | "Distressed"
    spread_score: float
    spread_used: str                # "z_spread" | "asset_swap_spread" | "none"
    spread_bps: Optional[float] = None
    is_investment_grade: bool
