use litty::literal;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PerplexityModel {
SonarPro(PerplexityModelSonarPro),
Sonar(PerplexityModelSonar),
SonarDeepResearch(PerplexityModelSonarDeepResearch),
SonarReasoningPro(PerplexityModelSonarReasoningPro),
SonarReasoning(PerplexityModelSonarReasoning),
R11776(PerplexityModelR11776),
String(String),
}
#[literal("sonar-pro")]
pub struct PerplexityModelSonarPro;
#[literal("sonar")]
pub struct PerplexityModelSonar;
#[literal("sonar-deep-research")]
pub struct PerplexityModelSonarDeepResearch;
#[literal("sonar-reasoning-pro")]
pub struct PerplexityModelSonarReasoningPro;
#[literal("sonar-reasoning")]
pub struct PerplexityModelSonarReasoning;
#[literal("r1-1776")]
pub struct PerplexityModelR11776;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PerplexitySettings {
pub r#type: PerplexitySettingsTypePerplexity,
pub model: Option<PerplexityModel>,
}
#[literal("perplexity")]
pub struct PerplexitySettingsTypePerplexity;
pub type PerplexityProvider = PerplexityProviderPerplexity;
#[literal("perplexity")]
pub struct PerplexityProviderPerplexity;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PerplexityProviderSettings {
pub default: Option<PerplexityProvider>,
pub models: Option<BTreeMap<String, PerplexityProvider>>,
}