#![warn(missing_docs)]
mod error;
mod retry;
mod sampling;
mod wrapper;
pub mod client;
pub mod ollama;
pub mod openai;
pub mod providers;
pub use client::LLMClient;
pub use error::ProviderError;
pub use ollama::{OllamaChat, OllamaConfig};
pub use openai::{
AssistantError, BuiltinTool, OpenAIAssistant, OpenAIChat, OpenAIConfig, ResponsesConfig,
ResponsesError, ResponsesModel,
};
pub use providers::{
AnthropicChat, AnthropicConfig, AnthropicError, AnthropicStreamToken,
AnthropicStructuredOutputMethod, AzureOpenAIChat, AzureOpenAIConfig, AzureOpenAIError,
CohereChat, CohereConfig, CohereError, DeepSeekChat, DeepSeekConfig, GeminiChat, GeminiConfig,
GeminiError, GeminiStructuredOutputMethod, MistralChat, MistralConfig, MoonshotChat,
MoonshotConfig, QwenChat, QwenConfig, ThinkingConfig, ThinkingType, ZhipuChat, ZhipuConfig,
};
pub use wrapper::{wrap_chat_model, ChatModelWrapper};
#[cfg(test)]
pub(crate) static ENV_TEST_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(());