/// <summary>
        /// Request game item transfer to player.
        /// </summary>
        /// <param name="sender">Transfer address of sender.</param>
        /// <param name="recipientID">Transfer address of recipient.</param>
        /// <param name="item">Game item to be transfered.</param>
        /// <param name="amount">Amount of game item to be transfered.</param>
        /// <returns>Async task that transfer game item to the other player.</returns>
        public async Task <bool> RequestGameItemTransfer(Profile sender, HoardID recipientID, GameItem item, BigInteger amount)
        {
            IGameItemProvider gameItemProvider = GetGameItemProvider(item);

            if (gameItemProvider != null && sender != null && recipientID != null)
            {
                return(await gameItemProvider.Transfer(sender, recipientID, item, amount));
            }

            return(false);
        }
 /// <inheritdoc/>
 public async Task <bool> Deposit(Profile profile, GameItem item, BigInteger amount)
 {
     try
     {
         IGameItemProvider gameItemProvider = Hoard.GetGameItemProvider(item);
         if (gameItemProvider != null)
         {
             return(await gameItemProvider.Transfer(profile, ExchangeContract.Address, item, amount));
         }
         throw new HoardException($"Cannot find GameItemProvider for item: {item.Symbol}!");
     }
     catch (Nethereum.JsonRpc.Client.RpcResponseException ex)
     {
         throw new Exception(ex.ToString(), ex);
     }
 }