/**
  * @param Address $address
  * @param BlockCypherAddressBalance $blockCypherAddressBalance
  * @param string $apiUrl
  * @param string $explorerUrl
  * @return $this
  */
 public static function from(Address $address, BlockCypherAddressBalance $blockCypherAddressBalance, $apiUrl, $explorerUrl)
 {
     $addressListItemDto = new self();
     $addressListItemDto->setAddress($address->getAddress());
     $addressListItemDto->setTag($address->getTag());
     $addressListItemDto->setCreationTime($address->getCreationTime());
     $addressListItemDto->setFinalBalance($blockCypherAddressBalance->getFinalBalance());
     $addressListItemDto->setNTx($blockCypherAddressBalance->getNTx());
     $addressListItemDto->setApiUrl($apiUrl);
     $addressListItemDto->setExplorerUrl($explorerUrl);
     return $addressListItemDto;
 }
 /**
  * @param Wallet $wallet
  * @param BigMoney|null $balance
  * @param $apiUrl
  * @return WalletListItemDto
  */
 public static function from(Wallet $wallet, BigMoney $balance, $apiUrl)
 {
     $walletListItemDto = new self();
     $walletListItemDto->setId($wallet->getId()->getValue());
     $walletListItemDto->setCoinSymbol($wallet->getCoinSymbol());
     $walletListItemDto->setCreationTime($wallet->getCreationTime());
     $walletListItemDto->setName($wallet->getName());
     if ($balance !== null) {
         $walletListItemDto->setBalance((double) (string) $balance->getAmount());
     } else {
         $walletListItemDto->setBalance(-1);
     }
     $walletListItemDto->setApiUrl($apiUrl);
     return $walletListItemDto;
 }
 /**
  * @param Transaction|null $transaction
  * @param TransactionListItem $transactionListItem
  * @param string $apiUrl
  * @param string $explorerUrl
  * @return $this
  */
 public static function from($transaction, TransactionListItem $transactionListItem, $apiUrl, $explorerUrl)
 {
     $transactionListItemDto = new self();
     // From local app transaction
     if ($transaction !== null) {
         $transactionListItemDto->setDescription($transaction->getDescription());
     } else {
         $transactionListItemDto->setDescription($transactionListItem->getTxHash());
     }
     // From BlockCypher TXRef
     $transactionListItemDto->setTxHash($transactionListItem->getTxHash());
     //$transactionListItemDto->setTxInputN($transactionListItem->getTxInputN());
     //$transactionListItemDto->setValue($transactionListItem->getValue());
     $transactionListItemDto->setConfirmations($transactionListItem->getConfirmations());
     if ($transactionListItem->getReceived() !== null) {
         $transactionListItemDto->setReceived($transactionListItem->getReceived());
     }
     if ($transactionListItem->getConfirmed() !== null) {
         $transactionListItemDto->setConfirmed($transactionListItem->getConfirmed());
     }
     $transactionListItemDto->setBlockHeight($transactionListItem->getBlockHeight());
     $transactionListItemDto->setTotal($transactionListItem->getFinalTotal());
     $transactionListItemDto->setApiUrl($apiUrl);
     $transactionListItemDto->setExplorerUrl($explorerUrl);
     return $transactionListItemDto;
 }
 /**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['status_code' => null, 'request_id' => null, 'api_url' => null, 'platform_returns' => [], 'auth_ticket' => null, 'returns' => [], 'error' => null], $values);
     $message->setStatusCode($values['status_code']);
     $message->setRequestId($values['request_id']);
     $message->setApiUrl($values['api_url']);
     $message->setAuthTicket($values['auth_ticket']);
     $message->setError($values['error']);
     foreach ($values['platform_returns'] as $item) {
         $message->addPlatformReturns($item);
     }
     foreach ($values['returns'] as $item) {
         $message->addReturns($item);
     }
     return $message;
 }