ccxt 4.4.28__py2.py3-none-any.whl → 4.4.29__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/bybit.py +0 -13
  3. ccxt/alpaca.py +1 -1
  4. ccxt/async_support/__init__.py +1 -1
  5. ccxt/async_support/alpaca.py +1 -1
  6. ccxt/async_support/base/exchange.py +4 -1
  7. ccxt/async_support/bigone.py +1 -1
  8. ccxt/async_support/binance.py +1 -1
  9. ccxt/async_support/bingx.py +1 -1
  10. ccxt/async_support/bitbank.py +1 -1
  11. ccxt/async_support/bitfinex.py +1 -1
  12. ccxt/async_support/bitfinex2.py +1 -1
  13. ccxt/async_support/bitflyer.py +1 -1
  14. ccxt/async_support/bitget.py +96 -8
  15. ccxt/async_support/bithumb.py +1 -1
  16. ccxt/async_support/bitmart.py +1 -1
  17. ccxt/async_support/bitmex.py +1 -1
  18. ccxt/async_support/bitopro.py +22 -22
  19. ccxt/async_support/bitrue.py +29 -29
  20. ccxt/async_support/bitso.py +1 -1
  21. ccxt/async_support/bitstamp.py +1 -1
  22. ccxt/async_support/bitvavo.py +4 -1
  23. ccxt/async_support/blockchaincom.py +1 -1
  24. ccxt/async_support/btcmarkets.py +1 -1
  25. ccxt/async_support/bybit.py +50 -585
  26. ccxt/async_support/coinbase.py +1 -1
  27. ccxt/async_support/coinbaseexchange.py +1 -1
  28. ccxt/async_support/coinbaseinternational.py +1 -1
  29. ccxt/async_support/coincatch.py +25 -5
  30. ccxt/async_support/coinex.py +1 -1
  31. ccxt/async_support/coinlist.py +1 -1
  32. ccxt/async_support/coinmate.py +1 -1
  33. ccxt/async_support/coinsph.py +1 -1
  34. ccxt/async_support/cryptocom.py +1 -1
  35. ccxt/async_support/deribit.py +1 -1
  36. ccxt/async_support/digifinex.py +1 -1
  37. ccxt/async_support/exmo.py +1 -1
  38. ccxt/async_support/gate.py +1 -1
  39. ccxt/async_support/gemini.py +1 -1
  40. ccxt/async_support/hashkey.py +1 -1
  41. ccxt/async_support/hitbtc.py +1 -1
  42. ccxt/async_support/hollaex.py +1 -1
  43. ccxt/async_support/htx.py +1 -1
  44. ccxt/async_support/huobijp.py +1 -1
  45. ccxt/async_support/idex.py +1 -1
  46. ccxt/async_support/independentreserve.py +1 -1
  47. ccxt/async_support/indodax.py +1 -1
  48. ccxt/async_support/kraken.py +1 -1
  49. ccxt/async_support/kucoin.py +1 -1
  50. ccxt/async_support/kuna.py +1 -1
  51. ccxt/async_support/lbank.py +6 -1
  52. ccxt/async_support/lykke.py +1 -1
  53. ccxt/async_support/mercado.py +1 -1
  54. ccxt/async_support/mexc.py +1 -1
  55. ccxt/async_support/ndax.py +1 -1
  56. ccxt/async_support/novadax.py +1 -1
  57. ccxt/async_support/okcoin.py +1 -1
  58. ccxt/async_support/okx.py +1 -1
  59. ccxt/async_support/onetrading.py +1 -1
  60. ccxt/async_support/oxfun.py +1 -1
  61. ccxt/async_support/phemex.py +1 -1
  62. ccxt/async_support/poloniex.py +1 -1
  63. ccxt/async_support/probit.py +1 -1
  64. ccxt/async_support/tokocrypto.py +1 -1
  65. ccxt/async_support/upbit.py +1 -1
  66. ccxt/async_support/vertex.py +52 -8
  67. ccxt/async_support/wavesexchange.py +1 -1
  68. ccxt/async_support/whitebit.py +1 -1
  69. ccxt/async_support/woo.py +1 -1
  70. ccxt/async_support/woofipro.py +1 -1
  71. ccxt/async_support/xt.py +1 -1
  72. ccxt/async_support/yobit.py +2 -2
  73. ccxt/async_support/zaif.py +1 -1
  74. ccxt/async_support/zonda.py +1 -1
  75. ccxt/base/exchange.py +4 -1
  76. ccxt/bigone.py +1 -1
  77. ccxt/binance.py +1 -1
  78. ccxt/bingx.py +1 -1
  79. ccxt/bitbank.py +1 -1
  80. ccxt/bitfinex.py +1 -1
  81. ccxt/bitfinex2.py +1 -1
  82. ccxt/bitflyer.py +1 -1
  83. ccxt/bitget.py +96 -8
  84. ccxt/bithumb.py +1 -1
  85. ccxt/bitmart.py +1 -1
  86. ccxt/bitmex.py +1 -1
  87. ccxt/bitopro.py +22 -22
  88. ccxt/bitrue.py +29 -29
  89. ccxt/bitso.py +1 -1
  90. ccxt/bitstamp.py +1 -1
  91. ccxt/bitvavo.py +4 -1
  92. ccxt/blockchaincom.py +1 -1
  93. ccxt/btcmarkets.py +1 -1
  94. ccxt/bybit.py +50 -585
  95. ccxt/coinbase.py +1 -1
  96. ccxt/coinbaseexchange.py +1 -1
  97. ccxt/coinbaseinternational.py +1 -1
  98. ccxt/coincatch.py +25 -5
  99. ccxt/coinex.py +1 -1
  100. ccxt/coinlist.py +1 -1
  101. ccxt/coinmate.py +1 -1
  102. ccxt/coinsph.py +1 -1
  103. ccxt/cryptocom.py +1 -1
  104. ccxt/deribit.py +1 -1
  105. ccxt/digifinex.py +1 -1
  106. ccxt/exmo.py +1 -1
  107. ccxt/gate.py +1 -1
  108. ccxt/gemini.py +1 -1
  109. ccxt/hashkey.py +1 -1
  110. ccxt/hitbtc.py +1 -1
  111. ccxt/hollaex.py +1 -1
  112. ccxt/htx.py +1 -1
  113. ccxt/huobijp.py +1 -1
  114. ccxt/idex.py +1 -1
  115. ccxt/independentreserve.py +1 -1
  116. ccxt/indodax.py +1 -1
  117. ccxt/kraken.py +1 -1
  118. ccxt/kucoin.py +1 -1
  119. ccxt/kuna.py +1 -1
  120. ccxt/lbank.py +6 -1
  121. ccxt/lykke.py +1 -1
  122. ccxt/mercado.py +1 -1
  123. ccxt/mexc.py +1 -1
  124. ccxt/ndax.py +1 -1
  125. ccxt/novadax.py +1 -1
  126. ccxt/okcoin.py +1 -1
  127. ccxt/okx.py +1 -1
  128. ccxt/onetrading.py +1 -1
  129. ccxt/oxfun.py +1 -1
  130. ccxt/phemex.py +1 -1
  131. ccxt/poloniex.py +1 -1
  132. ccxt/pro/__init__.py +1 -1
  133. ccxt/pro/bitvavo.py +2 -1
  134. ccxt/pro/mexc.py +187 -30
  135. ccxt/probit.py +1 -1
  136. ccxt/tokocrypto.py +1 -1
  137. ccxt/upbit.py +1 -1
  138. ccxt/vertex.py +52 -8
  139. ccxt/wavesexchange.py +1 -1
  140. ccxt/whitebit.py +1 -1
  141. ccxt/woo.py +1 -1
  142. ccxt/woofipro.py +1 -1
  143. ccxt/xt.py +1 -1
  144. ccxt/yobit.py +2 -2
  145. ccxt/zaif.py +1 -1
  146. ccxt/zonda.py +1 -1
  147. {ccxt-4.4.28.dist-info → ccxt-4.4.29.dist-info}/METADATA +4 -4
  148. {ccxt-4.4.28.dist-info → ccxt-4.4.29.dist-info}/RECORD +151 -151
  149. {ccxt-4.4.28.dist-info → ccxt-4.4.29.dist-info}/LICENSE.txt +0 -0
  150. {ccxt-4.4.28.dist-info → ccxt-4.4.29.dist-info}/WHEEL +0 -0
  151. {ccxt-4.4.28.dist-info → ccxt-4.4.29.dist-info}/top_level.txt +0 -0
@@ -634,7 +634,7 @@ class bitrue(Exchange, ImplicitAPI):
634
634
  # }
635
635
  #
636
636
  result: dict = {}
637
- coins = self.safe_value(response, 'coins', [])
637
+ coins = self.safe_list(response, 'coins', [])
638
638
  for i in range(0, len(coins)):
639
639
  currency = coins[i]
640
640
  id = self.safe_string(currency, 'coin')
@@ -645,15 +645,15 @@ class bitrue(Exchange, ImplicitAPI):
645
645
  minWithdrawString = None
646
646
  maxWithdrawString = None
647
647
  minWithdrawFeeString = None
648
- networkDetails = self.safe_value(currency, 'chainDetail', [])
648
+ networkDetails = self.safe_list(currency, 'chainDetail', [])
649
649
  networks: dict = {}
650
650
  for j in range(0, len(networkDetails)):
651
651
  entry = networkDetails[j]
652
652
  networkId = self.safe_string(entry, 'chain')
653
653
  network = self.network_id_to_code(networkId, code)
654
- enableDeposit = self.safe_value(entry, 'enableDeposit')
654
+ enableDeposit = self.safe_bool(entry, 'enableDeposit')
655
655
  deposit = enableDeposit if (enableDeposit) else deposit
656
- enableWithdraw = self.safe_value(entry, 'enableWithdraw')
656
+ enableWithdraw = self.safe_bool(entry, 'enableWithdraw')
657
657
  withdraw = enableWithdraw if (enableWithdraw) else withdraw
658
658
  networkWithdrawFeeString = self.safe_string(entry, 'withdrawFee')
659
659
  if networkWithdrawFeeString is not None:
@@ -829,11 +829,11 @@ class bitrue(Exchange, ImplicitAPI):
829
829
  symbol = base + '/' + quote
830
830
  if settle is not None:
831
831
  symbol += ':' + settle
832
- filters = self.safe_value(market, 'filters', [])
832
+ filters = self.safe_list(market, 'filters', [])
833
833
  filtersByType = self.index_by(filters, 'filterType')
834
834
  status = self.safe_string(market, 'status')
835
- priceFilter = self.safe_value(filtersByType, 'PRICE_FILTER', {})
836
- amountFilter = self.safe_value(filtersByType, 'LOT_SIZE', {})
835
+ priceFilter = self.safe_dict(filtersByType, 'PRICE_FILTER', {})
836
+ amountFilter = self.safe_dict(filtersByType, 'LOT_SIZE', {})
837
837
  defaultPricePrecision = self.safe_string(market, 'pricePrecision')
838
838
  defaultAmountPrecision = self.safe_string(market, 'quantityPrecision')
839
839
  pricePrecision = self.safe_string(priceFilter, 'priceScale', defaultPricePrecision)
@@ -981,7 +981,7 @@ class bitrue(Exchange, ImplicitAPI):
981
981
  if type == 'swap':
982
982
  if subType is not None and subType == 'inverse':
983
983
  response = await self.dapiV2PrivateGetAccount(params)
984
- result = self.safe_value(response, 'data', {})
984
+ result = self.safe_dict(response, 'data', {})
985
985
  #
986
986
  # {
987
987
  # "code":"0",
@@ -1014,7 +1014,7 @@ class bitrue(Exchange, ImplicitAPI):
1014
1014
  #
1015
1015
  else:
1016
1016
  response = await self.fapiV2PrivateGetAccount(params)
1017
- result = self.safe_value(response, 'data', {})
1017
+ result = self.safe_dict(response, 'data', {})
1018
1018
  #
1019
1019
  # {
1020
1020
  # "code":"0",
@@ -1229,7 +1229,7 @@ class bitrue(Exchange, ImplicitAPI):
1229
1229
  'symbol': market['id'],
1230
1230
  }
1231
1231
  response = await self.spotV1PublicGetTicker24hr(self.extend(request, params))
1232
- data = self.safe_value(response, 0, {})
1232
+ data = self.safe_dict(response, 0, {})
1233
1233
  else:
1234
1234
  raise NotSupported(self.id + ' fetchTicker only support spot & swap markets')
1235
1235
  #
@@ -1287,11 +1287,11 @@ class bitrue(Exchange, ImplicitAPI):
1287
1287
  """
1288
1288
  await self.load_markets()
1289
1289
  market = self.market(symbol)
1290
- timeframes = self.safe_value(self.options, 'timeframes', {})
1290
+ timeframes = self.safe_dict(self.options, 'timeframes', {})
1291
1291
  response = None
1292
1292
  data = None
1293
1293
  if market['swap']:
1294
- timeframesFuture = self.safe_value(timeframes, 'future', {})
1294
+ timeframesFuture = self.safe_dict(timeframes, 'future', {})
1295
1295
  request: dict = {
1296
1296
  'contractName': market['id'],
1297
1297
  # 1min / 5min / 15min / 30min / 1h / 1day / 1week / 1month
@@ -1305,7 +1305,7 @@ class bitrue(Exchange, ImplicitAPI):
1305
1305
  response = await self.dapiV1PublicGetKlines(self.extend(request, params))
1306
1306
  data = response
1307
1307
  elif market['spot']:
1308
- timeframesSpot = self.safe_value(timeframes, 'spot', {})
1308
+ timeframesSpot = self.safe_dict(timeframes, 'spot', {})
1309
1309
  request: dict = {
1310
1310
  'symbol': market['id'],
1311
1311
  # 1m / 5m / 15m / 30m / 1H / 2H / 4H / 12H / 1D / 1W
@@ -1316,7 +1316,7 @@ class bitrue(Exchange, ImplicitAPI):
1316
1316
  if since is not None:
1317
1317
  request['fromIdx'] = since
1318
1318
  response = await self.spotV1PublicGetMarketKline(self.extend(request, params))
1319
- data = self.safe_value(response, 'data', [])
1319
+ data = self.safe_list(response, 'data', [])
1320
1320
  else:
1321
1321
  raise NotSupported(self.id + ' fetchOHLCV only support spot & swap markets')
1322
1322
  #
@@ -1523,7 +1523,7 @@ class bitrue(Exchange, ImplicitAPI):
1523
1523
  # https://github.com/ccxt/ccxt/issues/13856
1524
1524
  tickers: dict = {}
1525
1525
  for i in range(0, len(data)):
1526
- ticker = self.safe_value(data, i, {})
1526
+ ticker = self.safe_dict(data, i, {})
1527
1527
  market = self.market(self.safe_value(ticker, 'symbol'))
1528
1528
  tickers[market['id']] = ticker
1529
1529
  return self.parse_tickers(tickers, symbols)
@@ -1585,8 +1585,8 @@ class bitrue(Exchange, ImplicitAPI):
1585
1585
  orderId = self.safe_string(trade, 'orderId')
1586
1586
  id = self.safe_string_2(trade, 'id', 'tradeId')
1587
1587
  side = None
1588
- buyerMaker = self.safe_value(trade, 'isBuyerMaker') # ignore "m" until Bitrue fixes api
1589
- isBuyer = self.safe_value(trade, 'isBuyer')
1588
+ buyerMaker = self.safe_bool(trade, 'isBuyerMaker') # ignore "m" until Bitrue fixes api
1589
+ isBuyer = self.safe_bool(trade, 'isBuyer')
1590
1590
  if buyerMaker is not None:
1591
1591
  side = 'sell' if buyerMaker else 'buy'
1592
1592
  if isBuyer is not None:
@@ -1598,7 +1598,7 @@ class bitrue(Exchange, ImplicitAPI):
1598
1598
  'currency': self.safe_currency_code(self.safe_string(trade, 'commissionAssert')),
1599
1599
  }
1600
1600
  takerOrMaker = None
1601
- isMaker = self.safe_value(trade, 'isMaker')
1601
+ isMaker = self.safe_bool(trade, 'isMaker')
1602
1602
  if isMaker is not None:
1603
1603
  takerOrMaker = 'maker' if isMaker else 'taker'
1604
1604
  return self.safe_trade({
@@ -1751,7 +1751,7 @@ class bitrue(Exchange, ImplicitAPI):
1751
1751
  id = self.safe_string(order, 'orderId')
1752
1752
  type = self.safe_string_lower(order, 'type')
1753
1753
  side = self.safe_string_lower(order, 'side')
1754
- fills = self.safe_value(order, 'fills', [])
1754
+ fills = self.safe_list(order, 'fills', [])
1755
1755
  clientOrderId = self.safe_string(order, 'clientOrderId')
1756
1756
  timeInForce = self.safe_string(order, 'timeInForce')
1757
1757
  postOnly = (type == 'limit_maker') or (timeInForce == 'GTX') or (type == 'post_only')
@@ -1881,7 +1881,7 @@ class bitrue(Exchange, ImplicitAPI):
1881
1881
  response = await self.fapiV2PrivatePostOrder(self.extend(request, params))
1882
1882
  elif market['inverse']:
1883
1883
  response = await self.dapiV2PrivatePostOrder(self.extend(request, params))
1884
- data = self.safe_value(response, 'data', {})
1884
+ data = self.safe_dict(response, 'data', {})
1885
1885
  elif market['spot']:
1886
1886
  request['symbol'] = market['id']
1887
1887
  request['quantity'] = self.amount_to_precision(symbol, amount)
@@ -1956,7 +1956,7 @@ class bitrue(Exchange, ImplicitAPI):
1956
1956
  response = await self.fapiV2PrivateGetOrder(self.extend(request, params))
1957
1957
  elif market['inverse']:
1958
1958
  response = await self.dapiV2PrivateGetOrder(self.extend(request, params))
1959
- data = self.safe_value(response, 'data', {})
1959
+ data = self.safe_dict(response, 'data', {})
1960
1960
  elif market['spot']:
1961
1961
  request['orderId'] = id # spot market id is mandatory
1962
1962
  request['symbol'] = market['id']
@@ -2086,7 +2086,7 @@ class bitrue(Exchange, ImplicitAPI):
2086
2086
  response = await self.fapiV2PrivateGetOpenOrders(self.extend(request, params))
2087
2087
  elif market['inverse']:
2088
2088
  response = await self.dapiV2PrivateGetOpenOrders(self.extend(request, params))
2089
- data = self.safe_value(response, 'data', [])
2089
+ data = self.safe_list(response, 'data', [])
2090
2090
  elif market['spot']:
2091
2091
  request['symbol'] = market['id']
2092
2092
  response = await self.spotV1PrivateGetOpenOrders(self.extend(request, params))
@@ -2174,7 +2174,7 @@ class bitrue(Exchange, ImplicitAPI):
2174
2174
  response = await self.fapiV2PrivatePostCancel(self.extend(request, params))
2175
2175
  elif market['inverse']:
2176
2176
  response = await self.dapiV2PrivatePostCancel(self.extend(request, params))
2177
- data = self.safe_value(response, 'data', {})
2177
+ data = self.safe_dict(response, 'data', {})
2178
2178
  elif market['spot']:
2179
2179
  request['symbol'] = market['id']
2180
2180
  response = await self.spotV1PrivateDeleteOrder(self.extend(request, params))
@@ -2225,7 +2225,7 @@ class bitrue(Exchange, ImplicitAPI):
2225
2225
  response = await self.fapiV2PrivatePostAllOpenOrders(self.extend(request, params))
2226
2226
  elif market['inverse']:
2227
2227
  response = await self.dapiV2PrivatePostAllOpenOrders(self.extend(request, params))
2228
- data = self.safe_value(response, 'data', [])
2228
+ data = self.safe_list(response, 'data', [])
2229
2229
  else:
2230
2230
  raise NotSupported(self.id + ' cancelAllOrders only support future markets')
2231
2231
  #
@@ -2270,7 +2270,7 @@ class bitrue(Exchange, ImplicitAPI):
2270
2270
  response = await self.fapiV2PrivateGetMyTrades(self.extend(request, params))
2271
2271
  elif market['inverse']:
2272
2272
  response = await self.dapiV2PrivateGetMyTrades(self.extend(request, params))
2273
- data = self.safe_value(response, 'data', [])
2273
+ data = self.safe_list(response, 'data', [])
2274
2274
  elif market['spot']:
2275
2275
  request['symbol'] = market['id']
2276
2276
  response = await self.spotV2PrivateGetMyTrades(self.extend(request, params))
@@ -2457,7 +2457,7 @@ class bitrue(Exchange, ImplicitAPI):
2457
2457
  '6': 'canceled',
2458
2458
  },
2459
2459
  }
2460
- statuses = self.safe_value(statusesByType, type, {})
2460
+ statuses = self.safe_dict(statusesByType, type, {})
2461
2461
  return self.safe_string(statuses, status, status)
2462
2462
 
2463
2463
  def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
@@ -2580,7 +2580,7 @@ class bitrue(Exchange, ImplicitAPI):
2580
2580
  'fee': fee,
2581
2581
  }
2582
2582
 
2583
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2583
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2584
2584
  """
2585
2585
  make a withdrawal
2586
2586
  :see: https://github.com/Bitrue-exchange/Spot-official-api-docs#withdraw-commit--withdraw_data
@@ -2638,7 +2638,7 @@ class bitrue(Exchange, ImplicitAPI):
2638
2638
  # "chainDetail": [[Object]]
2639
2639
  # }
2640
2640
  #
2641
- chainDetails = self.safe_value(fee, 'chainDetail', [])
2641
+ chainDetails = self.safe_list(fee, 'chainDetail', [])
2642
2642
  chainDetailLength = len(chainDetails)
2643
2643
  result: dict = {
2644
2644
  'info': fee,
@@ -2779,7 +2779,7 @@ class bitrue(Exchange, ImplicitAPI):
2779
2779
  """
2780
2780
  await self.load_markets()
2781
2781
  currency = self.currency(code)
2782
- accountTypes = self.safe_value(self.options, 'accountsByType', {})
2782
+ accountTypes = self.safe_dict(self.options, 'accountsByType', {})
2783
2783
  fromId = self.safe_string(accountTypes, fromAccount, fromAccount)
2784
2784
  toId = self.safe_string(accountTypes, toAccount, toAccount)
2785
2785
  request: dict = {
@@ -1500,7 +1500,7 @@ class bitso(Exchange, ImplicitAPI):
1500
1500
  result[code]['info'][code] = withdrawFee
1501
1501
  return result
1502
1502
 
1503
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1503
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1504
1504
  """
1505
1505
  make a withdrawal
1506
1506
  :param str code: unified currency code
@@ -2009,7 +2009,7 @@ class bitstamp(Exchange, ImplicitAPI):
2009
2009
  'tag': tag,
2010
2010
  }
2011
2011
 
2012
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2012
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2013
2013
  """
2014
2014
  make a withdrawal
2015
2015
  :see: https://www.bitstamp.net/api/#tag/Withdrawals/operation/RequestFiatWithdrawal
@@ -1081,6 +1081,9 @@ class bitvavo(Exchange, ImplicitAPI):
1081
1081
  request['timeInForce'] = timeInForce
1082
1082
  if postOnly:
1083
1083
  request['postOnly'] = True
1084
+ clientOrderId = self.safe_string(params, 'clientOrderId')
1085
+ if clientOrderId is None:
1086
+ request['clientOrderId'] = self.uuid22()
1084
1087
  return self.extend(request, params)
1085
1088
 
1086
1089
  async def create_order(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
@@ -1631,7 +1634,7 @@ class bitvavo(Exchange, ImplicitAPI):
1631
1634
  request['paymentId'] = tag
1632
1635
  return self.extend(request, params)
1633
1636
 
1634
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1637
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1635
1638
  """
1636
1639
  make a withdrawal
1637
1640
  :param str code: unified currency code
@@ -880,7 +880,7 @@ class blockchaincom(Exchange, ImplicitAPI):
880
880
  'fee': fee,
881
881
  }
882
882
 
883
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
883
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
884
884
  """
885
885
  make a withdrawal
886
886
  :see: https://api.blockchain.com/v3/#createwithdrawal
@@ -1131,7 +1131,7 @@ class btcmarkets(Exchange, ImplicitAPI):
1131
1131
  #
1132
1132
  return self.parse_trades(response, market, since, limit)
1133
1133
 
1134
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1134
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1135
1135
  """
1136
1136
  make a withdrawal
1137
1137
  :see: https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1withdrawals/post