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 register_identity, get_identity, identity_fetch,
107 register_presence, get_presence, register_headless, set_active_device,
109 store_data, store_dyad, store_with_fec, get_data,
111 group_identity_canonical_sign_bytes, group_identity_create, group_identity_publish,
113 group_identity_fetch, group_identity_update_members_signed, GroupKeyPair, MemberRef,
114 set_dht_client,
115};
116
117pub mod chat;
119
120pub mod messaging;
122
123pub mod discuss;
125
126pub mod projects;
128
129pub mod threshold;
131
132pub mod quantum_crypto;
134
135pub mod utils;
137
138pub mod validation;
140
141pub mod rate_limit;
143
144pub mod production;
146
147pub mod bootstrap;
149
150pub mod error;
152
153pub mod peer_record;
155
156pub mod monotonic_counter;
158
159pub mod secure_memory;
161
162pub mod key_derivation;
164
165pub mod encrypted_key_storage;
167
168pub mod persistent_state;
170
171pub mod adaptive;
173
174pub mod config;
176
177pub mod health;
179
180pub mod geographic_enhanced_network;
182
183pub mod placement;
185
186pub mod virtual_disk;
188
189#[cfg(any(test, feature = "test-utils"))]
191pub mod mock_dht;
192
193pub use address::{AddressBook, NetworkAddress};
195pub use address_book::{
196 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
197};
198
199pub use auth::{
201 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
202};
203pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
204pub use dht::{Key, Record};
205pub use dht_network_manager::{
206 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
207 DhtNetworkResult, DhtPeerInfo,
208};
209pub use encrypted_key_storage::{
210 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
211 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
212};
213pub use error::{P2PError, P2pResult as Result};
214pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
215pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
216pub use health::{
217 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
218 HealthServer, HealthStatus, PrometheusExporter,
219};
220pub use key_derivation::{
221 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
222 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
223};
224pub use monotonic_counter::{
225 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
226 SequenceValidationResult,
227};
228pub use network::{NodeBuilder, NodeConfig, P2PEvent, P2PNode};
229pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
230pub use config::Config;
232pub use network::P2PNode as Node;
233pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
234pub use persistent_state::{
235 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
236 StateChangeEvent, StateConfig, TransactionType, WalEntry,
237};
238pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
239pub use secure_memory::{
240 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
241 secure_string_with_capacity, secure_vec_with_capacity,
242};
243pub use validation::{
244 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
245 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
246 validate_message_size, validate_network_address, validate_peer_id,
247};
248
249pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
256
257pub use discuss::{
259 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
260};
261
262pub use projects::{
264 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
265 WorkflowState,
266};
267
268pub use threshold::{
270 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
271};
272
273pub use quantum_crypto::{
275 CryptoCapabilities,
276 KemAlgorithm,
277 NegotiatedAlgorithms,
278 ProtocolVersion,
279 QuantumCryptoError,
281 SignatureAlgorithm,
282 negotiate_algorithms,
284};
285
286pub use quantum_crypto::{
288 ChaCha20Poly1305Cipher,
290 EncryptedMessage,
292 HybridKem,
294 HybridKemCiphertext,
295 HybridKemPublicKey,
296 HybridKemSecretKey,
297 HybridPublicKeyEncryption,
298
299 HybridSignaturePublicKey,
301 HybridSignatureSecretKey,
302 HybridSignatureValue,
303
304 MlDsa65,
305
306 MlDsaOperations,
307
308 MlDsaPublicKey as AntMlDsaPublicKey,
310 MlDsaSecretKey as AntMlDsaSecretKey,
311 MlDsaSignature as AntMlDsaSignature,
312 MlKem768,
314 MlKemCiphertext,
315 MlKemOperations,
317 MlKemPublicKey,
319 MlKemSecretKey,
320 PqcError,
322 SaorsaPqcResult,
323
324 SharedSecret,
325 SymmetricEncryptedMessage,
326
327 SymmetricError,
328 SymmetricKey,
329
330 saorsa_pqc_init,
332};
333
334pub use quantum_crypto::ant_quic_integration::{
336 create_default_pqc_config,
338 create_pqc_only_config,
339};
340
341pub use quantum_crypto::types::{
343 FrostCommitment,
344 FrostGroupPublicKey,
345 FrostKeyShare,
346 FrostPublicKey,
348 FrostSignature,
349 GroupId,
351 HandshakeParameters,
352
353 ParticipantId,
354 PeerId as QuantumPeerId,
355 QuantumPeerIdentity,
356 SecureSession,
357 SessionId,
358 SessionState,
359};
360
361pub use placement::{
363 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
364 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
365 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
366 WeightedPlacementStrategy,
367};
368
369pub type PeerId = String;
375
376pub type Multiaddr = NetworkAddress;
380
381pub const VERSION: &str = env!("CARGO_PKG_VERSION");