"""
Criteria module — eligibility criteria management for systematic reviews.

Provides domain models, AI service (generation/PICO/refinement/consolidation),
use-case functions, and in-memory CRUD service with undo support.
"""

from .models import (
    ConsolidatedCriterion,
    ConsolidationProposal,
    ConsolidationResult,
    CriterionMatch,
    CriterionSource,
    CriterionType,
    DEFAULT_CATEGORIES,
    DuplicateGroup,
    DuplicateGroupType,
    ExclusionCriterion,
    PICO_CATEGORIES,
    RQ_RELEVANCE_TYPES,
    TestResult,
    UndoAction,
)
from .ai_service import CriteriaAIService
from .service import CriteriaService
from .use_cases import (
    execute_extract_pico,
    execute_generate,
    execute_reconcile_conflicts,
    execute_refine,
)

__all__ = [
    # Models
    "ConsolidatedCriterion",
    "ConsolidationProposal",
    "ConsolidationResult",
    "CriterionMatch",
    "CriterionSource",
    "CriterionType",
    "DEFAULT_CATEGORIES",
    "DuplicateGroup",
    "DuplicateGroupType",
    "ExclusionCriterion",
    "PICO_CATEGORIES",
    "RQ_RELEVANCE_TYPES",
    "TestResult",
    "UndoAction",
    # Services
    "CriteriaAIService",
    "CriteriaService",
    # Use cases
    "execute_extract_pico",
    "execute_generate",
    "execute_reconcile_conflicts",
    "execute_refine",
]
