using SPMS.Domain.Entities; using SPMS.Domain.Enums; namespace SPMS.Domain.Interfaces; public interface IDeviceRepository : IRepository { Task GetByServiceAndTokenAsync(long serviceId, string deviceToken); Task GetByIdAndServiceAsync(long id, long serviceId); Task GetByExternalIdAndServiceAsync(string externalId, long serviceId); Task GetActiveCountByServiceAsync(long serviceId); Task> GetByPlatformAsync(long serviceId, Platform platform); Task<(IReadOnlyList Items, int TotalCount)> GetPagedAsync( long? serviceId, int page, int size, Platform? platform = null, bool? pushAgreed = null, bool? isActive = null, List? tagIds = null, string? keyword = null, bool? marketingAgreed = null); Task> GetAllFilteredAsync( long? serviceId, Platform? platform = null, bool? pushAgreed = null, bool? isActive = null, List? tagIds = null, string? keyword = null, bool? marketingAgreed = null); Task> GetDeviceCountsByTagIdsAsync(IEnumerable tagIds); Task> GetDevicesByTagIdAsync(long tagId); }