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 api;
61
62pub mod address;
64pub mod address_book;
66
67pub mod network;
69
70pub mod dht;
72
73pub mod dht_network_manager;
75
76pub mod transport;
78
79pub mod auth;
81
82pub mod events;
84pub mod mls;
86pub mod types;
88
89pub mod telemetry;
91
92pub mod security;
96
97pub mod bgp_geo_provider;
99
100pub mod identity;
102
103pub mod storage;
105
106pub use api::{
108 GroupKeyPair,
109 MemberRef,
110 get_data,
111 get_identity,
112 get_presence,
113 group_identity_canonical_sign_bytes,
115 group_identity_create,
116 group_identity_fetch,
117 group_identity_publish,
118 group_identity_update_members_signed,
119 identity_fetch,
120 register_headless,
121 register_identity,
123 register_presence,
125 set_active_device,
126 set_dht_client,
127 store_data,
129 store_dyad,
130 store_with_fec,
131};
132
133pub mod chat;
135
136pub mod messaging;
138
139pub mod discuss;
141
142pub mod projects;
144
145pub mod threshold;
147
148pub mod quantum_crypto;
150
151pub mod utils;
153
154pub mod validation;
156
157pub mod rate_limit;
159
160pub mod production;
162
163pub mod bootstrap;
165
166pub mod error;
168
169pub mod peer_record;
171
172pub mod monotonic_counter;
174
175pub mod secure_memory;
177
178pub mod key_derivation;
180
181pub mod encrypted_key_storage;
183
184pub mod persistent_state;
186
187pub mod adaptive;
189
190pub mod config;
192pub mod control;
193
194pub mod health;
196
197pub mod geographic_enhanced_network;
199
200pub mod placement;
202
203pub mod virtual_disk;
205
206pub mod entities;
208
209pub mod upgrade;
211
212#[cfg(any(test, feature = "test-utils"))]
214pub mod mock_dht;
215
216pub use address::{AddressBook, NetworkAddress};
218pub use address_book::{
219 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
220};
221pub use identity::FourWordAddress;
222
223pub use auth::{
225 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
226};
227pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
228pub use dht::{Key, Record};
229pub use dht_network_manager::{
230 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
231 DhtNetworkResult, DhtPeerInfo,
232};
233pub use encrypted_key_storage::{
234 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
235 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
236};
237pub use error::{P2PError, P2pResult as Result};
238pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
239pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
240pub use health::{
241 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
242 HealthServer, HealthStatus, PrometheusExporter,
243};
244pub use key_derivation::{
245 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
246 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
247};
248pub use monotonic_counter::{
249 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
250 SequenceValidationResult,
251};
252pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
253pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
254pub use config::Config;
256pub use network::P2PNode as Node;
257pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
258pub use persistent_state::{
259 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
260 StateChangeEvent, StateConfig, TransactionType, WalEntry,
261};
262pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
263pub use secure_memory::{
264 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
265 secure_string_with_capacity, secure_vec_with_capacity,
266};
267pub use validation::{
268 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
269 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
270 validate_message_size, validate_network_address, validate_peer_id,
271};
272
273pub use rate_limit::{
275 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
276 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
277 extract_ipv6_subnet_64,
278};
279
280pub use dht::node_age_verifier::{
282 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
283 NodeAgeVerifier, OperationType,
284};
285pub use security::{
286 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
287 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
288};
289
290pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
297
298pub use discuss::{
300 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
301};
302
303pub use projects::{
305 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
306 WorkflowState,
307};
308
309pub use threshold::{
311 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
312};
313
314pub use quantum_crypto::{
316 CryptoCapabilities,
317 KemAlgorithm,
318 NegotiatedAlgorithms,
319 ProtocolVersion,
320 QuantumCryptoError,
322 SignatureAlgorithm,
323 negotiate_algorithms,
325};
326
327pub use quantum_crypto::{
329 ChaCha20Poly1305Cipher,
331 EncryptedMessage,
333 HybridKem,
335 HybridKemCiphertext,
336 HybridKemPublicKey,
337 HybridKemSecretKey,
338 HybridPublicKeyEncryption,
339
340 HybridSignaturePublicKey,
342 HybridSignatureSecretKey,
343 HybridSignatureValue,
344
345 MlDsa65,
346
347 MlDsaOperations,
348
349 MlDsaPublicKey as AntMlDsaPublicKey,
351 MlDsaSecretKey as AntMlDsaSecretKey,
352 MlDsaSignature as AntMlDsaSignature,
353 MlKem768,
355 MlKemCiphertext,
356 MlKemOperations,
358 MlKemPublicKey,
360 MlKemSecretKey,
361 PqcError,
363 SaorsaPqcResult,
364
365 SharedSecret,
366 SymmetricEncryptedMessage,
367
368 SymmetricError,
369 SymmetricKey,
370
371 saorsa_pqc_init,
373};
374
375pub use quantum_crypto::ant_quic_integration::{
377 create_default_pqc_config,
379 create_pqc_only_config,
380};
381
382pub use quantum_crypto::types::{
384 FrostCommitment,
385 FrostGroupPublicKey,
386 FrostKeyShare,
387 FrostPublicKey,
389 FrostSignature,
390 GroupId,
392 HandshakeParameters,
393
394 ParticipantId,
395 PeerId as QuantumPeerId,
396 QuantumPeerIdentity,
397 SecureSession,
398 SessionId,
399 SessionState,
400};
401
402pub use placement::{
404 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
405 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
406 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
407 WeightedPlacementStrategy,
408};
409
410pub type PeerId = String;
422
423pub type Multiaddr = NetworkAddress;
427
428pub const VERSION: &str = env!("CARGO_PKG_VERSION");
430
431pub use upgrade::{
433 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
434 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
435 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
436 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
437 UpgradeEvent, create_applier,
438};