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};
198pub use identity::FourWordAddress;
199
200pub use auth::{
202 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
203};
204pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
205pub use dht::{Key, Record};
206pub use dht_network_manager::{
207 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
208 DhtNetworkResult, DhtPeerInfo,
209};
210pub use encrypted_key_storage::{
211 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
212 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
213};
214pub use error::{P2PError, P2pResult as Result};
215pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
216pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
217pub use health::{
218 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
219 HealthServer, HealthStatus, PrometheusExporter,
220};
221pub use key_derivation::{
222 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
223 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
224};
225pub use monotonic_counter::{
226 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
227 SequenceValidationResult,
228};
229pub use network::{NodeBuilder, NodeConfig, P2PEvent, P2PNode};
230pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
231pub use config::Config;
233pub use network::P2PNode as Node;
234pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
235pub use persistent_state::{
236 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
237 StateChangeEvent, StateConfig, TransactionType, WalEntry,
238};
239pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
240pub use secure_memory::{
241 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
242 secure_string_with_capacity, secure_vec_with_capacity,
243};
244pub use validation::{
245 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
246 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
247 validate_message_size, validate_network_address, validate_peer_id,
248};
249
250pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
257
258pub use discuss::{
260 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
261};
262
263pub use projects::{
265 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
266 WorkflowState,
267};
268
269pub use threshold::{
271 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
272};
273
274pub use quantum_crypto::{
276 CryptoCapabilities,
277 KemAlgorithm,
278 NegotiatedAlgorithms,
279 ProtocolVersion,
280 QuantumCryptoError,
282 SignatureAlgorithm,
283 negotiate_algorithms,
285};
286
287pub use quantum_crypto::{
289 ChaCha20Poly1305Cipher,
291 EncryptedMessage,
293 HybridKem,
295 HybridKemCiphertext,
296 HybridKemPublicKey,
297 HybridKemSecretKey,
298 HybridPublicKeyEncryption,
299
300 HybridSignaturePublicKey,
302 HybridSignatureSecretKey,
303 HybridSignatureValue,
304
305 MlDsa65,
306
307 MlDsaOperations,
308
309 MlDsaPublicKey as AntMlDsaPublicKey,
311 MlDsaSecretKey as AntMlDsaSecretKey,
312 MlDsaSignature as AntMlDsaSignature,
313 MlKem768,
315 MlKemCiphertext,
316 MlKemOperations,
318 MlKemPublicKey,
320 MlKemSecretKey,
321 PqcError,
323 SaorsaPqcResult,
324
325 SharedSecret,
326 SymmetricEncryptedMessage,
327
328 SymmetricError,
329 SymmetricKey,
330
331 saorsa_pqc_init,
333};
334
335pub use quantum_crypto::ant_quic_integration::{
337 create_default_pqc_config,
339 create_pqc_only_config,
340};
341
342pub use quantum_crypto::types::{
344 FrostCommitment,
345 FrostGroupPublicKey,
346 FrostKeyShare,
347 FrostPublicKey,
349 FrostSignature,
350 GroupId,
352 HandshakeParameters,
353
354 ParticipantId,
355 PeerId as QuantumPeerId,
356 QuantumPeerIdentity,
357 SecureSession,
358 SessionId,
359 SessionState,
360};
361
362pub use placement::{
364 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
365 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
366 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
367 WeightedPlacementStrategy,
368};
369
370pub type PeerId = String;
376
377pub type Multiaddr = NetworkAddress;
381
382pub const VERSION: &str = env!("CARGO_PKG_VERSION");