//! Core LLM Provider trait definitions
//!
//! Defines unified interface for all AI providers
//!
//! # Module Organization
//!
//! This module is split into three main components:
//! - `llm_provider` - The main LLMProvider trait definition
//! - `config` - ProviderConfig trait for configuration management
//! - `handle` - ProviderHandle struct for routing system integration
//!
//! # Design Principles
//!
//! 1. **Request uniformity**: All providers use the same request/response format
//! 2. **Capability driven**: Declare supported features through capabilities()
//! 3. **Provider agnostic**: Users don't need to know provider-specific details
//! 4. **Type safety**: Use associated types to ensure compile-time type safety
//! 5. **Async first**: All I/O operations are asynchronous
//! 6. **Observability**: Built-in cost calculation, latency statistics, and monitoring
// Module declarations
// Re-export all public types
pub use ProviderConfig;
pub use ProviderHandle;
pub use LLMProvider;