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;
192
193pub mod health;
195
196pub mod geographic_enhanced_network;
198
199pub mod placement;
201
202pub mod virtual_disk;
204
205pub mod entities;
207
208#[cfg(any(test, feature = "test-utils"))]
210pub mod mock_dht;
211
212pub use address::{AddressBook, NetworkAddress};
214pub use address_book::{
215 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
216};
217pub use identity::FourWordAddress;
218
219pub use auth::{
221 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
222};
223pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
224pub use dht::{Key, Record};
225pub use dht_network_manager::{
226 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
227 DhtNetworkResult, DhtPeerInfo,
228};
229pub use encrypted_key_storage::{
230 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
231 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
232};
233pub use error::{P2PError, P2pResult as Result};
234pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
235pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
236pub use health::{
237 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
238 HealthServer, HealthStatus, PrometheusExporter,
239};
240pub use key_derivation::{
241 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
242 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
243};
244pub use monotonic_counter::{
245 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
246 SequenceValidationResult,
247};
248pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
249pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
250pub use config::Config;
252pub use network::P2PNode as Node;
253pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
254pub use persistent_state::{
255 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
256 StateChangeEvent, StateConfig, TransactionType, WalEntry,
257};
258pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
259pub use secure_memory::{
260 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
261 secure_string_with_capacity, secure_vec_with_capacity,
262};
263pub use validation::{
264 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
265 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
266 validate_message_size, validate_network_address, validate_peer_id,
267};
268
269pub use rate_limit::{
271 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
272 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
273 extract_ipv6_subnet_64,
274};
275
276pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
283
284pub use discuss::{
286 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
287};
288
289pub use projects::{
291 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
292 WorkflowState,
293};
294
295pub use threshold::{
297 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
298};
299
300pub use quantum_crypto::{
302 CryptoCapabilities,
303 KemAlgorithm,
304 NegotiatedAlgorithms,
305 ProtocolVersion,
306 QuantumCryptoError,
308 SignatureAlgorithm,
309 negotiate_algorithms,
311};
312
313pub use quantum_crypto::{
315 ChaCha20Poly1305Cipher,
317 EncryptedMessage,
319 HybridKem,
321 HybridKemCiphertext,
322 HybridKemPublicKey,
323 HybridKemSecretKey,
324 HybridPublicKeyEncryption,
325
326 HybridSignaturePublicKey,
328 HybridSignatureSecretKey,
329 HybridSignatureValue,
330
331 MlDsa65,
332
333 MlDsaOperations,
334
335 MlDsaPublicKey as AntMlDsaPublicKey,
337 MlDsaSecretKey as AntMlDsaSecretKey,
338 MlDsaSignature as AntMlDsaSignature,
339 MlKem768,
341 MlKemCiphertext,
342 MlKemOperations,
344 MlKemPublicKey,
346 MlKemSecretKey,
347 PqcError,
349 SaorsaPqcResult,
350
351 SharedSecret,
352 SymmetricEncryptedMessage,
353
354 SymmetricError,
355 SymmetricKey,
356
357 saorsa_pqc_init,
359};
360
361pub use quantum_crypto::ant_quic_integration::{
363 create_default_pqc_config,
365 create_pqc_only_config,
366};
367
368pub use quantum_crypto::types::{
370 FrostCommitment,
371 FrostGroupPublicKey,
372 FrostKeyShare,
373 FrostPublicKey,
375 FrostSignature,
376 GroupId,
378 HandshakeParameters,
379
380 ParticipantId,
381 PeerId as QuantumPeerId,
382 QuantumPeerIdentity,
383 SecureSession,
384 SessionId,
385 SessionState,
386};
387
388pub use placement::{
390 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
391 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
392 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
393 WeightedPlacementStrategy,
394};
395
396pub type PeerId = String;
408
409pub type Multiaddr = NetworkAddress;
413
414pub const VERSION: &str = env!("CARGO_PKG_VERSION");