1#![allow(clippy::multiple_crate_versions)]
3pub mod circuit_breaker;
43pub mod error;
44pub mod fetcher;
45pub mod health;
46pub mod manager;
47pub mod ports;
48pub mod session;
49pub mod stickiness;
50pub mod storage;
51pub mod strategy;
52pub mod types;
53pub mod vendor_quirks;
54
55#[cfg(feature = "graph")]
56pub mod graph;
57
58#[cfg(feature = "browser")]
59pub mod browser;
60
61#[cfg(feature = "tls-profiled")]
62pub mod http_client;
63
64pub mod routing;
65
66#[cfg(feature = "coherence-validation")]
67pub mod adapters;
68
69#[cfg(feature = "mcp")]
71pub mod mcp;
72
73pub use circuit_breaker::{CircuitBreaker, STATE_CLOSED, STATE_HALF_OPEN, STATE_OPEN};
75pub use error::{ProxyError, ProxyResult};
76#[cfg(feature = "dns-fetcher")]
77pub use fetcher::DnsTxtFetcher;
78pub use fetcher::{
79 FreeApiProxiesFetcher, FreeListFetcher, FreeListSource, ProxyFetcher, load_from_fetcher,
80};
81pub use health::{HealthChecker, HealthMap};
82pub use manager::{PoolStats, ProxyHandle, ProxyManager, ProxyManagerBuilder};
83pub use session::{SessionDecision, SessionMap, StickyPolicy};
84pub use stickiness::{StickinessPolicy, VendorStickinessMap};
85pub use storage::MemoryProxyStore;
86pub use strategy::{
87 BayesianObserver, BoxedBayesianObserver, BoxedRotationStrategy, LeastUsedStrategy,
88 NoopBayesianObserver, ProxyCandidate, RandomStrategy, RotationStrategy, RoundRobinStrategy,
89 WeightedStrategy, capable_healthy_candidates,
90};
91
92#[cfg(feature = "bayesian-rotation")]
93pub use strategy::ThompsonStrategy;
94pub use types::{
95 CapabilityRequirement, IpClass, IpClassRequirement, ProfiledRequestMode, Proxy,
96 ProxyCapabilities, ProxyConfig, ProxyMetrics, ProxyRecord, ProxyType, RoutingPath,
97 TargetVendorCompatibility, TrustTier, VendorId, validate_asn, validate_city,
98 validate_postal_code, well_known,
99};
100pub use vendor_quirks::{
101 BRD_SUPERPROXY_QUIRK, CRAWLERA_8011_QUIRK, IPROYAL_QUIRK, ParseError, ProxyUrl, QuirkMatch,
102 QuirkSeverity, Scheme, VENDOR_QUIRKS, VendorQuirk, ZYTE_8011_QUIRK, check,
103};
104
105#[cfg(feature = "graph")]
106pub use graph::{BoxedProxyManager, NoopProxyManager, ProxyManagerPort};
107
108#[cfg(feature = "browser")]
109pub use browser::{BrowserProxySource, ProxyManagerBridge};
110
111#[cfg(feature = "tls-profiled")]
112pub use http_client::{ProfiledRequester, ProfiledRequesterError};
113
114pub use ports::coherence::{
120 AcceptLanguage, BoxedCoherencePort, CoherenceContext, CoherencePolicy, CoherencePort,
121 CoherenceVerdict, IsoCountry, Locale, MismatchField, MismatchSeverity, Tz,
122};
123
124#[cfg(feature = "coherence-validation")]
125pub use adapters::coherence::DefaultCoherenceValidator;