ccxt 4.3.29__py2.py3-none-any.whl → 4.3.31__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 (260) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +2 -0
  3. ccxt/abstract/binancecoinm.py +2 -0
  4. ccxt/abstract/binanceus.py +2 -0
  5. ccxt/abstract/binanceusdm.py +2 -0
  6. ccxt/ace.py +14 -14
  7. ccxt/alpaca.py +16 -16
  8. ccxt/ascendex.py +46 -46
  9. ccxt/async_support/__init__.py +1 -1
  10. ccxt/async_support/ace.py +14 -14
  11. ccxt/async_support/alpaca.py +16 -16
  12. ccxt/async_support/ascendex.py +46 -46
  13. ccxt/async_support/base/exchange.py +23 -23
  14. ccxt/async_support/base/ws/aiohttp_client.py +1 -0
  15. ccxt/async_support/base/ws/future.py +27 -29
  16. ccxt/async_support/bigone.py +32 -32
  17. ccxt/async_support/binance.py +105 -96
  18. ccxt/async_support/bingx.py +22 -22
  19. ccxt/async_support/bit2c.py +13 -13
  20. ccxt/async_support/bitbank.py +19 -19
  21. ccxt/async_support/bitbns.py +17 -17
  22. ccxt/async_support/bitfinex.py +24 -24
  23. ccxt/async_support/bitfinex2.py +142 -109
  24. ccxt/async_support/bitflyer.py +23 -23
  25. ccxt/async_support/bitget.py +76 -76
  26. ccxt/async_support/bithumb.py +20 -20
  27. ccxt/async_support/bitmart.py +55 -55
  28. ccxt/async_support/bitmex.py +41 -41
  29. ccxt/async_support/bitopro.py +30 -30
  30. ccxt/async_support/bitrue.py +37 -37
  31. ccxt/async_support/bitso.py +30 -30
  32. ccxt/async_support/bitstamp.py +31 -31
  33. ccxt/async_support/bitteam.py +26 -26
  34. ccxt/async_support/bitvavo.py +27 -27
  35. ccxt/async_support/bl3p.py +8 -8
  36. ccxt/async_support/blockchaincom.py +24 -24
  37. ccxt/async_support/blofin.py +37 -37
  38. ccxt/async_support/btcalpha.py +19 -19
  39. ccxt/async_support/btcbox.py +11 -11
  40. ccxt/async_support/btcmarkets.py +22 -22
  41. ccxt/async_support/btcturk.py +13 -13
  42. ccxt/async_support/bybit.py +96 -96
  43. ccxt/async_support/cex.py +21 -21
  44. ccxt/async_support/coinbase.py +53 -53
  45. ccxt/async_support/coinbaseexchange.py +29 -29
  46. ccxt/async_support/coinbaseinternational.py +32 -32
  47. ccxt/async_support/coincheck.py +14 -14
  48. ccxt/async_support/coinex.py +424 -448
  49. ccxt/async_support/coinlist.py +35 -35
  50. ccxt/async_support/coinmate.py +22 -22
  51. ccxt/async_support/coinmetro.py +22 -22
  52. ccxt/async_support/coinone.py +18 -18
  53. ccxt/async_support/coinsph.py +32 -32
  54. ccxt/async_support/coinspot.py +8 -8
  55. ccxt/async_support/cryptocom.py +43 -43
  56. ccxt/async_support/currencycom.py +33 -33
  57. ccxt/async_support/delta.py +35 -35
  58. ccxt/async_support/deribit.py +54 -54
  59. ccxt/async_support/digifinex.py +56 -56
  60. ccxt/async_support/exmo.py +34 -34
  61. ccxt/async_support/gate.py +60 -60
  62. ccxt/async_support/gemini.py +24 -24
  63. ccxt/async_support/hitbtc.py +51 -51
  64. ccxt/async_support/hollaex.py +29 -29
  65. ccxt/async_support/htx.py +73 -73
  66. ccxt/async_support/huobijp.py +30 -30
  67. ccxt/async_support/hyperliquid.py +58 -58
  68. ccxt/async_support/idex.py +33 -33
  69. ccxt/async_support/independentreserve.py +12 -12
  70. ccxt/async_support/indodax.py +21 -21
  71. ccxt/async_support/kraken.py +46 -51
  72. ccxt/async_support/krakenfutures.py +29 -29
  73. ccxt/async_support/kucoin.py +51 -51
  74. ccxt/async_support/kucoinfutures.py +33 -33
  75. ccxt/async_support/kuna.py +27 -27
  76. ccxt/async_support/latoken.py +27 -27
  77. ccxt/async_support/lbank.py +35 -35
  78. ccxt/async_support/luno.py +19 -19
  79. ccxt/async_support/lykke.py +20 -20
  80. ccxt/async_support/mercado.py +17 -17
  81. ccxt/async_support/mexc.py +64 -64
  82. ccxt/async_support/ndax.py +38 -38
  83. ccxt/async_support/novadax.py +26 -26
  84. ccxt/async_support/oceanex.py +21 -21
  85. ccxt/async_support/okcoin.py +35 -35
  86. ccxt/async_support/okx.py +85 -85
  87. ccxt/async_support/onetrading.py +32 -32
  88. ccxt/async_support/p2b.py +14 -14
  89. ccxt/async_support/paymium.py +12 -12
  90. ccxt/async_support/phemex.py +50 -50
  91. ccxt/async_support/poloniex.py +35 -35
  92. ccxt/async_support/poloniexfutures.py +25 -21
  93. ccxt/async_support/probit.py +30 -30
  94. ccxt/async_support/timex.py +22 -22
  95. ccxt/async_support/tokocrypto.py +26 -26
  96. ccxt/async_support/tradeogre.py +12 -12
  97. ccxt/async_support/upbit.py +28 -28
  98. ccxt/async_support/wavesexchange.py +33 -33
  99. ccxt/async_support/wazirx.py +21 -21
  100. ccxt/async_support/whitebit.py +80 -40
  101. ccxt/async_support/woo.py +51 -51
  102. ccxt/async_support/woofipro.py +46 -46
  103. ccxt/async_support/yobit.py +20 -20
  104. ccxt/async_support/zaif.py +12 -12
  105. ccxt/async_support/zonda.py +22 -22
  106. ccxt/base/exchange.py +39 -35
  107. ccxt/base/types.py +13 -0
  108. ccxt/bigone.py +32 -32
  109. ccxt/binance.py +105 -96
  110. ccxt/bingx.py +22 -22
  111. ccxt/bit2c.py +13 -13
  112. ccxt/bitbank.py +19 -19
  113. ccxt/bitbns.py +17 -17
  114. ccxt/bitfinex.py +24 -24
  115. ccxt/bitfinex2.py +142 -109
  116. ccxt/bitflyer.py +23 -23
  117. ccxt/bitget.py +76 -76
  118. ccxt/bithumb.py +20 -20
  119. ccxt/bitmart.py +55 -55
  120. ccxt/bitmex.py +41 -41
  121. ccxt/bitopro.py +30 -30
  122. ccxt/bitrue.py +37 -37
  123. ccxt/bitso.py +30 -30
  124. ccxt/bitstamp.py +31 -31
  125. ccxt/bitteam.py +26 -26
  126. ccxt/bitvavo.py +27 -27
  127. ccxt/bl3p.py +8 -8
  128. ccxt/blockchaincom.py +24 -24
  129. ccxt/blofin.py +37 -37
  130. ccxt/btcalpha.py +19 -19
  131. ccxt/btcbox.py +11 -11
  132. ccxt/btcmarkets.py +22 -22
  133. ccxt/btcturk.py +13 -13
  134. ccxt/bybit.py +96 -96
  135. ccxt/cex.py +21 -21
  136. ccxt/coinbase.py +53 -53
  137. ccxt/coinbaseexchange.py +29 -29
  138. ccxt/coinbaseinternational.py +32 -32
  139. ccxt/coincheck.py +14 -14
  140. ccxt/coinex.py +424 -448
  141. ccxt/coinlist.py +35 -35
  142. ccxt/coinmate.py +22 -22
  143. ccxt/coinmetro.py +22 -22
  144. ccxt/coinone.py +18 -18
  145. ccxt/coinsph.py +32 -32
  146. ccxt/coinspot.py +8 -8
  147. ccxt/cryptocom.py +43 -43
  148. ccxt/currencycom.py +33 -33
  149. ccxt/delta.py +35 -35
  150. ccxt/deribit.py +54 -54
  151. ccxt/digifinex.py +56 -56
  152. ccxt/exmo.py +34 -34
  153. ccxt/gate.py +60 -60
  154. ccxt/gemini.py +24 -24
  155. ccxt/hitbtc.py +51 -51
  156. ccxt/hollaex.py +29 -29
  157. ccxt/htx.py +73 -73
  158. ccxt/huobijp.py +30 -30
  159. ccxt/hyperliquid.py +58 -58
  160. ccxt/idex.py +33 -33
  161. ccxt/independentreserve.py +12 -12
  162. ccxt/indodax.py +21 -21
  163. ccxt/kraken.py +46 -51
  164. ccxt/krakenfutures.py +29 -29
  165. ccxt/kucoin.py +51 -51
  166. ccxt/kucoinfutures.py +33 -33
  167. ccxt/kuna.py +27 -27
  168. ccxt/latoken.py +27 -27
  169. ccxt/lbank.py +35 -35
  170. ccxt/luno.py +19 -19
  171. ccxt/lykke.py +20 -20
  172. ccxt/mercado.py +17 -17
  173. ccxt/mexc.py +64 -64
  174. ccxt/ndax.py +38 -38
  175. ccxt/novadax.py +26 -26
  176. ccxt/oceanex.py +21 -21
  177. ccxt/okcoin.py +35 -35
  178. ccxt/okx.py +85 -85
  179. ccxt/onetrading.py +32 -32
  180. ccxt/p2b.py +14 -14
  181. ccxt/paymium.py +12 -12
  182. ccxt/phemex.py +50 -50
  183. ccxt/poloniex.py +35 -35
  184. ccxt/poloniexfutures.py +25 -21
  185. ccxt/pro/__init__.py +1 -1
  186. ccxt/pro/alpaca.py +8 -8
  187. ccxt/pro/ascendex.py +4 -4
  188. ccxt/pro/binance.py +56 -56
  189. ccxt/pro/bingx.py +5 -5
  190. ccxt/pro/bitfinex.py +6 -6
  191. ccxt/pro/bitfinex2.py +10 -10
  192. ccxt/pro/bitget.py +17 -17
  193. ccxt/pro/bithumb.py +6 -6
  194. ccxt/pro/bitmart.py +8 -8
  195. ccxt/pro/bitmex.py +16 -16
  196. ccxt/pro/bitopro.py +4 -4
  197. ccxt/pro/bitrue.py +8 -8
  198. ccxt/pro/bitstamp.py +5 -5
  199. ccxt/pro/bitvavo.py +14 -14
  200. ccxt/pro/blockchaincom.py +7 -7
  201. ccxt/pro/bybit.py +12 -12
  202. ccxt/pro/cex.py +19 -19
  203. ccxt/pro/coinbase.py +2 -2
  204. ccxt/pro/coinbaseexchange.py +10 -10
  205. ccxt/pro/coinbaseinternational.py +4 -4
  206. ccxt/pro/coincheck.py +2 -2
  207. ccxt/pro/coinex.py +15 -15
  208. ccxt/pro/coinone.py +4 -4
  209. ccxt/pro/cryptocom.py +11 -11
  210. ccxt/pro/currencycom.py +4 -4
  211. ccxt/pro/deribit.py +9 -9
  212. ccxt/pro/exmo.py +9 -9
  213. ccxt/pro/gate.py +12 -12
  214. ccxt/pro/gemini.py +11 -11
  215. ccxt/pro/hitbtc.py +13 -13
  216. ccxt/pro/hollaex.py +6 -6
  217. ccxt/pro/htx.py +15 -15
  218. ccxt/pro/huobijp.py +16 -16
  219. ccxt/pro/hyperliquid.py +9 -9
  220. ccxt/pro/idex.py +12 -12
  221. ccxt/pro/independentreserve.py +2 -2
  222. ccxt/pro/kraken.py +14 -14
  223. ccxt/pro/krakenfutures.py +12 -12
  224. ccxt/pro/kucoin.py +12 -12
  225. ccxt/pro/kucoinfutures.py +16 -16
  226. ccxt/pro/lbank.py +12 -12
  227. ccxt/pro/luno.py +4 -4
  228. ccxt/pro/mexc.py +14 -14
  229. ccxt/pro/ndax.py +12 -12
  230. ccxt/pro/okcoin.py +6 -6
  231. ccxt/pro/okx.py +30 -30
  232. ccxt/pro/onetrading.py +13 -13
  233. ccxt/pro/p2b.py +2 -2
  234. ccxt/pro/phemex.py +9 -9
  235. ccxt/pro/poloniex.py +9 -9
  236. ccxt/pro/poloniexfutures.py +10 -10
  237. ccxt/pro/probit.py +8 -8
  238. ccxt/pro/upbit.py +1 -1
  239. ccxt/pro/wazirx.py +10 -10
  240. ccxt/pro/whitebit.py +8 -8
  241. ccxt/pro/woo.py +14 -14
  242. ccxt/pro/woofipro.py +14 -14
  243. ccxt/probit.py +30 -30
  244. ccxt/test/base/test_shared_methods.py +1 -0
  245. ccxt/timex.py +22 -22
  246. ccxt/tokocrypto.py +26 -26
  247. ccxt/tradeogre.py +12 -12
  248. ccxt/upbit.py +28 -28
  249. ccxt/wavesexchange.py +33 -33
  250. ccxt/wazirx.py +21 -21
  251. ccxt/whitebit.py +80 -40
  252. ccxt/woo.py +51 -51
  253. ccxt/woofipro.py +46 -46
  254. ccxt/yobit.py +20 -20
  255. ccxt/zaif.py +12 -12
  256. ccxt/zonda.py +22 -22
  257. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/METADATA +4 -4
  258. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/RECORD +260 -260
  259. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/WHEEL +0 -0
  260. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/top_level.txt +0 -0
ccxt/bithumb.py CHANGED
@@ -218,7 +218,7 @@ class bithumb(Exchange, ImplicitAPI):
218
218
  quote = quotes[i]
219
219
  quoteId = quote
220
220
  extension = self.safe_value(quoteCurrencies, quote, {})
221
- request = {
221
+ request: dict = {
222
222
  'quoteId': quoteId,
223
223
  }
224
224
  response = self.publicGetTickerALLQuoteId(self.extend(request, params))
@@ -285,7 +285,7 @@ class bithumb(Exchange, ImplicitAPI):
285
285
  return result
286
286
 
287
287
  def parse_balance(self, response) -> Balances:
288
- result = {'info': response}
288
+ result: dict = {'info': response}
289
289
  balances = self.safe_value(response, 'data')
290
290
  codes = list(self.currencies.keys())
291
291
  for i in range(0, len(codes)):
@@ -307,7 +307,7 @@ class bithumb(Exchange, ImplicitAPI):
307
307
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
308
308
  """
309
309
  self.load_markets()
310
- request = {
310
+ request: dict = {
311
311
  'currency': 'ALL',
312
312
  }
313
313
  response = self.privatePostInfoBalance(self.extend(request, params))
@@ -324,7 +324,7 @@ class bithumb(Exchange, ImplicitAPI):
324
324
  """
325
325
  self.load_markets()
326
326
  market = self.market(symbol)
327
- request = {
327
+ request: dict = {
328
328
  'baseId': market['baseId'],
329
329
  'quoteId': market['quoteId'],
330
330
  }
@@ -412,13 +412,13 @@ class bithumb(Exchange, ImplicitAPI):
412
412
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
413
413
  """
414
414
  self.load_markets()
415
- result = {}
415
+ result: dict = {}
416
416
  quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
417
417
  quotes = list(quoteCurrencies.keys())
418
418
  for i in range(0, len(quotes)):
419
419
  quote = quotes[i]
420
420
  quoteId = quote
421
- request = {
421
+ request: dict = {
422
422
  'quoteId': quoteId,
423
423
  }
424
424
  response = self.publicGetTickerALLQuoteId(self.extend(request, params))
@@ -467,7 +467,7 @@ class bithumb(Exchange, ImplicitAPI):
467
467
  """
468
468
  self.load_markets()
469
469
  market = self.market(symbol)
470
- request = {
470
+ request: dict = {
471
471
  'baseId': market['baseId'],
472
472
  'quoteId': market['quoteId'],
473
473
  }
@@ -527,7 +527,7 @@ class bithumb(Exchange, ImplicitAPI):
527
527
  """
528
528
  self.load_markets()
529
529
  market = self.market(symbol)
530
- request = {
530
+ request: dict = {
531
531
  'baseId': market['baseId'],
532
532
  'quoteId': market['quoteId'],
533
533
  'interval': self.safe_string(self.timeframes, timeframe, timeframe),
@@ -559,7 +559,7 @@ class bithumb(Exchange, ImplicitAPI):
559
559
  data = self.safe_list(response, 'data', [])
560
560
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
561
561
 
562
- def parse_trade(self, trade, market: Market = None) -> Trade:
562
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
563
563
  #
564
564
  # fetchTrades(public)
565
565
  #
@@ -643,7 +643,7 @@ class bithumb(Exchange, ImplicitAPI):
643
643
  """
644
644
  self.load_markets()
645
645
  market = self.market(symbol)
646
- request = {
646
+ request: dict = {
647
647
  'baseId': market['baseId'],
648
648
  'quoteId': market['quoteId'],
649
649
  }
@@ -683,7 +683,7 @@ class bithumb(Exchange, ImplicitAPI):
683
683
  """
684
684
  self.load_markets()
685
685
  market = self.market(symbol)
686
- request = {
686
+ request: dict = {
687
687
  'order_currency': market['id'],
688
688
  'payment_currency': market['quote'],
689
689
  'units': amount,
@@ -718,7 +718,7 @@ class bithumb(Exchange, ImplicitAPI):
718
718
  raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
719
719
  self.load_markets()
720
720
  market = self.market(symbol)
721
- request = {
721
+ request: dict = {
722
722
  'order_id': id,
723
723
  'count': 1,
724
724
  'order_currency': market['base'],
@@ -755,15 +755,15 @@ class bithumb(Exchange, ImplicitAPI):
755
755
  data = self.safe_dict(response, 'data')
756
756
  return self.parse_order(self.extend(data, {'order_id': id}), market)
757
757
 
758
- def parse_order_status(self, status):
759
- statuses = {
758
+ def parse_order_status(self, status: Str):
759
+ statuses: dict = {
760
760
  'Pending': 'open',
761
761
  'Completed': 'closed',
762
762
  'Cancel': 'canceled',
763
763
  }
764
764
  return self.safe_string(statuses, status, status)
765
765
 
766
- def parse_order(self, order, market: Market = None) -> Order:
766
+ def parse_order(self, order: dict, market: Market = None) -> Order:
767
767
  #
768
768
  #
769
769
  # fetchOrder
@@ -872,7 +872,7 @@ class bithumb(Exchange, ImplicitAPI):
872
872
  market = self.market(symbol)
873
873
  if limit is None:
874
874
  limit = 100
875
- request = {
875
+ request: dict = {
876
876
  'count': limit,
877
877
  'order_currency': market['base'],
878
878
  'payment_currency': market['quote'],
@@ -918,7 +918,7 @@ class bithumb(Exchange, ImplicitAPI):
918
918
  side = 'bid' if (params['side'] == 'buy') else 'ask'
919
919
  params = self.omit(params, ['side', 'currency'])
920
920
  # https://github.com/ccxt/ccxt/issues/6771
921
- request = {
921
+ request: dict = {
922
922
  'order_id': id,
923
923
  'type': side,
924
924
  'order_currency': market['base'],
@@ -927,7 +927,7 @@ class bithumb(Exchange, ImplicitAPI):
927
927
  return self.privatePostTradeCancel(self.extend(request, params))
928
928
 
929
929
  def cancel_unified_order(self, order, params={}):
930
- request = {
930
+ request: dict = {
931
931
  'side': order['side'],
932
932
  }
933
933
  return self.cancel_order(order['id'], order['symbol'], self.extend(request, params))
@@ -947,7 +947,7 @@ class bithumb(Exchange, ImplicitAPI):
947
947
  self.check_address(address)
948
948
  self.load_markets()
949
949
  currency = self.currency(code)
950
- request = {
950
+ request: dict = {
951
951
  'units': amount,
952
952
  'address': address,
953
953
  'currency': currency['id'],
@@ -964,7 +964,7 @@ class bithumb(Exchange, ImplicitAPI):
964
964
  #
965
965
  return self.parse_transaction(response, currency)
966
966
 
967
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
967
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
968
968
  #
969
969
  # withdraw
970
970
  #
ccxt/bitmart.py CHANGED
@@ -1011,7 +1011,7 @@ class bitmart(Exchange, ImplicitAPI):
1011
1011
  #
1012
1012
  data = self.safe_value(response, 'data', {})
1013
1013
  currencies = self.safe_value(data, 'currencies', [])
1014
- result = {}
1014
+ result: dict = {}
1015
1015
  for i in range(0, len(currencies)):
1016
1016
  currency = currencies[i]
1017
1017
  id = self.safe_string(currency, 'id')
@@ -1047,7 +1047,7 @@ class bitmart(Exchange, ImplicitAPI):
1047
1047
  """
1048
1048
  self.load_markets()
1049
1049
  currency = self.currency(code)
1050
- request = {
1050
+ request: dict = {
1051
1051
  'currency': currency['id'],
1052
1052
  }
1053
1053
  response = self.privateGetAccountV1WithdrawCharge(self.extend(request, params))
@@ -1065,7 +1065,7 @@ class bitmart(Exchange, ImplicitAPI):
1065
1065
  # }
1066
1066
  #
1067
1067
  data = response['data']
1068
- withdrawFees = {}
1068
+ withdrawFees: dict = {}
1069
1069
  withdrawFees[code] = self.safe_number(data, 'withdraw_fee')
1070
1070
  return {
1071
1071
  'info': response,
@@ -1104,7 +1104,7 @@ class bitmart(Exchange, ImplicitAPI):
1104
1104
  """
1105
1105
  self.load_markets()
1106
1106
  currency = self.currency(code)
1107
- request = {
1107
+ request: dict = {
1108
1108
  'currency': currency['id'],
1109
1109
  }
1110
1110
  response = self.privateGetAccountV1WithdrawCharge(self.extend(request, params))
@@ -1234,7 +1234,7 @@ class bitmart(Exchange, ImplicitAPI):
1234
1234
  """
1235
1235
  self.load_markets()
1236
1236
  market = self.market(symbol)
1237
- request = {}
1237
+ request: dict = {}
1238
1238
  response = None
1239
1239
  if market['swap']:
1240
1240
  request['contract_symbol'] = market['id']
@@ -1333,7 +1333,7 @@ class bitmart(Exchange, ImplicitAPI):
1333
1333
  raise NotSupported(self.id + ' fetchTickers() does not support ' + type + ' markets, only spot and swap markets are accepted')
1334
1334
  data = self.safe_value(response, 'data', {})
1335
1335
  tickers = self.safe_value(data, 'tickers', [])
1336
- result = {}
1336
+ result: dict = {}
1337
1337
  for i in range(0, len(tickers)):
1338
1338
  ticker = self.parse_ticker(tickers[i])
1339
1339
  symbol = ticker['symbol']
@@ -1352,7 +1352,7 @@ class bitmart(Exchange, ImplicitAPI):
1352
1352
  """
1353
1353
  self.load_markets()
1354
1354
  market = self.market(symbol)
1355
- request = {
1355
+ request: dict = {
1356
1356
  'symbol': market['id'],
1357
1357
  }
1358
1358
  response = None
@@ -1413,7 +1413,7 @@ class bitmart(Exchange, ImplicitAPI):
1413
1413
  timestamp = self.safe_integer_2(data, 'ts', 'timestamp')
1414
1414
  return self.parse_order_book(data, market['symbol'], timestamp)
1415
1415
 
1416
- def parse_trade(self, trade, market: Market = None) -> Trade:
1416
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
1417
1417
  #
1418
1418
  # public fetchTrades spot( amount = count * price )
1419
1419
  #
@@ -1527,7 +1527,7 @@ class bitmart(Exchange, ImplicitAPI):
1527
1527
  market = self.market(symbol)
1528
1528
  if not market['spot']:
1529
1529
  raise NotSupported(self.id + ' fetchTrades() does not support ' + market['type'] + ' orders, only spot orders are accepted')
1530
- request = {
1530
+ request: dict = {
1531
1531
  'symbol': market['id'],
1532
1532
  }
1533
1533
  response = self.publicGetSpotV1SymbolsTrades(self.extend(request, params))
@@ -1639,7 +1639,7 @@ class bitmart(Exchange, ImplicitAPI):
1639
1639
  market = self.market(symbol)
1640
1640
  duration = self.parse_timeframe(timeframe)
1641
1641
  parsedTimeframe = self.safe_integer(self.timeframes, timeframe)
1642
- request = {
1642
+ request: dict = {
1643
1643
  'symbol': market['id'],
1644
1644
  }
1645
1645
  if parsedTimeframe is not None:
@@ -1724,7 +1724,7 @@ class bitmart(Exchange, ImplicitAPI):
1724
1724
  """
1725
1725
  self.load_markets()
1726
1726
  market = None
1727
- request = {}
1727
+ request: dict = {}
1728
1728
  if symbol is not None:
1729
1729
  market = self.market(symbol)
1730
1730
  request['symbol'] = market['id']
@@ -1824,7 +1824,7 @@ class bitmart(Exchange, ImplicitAPI):
1824
1824
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1825
1825
  """
1826
1826
  self.load_markets()
1827
- request = {
1827
+ request: dict = {
1828
1828
  'orderId': id,
1829
1829
  }
1830
1830
  response = self.privatePostSpotV4QueryOrderTrades(self.extend(request, params))
@@ -1850,7 +1850,7 @@ class bitmart(Exchange, ImplicitAPI):
1850
1850
  quote = self.safe_value(entry, 'quote', {})
1851
1851
  baseCode = self.safe_currency_code(self.safe_string(base, 'currency'))
1852
1852
  quoteCode = self.safe_currency_code(self.safe_string(quote, 'currency'))
1853
- subResult = {}
1853
+ subResult: dict = {}
1854
1854
  subResult[baseCode] = self.parse_balance_helper(base)
1855
1855
  subResult[quoteCode] = self.parse_balance_helper(quote)
1856
1856
  result[symbol] = self.safe_balance(subResult)
@@ -2002,7 +2002,7 @@ class bitmart(Exchange, ImplicitAPI):
2002
2002
  #
2003
2003
  return self.custom_parse_balance(response, marketType)
2004
2004
 
2005
- def parse_trading_fee(self, fee, market: Market = None) -> TradingFeeInterface:
2005
+ def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
2006
2006
  #
2007
2007
  # {
2008
2008
  # "symbol": "ETH_USDT",
@@ -2032,7 +2032,7 @@ class bitmart(Exchange, ImplicitAPI):
2032
2032
  market = self.market(symbol)
2033
2033
  if not market['spot']:
2034
2034
  raise NotSupported(self.id + ' fetchTradingFee() does not support ' + market['type'] + ' orders, only spot orders are accepted')
2035
- request = {
2035
+ request: dict = {
2036
2036
  'symbol': market['id'],
2037
2037
  }
2038
2038
  response = self.privateGetSpotV1TradeFee(self.extend(request, params))
@@ -2051,7 +2051,7 @@ class bitmart(Exchange, ImplicitAPI):
2051
2051
  data = self.safe_value(response, 'data')
2052
2052
  return self.parse_trading_fee(data)
2053
2053
 
2054
- def parse_order(self, order, market: Market = None) -> Order:
2054
+ def parse_order(self, order: dict, market: Market = None) -> Order:
2055
2055
  #
2056
2056
  # createOrder
2057
2057
  #
@@ -2177,7 +2177,7 @@ class bitmart(Exchange, ImplicitAPI):
2177
2177
  }, market)
2178
2178
 
2179
2179
  def parse_order_side(self, side):
2180
- sides = {
2180
+ sides: dict = {
2181
2181
  '1': 'buy',
2182
2182
  '2': 'buy',
2183
2183
  '3': 'sell',
@@ -2186,7 +2186,7 @@ class bitmart(Exchange, ImplicitAPI):
2186
2186
  return self.safe_string(sides, side, side)
2187
2187
 
2188
2188
  def parse_order_status_by_type(self, type, status):
2189
- statusesByType = {
2189
+ statusesByType: dict = {
2190
2190
  'spot': {
2191
2191
  '1': 'rejected', # Order failure
2192
2192
  '2': 'open', # Placing order
@@ -2325,7 +2325,7 @@ class bitmart(Exchange, ImplicitAPI):
2325
2325
  orderRequest = self.create_spot_order_request(marketId, type, side, amount, price, orderParams)
2326
2326
  orderRequest = self.omit(orderRequest, ['symbol']) # not needed because it goes in the outter object
2327
2327
  ordersRequests.append(orderRequest)
2328
- request = {
2328
+ request: dict = {
2329
2329
  'symbol': market['id'],
2330
2330
  'orderParams': ordersRequests,
2331
2331
  }
@@ -2381,7 +2381,7 @@ class bitmart(Exchange, ImplicitAPI):
2381
2381
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2382
2382
  """
2383
2383
  market = self.market(symbol)
2384
- request = {
2384
+ request: dict = {
2385
2385
  'symbol': market['id'],
2386
2386
  'type': type,
2387
2387
  'size': int(self.amount_to_precision(symbol, amount)),
@@ -2466,7 +2466,7 @@ class bitmart(Exchange, ImplicitAPI):
2466
2466
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2467
2467
  """
2468
2468
  market = self.market(symbol)
2469
- request = {
2469
+ request: dict = {
2470
2470
  'symbol': market['id'],
2471
2471
  'side': side,
2472
2472
  'type': type,
@@ -2529,7 +2529,7 @@ class bitmart(Exchange, ImplicitAPI):
2529
2529
  raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
2530
2530
  self.load_markets()
2531
2531
  market = self.market(symbol)
2532
- request = {
2532
+ request: dict = {
2533
2533
  'symbol': market['id'],
2534
2534
  }
2535
2535
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_order_id')
@@ -2575,7 +2575,7 @@ class bitmart(Exchange, ImplicitAPI):
2575
2575
  return response
2576
2576
  data = self.safe_value(response, 'data')
2577
2577
  if data is True:
2578
- return self.parse_order(id, market)
2578
+ return self.safe_order({'id': id}, market)
2579
2579
  succeeded = self.safe_value(data, 'succeed')
2580
2580
  if succeeded is not None:
2581
2581
  id = self.safe_string(succeeded, 0)
@@ -2585,8 +2585,8 @@ class bitmart(Exchange, ImplicitAPI):
2585
2585
  result = self.safe_value(data, 'result')
2586
2586
  if not result:
2587
2587
  raise InvalidOrder(self.id + ' cancelOrder() ' + symbol + ' order id ' + id + ' is filled or canceled')
2588
- order = self.parse_order(id, market)
2589
- return self.extend(order, {'id': id})
2588
+ order = self.safe_order({'id': id, 'symbol': market['symbol'], 'info': {}}, market)
2589
+ return order
2590
2590
 
2591
2591
  def cancel_orders(self, ids: List[str], symbol: Str = None, params={}):
2592
2592
  """
@@ -2606,7 +2606,7 @@ class bitmart(Exchange, ImplicitAPI):
2606
2606
  raise NotSupported(self.id + ' cancelOrders() does not support ' + market['type'] + ' orders, only spot orders are accepted')
2607
2607
  clientOrderIds = self.safe_list(params, 'clientOrderIds')
2608
2608
  params = self.omit(params, ['clientOrderIds'])
2609
- request = {
2609
+ request: dict = {
2610
2610
  'symbol': market['id'],
2611
2611
  }
2612
2612
  if clientOrderIds is not None:
@@ -2653,7 +2653,7 @@ class bitmart(Exchange, ImplicitAPI):
2653
2653
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
2654
2654
  """
2655
2655
  self.load_markets()
2656
- request = {}
2656
+ request: dict = {}
2657
2657
  market = None
2658
2658
  if symbol is not None:
2659
2659
  market = self.market(symbol)
@@ -2694,7 +2694,7 @@ class bitmart(Exchange, ImplicitAPI):
2694
2694
  market = self.market(symbol)
2695
2695
  if not market['spot']:
2696
2696
  raise NotSupported(self.id + ' fetchOrdersByStatus() does not support ' + market['type'] + ' orders, only spot orders are accepted')
2697
- request = {
2697
+ request: dict = {
2698
2698
  'symbol': market['id'],
2699
2699
  'offset': 1, # max offset * limit < 500
2700
2700
  'N': 100, # max limit is 100
@@ -2761,7 +2761,7 @@ class bitmart(Exchange, ImplicitAPI):
2761
2761
  """
2762
2762
  self.load_markets()
2763
2763
  market = None
2764
- request = {}
2764
+ request: dict = {}
2765
2765
  if symbol is not None:
2766
2766
  market = self.market(symbol)
2767
2767
  request['symbol'] = market['id']
@@ -2870,7 +2870,7 @@ class bitmart(Exchange, ImplicitAPI):
2870
2870
  """
2871
2871
  self.load_markets()
2872
2872
  market = None
2873
- request = {}
2873
+ request: dict = {}
2874
2874
  if symbol is not None:
2875
2875
  market = self.market(symbol)
2876
2876
  request['symbol'] = market['id']
@@ -2925,7 +2925,7 @@ class bitmart(Exchange, ImplicitAPI):
2925
2925
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2926
2926
  """
2927
2927
  self.load_markets()
2928
- request = {}
2928
+ request: dict = {}
2929
2929
  type = None
2930
2930
  market = None
2931
2931
  response = None
@@ -3016,7 +3016,7 @@ class bitmart(Exchange, ImplicitAPI):
3016
3016
  """
3017
3017
  self.load_markets()
3018
3018
  currency = self.currency(code)
3019
- request = {
3019
+ request: dict = {
3020
3020
  'currency': currency['id'],
3021
3021
  }
3022
3022
  if code == 'USDT':
@@ -3094,7 +3094,7 @@ class bitmart(Exchange, ImplicitAPI):
3094
3094
  self.check_address(address)
3095
3095
  self.load_markets()
3096
3096
  currency = self.currency(code)
3097
- request = {
3097
+ request: dict = {
3098
3098
  'currency': currency['id'],
3099
3099
  'amount': amount,
3100
3100
  'destination': 'To Digital Address', # To Digital Address, To Binance, To OKEX
@@ -3134,7 +3134,7 @@ class bitmart(Exchange, ImplicitAPI):
3134
3134
  self.load_markets()
3135
3135
  if limit is None:
3136
3136
  limit = 50 # max 50
3137
- request = {
3137
+ request: dict = {
3138
3138
  'operation_type': type, # deposit or withdraw
3139
3139
  'offset': 1,
3140
3140
  'N': limit,
@@ -3191,7 +3191,7 @@ class bitmart(Exchange, ImplicitAPI):
3191
3191
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
3192
3192
  """
3193
3193
  self.load_markets()
3194
- request = {
3194
+ request: dict = {
3195
3195
  'id': id,
3196
3196
  }
3197
3197
  response = self.privateGetAccountV1DepositWithdrawDetail(self.extend(request, params))
@@ -3241,7 +3241,7 @@ class bitmart(Exchange, ImplicitAPI):
3241
3241
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
3242
3242
  """
3243
3243
  self.load_markets()
3244
- request = {
3244
+ request: dict = {
3245
3245
  'id': id,
3246
3246
  }
3247
3247
  response = self.privateGetAccountV1DepositWithdrawDetail(self.extend(request, params))
@@ -3283,7 +3283,7 @@ class bitmart(Exchange, ImplicitAPI):
3283
3283
  return self.fetch_transactions_by_type('withdraw', code, since, limit, params)
3284
3284
 
3285
3285
  def parse_transaction_status(self, status):
3286
- statuses = {
3286
+ statuses: dict = {
3287
3287
  '0': 'pending', # Create
3288
3288
  '1': 'pending', # Submitted, waiting for withdrawal
3289
3289
  '2': 'pending', # Processing
@@ -3293,7 +3293,7 @@ class bitmart(Exchange, ImplicitAPI):
3293
3293
  }
3294
3294
  return self.safe_string(statuses, status, status)
3295
3295
 
3296
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
3296
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
3297
3297
  #
3298
3298
  # withdraw
3299
3299
  #
@@ -3378,7 +3378,7 @@ class bitmart(Exchange, ImplicitAPI):
3378
3378
  self.load_markets()
3379
3379
  market = self.market(symbol)
3380
3380
  currency = self.currency(code)
3381
- request = {
3381
+ request: dict = {
3382
3382
  'symbol': market['id'],
3383
3383
  'currency': currency['id'],
3384
3384
  'amount': self.currency_to_precision(code, amount),
@@ -3414,7 +3414,7 @@ class bitmart(Exchange, ImplicitAPI):
3414
3414
  self.load_markets()
3415
3415
  market = self.market(symbol)
3416
3416
  currency = self.currency(code)
3417
- request = {
3417
+ request: dict = {
3418
3418
  'symbol': market['id'],
3419
3419
  'currency': currency['id'],
3420
3420
  'amount': self.currency_to_precision(code, amount),
@@ -3471,7 +3471,7 @@ class bitmart(Exchange, ImplicitAPI):
3471
3471
  """
3472
3472
  self.load_markets()
3473
3473
  market = self.market(symbol)
3474
- request = {
3474
+ request: dict = {
3475
3475
  'symbol': market['id'],
3476
3476
  }
3477
3477
  response = self.privateGetSpotV1MarginIsolatedPairs(self.extend(request, params))
@@ -3614,7 +3614,7 @@ class bitmart(Exchange, ImplicitAPI):
3614
3614
  self.load_markets()
3615
3615
  currency = self.currency(code)
3616
3616
  amountToPrecision = self.currency_to_precision(code, amount)
3617
- request = {
3617
+ request: dict = {
3618
3618
  'amount': amountToPrecision,
3619
3619
  'currency': currency['id'],
3620
3620
  }
@@ -3669,7 +3669,7 @@ class bitmart(Exchange, ImplicitAPI):
3669
3669
  })
3670
3670
 
3671
3671
  def parse_transfer_status(self, status: Str) -> Str:
3672
- statuses = {
3672
+ statuses: dict = {
3673
3673
  '1000': 'ok',
3674
3674
  'OK': 'ok',
3675
3675
  'FINISHED': 'ok',
@@ -3677,14 +3677,14 @@ class bitmart(Exchange, ImplicitAPI):
3677
3677
  return self.safe_string(statuses, status, status)
3678
3678
 
3679
3679
  def parse_transfer_to_account(self, type):
3680
- types = {
3680
+ types: dict = {
3681
3681
  'contract_to_spot': 'spot',
3682
3682
  'spot_to_contract': 'swap',
3683
3683
  }
3684
3684
  return self.safe_string(types, type, type)
3685
3685
 
3686
3686
  def parse_transfer_from_account(self, type):
3687
- types = {
3687
+ types: dict = {
3688
3688
  'contract_to_spot': 'swap',
3689
3689
  'spot_to_contract': 'spot',
3690
3690
  }
@@ -3744,7 +3744,7 @@ class bitmart(Exchange, ImplicitAPI):
3744
3744
  self.load_markets()
3745
3745
  if limit is None:
3746
3746
  limit = 10
3747
- request = {
3747
+ request: dict = {
3748
3748
  'page': self.safe_integer(params, 'page', 1), # default is 1, max is 1000
3749
3749
  'limit': limit, # default is 10, max is 100
3750
3750
  }
@@ -3800,7 +3800,7 @@ class bitmart(Exchange, ImplicitAPI):
3800
3800
  raise ArgumentsRequired(self.id + ' fetchBorrowInterest() requires a symbol argument')
3801
3801
  self.load_markets()
3802
3802
  market = self.market(symbol)
3803
- request = {
3803
+ request: dict = {
3804
3804
  'symbol': market['id'],
3805
3805
  }
3806
3806
  if limit is not None:
@@ -3834,7 +3834,7 @@ class bitmart(Exchange, ImplicitAPI):
3834
3834
  interest = self.parse_borrow_interests(rows, market)
3835
3835
  return self.filter_by_currency_since_limit(interest, code, since, limit)
3836
3836
 
3837
- def parse_borrow_interest(self, info, market: Market = None):
3837
+ def parse_borrow_interest(self, info: dict, market: Market = None):
3838
3838
  #
3839
3839
  # {
3840
3840
  # "borrow_id": "1657664327844Lk5eJJugXmdHHZoe",
@@ -3874,7 +3874,7 @@ class bitmart(Exchange, ImplicitAPI):
3874
3874
  market = self.market(symbol)
3875
3875
  if not market['contract']:
3876
3876
  raise BadRequest(self.id + ' fetchOpenInterest() supports contract markets only')
3877
- request = {
3877
+ request: dict = {
3878
3878
  'symbol': market['id'],
3879
3879
  }
3880
3880
  response = self.publicGetContractPublicOpenInterest(self.extend(request, params))
@@ -3933,7 +3933,7 @@ class bitmart(Exchange, ImplicitAPI):
3933
3933
  market = self.market(symbol)
3934
3934
  if not market['swap']:
3935
3935
  raise BadSymbol(self.id + ' setLeverage() supports swap contracts only')
3936
- request = {
3936
+ request: dict = {
3937
3937
  'symbol': market['id'],
3938
3938
  'leverage': str(leverage),
3939
3939
  'open_type': marginMode,
@@ -3952,7 +3952,7 @@ class bitmart(Exchange, ImplicitAPI):
3952
3952
  market = self.market(symbol)
3953
3953
  if not market['swap']:
3954
3954
  raise BadSymbol(self.id + ' fetchFundingRate() supports swap contracts only')
3955
- request = {
3955
+ request: dict = {
3956
3956
  'symbol': market['id'],
3957
3957
  }
3958
3958
  response = self.publicGetContractPublicFundingRate(self.extend(request, params))
@@ -4013,7 +4013,7 @@ class bitmart(Exchange, ImplicitAPI):
4013
4013
  """
4014
4014
  self.load_markets()
4015
4015
  market = self.market(symbol)
4016
- request = {
4016
+ request: dict = {
4017
4017
  'symbol': market['id'],
4018
4018
  }
4019
4019
  response = self.privateGetContractPrivatePosition(self.extend(request, params))
@@ -4065,7 +4065,7 @@ class bitmart(Exchange, ImplicitAPI):
4065
4065
  symbolsLength = len(symbols)
4066
4066
  first = self.safe_string(symbols, 0)
4067
4067
  market = self.market(first)
4068
- request = {}
4068
+ request: dict = {}
4069
4069
  if symbolsLength == 1:
4070
4070
  # only supports symbols or sending one symbol
4071
4071
  request['symbol'] = market['id']
@@ -4106,7 +4106,7 @@ class bitmart(Exchange, ImplicitAPI):
4106
4106
  symbols = self.market_symbols(symbols)
4107
4107
  return self.filter_by_array_positions(result, 'symbol', symbols, False)
4108
4108
 
4109
- def parse_position(self, position, market: Market = None):
4109
+ def parse_position(self, position: dict, market: Market = None):
4110
4110
  #
4111
4111
  # {
4112
4112
  # "symbol": "BTCUSDT",
@@ -4187,7 +4187,7 @@ class bitmart(Exchange, ImplicitAPI):
4187
4187
  market = self.market(symbol)
4188
4188
  if not market['swap']:
4189
4189
  raise NotSupported(self.id + ' fetchMyLiquidations() supports swap markets only')
4190
- request = {
4190
+ request: dict = {
4191
4191
  'symbol': market['id'],
4192
4192
  }
4193
4193
  if since is not None: