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

RECOMMENDED: Simple Validator
- Character validation (instant)
- Audio-text match (0.1s)

Usage:
```python
from src.validators import validate_transcription, quick_validate

# Full validation (with audio check)
result = validate_transcription("audio.flac", "transcription", language="te")
print(result.status)  # accept / review / reject

# Quick validation (character check only - instant)
quick = quick_validate("transcription text", language="te")
print(quick['valid'])  # True / False
```

OPTIONAL: IndicMFA (Real Forced Alignment)
- Requires micromamba + MFA environment + downloaded models
- Slow (~15s per segment) but gives precise word timestamps
```python
from src.validators import get_indicmfa_real_validator
MFA = get_indicmfa_real_validator()
mfa = MFA(language="te")
result = mfa.validate("audio.flac", "transcription")
```
"""

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

from .simple_validator import (
    validate_transcription,
    quick_validate,
    check_characters,
    ValidationResult as SimpleValidationResult,
)

from .ctc_forced_aligner import (
    CTCForcedAligner,
    forced_align
)

from .alignment_scorer import (
    AlignmentScorer,
    AlignmentResult,
    WordScore,
    score_transcription
)


# Lazy imports for heavy validators
def get_indicmfa_real_validator():
    """Get real IndicMFA validator (requires micromamba + MFA models)."""
    from .indicmfa_real import IndicMFARealValidator
    return IndicMFARealValidator


__all__ = [
    # === RECOMMENDED - Simple Validator ===
    'validate_transcription',  # Full validation (char + audio check)
    'quick_validate',          # Quick char-only validation
    'check_characters',        # Just character validation
    
    # === CTC Forced Aligner ===
    'CTCForcedAligner',
    'forced_align',
    
    # === Alignment Scorer ===
    'AlignmentScorer',
    'AlignmentResult',
    'WordScore',
    'score_transcription',
    
    # === Heavy validators (optional) ===
    'get_indicmfa_real_validator',
    
    # === Base classes ===
    'BaseValidator',
    'ValidationResult', 
    'WordAlignment',
    'ValidatorStatus',
    'normalize_language_code',
    'LANGUAGE_CODES',
]
