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 attestation;
99
100pub mod bgp_geo_provider;
102
103pub mod identity;
105
106pub mod storage;
108
109pub use api::{
111 GroupKeyPair,
112 MemberRef,
113 clear_dht_client,
114 get_data,
115 get_identity,
116 get_presence,
117 group_identity_canonical_sign_bytes,
119 group_identity_create,
120 group_identity_fetch,
121 group_identity_publish,
122 group_identity_update_members_signed,
123 identity_fetch,
124 register_headless,
125 register_identity,
127 register_presence,
129 set_active_device,
130 set_dht_client,
131 store_data,
133 store_dyad,
134 store_with_fec,
135};
136
137pub mod chat;
139
140pub mod messaging;
142
143pub mod discuss;
145
146pub mod projects;
148
149pub mod threshold;
151
152pub mod quantum_crypto;
154
155pub mod utils;
157
158pub mod validation;
160
161pub mod rate_limit;
163
164pub mod production;
166
167pub mod bootstrap;
169
170pub mod error;
172
173pub mod peer_record;
175
176pub mod monotonic_counter;
178
179pub mod secure_memory;
181
182pub mod key_derivation;
184
185pub mod encrypted_key_storage;
187
188pub mod persistent_state;
190
191pub mod adaptive;
193
194pub mod config;
196pub mod control;
197
198pub mod health;
200
201pub mod geographic_enhanced_network;
203
204pub mod placement;
206
207pub mod upgrade;
209
210pub use address::{AddressBook, NetworkAddress};
212pub use address_book::{
213 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
214};
215pub use identity::FourWordAddress;
216
217pub use auth::{
219 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
220};
221pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
222pub use dht::{Key, Record};
223pub use dht_network_manager::{
224 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
225 DhtNetworkResult, DhtPeerInfo,
226};
227pub use encrypted_key_storage::{
228 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
229 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
230};
231pub use error::{P2PError, P2pResult as Result};
232pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
233pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
234pub use health::{
235 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
236 HealthServer, HealthStatus, PrometheusExporter,
237};
238pub use key_derivation::{
239 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
240 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
241};
242pub use monotonic_counter::{
243 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
244 SequenceValidationResult,
245};
246pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
247pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
248pub use config::Config;
250pub use network::P2PNode as Node;
251pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
252pub use persistent_state::{
253 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
254 StateChangeEvent, StateConfig, TransactionType, WalEntry,
255};
256pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
257pub use secure_memory::{
258 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
259 secure_string_with_capacity, secure_vec_with_capacity,
260};
261pub use validation::{
262 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
263 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
264 validate_message_size, validate_network_address, validate_peer_id,
265};
266
267pub use rate_limit::{
269 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
270 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
271 extract_ipv6_subnet_64,
272};
273
274pub use dht::node_age_verifier::{
276 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
277 NodeAgeVerifier, OperationType,
278};
279pub use security::{
280 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
281 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
282};
283
284pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
291
292pub use discuss::{
294 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
295};
296
297pub use projects::{
299 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
300 WorkflowState,
301};
302
303pub use threshold::{
305 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
306};
307
308pub use quantum_crypto::{
310 CryptoCapabilities,
311 KemAlgorithm,
312 NegotiatedAlgorithms,
313 ProtocolVersion,
314 QuantumCryptoError,
316 SignatureAlgorithm,
317 negotiate_algorithms,
319};
320
321pub use quantum_crypto::{
323 ChaCha20Poly1305Cipher,
325 EncryptedMessage,
327 HybridKem,
329 HybridKemCiphertext,
330 HybridKemPublicKey,
331 HybridKemSecretKey,
332 HybridPublicKeyEncryption,
333
334 HybridSignaturePublicKey,
336 HybridSignatureSecretKey,
337 HybridSignatureValue,
338
339 MlDsa65,
340
341 MlDsaOperations,
342
343 MlDsaPublicKey as AntMlDsaPublicKey,
345 MlDsaSecretKey as AntMlDsaSecretKey,
346 MlDsaSignature as AntMlDsaSignature,
347 MlKem768,
349 MlKemCiphertext,
350 MlKemOperations,
352 MlKemPublicKey,
354 MlKemSecretKey,
355 PqcError,
357 SaorsaPqcResult,
358
359 SharedSecret,
360 SymmetricEncryptedMessage,
361
362 SymmetricError,
363 SymmetricKey,
364
365 saorsa_pqc_init,
367};
368
369pub use quantum_crypto::ant_quic_integration::{
371 create_default_pqc_config,
373 create_pqc_only_config,
374};
375
376pub use quantum_crypto::types::{
378 FrostCommitment,
379 FrostGroupPublicKey,
380 FrostKeyShare,
381 FrostPublicKey,
383 FrostSignature,
384 GroupId,
386 HandshakeParameters,
387
388 ParticipantId,
389 PeerId as QuantumPeerId,
390 QuantumPeerIdentity,
391 SecureSession,
392 SessionId,
393 SessionState,
394};
395
396pub use placement::{
398 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
399 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
400 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
401 WeightedPlacementStrategy,
402};
403
404pub type PeerId = String;
416
417pub type Multiaddr = NetworkAddress;
421
422pub const VERSION: &str = env!("CARGO_PKG_VERSION");
424
425pub use attestation::{
427 AttestationConfig, AttestationError, AttestationResult, EnforcementMode, EntangledId,
428 SunsetTimestamp,
429};
430
431pub use upgrade::{
433 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
434 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
435 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
436 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
437 UpgradeEvent, create_applier,
438};