1#![cfg_attr(not(test), warn(clippy::unwrap_used))]
16#![cfg_attr(not(test), warn(clippy::expect_used))]
17#![cfg_attr(not(test), warn(clippy::panic))]
18#![allow(clippy::unused_async)]
20
21#![allow(missing_docs)]
53#![allow(missing_debug_implementations)]
54#![warn(rust_2018_idioms)]
55
56pub mod fwid;
58
59pub mod prelude;
63
64pub mod address;
66
67pub mod network;
69
70pub mod dht;
72
73pub mod dht_network_manager;
75
76pub mod transport_handle;
78
79pub mod transport;
81
82pub mod auth;
84
85pub mod events;
87pub mod mls;
89pub mod types;
91
92pub mod telemetry;
94
95pub mod security;
99
100pub mod bgp_geo_provider;
102
103pub mod identity;
105
106pub mod threshold;
108
109pub mod quantum_crypto;
111
112pub mod utils;
114
115pub mod validation;
117
118pub mod rate_limit;
120
121pub mod production;
123
124pub mod bootstrap;
126
127pub mod error;
129
130pub mod peer_record;
132
133pub mod monotonic_counter;
135
136pub mod secure_memory;
138
139pub mod key_derivation;
141
142pub mod encrypted_key_storage;
144
145pub mod persistent_state;
147
148pub mod adaptive;
150
151pub mod config;
153pub mod control;
154
155pub mod health;
157
158pub mod geographic_enhanced_network;
160
161pub mod placement;
163
164pub mod upgrade;
166
167pub use address::{AddressBook, NetworkAddress};
169pub use identity::FourWordAddress;
170
171pub use auth::{
173 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
174};
175pub use bootstrap::{BootstrapConfig, BootstrapManager, CacheConfig, ContactEntry, QualityMetrics};
176pub use dht::{Key, Record};
177pub use dht_network_manager::{
178 DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation, DhtNetworkResult,
179 DhtPeerInfo, PeerStoreOutcome,
180};
181pub use encrypted_key_storage::{
182 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
183 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
184};
185pub use error::{P2PError, P2pResult as Result, PeerFailureReason};
186pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
187pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
188pub use health::{
189 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
190 HealthServer, HealthStatus, PrometheusExporter,
191};
192pub use key_derivation::{
193 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
194 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
195};
196pub use monotonic_counter::{
197 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
198 SequenceValidationResult,
199};
200pub use network::{
201 ConnectionStatus, NetworkSender, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo,
202 PeerResponse,
203};
204pub use transport_handle::TransportHandle;
205pub use adaptive::{EigenTrustEngine, NodeStatistics, NodeStatisticsUpdate, TrustProvider};
207pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
208pub use config::Config;
210pub use network::P2PNode as Node;
211pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
212pub use persistent_state::{
213 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
214 StateChangeEvent, StateConfig, TransactionType, WalEntry,
215};
216pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
217pub use secure_memory::{
218 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
219 secure_string_with_capacity, secure_vec_with_capacity,
220};
221pub use validation::{
222 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
223 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
224 validate_message_size, validate_network_address, validate_peer_id,
225};
226
227pub use rate_limit::{
229 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
230 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
231 extract_ipv6_subnet_64,
232};
233
234pub use dht::node_age_verifier::{
236 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
237 NodeAgeVerifier, OperationType,
238};
239pub use security::{
240 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
241 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
242};
243
244pub use threshold::{
248 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
249};
250
251pub use quantum_crypto::{
253 CryptoCapabilities,
254 KemAlgorithm,
255 NegotiatedAlgorithms,
256 ProtocolVersion,
257 QuantumCryptoError,
259 SignatureAlgorithm,
260 negotiate_algorithms,
262};
263
264pub use quantum_crypto::{
266 ChaCha20Poly1305Cipher,
268 EncryptedMessage,
270 MlDsa65,
272 MlDsaOperations,
273 MlDsaPublicKey as AntMlDsaPublicKey,
275 MlDsaSecretKey as AntMlDsaSecretKey,
276 MlDsaSignature as AntMlDsaSignature,
277 MlKem768,
278 MlKemCiphertext,
279 MlKemOperations,
281 MlKemPublicKey,
283 MlKemSecretKey,
284 PqcError,
286 SaorsaPqcResult,
287 SharedSecret,
288 SymmetricEncryptedMessage,
289 SymmetricError,
290 SymmetricKey,
291 create_default_pqc_config,
293 create_pqc_only_config,
294 saorsa_pqc_init,
296};
297
298pub use quantum_crypto::types::{
300 FrostCommitment,
302 FrostGroupPublicKey,
303 FrostKeyShare,
304 FrostPublicKey,
305 FrostSignature,
306 GroupId,
308 HandshakeParameters,
309 ParticipantId,
310 PeerId as QuantumPeerId,
311 QuantumPeerIdentity,
312 SecureSession,
313 SessionId,
314 SessionState,
315};
316
317pub use crate::placement::{
319 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
320 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
321 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
322 WeightedPlacementStrategy,
323};
324
325pub type PeerId = String;
337
338pub type Multiaddr = NetworkAddress;
342
343pub const VERSION: &str = env!("CARGO_PKG_VERSION");
345
346pub const DEFAULT_EVENT_CHANNEL_CAPACITY: usize = 1000;
348
349pub use upgrade::{
351 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
352 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
353 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
354 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
355 UpgradeEvent, create_applier,
356};