#![doc = include_str!("../README.md")]
mod config;
mod crypto;
mod dht;
#[cfg(feature = "iroh-gossip")]
mod gossip;
#[cfg(feature = "iroh-gossip")]
pub use gossip::{
AutoDiscoveryGossip, Bootstrap, BubbleMerge, GossipReceiver, GossipRecordContent, GossipSender,
MessageOverlapMerge, Publisher, Topic,
};
pub use config::{
BootstrapConfig, BootstrapConfigBuilder, BubbleMergeConfig, BubbleMergeConfigBuilder, Config,
ConfigBuilder, DhtConfig, DhtConfigBuilder, MergeConfig, MergeConfigBuilder,
MessageOverlapMergeConfig, MessageOverlapMergeConfigBuilder, PublisherConfig,
PublisherConfigBuilder, TimeoutConfig, TimeoutConfigBuilder,
};
pub use crypto::{
DefaultSecretRotation, EncryptedRecord, Record, RecordPublisher, RotationHandle,
SecretRotation, TopicId, encryption_keypair, salt, signing_keypair,
};
pub use dht::Dht;
pub const MAX_RECORD_PEERS: usize = 5;
pub const MAX_MESSAGE_HASHES: usize = 5;
#[doc(hidden)]
pub fn unix_minute(minute_offset: i64) -> u64 {
((chrono::Utc::now().timestamp() / 60).saturating_add(minute_offset))
.try_into()
.expect("timestamp overflow")
}