Package-level declarations
Types
A SyncTelemetrySink that discards every event. Default when telemetry isn't wired up.
Implemented by local entities/rows that participate in delta sync.
Cursor/quota bookkeeping persisted per resource, keyed by SyncResourceAdapter.resourceName.
Drives offline, cross-device delta sync for user-owned resources through one generic loop. Resources plug in as SyncResourceAdapters; this engine owns the contract invariants (ack guard, pending guard, full-snapshot tombstone reconciliation, pagination drain, fullResyncRequired), so they hold identically for all resources and a new resource cannot accidentally skip one.
Resource-specific glue for the generic loop in SyncEngine. Implement one of these (plus the wire DTO mapping) to make a new resource syncable — the contract logic (ack guard, pending guard, full-snapshot reconciliation, pagination drain, fullResyncRequired) lives in the engine, not here, so it holds identically for every resource.
Wire response envelope for one sync pass against a single resource.
The set of local sync states a SyncableEntity row can be in.
Optional telemetry hook for SyncEngine. All methods are no-ops by default (NoOpSyncTelemetrySink) so wiring analytics is opt-in; bridge this to your own analytics client (e.g. the analytics-core module's AnalyticsClient) to get the same event vocabulary Novalingo's user_sync_* events used.