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 prelude;
63
64pub mod api;
66
67pub mod address;
69pub mod address_book;
71
72pub mod network;
74
75pub mod dht;
77
78pub mod dht_network_manager;
80
81pub mod transport;
83
84pub mod auth;
86
87pub mod events;
89pub mod mls;
91pub mod types;
93
94pub mod telemetry;
96
97pub mod security;
101
102pub mod attestation;
104
105pub mod bgp_geo_provider;
107
108pub mod identity;
110
111pub mod storage;
113
114pub use api::{
116 GroupKeyPair,
117 MemberRef,
118 clear_dht_client,
119 get_data,
120 get_identity,
121 get_presence,
122 group_identity_canonical_sign_bytes,
124 group_identity_create,
125 group_identity_fetch,
126 group_identity_publish,
127 group_identity_update_members_signed,
128 identity_fetch,
129 register_headless,
130 register_identity,
132 register_presence,
134 set_active_device,
135 set_dht_client,
136 store_data,
138 store_dyad,
139 store_with_fec,
140};
141
142pub mod chat;
144
145pub mod messaging;
147
148pub mod discuss;
150
151pub mod projects;
153
154pub mod threshold;
156
157pub mod quantum_crypto;
159
160pub mod utils;
162
163pub mod validation;
165
166pub mod rate_limit;
168
169pub mod production;
171
172pub mod bootstrap;
174
175pub mod error;
177
178pub mod peer_record;
180
181pub mod monotonic_counter;
183
184pub mod secure_memory;
186
187pub mod key_derivation;
189
190pub mod encrypted_key_storage;
192
193pub mod persistent_state;
195
196pub mod adaptive;
198
199pub mod config;
201pub mod control;
202
203pub mod health;
205
206pub mod geographic_enhanced_network;
208
209pub mod placement;
211
212pub mod upgrade;
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::{BootstrapConfig, BootstrapManager, CacheConfig, ContactEntry, QualityMetrics};
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 dht::node_age_verifier::{
281 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
282 NodeAgeVerifier, OperationType,
283};
284pub use security::{
285 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
286 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
287};
288
289pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
296
297pub use discuss::{
299 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
300};
301
302pub use projects::{
304 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
305 WorkflowState,
306};
307
308pub use threshold::{
310 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
311};
312
313pub use quantum_crypto::{
315 CryptoCapabilities,
316 KemAlgorithm,
317 NegotiatedAlgorithms,
318 ProtocolVersion,
319 QuantumCryptoError,
321 SignatureAlgorithm,
322 negotiate_algorithms,
324};
325
326pub use quantum_crypto::{
328 ChaCha20Poly1305Cipher,
330 EncryptedMessage,
332 MlDsa65,
334 MlDsaOperations,
335 MlDsaPublicKey as AntMlDsaPublicKey,
337 MlDsaSecretKey as AntMlDsaSecretKey,
338 MlDsaSignature as AntMlDsaSignature,
339 MlKem768,
340 MlKemCiphertext,
341 MlKemOperations,
343 MlKemPublicKey,
345 MlKemSecretKey,
346 PqcError,
348 SaorsaPqcResult,
349 SharedSecret,
350 SymmetricEncryptedMessage,
351 SymmetricError,
352 SymmetricKey,
353 create_default_pqc_config,
355 create_pqc_only_config,
356 saorsa_pqc_init,
358};
359
360pub use quantum_crypto::types::{
362 FrostCommitment,
364 FrostGroupPublicKey,
365 FrostKeyShare,
366 FrostPublicKey,
367 FrostSignature,
368 GroupId,
370 HandshakeParameters,
371 ParticipantId,
372 PeerId as QuantumPeerId,
373 QuantumPeerIdentity,
374 SecureSession,
375 SessionId,
376 SessionState,
377};
378
379pub use placement::{
381 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
382 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
383 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
384 WeightedPlacementStrategy,
385};
386
387pub type PeerId = String;
399
400pub type Multiaddr = NetworkAddress;
404
405pub const VERSION: &str = env!("CARGO_PKG_VERSION");
407
408pub use attestation::{
410 AttestationConfig, AttestationError, AttestationResult, EnforcementMode, EntangledId,
411 SunsetTimestamp,
412};
413
414pub use upgrade::{
416 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
417 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
418 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
419 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
420 UpgradeEvent, create_applier,
421};