"""Sprint success forecasting for small agile teams.

This package implements the non-asymptotic model described in the amended
article:

- Exact daily regimes via absences (2^n) and blocked/disruption states (K).
- Unbounded focus/productivity multipliers (lognormal) with AI covariates.
- Unbounded item-effort distributions derived from three-point estimates.
- Global + per-engineer bias correction with AI covariate.
- Bayesian pooling utilities for sparse data.
- Paired Monte Carlo simulation for probability of sprint success and
  counterfactual attribution of AI impact.

The public API is intentionally small; see ``examples/demo.py``.
"""

from __future__ import annotations

from importlib.metadata import PackageNotFoundError, version

from .distributions import QuantileLevels, WeightedLogNormalQuantileFitter
from .domain import BlockedStateSpec, SprintPlan, WorkItemEstimate
from .forecaster import AICounterfactualResult, SprintSuccessForecaster
from .models.bias import (
    BiasHyperparameters,
    BiasModelParameters,
    BiasObservation,
    HierarchicalBiasEstimator,
)
from .models.focus import (
    FocusHyperparameters,
    FocusModelParameters,
    FocusObservation,
    HierarchicalFocusEstimator,
)
from .pooling import BetaBinomialPosterior, DirichletMultinomialPosterior
from .exact_states import (
    AbsenceState,
    DailyRegime,
    enumerate_absence_states,
    enumerate_daily_regimes,
)

try:
    __version__ = version("sprint-forecast")
except PackageNotFoundError:  # pragma: no cover
    __version__ = "0.0.0"

__all__ = [
    "AICounterfactualResult",
    "BetaBinomialPosterior",
    "BlockedStateSpec",
    "BiasHyperparameters",
    "BiasModelParameters",
    "BiasObservation",
    "AbsenceState",
    "DirichletMultinomialPosterior",
    "DailyRegime",
    "enumerate_absence_states",
    "enumerate_daily_regimes",
    "FocusHyperparameters",
    "FocusModelParameters",
    "FocusObservation",
    "HierarchicalBiasEstimator",
    "HierarchicalFocusEstimator",
    "QuantileLevels",
    "SprintPlan",
    "SprintSuccessForecaster",
    "WeightedLogNormalQuantileFitter",
    "WorkItemEstimate",
    "__version__",
]
