package org.mercury_im.messenger.core.data.repository; import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.entity.chat.DirectChat; import org.mercury_im.messenger.entity.chat.GroupChat; import org.mercury_im.messenger.entity.message.ChatMarkerState; import org.mercury_im.messenger.entity.message.Message; import org.mercury_im.messenger.entity.message.MessageDeliveryState; import java.util.List; import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.Single; public interface MessageRepository { Single insertMessage(Message message); Observable> observeMessages(DirectChat chat); Observable> observeMessages(GroupChat chat); Observable> findMessagesWithBody(String body); Observable> findMessagesWithBody(DirectChat chat, String body); Observable> findMessagesWithBody(GroupChat chat, String body); Single upsertMessage(Message message); Single updateMessage(Message message); Completable deleteMessage(Message message); Completable markMessage(String stanzaId, EntityBareJid xmppAddressOfChatPartner, ChatMarkerState received); Completable updateDeliveryState(UUID messageId, MessageDeliveryState deliveryState); }