"""
Validators Module for Transcription Validation
===============================================

Multiple validation models for Indian language transcriptions:
- IndicMFA: Montreal Forced Aligner with Indic acoustic models (forced alignment)
- Vistaar: AI4Bharat's IndicWhisper-based ASR
- IndicConformer: AI4Bharat's Conformer ASR model (requires HF access)

Each validator can be toggled independently for flexible validation pipelines.

Note: IndicWav2Vec removed due to fairseq version incompatibility with AI4Bharat models.

Usage:
```python
from src.validators import ValidatorRunner

runner = ValidatorRunner(
    enable_indicmfa=True,
    enable_vistaar=True,
    language="te"
)

result = runner.validate(
    audio_path="segment.flac",
    reference_text="reference transcription"
)
```
"""

from .base import (
    BaseValidator, 
    ValidationResult, 
    WordAlignment,
    ValidatorStatus,
    normalize_language_code,
    LANGUAGE_CODES
)

from .runner import (
    ValidatorRunner, 
    RunnerConfig,
    AggregatedResult,
    run_all_validators
)

# Lazy imports for validators (they have heavy dependencies)
def get_indicmfa_validator():
    from .indicmfa_validator import IndicMFAValidator
    return IndicMFAValidator

def get_vistaar_validator():
    from .vistaar_validator import VistaarValidator
    return VistaarValidator

def get_indic_conformer_validator():
    from .indic_conformer_validator import IndicConformerValidator
    return IndicConformerValidator


__all__ = [
    # Base classes
    'BaseValidator',
    'ValidationResult', 
    'WordAlignment',
    'ValidatorStatus',
    'normalize_language_code',
    'LANGUAGE_CODES',
    # Runner
    'ValidatorRunner',
    'RunnerConfig',
    'AggregatedResult',
    'run_all_validators',
    # Lazy validator getters
    'get_indicmfa_validator',
    'get_vistaar_validator',
    'get_indic_conformer_validator',
]
