package org.mercury_im.messenger.core.repository; import org.mercury_im.messenger.core.entity.Account; 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 AccountRepository { Single insertAccount(Account account); Observable> observeAccount(long accountId); Maybe getAccount(long accountId); Observable> observeAccountByAddress(String address); Maybe getAccountByAddress(String address); Observable> observeAllAccounts(); Single updateAccount(Account account); Single upsertAccount(Account account); Completable deleteAccount(Account account); }