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 identity;
99
100pub mod storage;
102
103pub use api::{
105 GroupKeyPair,
106 MemberRef,
107 get_data,
108 get_identity,
109 get_presence,
110 group_identity_canonical_sign_bytes,
112 group_identity_create,
113 group_identity_fetch,
114 group_identity_publish,
115 group_identity_update_members_signed,
116 identity_fetch,
117 register_headless,
118 register_identity,
120 register_presence,
122 set_active_device,
123 set_dht_client,
124 store_data,
126 store_dyad,
127 store_with_fec,
128};
129
130pub mod chat;
132
133pub mod messaging;
135
136pub mod discuss;
138
139pub mod projects;
141
142pub mod threshold;
144
145pub mod quantum_crypto;
147
148pub mod utils;
150
151pub mod validation;
153
154pub mod rate_limit;
156
157pub mod production;
159
160pub mod bootstrap;
162
163pub mod error;
165
166pub mod peer_record;
168
169pub mod monotonic_counter;
171
172pub mod secure_memory;
174
175pub mod key_derivation;
177
178pub mod encrypted_key_storage;
180
181pub mod persistent_state;
183
184pub mod adaptive;
186
187pub mod config;
189
190pub mod health;
192
193pub mod geographic_enhanced_network;
195
196pub mod placement;
198
199pub mod virtual_disk;
201
202pub mod entities;
204
205#[cfg(any(test, feature = "test-utils"))]
207pub mod mock_dht;
208
209pub use address::{AddressBook, NetworkAddress};
211pub use address_book::{
212 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
213};
214pub use identity::FourWordAddress;
215
216pub use auth::{
218 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
219};
220pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
221pub use dht::{Key, Record};
222pub use dht_network_manager::{
223 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
224 DhtNetworkResult, DhtPeerInfo,
225};
226pub use encrypted_key_storage::{
227 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
228 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
229};
230pub use error::{P2PError, P2pResult as Result};
231pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
232pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
233pub use health::{
234 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
235 HealthServer, HealthStatus, PrometheusExporter,
236};
237pub use key_derivation::{
238 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
239 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
240};
241pub use monotonic_counter::{
242 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
243 SequenceValidationResult,
244};
245pub use network::{NodeBuilder, NodeConfig, P2PEvent, P2PNode};
246pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
247pub use config::Config;
249pub use network::P2PNode as Node;
250pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
251pub use persistent_state::{
252 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
253 StateChangeEvent, StateConfig, TransactionType, WalEntry,
254};
255pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
256pub use secure_memory::{
257 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
258 secure_string_with_capacity, secure_vec_with_capacity,
259};
260pub use validation::{
261 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
262 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
263 validate_message_size, validate_network_address, validate_peer_id,
264};
265
266pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
273
274pub use discuss::{
276 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
277};
278
279pub use projects::{
281 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
282 WorkflowState,
283};
284
285pub use threshold::{
287 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
288};
289
290pub use quantum_crypto::{
292 CryptoCapabilities,
293 KemAlgorithm,
294 NegotiatedAlgorithms,
295 ProtocolVersion,
296 QuantumCryptoError,
298 SignatureAlgorithm,
299 negotiate_algorithms,
301};
302
303pub use quantum_crypto::{
305 ChaCha20Poly1305Cipher,
307 EncryptedMessage,
309 HybridKem,
311 HybridKemCiphertext,
312 HybridKemPublicKey,
313 HybridKemSecretKey,
314 HybridPublicKeyEncryption,
315
316 HybridSignaturePublicKey,
318 HybridSignatureSecretKey,
319 HybridSignatureValue,
320
321 MlDsa65,
322
323 MlDsaOperations,
324
325 MlDsaPublicKey as AntMlDsaPublicKey,
327 MlDsaSecretKey as AntMlDsaSecretKey,
328 MlDsaSignature as AntMlDsaSignature,
329 MlKem768,
331 MlKemCiphertext,
332 MlKemOperations,
334 MlKemPublicKey,
336 MlKemSecretKey,
337 PqcError,
339 SaorsaPqcResult,
340
341 SharedSecret,
342 SymmetricEncryptedMessage,
343
344 SymmetricError,
345 SymmetricKey,
346
347 saorsa_pqc_init,
349};
350
351pub use quantum_crypto::ant_quic_integration::{
353 create_default_pqc_config,
355 create_pqc_only_config,
356};
357
358pub use quantum_crypto::types::{
360 FrostCommitment,
361 FrostGroupPublicKey,
362 FrostKeyShare,
363 FrostPublicKey,
365 FrostSignature,
366 GroupId,
368 HandshakeParameters,
369
370 ParticipantId,
371 PeerId as QuantumPeerId,
372 QuantumPeerIdentity,
373 SecureSession,
374 SessionId,
375 SessionState,
376};
377
378pub use placement::{
380 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
381 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
382 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
383 WeightedPlacementStrategy,
384};
385
386pub type PeerId = String;
398
399pub type Multiaddr = NetworkAddress;
403
404pub const VERSION: &str = env!("CARGO_PKG_VERSION");