//! Anthropic (Claude) Provider for AIX
//!
//! This crate provides an Anthropic provider implementation for the AIX library,
//! supporting both regular and streaming chat completions.
//!
//! # Example
//!
//! ```rust,no_run
//! use aix_anthropic::{AnthropicConfig, AnthropicProvider};
//! use aix_core::{AiProvider, ChatRequest, ChatMessage};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     let config = AnthropicConfig::new(std::env::var("ANTHROPIC_API_KEY")?);
//!     let provider = AnthropicProvider::new(config)?;
//!
//!     let request = ChatRequest::simple("claude-3-sonnet", "Hello, world!");
//!     let response = provider.chat(request).await?;
//!
//!     println!("Response: {}", response.content);
//!     Ok(())
//! }
//! ```

pub mod client;
pub mod streaming;

pub use client::{AnthropicConfig, AnthropicProvider};
pub use streaming::AnthropicStreamingResponse;

#[cfg(test)]
mod tests {
    use super::*;
    use aix_core::types::ChatMessage;

    #[test]
    fn test_library_imports() {
        // Test that all commonly used types are available
        let _config = AnthropicConfig::new("test-key");
        
        // Note: We can't test AnthropicProvider creation here without a valid config
        // but we can test the type is available
        let _provider_type: std::marker::PhantomData<AnthropicProvider> = std::marker::PhantomData;
    }
}
