using StickyBoard.Core.Models; using StickyBoard.Core.Models.SocialAndMessaging; using StickyBoard.Core.Repositories.Base; namespace StickyBoard.Core.Repositories.SocialAndMessaging.Contracts; public interface IContactRepository : IRepository, ISyncRepository { // update status of contact Task UpdateContactStatusAsync(Guid userId, Guid contactId, ContactStatus status, CancellationToken ct); // get contacts by user id and status Task> GetContactsByUserIdAndStatusAsync(Guid userId, ContactStatus status, CancellationToken ct); // check if contact exists Task ContactExistsAsync(Guid userId, Guid contactId, CancellationToken ct); //the hard delete must be reciprocated (both sides deletion) Task DeleteReciprocatedContactAsync(Guid userId, Guid contactId, CancellationToken ct); // add new contact must go through invite process }