#
#   Imandra Inc.
#   
#   speclogician/presentation/models/recommendations.py
#


from __future__ import annotations

from typing import Literal
from pydantic import BaseModel, Field


RecommendationKind = Literal["error", "warning", "next", "info"]


class RecommendationPM(BaseModel):
    kind: RecommendationKind = "next"
    priority: int = 50  # lower = higher priority
    text: str


class RecommendationsPM(BaseModel):
    """
    A presentable bundle of recommendations (already deduped/sorted upstream).
    """
    count: int = 0
    items: list[RecommendationPM] = Field(default_factory=list)

    # Optional: quick counts by kind (useful for compact views)
    num_error: int = 0
    num_warning: int = 0
    num_next: int = 0
    num_info: int = 0