#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
pub mod accumulator;
pub mod builder;
pub mod cancel;
pub mod config;
pub mod error;
pub mod http;
pub mod key_source;
pub mod layer;
pub mod observability;
pub mod protocol;
pub mod providers;
pub mod router;
pub mod traits;
pub mod types;
pub use builder::ProviderBuilder;
pub use cancel::CancellationToken;
pub use config::{ApiProtocol, ProviderConfig, ProviderDefinition, ProviderType};
pub use error::{ProviderError, RetryStrategy};
pub use protocol::{AuthMethod, ProtocolAdapter};
pub use providers::GenericProvider;
pub use router::{ProviderRouter, RouteContext, RouteDecision};
pub use traits::LlmProvider;
pub use types::{
CompletionRequest, CompletionResponse, FinishReason, Message, MessageContent, ModelInfo,
RequestOptions, StreamEvent, TokenUsage, ToolCall, ToolChoice, ToolDefinition, ToolResult,
};
pub use accumulator::ToolCallAccumulator;
pub use config::{
ConfigWatcher, FallbackCondition as ConfigFallbackCondition,
FallbackEntry as ConfigFallbackEntry, ModelConfig, RouteRule,
};
pub use key_source::KeySource;
pub use layer::{
LayerService, Layered as ProviderLayered, ProviderLayer, RetryLayer, TelemetryLayer,
};
pub use router::{
CostPreference, FallbackCondition, FallbackEntry, HealthState, LatencyTracker,
};
pub use types::{
CacheControl, CacheInfo, CapabilityRequest, Citation, CitationConfig, ContentPart, EffortLevel,
ImageDetail, Modality, ModelCapabilities, ModelLimits, ModelPricing, OutputConfig,
ReasoningEffort, RedactedThinkingBlock, ResponseFormat, ServiceTier, ThinkingBlock,
ThinkingConfig, ThinkingDisplay, ThinkingType,
};
#[cfg(test)]
mod test_sse;