use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct VoicemailDetectionCost {
#[serde(rename = "type")]
pub r#type: TypeTrue,
#[serde(rename = "model")]
pub model: serde_json::Value,
#[serde(rename = "provider")]
pub provider: ProviderTrue,
#[serde(rename = "promptTextTokens")]
pub prompt_text_tokens: f64,
#[serde(rename = "promptAudioTokens")]
pub prompt_audio_tokens: f64,
#[serde(rename = "completionTextTokens")]
pub completion_text_tokens: f64,
#[serde(rename = "completionAudioTokens")]
pub completion_audio_tokens: f64,
#[serde(rename = "cost")]
pub cost: f64,
}
impl VoicemailDetectionCost {
pub fn new(
r#type: TypeTrue,
model: serde_json::Value,
provider: ProviderTrue,
prompt_text_tokens: f64,
prompt_audio_tokens: f64,
completion_text_tokens: f64,
completion_audio_tokens: f64,
cost: f64,
) -> VoicemailDetectionCost {
VoicemailDetectionCost {
r#type,
model,
provider,
prompt_text_tokens,
prompt_audio_tokens,
completion_text_tokens,
completion_audio_tokens,
cost,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TypeTrue {
#[serde(rename = "voicemail-detection")]
VoicemailDetection,
}
impl Default for TypeTrue {
fn default() -> TypeTrue {
Self::VoicemailDetection
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ProviderTrue {
#[serde(rename = "twilio")]
Twilio,
#[serde(rename = "google")]
Google,
#[serde(rename = "openai")]
Openai,
#[serde(rename = "vapi")]
Vapi,
}
impl Default for ProviderTrue {
fn default() -> ProviderTrue {
Self::Twilio
}
}