#![cfg_attr(docsrs, feature(doc_cfg))]
pub mod api;
pub mod client;
pub mod config;
pub mod metrics;
pub mod model;
pub mod provider;
pub mod transport;
pub mod types;
#[cfg(feature = "response_parser")]
pub mod response_parser;
pub mod utils;
#[cfg(feature = "interceptors")]
pub mod interceptors;
#[cfg(feature = "unified_sse")]
pub mod sse;
#[cfg(feature = "unified_transport")]
pub mod net {
pub use crate::transport::client_factory;
}
#[cfg(feature = "observability")]
pub mod observability;
#[cfg(feature = "config_hot_reload")]
pub mod config_hot_reload;
pub mod circuit_breaker;
pub mod error_handling;
pub mod rate_limiter;
pub use api::{ChatApi, ChatProvider};
pub use client::{AiClient, AiClientBuilder, ModelOptions, Provider};
pub use provider::chat_provider::AdapterProvider;
pub use types::{
AiLibError, ChatCompletionRequest, ChatCompletionResponse, Choice, FunctionCall,
FunctionCallPolicy, Message, Role, Tool,
};
pub use api::ChatCompletionChunk;
pub use client::CancelHandle;
pub use metrics::{Metrics, MetricsExt, NoopMetrics, NoopTimer, Timer};
pub use transport::{
DynHttpTransport, DynHttpTransportRef, HttpClient, HttpTransport, TransportError,
};
pub use config::ConnectionOptions;
pub use types::common::Content;
pub use types::response::{Usage, UsageStatus};
pub use provider::config::{FieldMapping, ProviderConfig};
pub use provider::configs::ProviderConfigs;
#[cfg_attr(docsrs, doc(cfg(feature = "routing_mvp")))]
#[cfg(feature = "routing_mvp")]
pub use provider::models::{
CustomModelManager, LoadBalancingStrategy, ModelArray, ModelCapabilities, ModelEndpoint,
ModelInfo, ModelSelectionStrategy, PerformanceMetrics, PricingInfo, QualityTier, SpeedTier,
};
pub use api::chat::{batch_utils, BatchResult};
pub use utils::file::{
create_temp_dir, get_file_extension, get_file_size, guess_mime_from_path, is_audio_file,
is_file_size_acceptable, is_image_file, is_text_file, is_video_file, read_file, remove_file,
save_temp_file, validate_file,
};
pub mod prelude {
pub use crate::types::common::{Content, Message, Role};
pub use crate::types::error::AiLibError;
pub use crate::types::response::{Usage, UsageStatus};
pub use crate::types::{ChatCompletionRequest, ChatCompletionResponse, Choice};
pub use crate::{AiClient, AiClientBuilder, Provider};
}