#![allow(clippy::multiple_crate_versions)]
pub mod circuit_breaker;
pub mod error;
pub mod fetcher;
pub mod health;
pub mod manager;
pub mod ports;
pub mod session;
pub mod stickiness;
pub mod storage;
pub mod strategy;
pub mod types;
pub mod vendor_quirks;
#[cfg(feature = "graph")]
pub mod graph;
#[cfg(feature = "browser")]
pub mod browser;
#[cfg(feature = "tls-profiled")]
pub mod http_client;
pub mod routing;
#[cfg(feature = "coherence-validation")]
pub mod adapters;
#[cfg(feature = "mcp")]
pub mod mcp;
pub use circuit_breaker::{CircuitBreaker, STATE_CLOSED, STATE_HALF_OPEN, STATE_OPEN};
pub use error::{ProxyError, ProxyResult};
#[cfg(feature = "dns-fetcher")]
pub use fetcher::DnsTxtFetcher;
pub use fetcher::{
FreeApiProxiesFetcher, FreeListFetcher, FreeListSource, ProxyFetcher, load_from_fetcher,
};
pub use health::{HealthChecker, HealthMap};
pub use manager::{PoolStats, ProxyHandle, ProxyManager, ProxyManagerBuilder};
pub use session::{SessionDecision, SessionMap, StickyPolicy};
pub use stickiness::{StickinessPolicy, VendorStickinessMap};
pub use storage::MemoryProxyStore;
pub use strategy::{
BayesianObserver, BoxedBayesianObserver, BoxedRotationStrategy, LeastUsedStrategy,
NoopBayesianObserver, ProxyCandidate, RandomStrategy, RotationStrategy, RoundRobinStrategy,
WeightedStrategy, capable_healthy_candidates,
};
#[cfg(feature = "bayesian-rotation")]
pub use strategy::ThompsonStrategy;
pub use types::{
CapabilityRequirement, IpClass, IpClassRequirement, ProfiledRequestMode, Proxy,
ProxyCapabilities, ProxyConfig, ProxyMetrics, ProxyRecord, ProxyType, RoutingPath,
TargetVendorCompatibility, TrustTier, VendorId, validate_asn, validate_city,
validate_postal_code, well_known,
};
pub use vendor_quirks::{
BRD_SUPERPROXY_QUIRK, CRAWLERA_8011_QUIRK, IPROYAL_QUIRK, ParseError, ProxyUrl, QuirkMatch,
QuirkSeverity, Scheme, VENDOR_QUIRKS, VendorQuirk, ZYTE_8011_QUIRK, check,
};
#[cfg(feature = "graph")]
pub use graph::{BoxedProxyManager, NoopProxyManager, ProxyManagerPort};
#[cfg(feature = "browser")]
pub use browser::{BrowserProxySource, ProxyManagerBridge};
#[cfg(feature = "tls-profiled")]
pub use http_client::{ProfiledRequester, ProfiledRequesterError};
pub use ports::coherence::{
AcceptLanguage, BoxedCoherencePort, CoherenceContext, CoherencePolicy, CoherencePort,
CoherenceVerdict, IsoCountry, Locale, MismatchField, MismatchSeverity, Tz,
};
#[cfg(feature = "coherence-validation")]
pub use adapters::coherence::DefaultCoherenceValidator;