pub mod concurrency;
pub mod local_engine;
pub mod model_manager;
pub mod orchestrator;
pub mod registry;
pub mod streaming;
pub mod transcriber;
#[cfg(feature = "whisper")]
pub mod whisper_rs_backend;

pub use concurrency::run_inference;
#[cfg(feature = "whisper")]
pub use local_engine::load_whisper;
pub use local_engine::{load_parakeet, LocalEngine, SpeechModelAdapter, TimedTranscript};
pub use model_manager::{download, is_downloaded, list_downloaded, model_dir, models_dir};
pub use orchestrator::{LocalProviderAdapter, Orchestrator};
pub use registry::EngineRegistry;
pub use streaming::{
    sample_index_for_seconds, trim_buffer_to_commit_point, CommitDecision, CommitPolicy,
    LocalAgreement, RmsVadChunker, Token, VadChunk, VadChunker,
};
pub use transcribe_rs::SpeechModel;
pub use transcriber::{Transcriber, TranscriberCapabilities};

// Re-export the trait surface so downstream crates depend only on
// `lumotia_transcription` to access both local engines and the
// provider trait without a separate `lumotia_cloud_providers`
// dependency. This is the seam an OEM licensee uses when they swap
// providers.
pub use lumotia_cloud_providers::{
    CostClass, EngineProfile, NetworkRequirement, ProviderCapabilities, ProviderId, ProviderKind,
    ProviderTranscript, TranscriptionProvider,
};
