"""Evaluation primitives and utilities."""

from .base_evaluator import EvaluationResult, IEvaluator, IStatefulEvaluator
from .evaluators import (
    BBEHEvaluator,
    CodeExecutionEvaluator,
    ComposedEvaluator,
    ExactMatchEvaluator,
    JsonValueEvaluator,
    MultipleChoiceStrictEvaluator,
    NumericToleranceEvaluator,
    PartialRegexEvaluator,
    PythonLiteralEqualityEvaluator,
    TokenListEvaluator,
    YesNoEvaluator,
    evaluate_bbeh,
    exact_match_score,
    extract_answer_bbeh,
    fuzzy_match_bbeh,
    normalize_answer,
    strip_latex_bbeh,
    token_f1_score,
)
from .extractors import (
    MCAnswerExtractor,
    YesNoExtractor,
    extract_mc_answer,
    extract_yes_no_answer,
)
from .metrics import ConfusionMatrix, JudgeMetrics
from .pipeline import (
    BatchEvaluationSummary,
    PipelineEvaluator,
    evaluate_batch,
    evaluate_batch_with_summary,
)
from .registry import EvaluatorRegistry
from .stateful_evaluators import AggregatorEvaluator

__all__ = [
    # Base
    "EvaluationResult",
    "IEvaluator",
    "IStatefulEvaluator",
    # Evaluators
    "BBEHEvaluator",
    "CodeExecutionEvaluator",
    "ComposedEvaluator",
    "ExactMatchEvaluator",
    "JsonValueEvaluator",
    "MultipleChoiceStrictEvaluator",
    "NumericToleranceEvaluator",
    "PartialRegexEvaluator",
    "PythonLiteralEqualityEvaluator",
    "TokenListEvaluator",
    "YesNoEvaluator",
    # Standalone extraction functions
    "extract_mc_answer",
    "extract_yes_no_answer",
    "extract_answer_bbeh",
    # Standalone evaluation functions
    "evaluate_bbeh",
    "exact_match_score",
    "fuzzy_match_bbeh",
    "normalize_answer",
    "strip_latex_bbeh",
    "token_f1_score",
    # Extractor wrappers
    "MCAnswerExtractor",
    "YesNoExtractor",
    # Metrics
    "ConfusionMatrix",
    "JudgeMetrics",
    # Pipeline
    "BatchEvaluationSummary",
    "PipelineEvaluator",
    "evaluate_batch",
    "evaluate_batch_with_summary",
    # Registry
    "EvaluatorRegistry",
    "AggregatorEvaluator",
]
