package org.mercury_im.messenger.core.repository; import org.mercury_im.messenger.core.entity.contact.Contact; import org.mercury_im.messenger.core.util.Optional; import java.util.List; import io.reactivex.Completable; import io.reactivex.Maybe; import io.reactivex.Observable; import io.reactivex.Single; public interface ContactRepository { Single insertContact(Contact contact); Observable> observeContact(long contactId); Maybe getContact(long contactId); Observable> observeContactByAddress(String address); Maybe getContactByAddress(String address); Observable> observeAllContacts(); Single updateContact(Contact contact); Single upsertContact(Contact contact); Completable deleteContact(Contact contact); }