//! The sync engine.
//!
//! The division of labour is the whole point:
//!
//! ```text
//! A SyncSource decides HOW data is fetched.
//! The engine decides WHEN, and under which conditions.
//! ```
//!
//! Retry, exponential backoff, jitter, offline handling, validators and
//! single-flight belong to the platform. A connector that implements them itself
//! implements them differently from the next one, and none of them get tested.
//!
//! The engine is deliberately split so that scheduling is testable without waiting:
//! [`SyncEngine::run_due`] does one pass for a given instant, and the background loop
//! is a thin wrapper that calls it on a tick.
pub use Backoff;
pub use SyncEngine;
pub use ;
pub use SyncPolicy;
pub use ;
pub use SyncTarget;