using Knot.Modules.Chats.Domain; namespace Knot.Modules.Chats.Domain; public interface IMessageRepository { void Add(Message message); Task GetByIdAsync(Guid id, CancellationToken cancellationToken); Task> GetChatMessagesAsync(Guid chatId, int limit, int offset, CancellationToken cancellationToken); Task> SearchMessagesAsync(string query, Guid? chatId, CancellationToken cancellationToken); Task AddReadReceiptsAsync(Guid userId, List messageIds, CancellationToken cancellationToken); Task AddReactionAsync(Guid messageId, Guid userId, string emoji, CancellationToken cancellationToken); Task RemoveReactionAsync(Guid messageId, Guid userId, string emoji, CancellationToken cancellationToken); Task GetLastStoryMessageAsync(Guid chatId, Guid storyId, CancellationToken cancellationToken); }