/*
 * Orvanta API
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.2
 * Contact: contact@orvanta.cloud
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// AiProviderKind : Supported AI provider types
/// Supported AI provider types
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AiProviderKind {
    #[serde(rename = "openai")]
    Openai,
    #[serde(rename = "azure_openai")]
    AzureOpenai,
    #[serde(rename = "anthropic")]
    Anthropic,
    #[serde(rename = "mistral")]
    Mistral,
    #[serde(rename = "deepseek")]
    Deepseek,
    #[serde(rename = "googleai")]
    Googleai,
    #[serde(rename = "groq")]
    Groq,
    #[serde(rename = "openrouter")]
    Openrouter,
    #[serde(rename = "togetherai")]
    Togetherai,
    #[serde(rename = "customai")]
    Customai,
    #[serde(rename = "aws_bedrock")]
    AwsBedrock,

}

impl std::fmt::Display for AiProviderKind {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            Self::Openai => write!(f, "openai"),
            Self::AzureOpenai => write!(f, "azure_openai"),
            Self::Anthropic => write!(f, "anthropic"),
            Self::Mistral => write!(f, "mistral"),
            Self::Deepseek => write!(f, "deepseek"),
            Self::Googleai => write!(f, "googleai"),
            Self::Groq => write!(f, "groq"),
            Self::Openrouter => write!(f, "openrouter"),
            Self::Togetherai => write!(f, "togetherai"),
            Self::Customai => write!(f, "customai"),
            Self::AwsBedrock => write!(f, "aws_bedrock"),
        }
    }
}

impl Default for AiProviderKind {
    fn default() -> AiProviderKind {
        Self::Openai
    }
}

