import 'dart:async'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/sort/comparator.dart'; import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:tmail_ui_user/features/thread/data/model/email_change_response.dart'; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'; import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; abstract class ThreadDataSource { Future getAllEmail( AccountId accountId, { UnsignedInt? limit, Set? sort, Filter? filter, Properties? properties } ); Future getChanges( AccountId accountId, State sinceState, { Properties? propertiesCreated, Properties? propertiesUpdated } ); Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption, UnsignedInt? limit}); Future update({List? updated, List? created, List? destroyed}); Future> emptyTrashFolder( AccountId accountId, MailboxId mailboxId, Future Function(List? newDestroyed) updateDestroyedEmailCache, ); }