#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
IOError(#[from] std::io::Error),
#[error("Streaming required: {0}")]
StreamingRequired(String),
#[error("Streaming not supported: {0}")]
StreamingNotSupported(String),
#[error(transparent)]
SerdeJsonError(#[from] serde_json::Error),
#[error(transparent)]
TimeComponentRangeError(#[from] time::error::ComponentRange),
#[error(transparent)]
ReqwestError(#[from] reqwest::Error),
#[error("Invalid Header Name: {0} {1}")]
InvalidHeaderName(String, reqwest::header::InvalidHeaderName),
#[error("Invalid Header Value: {0} {1}")]
InvalidHeaderValue(String, reqwest::header::InvalidHeaderValue),
#[error("Environment variable error: {0} {1}")]
EnvVarError(String, std::env::VarError),
#[error(transparent)]
ChatCompletionRequestBuilderError(
#[from] crate::chat_completions::ChatCompletionRequestBuilderError,
),
#[error(transparent)]
ChatCompletionRequestStreamOptionsBuilderError(
#[from] crate::chat_completions::ChatCompletionRequestStreamOptionsBuilderError,
),
#[error(transparent)]
ChatCompletionResponseBuilderError(
#[from] crate::chat_completions::ChatCompletionResponseBuilderError,
),
#[error(transparent)]
ChatCompletionResponseMessageBuilderError(
#[from] crate::chat_completions::ChatCompletionResponseMessageBuilderError,
),
#[error(transparent)]
ChatCompletionChunkChoiceBuilderError(
#[from] crate::chat_completions::ChatCompletionChunkChoiceBuilderError,
),
#[error(transparent)]
ChatCompletionChoiceBuilderError(
#[from] crate::chat_completions::ChatCompletionChoiceBuilderError,
),
#[error(transparent)]
ChatCompletionToolFunctionDefinitionBuilderError(
#[from] crate::chat_completions::ChatCompletionToolFunctionDefinitionBuilderError,
),
#[error(transparent)]
ChatCompletionUsageBuilderError(#[from] crate::chat_completions::UsageBuilderError),
#[cfg(feature = "azure_openai_client")]
#[error(transparent)]
AzureOpenAIClientBuilderError(#[from] crate::clients::azure_openai::ClientBuilderError),
#[cfg(feature = "ollama_client")]
#[error(transparent)]
OllamaClientBuilderError(#[from] crate::clients::ollama::ClientBuilderError),
#[cfg(feature = "openai_client")]
#[error(transparent)]
OpenAIClientBuilderError(#[from] crate::clients::openai::ClientBuilderError),
#[error("The operation was cancelled")]
Cancelled,
#[error(transparent)]
GraphError(#[from] crate::graph::GraphError),
#[error("Unknown error: {0}")]
UnknownError(String),
#[error("OtherError: {0}")]
OtherError(Box<dyn std::error::Error + Send + Sync + 'static>),
}
pub type Result<T> = std::result::Result<T, Error>;