//! Platform-agnostic core for the Ping messaging SDK.
//!
//! This crate owns OpenMLS state machines and exposes a transport-/storage-agnostic API.
//! Native and WASM bindings are thin wrappers around [`MessagingClient`].

#![deny(unsafe_code)]
#![warn(rust_2018_idioms, missing_debug_implementations)]

pub mod clock;
pub mod codec;
pub mod conversation;
pub mod device;
pub mod error;
pub mod identity;
pub mod log_filter;
pub mod message;
pub mod storage;
pub mod sync;
pub mod transport;

mod client;

pub use client::{ClientConfig, MessagingClient};
pub use clock::Hlc;
pub use conversation::{Conversation, ConversationId, ConversationMeta};
pub use device::{DeviceId, DeviceInfo, LinkingTicket};
pub use error::{Error, Result};
pub use identity::{Identity, UserId};
pub use message::{IncomingMessage, MessageEnvelope, MessageKind, OutgoingMessage};
pub use storage::Storage;
pub use sync::SyncCursor;
pub use transport::{Transport, TransportSubscription};

/// Wire-format version. Bumped only on incompatible envelope changes.
pub const WIRE_VERSION: u8 = 1;
