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

Multiple validation models for Indian language transcriptions:
- IndicWav2Vec: Forced alignment using AI4Bharat's wav2vec model
- IndicMFA: Montreal Forced Aligner with Indic acoustic models
- Vistaar: AI4Bharat's Whisper-based ASR for comparison
- IndicConformer: AI4Bharat's Conformer ASR model

Each validator can be toggled independently for flexible validation pipelines.

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

runner = ValidatorRunner(
    enable_indicwav2vec=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_indicwav2vec_validator():
    from .indicwav2vec_validator import IndicWav2VecValidator
    return IndicWav2VecValidator

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_indicwav2vec_validator',
    'get_indicmfa_validator',
    'get_vistaar_validator',
    'get_indic_conformer_validator',
]
