//! Synchronization traits: the read/write faces of a replica and the cursors
//! they exchange.
//!
//! - [`LogProcessor`] — write side: `apply` an entry at `(peer, index)`.
//! Multi-writer, idempotent.
//! - [`LogSource`] — read side: `read_since` to pull, `cursors` /
//! `watch_cursors` to publish progress.
//!
//! A store that is both is a [`Replica`] (the SQL oplog). A file log reads any
//! origin but writes only its own ([`FileLogSink`]), so it's a
//! [`FileLogReplica`] — the type-level form of "only the originating device
//! writes its own log". Both faces speak [`PeerCursors`], a per-origin version
//! vector. The convergence drivers that consume these traits come later.
pub use ;
pub use SyncError;
pub use ;
pub use ;
pub use Replica;
pub use LogSource;