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

from __future__ import annotations

from typing import Literal
from pydantic import BaseModel

from speclogician.presentation.models.domain import DomainModelPM
from speclogician.presentation.models.scenario_complement import ScenarioComplementPM


class SpecCountsPM(BaseModel):
    num_sc_total: int = 0
    num_sc_missing: int = 0
    num_sc_matched: int = 0
    num_sc_inconsistent: int = 0
    num_sc_conflicted: int = 0


class SpecPM(BaseModel):
    kind: Literal["spec"] = "spec"
    domain: DomainModelPM
    counts: SpecCountsPM

    # cheap “list view” for CLI
    scenario_names: list[str] = []

    scenario_complement: ScenarioComplementPM | None = None