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/exmo.py CHANGED
@@ -250,7 +250,7 @@ class exmo(Exchange, ImplicitAPI):
250
250
  def modify_margin_helper(self, symbol: str, amount, type, params={}):
251
251
  self.load_markets()
252
252
  market = self.market(symbol)
253
- request = {
253
+ request: dict = {
254
254
  'position_id': market['id'],
255
255
  'quantity': amount,
256
256
  }
@@ -359,7 +359,7 @@ class exmo(Exchange, ImplicitAPI):
359
359
  # }
360
360
  #
361
361
  pairs = self.safe_value(response, 'pairs', [])
362
- result = {}
362
+ result: dict = {}
363
363
  for i in range(0, len(pairs)):
364
364
  pair = pairs[i]
365
365
  marketId = self.safe_string(pair, 'name')
@@ -396,7 +396,7 @@ class exmo(Exchange, ImplicitAPI):
396
396
  # },
397
397
  # }
398
398
  #
399
- result = {}
399
+ result: dict = {}
400
400
  for i in range(0, len(self.symbols)):
401
401
  symbol = self.symbols[i]
402
402
  market = self.market(symbol)
@@ -428,7 +428,7 @@ class exmo(Exchange, ImplicitAPI):
428
428
  raise ExchangeError(self.id + ' parseFixedFloatValue() detected an unsupported non-zero percentage-based fee ' + input)
429
429
  return result
430
430
 
431
- def fetch_transaction_fees(self, codes: List[str] = None, params={}):
431
+ def fetch_transaction_fees(self, codes: Strings = None, params={}):
432
432
  """
433
433
  * @deprecated
434
434
  please use fetchDepositWithdrawFees instead
@@ -473,7 +473,7 @@ class exmo(Exchange, ImplicitAPI):
473
473
  # ],
474
474
  # }
475
475
  #
476
- result = {}
476
+ result: dict = {}
477
477
  cryptoListKeys = list(cryptoList.keys())
478
478
  for i in range(0, len(cryptoListKeys)):
479
479
  code = cryptoListKeys[i]
@@ -622,7 +622,7 @@ class exmo(Exchange, ImplicitAPI):
622
622
  # ],
623
623
  # }
624
624
  #
625
- result = {}
625
+ result: dict = {}
626
626
  for i in range(0, len(currencyList)):
627
627
  currency = currencyList[i]
628
628
  currencyId = self.safe_string(currency, 'name')
@@ -630,7 +630,7 @@ class exmo(Exchange, ImplicitAPI):
630
630
  providers = self.safe_value(cryptoList, currencyId)
631
631
  active = False
632
632
  type = 'crypto'
633
- limits = {
633
+ limits: dict = {
634
634
  'deposit': {
635
635
  'min': None,
636
636
  'max': None,
@@ -714,7 +714,7 @@ class exmo(Exchange, ImplicitAPI):
714
714
  # },
715
715
  # }
716
716
  #
717
- marginPairsDict = {}
717
+ marginPairsDict: dict = {}
718
718
  if self.check_required_credentials(False):
719
719
  marginPairs = self.privatePostMarginPairList(params)
720
720
  #
@@ -828,7 +828,7 @@ class exmo(Exchange, ImplicitAPI):
828
828
  """
829
829
  self.load_markets()
830
830
  market = self.market(symbol)
831
- request = {
831
+ request: dict = {
832
832
  'symbol': market['id'],
833
833
  'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
834
834
  }
@@ -884,7 +884,7 @@ class exmo(Exchange, ImplicitAPI):
884
884
  ]
885
885
 
886
886
  def parse_balance(self, response) -> Balances:
887
- result = {'info': response}
887
+ result: dict = {'info': response}
888
888
  wallets = self.safe_value(response, 'wallets')
889
889
  if wallets is not None:
890
890
  currencyIds = list(wallets.keys())
@@ -967,7 +967,7 @@ class exmo(Exchange, ImplicitAPI):
967
967
  """
968
968
  self.load_markets()
969
969
  market = self.market(symbol)
970
- request = {
970
+ request: dict = {
971
971
  'pair': market['id'],
972
972
  }
973
973
  if limit is not None:
@@ -996,13 +996,13 @@ class exmo(Exchange, ImplicitAPI):
996
996
  else:
997
997
  ids = self.market_ids(symbols)
998
998
  ids = ','.join(ids)
999
- request = {
999
+ request: dict = {
1000
1000
  'pair': ids,
1001
1001
  }
1002
1002
  if limit is not None:
1003
1003
  request['limit'] = limit
1004
1004
  response = self.publicGetOrderBook(self.extend(request, params))
1005
- result = {}
1005
+ result: dict = {}
1006
1006
  marketIds = list(response.keys())
1007
1007
  for i in range(0, len(marketIds)):
1008
1008
  marketId = marketIds[i]
@@ -1076,7 +1076,7 @@ class exmo(Exchange, ImplicitAPI):
1076
1076
  # }
1077
1077
  # }
1078
1078
  #
1079
- result = {}
1079
+ result: dict = {}
1080
1080
  marketIds = list(response.keys())
1081
1081
  for i in range(0, len(marketIds)):
1082
1082
  marketId = marketIds[i]
@@ -1099,7 +1099,7 @@ class exmo(Exchange, ImplicitAPI):
1099
1099
  market = self.market(symbol)
1100
1100
  return self.parse_ticker(response[market['id']], market)
1101
1101
 
1102
- def parse_trade(self, trade, market: Market = None) -> Trade:
1102
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
1103
1103
  #
1104
1104
  # fetchTrades(public)
1105
1105
  #
@@ -1198,7 +1198,7 @@ class exmo(Exchange, ImplicitAPI):
1198
1198
  """
1199
1199
  self.load_markets()
1200
1200
  market = self.market(symbol)
1201
- request = {
1201
+ request: dict = {
1202
1202
  'pair': market['id'],
1203
1203
  }
1204
1204
  response = self.publicGetTrades(self.extend(request, params))
@@ -1253,7 +1253,7 @@ class exmo(Exchange, ImplicitAPI):
1253
1253
  isSpot = marginMode != 'isolated'
1254
1254
  if limit is None:
1255
1255
  limit = 100
1256
- request = {}
1256
+ request: dict = {}
1257
1257
  if isSpot:
1258
1258
  request['pair'] = pair
1259
1259
  else:
@@ -1345,7 +1345,7 @@ class exmo(Exchange, ImplicitAPI):
1345
1345
  raise BadRequest(self.id + ' only supports isolated margin')
1346
1346
  isSpot = (marginMode != 'isolated')
1347
1347
  triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop_price'])
1348
- request = {
1348
+ request: dict = {
1349
1349
  'pair': market['id'],
1350
1350
  # 'leverage': 2,
1351
1351
  'quantity': self.amount_to_precision(market['symbol'], amount),
@@ -1425,7 +1425,7 @@ class exmo(Exchange, ImplicitAPI):
1425
1425
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1426
1426
  """
1427
1427
  self.load_markets()
1428
- request = {}
1428
+ request: dict = {}
1429
1429
  stop = self.safe_value_2(params, 'trigger', 'stop')
1430
1430
  params = self.omit(params, ['trigger', 'stop'])
1431
1431
  marginMode = None
@@ -1466,7 +1466,7 @@ class exmo(Exchange, ImplicitAPI):
1466
1466
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1467
1467
  """
1468
1468
  self.load_markets()
1469
- request = {
1469
+ request: dict = {
1470
1470
  'order_id': str(id),
1471
1471
  }
1472
1472
  response = self.privatePostOrderTrades(self.extend(request, params))
@@ -1515,7 +1515,7 @@ class exmo(Exchange, ImplicitAPI):
1515
1515
  market = None
1516
1516
  if symbol is not None:
1517
1517
  market = self.market(symbol)
1518
- request = {
1518
+ request: dict = {
1519
1519
  'order_id': str(id),
1520
1520
  }
1521
1521
  response = None
@@ -1656,7 +1656,7 @@ class exmo(Exchange, ImplicitAPI):
1656
1656
  def parse_status(self, status):
1657
1657
  if status is None:
1658
1658
  return None
1659
- statuses = {
1659
+ statuses: dict = {
1660
1660
  'cancel_started': 'canceled',
1661
1661
  }
1662
1662
  if status.find('cancel') >= 0:
@@ -1664,7 +1664,7 @@ class exmo(Exchange, ImplicitAPI):
1664
1664
  return self.safe_string(statuses, status, status)
1665
1665
 
1666
1666
  def parse_side(self, orderType):
1667
- side = {
1667
+ side: dict = {
1668
1668
  'limit_buy': 'buy',
1669
1669
  'limit_sell': 'sell',
1670
1670
  'market_buy': 'buy',
@@ -1682,7 +1682,7 @@ class exmo(Exchange, ImplicitAPI):
1682
1682
  }
1683
1683
  return self.safe_string(side, orderType, orderType)
1684
1684
 
1685
- def parse_order(self, order, market: Market = None) -> Order:
1685
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1686
1686
  #
1687
1687
  # fetchOrders, fetchOpenOrders, fetchClosedOrders, fetchCanceledOrders
1688
1688
  #
@@ -1839,7 +1839,7 @@ class exmo(Exchange, ImplicitAPI):
1839
1839
  if symbol is not None:
1840
1840
  marketInner = self.market(symbol)
1841
1841
  symbol = marketInner['symbol']
1842
- request = {
1842
+ request: dict = {
1843
1843
  'limit': limit,
1844
1844
  }
1845
1845
  request['offset'] = limit if (since is not None) else 0
@@ -1931,7 +1931,7 @@ class exmo(Exchange, ImplicitAPI):
1931
1931
  raise BadRequest(self.id + ' editOrder() can only be used for isolated margin orders')
1932
1932
  triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop_price'])
1933
1933
  params = self.omit(params, ['triggerPrice', 'stopPrice'])
1934
- request = {
1934
+ request: dict = {
1935
1935
  'order_id': id, # id of the open order
1936
1936
  }
1937
1937
  if amount is not None:
@@ -1999,7 +1999,7 @@ class exmo(Exchange, ImplicitAPI):
1999
1999
  tag, params = self.handle_withdraw_tag_and_params(tag, params)
2000
2000
  self.load_markets()
2001
2001
  currency = self.currency(code)
2002
- request = {
2002
+ request: dict = {
2003
2003
  'amount': amount,
2004
2004
  'currency': currency['id'],
2005
2005
  'address': address,
@@ -2016,7 +2016,7 @@ class exmo(Exchange, ImplicitAPI):
2016
2016
  return self.parse_transaction(response, currency)
2017
2017
 
2018
2018
  def parse_transaction_status(self, status):
2019
- statuses = {
2019
+ statuses: dict = {
2020
2020
  'transferred': 'ok',
2021
2021
  'paid': 'ok',
2022
2022
  'pending': 'pending',
@@ -2025,7 +2025,7 @@ class exmo(Exchange, ImplicitAPI):
2025
2025
  }
2026
2026
  return self.safe_string(statuses, status, status)
2027
2027
 
2028
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
2028
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
2029
2029
  #
2030
2030
  # fetchDepositsWithdrawals
2031
2031
  #
@@ -2160,7 +2160,7 @@ class exmo(Exchange, ImplicitAPI):
2160
2160
  :returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
2161
2161
  """
2162
2162
  self.load_markets()
2163
- request = {}
2163
+ request: dict = {}
2164
2164
  if since is not None:
2165
2165
  request['date'] = self.parse_to_int(since / 1000)
2166
2166
  currency = None
@@ -2211,7 +2211,7 @@ class exmo(Exchange, ImplicitAPI):
2211
2211
  """
2212
2212
  self.load_markets()
2213
2213
  currency = None
2214
- request = {
2214
+ request: dict = {
2215
2215
  'type': 'withdraw',
2216
2216
  }
2217
2217
  if limit is not None:
@@ -2260,7 +2260,7 @@ class exmo(Exchange, ImplicitAPI):
2260
2260
  """
2261
2261
  self.load_markets()
2262
2262
  currency = None
2263
- request = {
2263
+ request: dict = {
2264
2264
  'order_id': id,
2265
2265
  'type': 'withdraw',
2266
2266
  }
@@ -2309,7 +2309,7 @@ class exmo(Exchange, ImplicitAPI):
2309
2309
  """
2310
2310
  self.load_markets()
2311
2311
  currency = None
2312
- request = {
2312
+ request: dict = {
2313
2313
  'order_id': id,
2314
2314
  'type': 'deposit',
2315
2315
  }
@@ -2359,7 +2359,7 @@ class exmo(Exchange, ImplicitAPI):
2359
2359
  """
2360
2360
  self.load_markets()
2361
2361
  currency = None
2362
- request = {
2362
+ request: dict = {
2363
2363
  'type': 'deposit',
2364
2364
  }
2365
2365
  if limit is not None: