/**
  * @param WalletId $walletId
  * @return Wallet
  */
 public function walletOfId(WalletId $walletId)
 {
     /** @var Result $result */
     $result = $this->repository->query()->where('id', '==', $walletId->getValue())->execute();
     if ($result === false) {
         return null;
     }
     if ($result->count() == 0) {
         return null;
     }
     $wallet = $this->documentToEncryptedWallet($result->first());
     return $wallet;
 }
 /**
  * @param WalletId $walletId
  * @return EncryptedTransaction
  */
 public function transactionsOfWalletId(WalletId $walletId)
 {
     /** @var EncryptedTransactionDocument[] $result */
     $result = $this->repository->query()->where('walletId', '==', $walletId->getValue())->execute();
     $encryptedTransactions = $this->documentArrayToObjectArray($result);
     return $encryptedTransactions;
 }
 /**
  * @param WalletId $walletId
  * @return EncryptedAddress[]
  */
 public function addressesOfWalletId(WalletId $walletId)
 {
     $result = $this->repository->query()->where('walletId', '==', $walletId->getValue())->execute();
     if ($result === false) {
         return array();
     }
     if ($result->count() == 0) {
         return array();
     }
     /** @var EncryptedAddressDocument[] $encryptedAddressDocuments */
     $encryptedAddressDocuments = $result;
     $encryptedAddresses = $this->documentArrayToObjectArray($encryptedAddressDocuments);
     return $encryptedAddresses;
 }