use super::context::ProviderBuildContext;
use super::descriptor::ProviderDescriptor;
use crate::capabilities::ProviderCapabilities;
use crate::error::Result;
use crate::providers::TranscriptionProvider;
use std::sync::Arc;
#[cfg(feature = "tts")]
use crate::tts::provider::SynthesisProvider;
pub trait TranscriptionProviderFactory: Send + Sync {
fn descriptor(&self) -> &ProviderDescriptor;
fn capabilities(&self, model: &str) -> Result<ProviderCapabilities>;
fn build(&self, ctx: &ProviderBuildContext) -> Result<Arc<dyn TranscriptionProvider>>;
}
#[cfg(feature = "tts")]
pub trait SynthesisProviderFactory: Send + Sync {
fn descriptor(&self) -> &ProviderDescriptor;
fn capabilities(&self, model: &str) -> Result<ProviderCapabilities>;
fn build(&self, ctx: &ProviderBuildContext) -> Result<Arc<dyn SynthesisProvider>>;
}