use litty::literal;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AnthropicModelV1 {
Claude35Sonnet(AnthropicModelV1Claude35Sonnet),
Claude3Opus(AnthropicModelV1Claude3Opus),
Claude3Sonnet(AnthropicModelV1Claude3Sonnet),
Claude3Haiku(AnthropicModelV1Claude3Haiku),
String(String),
}
#[literal("claude-3-5-sonnet")]
pub struct AnthropicModelV1Claude35Sonnet;
#[literal("claude-3-opus")]
pub struct AnthropicModelV1Claude3Opus;
#[literal("claude-3-sonnet")]
pub struct AnthropicModelV1Claude3Sonnet;
#[literal("claude-3-haiku")]
pub struct AnthropicModelV1Claude3Haiku;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct AnthropicSettingsV1 {
pub r#type: AnthropicSettingsV1TypeAnthropic,
pub model: Option<AnthropicModelV1>,
}
#[literal("anthropic")]
pub struct AnthropicSettingsV1TypeAnthropic;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AnthropicProvider {
Aws(AnthropicProviderAws),
Anthropic(AnthropicProviderAnthropic),
Gcp(AnthropicProviderGcp),
}
#[literal("aws")]
pub struct AnthropicProviderAws;
#[literal("anthropic")]
pub struct AnthropicProviderAnthropic;
#[literal("gcp")]
pub struct AnthropicProviderGcp;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct AnthropicProviderSettingsV1 {
pub default: Option<AnthropicProvider>,
pub models: Option<BTreeMap<String, AnthropicProvider>>,
}