import 'dart:async'; class SyncResult { final List up; final List down; final Map err; const SyncResult({ required this.up, required this.down, required this.err, }); @override String toString() { return 'SyncResult{up: $up, down: $down, err: $err}'; } } abstract class SyncIface { /// Merge [other] into [this], return [this] after merge. /// Data in [other] has higher priority than [this]. FutureOr sync(T other); }