1#![allow(clippy::multiple_crate_versions)]
3pub mod circuit_breaker;
28pub mod error;
29pub mod fetcher;
30pub mod health;
31pub mod manager;
32pub mod session;
33pub mod storage;
34pub mod strategy;
35pub mod types;
36
37#[cfg(feature = "graph")]
38pub mod graph;
39
40#[cfg(feature = "browser")]
41pub mod browser;
42
43#[cfg(feature = "tls-profiled")]
44pub mod http_client;
45
46pub mod routing;
47
48#[cfg(feature = "mcp")]
50pub mod mcp;
51
52pub use circuit_breaker::{CircuitBreaker, STATE_CLOSED, STATE_HALF_OPEN, STATE_OPEN};
54pub use error::{ProxyError, ProxyResult};
55pub use fetcher::{
56 FreeApiProxiesFetcher, FreeListFetcher, FreeListSource, ProxyFetcher, load_from_fetcher,
57};
58pub use health::{HealthChecker, HealthMap};
59pub use manager::{PoolStats, ProxyHandle, ProxyManager, ProxyManagerBuilder};
60pub use session::{SessionMap, StickyPolicy};
61pub use storage::MemoryProxyStore;
62pub use strategy::{
63 BoxedRotationStrategy, LeastUsedStrategy, ProxyCandidate, RandomStrategy, RotationStrategy,
64 RoundRobinStrategy, WeightedStrategy, capable_healthy_candidates,
65};
66pub use types::{
67 CapabilityRequirement, ProfiledRequestMode, Proxy, ProxyCapabilities, ProxyConfig,
68 ProxyMetrics, ProxyRecord, ProxyType, RoutingPath,
69};
70
71#[cfg(feature = "graph")]
72pub use graph::{BoxedProxyManager, NoopProxyManager, ProxyManagerPort};
73
74#[cfg(feature = "browser")]
75pub use browser::{BrowserProxySource, ProxyManagerBridge};
76
77#[cfg(feature = "tls-profiled")]
78pub use http_client::{ProfiledRequester, ProfiledRequesterError};