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

from __future__ import annotations

from typing import Literal
from pydantic import BaseModel


class ScenarioComplementRegionPM(BaseModel):
    """
    Lightweight representation of a single region.

    We store:
      - fp: stable-ish short fingerprint (from modeling/complement.py)
      - invariant/model/model_eval/constraints: optional strings for display
    """
    fp: str

    num_constraints: int = 0
    invariant: str | None = None
    model: str | None = None
    model_eval: str | None = None

    # optional: include a few constraints for preview
    constraints_preview: list[str] = []


class ScenarioComplementPM(BaseModel):
    kind: Literal["scenario_complement"] = "scenario_complement"

    count_regions: int = 0

    # a small sample for UI
    regions_preview: list[ScenarioComplementRegionPM] = []

    regions_all: list[ScenarioComplementRegionPM] | None = None
