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

from __future__ import annotations

from typing import Literal
from pydantic import BaseModel, Field


class ScenarioStatusPM(BaseModel):
    kind: Literal["valid", "missing", "inconsistent"]
    missing_preds: list[str] = Field(default_factory=list)
    missing_trans: list[str] = Field(default_factory=list)


class ScenarioPM(BaseModel):
    comp_id: str
    name: str

    status: ScenarioStatusPM

    given: list[str] = Field(default_factory=list)
    when: list[str] = Field(default_factory=list)
    then: list[str] = Field(default_factory=list)

    given_preds_consistent: bool = True
    when_preds_consistent: bool = True
    all_preds_consistent: bool = True