Skip to main content

aurum_core/provider_platform/
factory.rs

1//! Direction-specific provider factories (JOE-1933).
2
3use super::context::ProviderBuildContext;
4use super::descriptor::ProviderDescriptor;
5use crate::capabilities::ProviderCapabilities;
6use crate::error::Result;
7use crate::providers::TranscriptionProvider;
8use std::sync::Arc;
9
10#[cfg(feature = "tts")]
11use crate::tts::provider::SynthesisProvider;
12
13/// Constructs STT providers from a bounded build context.
14pub trait TranscriptionProviderFactory: Send + Sync {
15    fn descriptor(&self) -> &ProviderDescriptor;
16
17    /// Capability declaration for `model` (may be static; remote refresh is JOE-1936).
18    fn capabilities(&self, model: &str) -> Result<ProviderCapabilities>;
19
20    fn build(&self, ctx: &ProviderBuildContext) -> Result<Arc<dyn TranscriptionProvider>>;
21}
22
23/// Constructs TTS providers from a bounded build context.
24#[cfg(feature = "tts")]
25pub trait SynthesisProviderFactory: Send + Sync {
26    fn descriptor(&self) -> &ProviderDescriptor;
27
28    fn capabilities(&self, model: &str) -> Result<ProviderCapabilities>;
29
30    fn build(&self, ctx: &ProviderBuildContext) -> Result<Arc<dyn SynthesisProvider>>;
31}