use anyhow::Result;
use std::sync::atomic::AtomicBool;
use std::sync::Arc;
pub struct TranscriptionResult {
pub text: String,
pub pre_formatted: bool,
}
pub trait StreamingState: Send + std::any::Any {
fn as_any_mut(&mut self) -> &mut dyn std::any::Any;
}
pub trait AsrEngine: Send + Sync {
fn transcribe(&self, samples: &[f32], translate: bool) -> Result<TranscriptionResult>;
fn create_streaming_state(&self) -> Result<Box<dyn StreamingState>>;
fn streaming_transcribe(
&self,
state: &mut dyn StreamingState,
samples: &[f32],
translate: bool,
abort_flag: &Arc<AtomicBool>,
) -> Result<TranscriptionResult>;
fn engine_name(&self) -> String;
fn supports_translation(&self) -> bool;
}