using System; using System.Collections.Generic; using System.Threading.Tasks; using Wino.Core.Domain.Entities.Shared; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Models.Accounts; namespace Wino.Core.Domain.Interfaces; public interface IBaseSynchronizer { /// /// Account that is assigned for this synchronizer. /// MailAccount Account { get; } /// /// Synchronizer state. /// AccountSynchronizerState State { get; } /// /// Queues a single request to be executed in the next synchronization. /// /// Request to queue. void QueueRequest(IRequestBase request); /// /// Returns whether there is an in-progress (queued or currently executing) operation for the given mail unique id. /// /// Mail unique id to check. bool HasPendingOperation(Guid mailUniqueId); /// /// Returns mail unique ids that currently have queued or executing operations. /// IReadOnlyCollection GetPendingOperationUniqueIds(); /// /// Returns whether there is an in-progress (queued or currently executing) operation for the given calendar item id. /// /// Calendar item id to check. bool HasPendingCalendarOperation(Guid calendarItemId); /// /// Returns calendar item ids that currently have queued or executing operations. /// IReadOnlyCollection GetPendingCalendarOperationIds(); /// /// Synchronizes profile information with the server. /// Sender name and Profile picture are updated. /// /// Profile information model that holds the values. Task GetProfileInformationAsync(); }