/** * @bytelyst/sync * * Offline-first sync engine with configurable storage adapters and conflict resolution. * * @example * ```typescript * import { createSyncEngine, LocalStorageAdapter } from '@bytelyst/sync'; * import { createApiClient } from '@bytelyst/api-client'; * * const sync = createSyncEngine({ * productId: 'myapp', * entities: { * tasks: { * endpoint: '/api/tasks', * partitionKey: 'userId', * conflictStrategy: 'server-wins', * }, * }, * storage: new LocalStorageAdapter(), * apiClient: createApiClient({ baseURL: 'https://api.example.com' }), * }); * * // Push changes * await sync.push('tasks', { title: 'New Task' }); * * // Sync with server * const result = await sync.fullSync(); * console.log(`Pushed: ${result.pushed}, Pulled: ${result.pulled}`); * ``` */ export { createSyncEngine, SyncEngineImpl, SyncConflictError, computeBackoff } from './engine.js'; export { LocalStorageAdapter, InMemoryAdapter, MMKVAdapter, type MMKVInstance } from './storage.js'; export type { SyncEngine, SyncEngineConfig, EntityName, EntityConfig, ConflictStrategy, SyncStatus, SyncOperation, SyncItem, SyncResult, SyncStatusInfo, SyncStatusCallback, PullHandler, StorageAdapter, Conflict, } from './types.js';