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
208pub mod upgrade;
210
211#[cfg(any(test, feature = "test-utils"))]
213pub mod mock_dht;
214
215pub use address::{AddressBook, NetworkAddress};
217pub use address_book::{
218 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
219};
220pub use identity::FourWordAddress;
221
222pub use auth::{
224 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
225};
226pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
227pub use dht::{Key, Record};
228pub use dht_network_manager::{
229 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
230 DhtNetworkResult, DhtPeerInfo,
231};
232pub use encrypted_key_storage::{
233 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
234 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
235};
236pub use error::{P2PError, P2pResult as Result};
237pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
238pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
239pub use health::{
240 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
241 HealthServer, HealthStatus, PrometheusExporter,
242};
243pub use key_derivation::{
244 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
245 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
246};
247pub use monotonic_counter::{
248 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
249 SequenceValidationResult,
250};
251pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
252pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
253pub use config::Config;
255pub use network::P2PNode as Node;
256pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
257pub use persistent_state::{
258 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
259 StateChangeEvent, StateConfig, TransactionType, WalEntry,
260};
261pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
262pub use secure_memory::{
263 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
264 secure_string_with_capacity, secure_vec_with_capacity,
265};
266pub use validation::{
267 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
268 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
269 validate_message_size, validate_network_address, validate_peer_id,
270};
271
272pub use rate_limit::{
274 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
275 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
276 extract_ipv6_subnet_64,
277};
278
279pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
286
287pub use discuss::{
289 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
290};
291
292pub use projects::{
294 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
295 WorkflowState,
296};
297
298pub use threshold::{
300 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
301};
302
303pub use quantum_crypto::{
305 CryptoCapabilities,
306 KemAlgorithm,
307 NegotiatedAlgorithms,
308 ProtocolVersion,
309 QuantumCryptoError,
311 SignatureAlgorithm,
312 negotiate_algorithms,
314};
315
316pub use quantum_crypto::{
318 ChaCha20Poly1305Cipher,
320 EncryptedMessage,
322 HybridKem,
324 HybridKemCiphertext,
325 HybridKemPublicKey,
326 HybridKemSecretKey,
327 HybridPublicKeyEncryption,
328
329 HybridSignaturePublicKey,
331 HybridSignatureSecretKey,
332 HybridSignatureValue,
333
334 MlDsa65,
335
336 MlDsaOperations,
337
338 MlDsaPublicKey as AntMlDsaPublicKey,
340 MlDsaSecretKey as AntMlDsaSecretKey,
341 MlDsaSignature as AntMlDsaSignature,
342 MlKem768,
344 MlKemCiphertext,
345 MlKemOperations,
347 MlKemPublicKey,
349 MlKemSecretKey,
350 PqcError,
352 SaorsaPqcResult,
353
354 SharedSecret,
355 SymmetricEncryptedMessage,
356
357 SymmetricError,
358 SymmetricKey,
359
360 saorsa_pqc_init,
362};
363
364pub use quantum_crypto::ant_quic_integration::{
366 create_default_pqc_config,
368 create_pqc_only_config,
369};
370
371pub use quantum_crypto::types::{
373 FrostCommitment,
374 FrostGroupPublicKey,
375 FrostKeyShare,
376 FrostPublicKey,
378 FrostSignature,
379 GroupId,
381 HandshakeParameters,
382
383 ParticipantId,
384 PeerId as QuantumPeerId,
385 QuantumPeerIdentity,
386 SecureSession,
387 SessionId,
388 SessionState,
389};
390
391pub use placement::{
393 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
394 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
395 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
396 WeightedPlacementStrategy,
397};
398
399pub type PeerId = String;
411
412pub type Multiaddr = NetworkAddress;
416
417pub const VERSION: &str = env!("CARGO_PKG_VERSION");
419
420pub use upgrade::{
422 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
423 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
424 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
425 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
426 UpgradeEvent, create_applier,
427};