use jiff::Timestamp;
use serde::{Deserialize, Serialize};
use typed_builder::TypedBuilder;
use crate::transport::NodeId;
#[derive(TypedBuilder, Debug, Deserialize)]
pub struct TranscriptionTask {
data: AudioData,
#[builder(default)]
node_id: Option<NodeId>,
#[builder(default)]
language: Option<String>,
#[builder(default)]
timestamps: bool,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TranscriptionResult {
text: String,
model: String,
confidence: f32,
timestamps: Option<Vec<(f32, f32, String)>>,
created_at: Timestamp,
}
#[derive(Serialize, Deserialize, Debug)]
pub enum AudioFormat {
Wav,
Mp3,
Flac,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AudioData {
format: AudioFormat,
data: bytes::Bytes,
}