ccxt 4.4.58__py2.py3-none-any.whl → 4.4.60__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 (311) hide show
  1. ccxt/__init__.py +1 -3
  2. ccxt/ace.py +2 -2
  3. ccxt/alpaca.py +12 -7
  4. ccxt/ascendex.py +3 -3
  5. ccxt/async_support/__init__.py +1 -3
  6. ccxt/async_support/ace.py +2 -2
  7. ccxt/async_support/alpaca.py +12 -7
  8. ccxt/async_support/ascendex.py +3 -3
  9. ccxt/async_support/base/exchange.py +4 -1
  10. ccxt/async_support/bequant.py +2 -1
  11. ccxt/async_support/bigone.py +5 -5
  12. ccxt/async_support/binance.py +84 -4
  13. ccxt/async_support/binancecoinm.py +2 -1
  14. ccxt/async_support/binanceus.py +2 -1
  15. ccxt/async_support/binanceusdm.py +2 -1
  16. ccxt/async_support/bingx.py +3 -3
  17. ccxt/async_support/bit2c.py +9 -9
  18. ccxt/async_support/bitbank.py +2 -2
  19. ccxt/async_support/bitbns.py +2 -2
  20. ccxt/async_support/bitcoincom.py +2 -1
  21. ccxt/async_support/bitfinex.py +2 -2
  22. ccxt/async_support/bitfinex1.py +2 -2
  23. ccxt/async_support/bitflyer.py +2 -2
  24. ccxt/async_support/bitget.py +6 -5
  25. ccxt/async_support/bithumb.py +2 -2
  26. ccxt/async_support/bitmart.py +137 -86
  27. ccxt/async_support/bitmex.py +2 -2
  28. ccxt/async_support/bitopro.py +2 -2
  29. ccxt/async_support/bitpanda.py +2 -1
  30. ccxt/async_support/bitrue.py +3 -3
  31. ccxt/async_support/bitso.py +2 -2
  32. ccxt/async_support/bitstamp.py +2 -2
  33. ccxt/async_support/bitteam.py +2 -2
  34. ccxt/async_support/bitvavo.py +3 -3
  35. ccxt/async_support/bl3p.py +2 -2
  36. ccxt/async_support/blockchaincom.py +2 -2
  37. ccxt/async_support/blofin.py +2 -2
  38. ccxt/async_support/btcalpha.py +2 -2
  39. ccxt/async_support/btcbox.py +2 -2
  40. ccxt/async_support/btcmarkets.py +3 -3
  41. ccxt/async_support/btcturk.py +2 -2
  42. ccxt/async_support/bybit.py +9 -6
  43. ccxt/async_support/cex.py +3 -3
  44. ccxt/async_support/coinbase.py +4 -4
  45. ccxt/async_support/coinbaseadvanced.py +2 -1
  46. ccxt/async_support/coinbaseexchange.py +3 -3
  47. ccxt/async_support/coinbaseinternational.py +3 -4
  48. ccxt/async_support/coincatch.py +3 -3
  49. ccxt/async_support/coincheck.py +2 -2
  50. ccxt/async_support/coinex.py +3 -3
  51. ccxt/async_support/coinlist.py +3 -3
  52. ccxt/async_support/coinmate.py +2 -2
  53. ccxt/async_support/coinmetro.py +2 -2
  54. ccxt/async_support/coinone.py +2 -2
  55. ccxt/async_support/coinsph.py +3 -3
  56. ccxt/async_support/coinspot.py +2 -2
  57. ccxt/async_support/cryptocom.py +2 -2
  58. ccxt/async_support/currencycom.py +3 -3
  59. ccxt/async_support/defx.py +3 -3
  60. ccxt/async_support/delta.py +3 -3
  61. ccxt/async_support/deribit.py +3 -3
  62. ccxt/async_support/digifinex.py +3 -3
  63. ccxt/async_support/ellipx.py +1 -1
  64. ccxt/async_support/exmo.py +2 -2
  65. ccxt/async_support/fmfwio.py +2 -1
  66. ccxt/async_support/gate.py +3 -3
  67. ccxt/async_support/gateio.py +2 -1
  68. ccxt/async_support/gemini.py +2 -2
  69. ccxt/async_support/hashkey.py +2 -2
  70. ccxt/async_support/hitbtc.py +3 -3
  71. ccxt/async_support/hollaex.py +3 -3
  72. ccxt/async_support/htx.py +3 -3
  73. ccxt/async_support/huobi.py +2 -1
  74. ccxt/async_support/huobijp.py +3 -3
  75. ccxt/async_support/hyperliquid.py +83 -3
  76. ccxt/async_support/idex.py +3 -3
  77. ccxt/async_support/independentreserve.py +2 -2
  78. ccxt/async_support/indodax.py +3 -3
  79. ccxt/async_support/kraken.py +3 -3
  80. ccxt/async_support/krakenfutures.py +2 -2
  81. ccxt/async_support/kucoin.py +3 -3
  82. ccxt/async_support/kucoinfutures.py +3 -3
  83. ccxt/async_support/kuna.py +3 -3
  84. ccxt/async_support/latoken.py +3 -3
  85. ccxt/async_support/lbank.py +3 -3
  86. ccxt/async_support/luno.py +2 -2
  87. ccxt/async_support/mercado.py +2 -2
  88. ccxt/async_support/mexc.py +3 -3
  89. ccxt/async_support/myokx.py +2 -1
  90. ccxt/async_support/ndax.py +2 -2
  91. ccxt/async_support/novadax.py +3 -3
  92. ccxt/async_support/oceanex.py +3 -3
  93. ccxt/async_support/okcoin.py +3 -3
  94. ccxt/async_support/okx.py +3 -4
  95. ccxt/async_support/onetrading.py +3 -3
  96. ccxt/async_support/oxfun.py +3 -3
  97. ccxt/async_support/p2b.py +2 -2
  98. ccxt/async_support/paradex.py +3 -3
  99. ccxt/async_support/paymium.py +2 -2
  100. ccxt/async_support/phemex.py +2 -2
  101. ccxt/async_support/poloniex.py +3 -3
  102. ccxt/async_support/poloniexfutures.py +3 -3
  103. ccxt/async_support/probit.py +3 -3
  104. ccxt/async_support/timex.py +3 -3
  105. ccxt/async_support/tokocrypto.py +3 -3
  106. ccxt/async_support/tradeogre.py +2 -2
  107. ccxt/async_support/upbit.py +2 -2
  108. ccxt/async_support/vertex.py +4 -4
  109. ccxt/async_support/wavesexchange.py +2 -3
  110. ccxt/async_support/whitebit.py +3 -3
  111. ccxt/async_support/woo.py +3 -4
  112. ccxt/async_support/woofipro.py +3 -4
  113. ccxt/async_support/xt.py +15 -3
  114. ccxt/async_support/yobit.py +2 -2
  115. ccxt/async_support/zaif.py +2 -2
  116. ccxt/async_support/zonda.py +2 -2
  117. ccxt/base/errors.py +6 -0
  118. ccxt/base/exchange.py +8 -3
  119. ccxt/bequant.py +2 -1
  120. ccxt/bigone.py +5 -5
  121. ccxt/binance.py +84 -4
  122. ccxt/binancecoinm.py +2 -1
  123. ccxt/binanceus.py +2 -1
  124. ccxt/binanceusdm.py +2 -1
  125. ccxt/bingx.py +3 -3
  126. ccxt/bit2c.py +9 -9
  127. ccxt/bitbank.py +2 -2
  128. ccxt/bitbns.py +2 -2
  129. ccxt/bitcoincom.py +2 -1
  130. ccxt/bitfinex.py +2 -2
  131. ccxt/bitfinex1.py +2 -2
  132. ccxt/bitflyer.py +2 -2
  133. ccxt/bitget.py +6 -5
  134. ccxt/bithumb.py +2 -2
  135. ccxt/bitmart.py +137 -86
  136. ccxt/bitmex.py +2 -2
  137. ccxt/bitopro.py +2 -2
  138. ccxt/bitpanda.py +2 -1
  139. ccxt/bitrue.py +3 -3
  140. ccxt/bitso.py +2 -2
  141. ccxt/bitstamp.py +2 -2
  142. ccxt/bitteam.py +2 -2
  143. ccxt/bitvavo.py +3 -3
  144. ccxt/bl3p.py +2 -2
  145. ccxt/blockchaincom.py +2 -2
  146. ccxt/blofin.py +2 -2
  147. ccxt/btcalpha.py +2 -2
  148. ccxt/btcbox.py +2 -2
  149. ccxt/btcmarkets.py +3 -3
  150. ccxt/btcturk.py +2 -2
  151. ccxt/bybit.py +9 -6
  152. ccxt/cex.py +3 -3
  153. ccxt/coinbase.py +4 -4
  154. ccxt/coinbaseadvanced.py +2 -1
  155. ccxt/coinbaseexchange.py +3 -3
  156. ccxt/coinbaseinternational.py +3 -4
  157. ccxt/coincatch.py +3 -3
  158. ccxt/coincheck.py +2 -2
  159. ccxt/coinex.py +3 -3
  160. ccxt/coinlist.py +3 -3
  161. ccxt/coinmate.py +2 -2
  162. ccxt/coinmetro.py +2 -2
  163. ccxt/coinone.py +2 -2
  164. ccxt/coinsph.py +3 -3
  165. ccxt/coinspot.py +2 -2
  166. ccxt/cryptocom.py +2 -2
  167. ccxt/currencycom.py +3 -3
  168. ccxt/defx.py +3 -3
  169. ccxt/delta.py +3 -3
  170. ccxt/deribit.py +3 -3
  171. ccxt/digifinex.py +3 -3
  172. ccxt/ellipx.py +1 -1
  173. ccxt/exmo.py +2 -2
  174. ccxt/fmfwio.py +2 -1
  175. ccxt/gate.py +3 -3
  176. ccxt/gateio.py +2 -1
  177. ccxt/gemini.py +2 -2
  178. ccxt/hashkey.py +2 -2
  179. ccxt/hitbtc.py +3 -3
  180. ccxt/hollaex.py +3 -3
  181. ccxt/htx.py +3 -3
  182. ccxt/huobi.py +2 -1
  183. ccxt/huobijp.py +3 -3
  184. ccxt/hyperliquid.py +83 -3
  185. ccxt/idex.py +3 -3
  186. ccxt/independentreserve.py +2 -2
  187. ccxt/indodax.py +3 -3
  188. ccxt/kraken.py +3 -3
  189. ccxt/krakenfutures.py +2 -2
  190. ccxt/kucoin.py +3 -3
  191. ccxt/kucoinfutures.py +3 -3
  192. ccxt/kuna.py +3 -3
  193. ccxt/latoken.py +3 -3
  194. ccxt/lbank.py +3 -3
  195. ccxt/luno.py +2 -2
  196. ccxt/mercado.py +2 -2
  197. ccxt/mexc.py +3 -3
  198. ccxt/myokx.py +2 -1
  199. ccxt/ndax.py +2 -2
  200. ccxt/novadax.py +3 -3
  201. ccxt/oceanex.py +3 -3
  202. ccxt/okcoin.py +3 -3
  203. ccxt/okx.py +3 -4
  204. ccxt/onetrading.py +3 -3
  205. ccxt/oxfun.py +3 -3
  206. ccxt/p2b.py +2 -2
  207. ccxt/paradex.py +3 -3
  208. ccxt/paymium.py +2 -2
  209. ccxt/phemex.py +2 -2
  210. ccxt/poloniex.py +3 -3
  211. ccxt/poloniexfutures.py +3 -3
  212. ccxt/pro/__init__.py +1 -3
  213. ccxt/pro/alpaca.py +2 -2
  214. ccxt/pro/ascendex.py +2 -2
  215. ccxt/pro/bequant.py +2 -1
  216. ccxt/pro/binance.py +2 -3
  217. ccxt/pro/binancecoinm.py +2 -1
  218. ccxt/pro/binanceus.py +3 -2
  219. ccxt/pro/binanceusdm.py +2 -1
  220. ccxt/pro/bingx.py +2 -2
  221. ccxt/pro/bitcoincom.py +2 -1
  222. ccxt/pro/bitfinex.py +2 -2
  223. ccxt/pro/bitfinex1.py +2 -2
  224. ccxt/pro/bitget.py +2 -3
  225. ccxt/pro/bithumb.py +2 -2
  226. ccxt/pro/bitmart.py +2 -2
  227. ccxt/pro/bitmex.py +2 -2
  228. ccxt/pro/bitopro.py +2 -2
  229. ccxt/pro/bitpanda.py +2 -1
  230. ccxt/pro/bitrue.py +2 -2
  231. ccxt/pro/bitstamp.py +2 -2
  232. ccxt/pro/bitvavo.py +2 -2
  233. ccxt/pro/blockchaincom.py +2 -2
  234. ccxt/pro/blofin.py +1 -1
  235. ccxt/pro/bybit.py +2 -3
  236. ccxt/pro/cex.py +2 -2
  237. ccxt/pro/coinbase.py +2 -2
  238. ccxt/pro/coinbaseadvanced.py +2 -1
  239. ccxt/pro/coinbaseexchange.py +2 -2
  240. ccxt/pro/coinbaseinternational.py +2 -2
  241. ccxt/pro/coincatch.py +2 -3
  242. ccxt/pro/coincheck.py +2 -2
  243. ccxt/pro/coinex.py +2 -2
  244. ccxt/pro/coinone.py +2 -2
  245. ccxt/pro/cryptocom.py +2 -3
  246. ccxt/pro/currencycom.py +2 -2
  247. ccxt/pro/defx.py +2 -3
  248. ccxt/pro/deribit.py +2 -2
  249. ccxt/pro/exmo.py +2 -2
  250. ccxt/pro/gate.py +2 -3
  251. ccxt/pro/gateio.py +2 -1
  252. ccxt/pro/gemini.py +2 -2
  253. ccxt/pro/hashkey.py +2 -2
  254. ccxt/pro/hitbtc.py +2 -2
  255. ccxt/pro/hollaex.py +2 -2
  256. ccxt/pro/htx.py +2 -2
  257. ccxt/pro/huobi.py +2 -1
  258. ccxt/pro/huobijp.py +2 -2
  259. ccxt/pro/hyperliquid.py +2 -3
  260. ccxt/pro/idex.py +2 -2
  261. ccxt/pro/independentreserve.py +2 -2
  262. ccxt/pro/kraken.py +2 -2
  263. ccxt/pro/krakenfutures.py +2 -2
  264. ccxt/pro/kucoin.py +2 -3
  265. ccxt/pro/kucoinfutures.py +2 -3
  266. ccxt/pro/lbank.py +2 -2
  267. ccxt/pro/luno.py +2 -2
  268. ccxt/pro/mexc.py +2 -2
  269. ccxt/pro/myokx.py +2 -1
  270. ccxt/pro/ndax.py +2 -2
  271. ccxt/pro/okcoin.py +2 -2
  272. ccxt/pro/okx.py +2 -3
  273. ccxt/pro/onetrading.py +2 -2
  274. ccxt/pro/oxfun.py +2 -2
  275. ccxt/pro/p2b.py +2 -2
  276. ccxt/pro/paradex.py +2 -2
  277. ccxt/pro/phemex.py +2 -2
  278. ccxt/pro/poloniex.py +2 -2
  279. ccxt/pro/poloniexfutures.py +2 -2
  280. ccxt/pro/probit.py +2 -2
  281. ccxt/pro/upbit.py +2 -2
  282. ccxt/pro/vertex.py +2 -2
  283. ccxt/pro/wazirx.py +2 -2
  284. ccxt/pro/whitebit.py +2 -2
  285. ccxt/pro/woo.py +2 -2
  286. ccxt/pro/woofipro.py +2 -2
  287. ccxt/pro/xt.py +110 -4
  288. ccxt/probit.py +3 -3
  289. ccxt/test/tests_async.py +11 -0
  290. ccxt/test/tests_sync.py +11 -0
  291. ccxt/timex.py +3 -3
  292. ccxt/tokocrypto.py +3 -3
  293. ccxt/tradeogre.py +2 -2
  294. ccxt/upbit.py +2 -2
  295. ccxt/vertex.py +4 -4
  296. ccxt/wavesexchange.py +2 -3
  297. ccxt/whitebit.py +3 -3
  298. ccxt/woo.py +3 -4
  299. ccxt/woofipro.py +3 -4
  300. ccxt/xt.py +15 -3
  301. ccxt/yobit.py +2 -2
  302. ccxt/zaif.py +2 -2
  303. ccxt/zonda.py +2 -2
  304. {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/METADATA +30 -33
  305. {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/RECORD +308 -311
  306. ccxt/abstract/wazirx.py +0 -30
  307. ccxt/async_support/wazirx.py +0 -1336
  308. ccxt/wazirx.py +0 -1336
  309. {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/LICENSE.txt +0 -0
  310. {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/WHEEL +0 -0
  311. {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/top_level.txt +0 -0
ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.58'
25
+ __version__ = '4.4.60'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -186,7 +186,6 @@ from ccxt.tradeogre import tradeogre # noqa: F4
186
186
  from ccxt.upbit import upbit # noqa: F401
187
187
  from ccxt.vertex import vertex # noqa: F401
188
188
  from ccxt.wavesexchange import wavesexchange # noqa: F401
189
- from ccxt.wazirx import wazirx # noqa: F401
190
189
  from ccxt.whitebit import whitebit # noqa: F401
191
190
  from ccxt.woo import woo # noqa: F401
192
191
  from ccxt.woofipro import woofipro # noqa: F401
@@ -299,7 +298,6 @@ exchanges = [
299
298
  'upbit',
300
299
  'vertex',
301
300
  'wavesexchange',
302
- 'wazirx',
303
301
  'whitebit',
304
302
  'woo',
305
303
  'woofipro',
ccxt/ace.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.ace import ImplicitAPI
8
- from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
8
+ from ccxt.base.types import Any, Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
9
  from typing import List
10
10
  from ccxt.base.errors import AuthenticationError
11
11
  from ccxt.base.errors import ArgumentsRequired
@@ -18,7 +18,7 @@ from ccxt.base.precise import Precise
18
18
 
19
19
  class ace(Exchange, ImplicitAPI):
20
20
 
21
- def describe(self):
21
+ def describe(self) -> Any:
22
22
  return self.deep_extend(super(ace, self).describe(), {
23
23
  'id': 'ace',
24
24
  'name': 'ACE',
ccxt/alpaca.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.alpaca import ImplicitAPI
8
- from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
8
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import PermissionDenied
@@ -22,7 +22,7 @@ from ccxt.base.precise import Precise
22
22
 
23
23
  class alpaca(Exchange, ImplicitAPI):
24
24
 
25
- def describe(self):
25
+ def describe(self) -> Any:
26
26
  return self.deep_extend(super(alpaca, self).describe(), {
27
27
  'id': 'alpaca',
28
28
  'name': 'Alpaca',
@@ -378,7 +378,7 @@ class alpaca(Exchange, ImplicitAPI):
378
378
  },
379
379
  })
380
380
 
381
- def fetch_time(self, params={}):
381
+ def fetch_time(self, params={}) -> Int:
382
382
  """
383
383
  fetches the current integer timestamp in milliseconds from the exchange server
384
384
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -991,7 +991,7 @@ class alpaca(Exchange, ImplicitAPI):
991
991
  }
992
992
  triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stop_price'])
993
993
  if triggerPrice is not None:
994
- newType = None
994
+ newType: str
995
995
  if type.find('limit') >= 0:
996
996
  newType = 'stop_limit'
997
997
  else:
@@ -1138,9 +1138,9 @@ class alpaca(Exchange, ImplicitAPI):
1138
1138
  until = self.safe_integer(params, 'until')
1139
1139
  if until is not None:
1140
1140
  params = self.omit(params, 'until')
1141
- request['endTime'] = until
1141
+ request['endTime'] = self.iso8601(until)
1142
1142
  if since is not None:
1143
- request['after'] = since
1143
+ request['after'] = self.iso8601(since)
1144
1144
  if limit is not None:
1145
1145
  request['limit'] = limit
1146
1146
  response = self.traderPrivateGetV2Orders(self.extend(request, params))
@@ -1374,6 +1374,7 @@ class alpaca(Exchange, ImplicitAPI):
1374
1374
  :param int [limit]: the maximum number of trade structures to retrieve
1375
1375
  :param dict [params]: extra parameters specific to the exchange API endpoint
1376
1376
  :param int [params.until]: the latest time in ms to fetch trades for
1377
+ :param str [params.page_token]: page_token - used for paging
1377
1378
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1378
1379
  """
1379
1380
  self.load_markets()
@@ -1383,8 +1384,12 @@ class alpaca(Exchange, ImplicitAPI):
1383
1384
  }
1384
1385
  if symbol is not None:
1385
1386
  market = self.market(symbol)
1387
+ until = self.safe_integer(params, 'until')
1388
+ if until is not None:
1389
+ params = self.omit(params, 'until')
1390
+ request['until'] = self.iso8601(until)
1386
1391
  if since is not None:
1387
- request['after'] = since
1392
+ request['after'] = self.iso8601(since)
1388
1393
  if limit is not None:
1389
1394
  request['page_size'] = limit
1390
1395
  request, params = self.handle_until_option('until', request, params)
ccxt/ascendex.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.ascendex import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currencies, Currency, DepositAddress, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Account, Any, Balances, Currencies, Currency, DepositAddress, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -24,7 +24,7 @@ from ccxt.base.precise import Precise
24
24
 
25
25
  class ascendex(Exchange, ImplicitAPI):
26
26
 
27
- def describe(self):
27
+ def describe(self) -> Any:
28
28
  return self.deep_extend(super(ascendex, self).describe(), {
29
29
  'id': 'ascendex',
30
30
  'name': 'AscendEX',
@@ -783,7 +783,7 @@ class ascendex(Exchange, ImplicitAPI):
783
783
  })
784
784
  return result
785
785
 
786
- def fetch_time(self, params={}):
786
+ def fetch_time(self, params={}) -> Int:
787
787
  """
788
788
  fetches the current integer timestamp in milliseconds from the ascendex server
789
789
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.58'
7
+ __version__ = '4.4.60'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -166,7 +166,6 @@ from ccxt.async_support.tradeogre import tradeogre
166
166
  from ccxt.async_support.upbit import upbit # noqa: F401
167
167
  from ccxt.async_support.vertex import vertex # noqa: F401
168
168
  from ccxt.async_support.wavesexchange import wavesexchange # noqa: F401
169
- from ccxt.async_support.wazirx import wazirx # noqa: F401
170
169
  from ccxt.async_support.whitebit import whitebit # noqa: F401
171
170
  from ccxt.async_support.woo import woo # noqa: F401
172
171
  from ccxt.async_support.woofipro import woofipro # noqa: F401
@@ -279,7 +278,6 @@ exchanges = [
279
278
  'upbit',
280
279
  'vertex',
281
280
  'wavesexchange',
282
- 'wazirx',
283
281
  'whitebit',
284
282
  'woo',
285
283
  'woofipro',
ccxt/async_support/ace.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.ace import ImplicitAPI
8
- from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
8
+ from ccxt.base.types import Any, Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
9
  from typing import List
10
10
  from ccxt.base.errors import AuthenticationError
11
11
  from ccxt.base.errors import ArgumentsRequired
@@ -18,7 +18,7 @@ from ccxt.base.precise import Precise
18
18
 
19
19
  class ace(Exchange, ImplicitAPI):
20
20
 
21
- def describe(self):
21
+ def describe(self) -> Any:
22
22
  return self.deep_extend(super(ace, self).describe(), {
23
23
  'id': 'ace',
24
24
  'name': 'ACE',
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.alpaca import ImplicitAPI
8
- from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
8
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import PermissionDenied
@@ -22,7 +22,7 @@ from ccxt.base.precise import Precise
22
22
 
23
23
  class alpaca(Exchange, ImplicitAPI):
24
24
 
25
- def describe(self):
25
+ def describe(self) -> Any:
26
26
  return self.deep_extend(super(alpaca, self).describe(), {
27
27
  'id': 'alpaca',
28
28
  'name': 'Alpaca',
@@ -378,7 +378,7 @@ class alpaca(Exchange, ImplicitAPI):
378
378
  },
379
379
  })
380
380
 
381
- async def fetch_time(self, params={}):
381
+ async def fetch_time(self, params={}) -> Int:
382
382
  """
383
383
  fetches the current integer timestamp in milliseconds from the exchange server
384
384
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -991,7 +991,7 @@ class alpaca(Exchange, ImplicitAPI):
991
991
  }
992
992
  triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stop_price'])
993
993
  if triggerPrice is not None:
994
- newType = None
994
+ newType: str
995
995
  if type.find('limit') >= 0:
996
996
  newType = 'stop_limit'
997
997
  else:
@@ -1138,9 +1138,9 @@ class alpaca(Exchange, ImplicitAPI):
1138
1138
  until = self.safe_integer(params, 'until')
1139
1139
  if until is not None:
1140
1140
  params = self.omit(params, 'until')
1141
- request['endTime'] = until
1141
+ request['endTime'] = self.iso8601(until)
1142
1142
  if since is not None:
1143
- request['after'] = since
1143
+ request['after'] = self.iso8601(since)
1144
1144
  if limit is not None:
1145
1145
  request['limit'] = limit
1146
1146
  response = await self.traderPrivateGetV2Orders(self.extend(request, params))
@@ -1374,6 +1374,7 @@ class alpaca(Exchange, ImplicitAPI):
1374
1374
  :param int [limit]: the maximum number of trade structures to retrieve
1375
1375
  :param dict [params]: extra parameters specific to the exchange API endpoint
1376
1376
  :param int [params.until]: the latest time in ms to fetch trades for
1377
+ :param str [params.page_token]: page_token - used for paging
1377
1378
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1378
1379
  """
1379
1380
  await self.load_markets()
@@ -1383,8 +1384,12 @@ class alpaca(Exchange, ImplicitAPI):
1383
1384
  }
1384
1385
  if symbol is not None:
1385
1386
  market = self.market(symbol)
1387
+ until = self.safe_integer(params, 'until')
1388
+ if until is not None:
1389
+ params = self.omit(params, 'until')
1390
+ request['until'] = self.iso8601(until)
1386
1391
  if since is not None:
1387
- request['after'] = since
1392
+ request['after'] = self.iso8601(since)
1388
1393
  if limit is not None:
1389
1394
  request['page_size'] = limit
1390
1395
  request, params = self.handle_until_option('until', request, params)
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.ascendex import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
- from ccxt.base.types import Account, Balances, Currencies, Currency, DepositAddress, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
10
+ from ccxt.base.types import Account, Any, Balances, Currencies, Currency, DepositAddress, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -25,7 +25,7 @@ from ccxt.base.precise import Precise
25
25
 
26
26
  class ascendex(Exchange, ImplicitAPI):
27
27
 
28
- def describe(self):
28
+ def describe(self) -> Any:
29
29
  return self.deep_extend(super(ascendex, self).describe(), {
30
30
  'id': 'ascendex',
31
31
  'name': 'AscendEX',
@@ -784,7 +784,7 @@ class ascendex(Exchange, ImplicitAPI):
784
784
  })
785
785
  return result
786
786
 
787
- async def fetch_time(self, params={}):
787
+ async def fetch_time(self, params={}) -> Int:
788
788
  """
789
789
  fetches the current integer timestamp in milliseconds from the ascendex server
790
790
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.58'
5
+ __version__ = '4.4.60'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1440,6 +1440,9 @@ class Exchange(BaseExchange):
1440
1440
  async def create_orders(self, orders: List[OrderRequest], params={}):
1441
1441
  raise NotSupported(self.id + ' createOrders() is not supported yet')
1442
1442
 
1443
+ async def edit_orders(self, orders: List[OrderRequest], params={}):
1444
+ raise NotSupported(self.id + ' editOrders() is not supported yet')
1445
+
1443
1446
  async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1444
1447
  raise NotSupported(self.id + ' createOrderWs() is not supported yet')
1445
1448
 
@@ -5,11 +5,12 @@
5
5
 
6
6
  from ccxt.async_support.hitbtc import hitbtc
7
7
  from ccxt.abstract.bequant import ImplicitAPI
8
+ from ccxt.base.types import Any
8
9
 
9
10
 
10
11
  class bequant(hitbtc, ImplicitAPI):
11
12
 
12
- def describe(self):
13
+ def describe(self) -> Any:
13
14
  return self.deep_extend(super(bequant, self).describe(), {
14
15
  'id': 'bequant',
15
16
  'name': 'Bequant',
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bigone import ImplicitAPI
8
8
  import asyncio
9
- from ccxt.base.types import Balances, Bool, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Any, Balances, Bool, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -24,7 +24,7 @@ from ccxt.base.precise import Precise
24
24
 
25
25
  class bigone(Exchange, ImplicitAPI):
26
26
 
27
- def describe(self):
27
+ def describe(self) -> Any:
28
28
  return self.deep_extend(super(bigone, self).describe(), {
29
29
  'id': 'bigone',
30
30
  'name': 'BigONE',
@@ -965,7 +965,7 @@ class bigone(Exchange, ImplicitAPI):
965
965
  tickers = self.parse_tickers(data, symbols)
966
966
  return self.filter_by_array_tickers(tickers, 'symbol', symbols)
967
967
 
968
- async def fetch_time(self, params={}):
968
+ async def fetch_time(self, params={}) -> Int:
969
969
  """
970
970
  fetches the current integer timestamp in milliseconds from the exchange server
971
971
 
@@ -1163,8 +1163,8 @@ class bigone(Exchange, ImplicitAPI):
1163
1163
  'cost': None,
1164
1164
  'info': trade,
1165
1165
  }
1166
- makerCurrencyCode = None
1167
- takerCurrencyCode = None
1166
+ makerCurrencyCode: str
1167
+ takerCurrencyCode: str
1168
1168
  if takerOrMaker is not None:
1169
1169
  if side == 'buy':
1170
1170
  if takerOrMaker == 'maker':
@@ -8,7 +8,7 @@ from ccxt.abstract.binance import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
10
  import json
11
- from ccxt.base.types import Balances, BorrowInterest, Conversion, CrossBorrowRate, Currencies, Currency, DepositAddress, Greeks, Int, IsolatedBorrowRate, IsolatedBorrowRates, LedgerEntry, Leverage, Leverages, LeverageTier, LeverageTiers, LongShortRatio, MarginMode, MarginModes, MarginModification, Market, Num, Option, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, MarketInterface, TransferEntry
11
+ from ccxt.base.types import Any, Balances, BorrowInterest, Conversion, CrossBorrowRate, Currencies, Currency, DepositAddress, Greeks, Int, IsolatedBorrowRate, IsolatedBorrowRates, LedgerEntry, Leverage, Leverages, LeverageTier, LeverageTiers, LongShortRatio, MarginMode, MarginModes, MarginModification, Market, Num, Option, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, MarketInterface, TransferEntry
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
14
  from ccxt.base.errors import AuthenticationError
@@ -40,7 +40,7 @@ from ccxt.base.precise import Precise
40
40
 
41
41
  class binance(Exchange, ImplicitAPI):
42
42
 
43
- def describe(self):
43
+ def describe(self) -> Any:
44
44
  return self.deep_extend(super(binance, self).describe(), {
45
45
  'id': 'binance',
46
46
  'name': 'Binance',
@@ -86,6 +86,7 @@ class binance(Exchange, ImplicitAPI):
86
86
  'createTrailingPercentOrder': True,
87
87
  'createTriggerOrder': True,
88
88
  'editOrder': True,
89
+ 'editOrders': True,
89
90
  'fetchAccounts': None,
90
91
  'fetchBalance': True,
91
92
  'fetchBidsAsks': True,
@@ -2939,7 +2940,7 @@ class binance(Exchange, ImplicitAPI):
2939
2940
  def nonce(self):
2940
2941
  return self.milliseconds() - self.options['timeDifference']
2941
2942
 
2942
- async def fetch_time(self, params={}):
2943
+ async def fetch_time(self, params={}) -> Int:
2943
2944
  """
2944
2945
  fetches the current integer timestamp in milliseconds from the exchange server
2945
2946
 
@@ -5393,6 +5394,85 @@ class binance(Exchange, ImplicitAPI):
5393
5394
  else:
5394
5395
  return await self.edit_contract_order(id, symbol, type, side, amount, price, params)
5395
5396
 
5397
+ async def edit_orders(self, orders: List[OrderRequest], params={}):
5398
+ """
5399
+ edit a list of trade orders
5400
+
5401
+ https://developers.binance.com/docs/derivatives/usds-margined-futures/trade/rest-api/Modify-Multiple-Orders
5402
+ https://developers.binance.com/docs/derivatives/coin-margined-futures/trade/Modify-Multiple-Orders
5403
+
5404
+ :param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
5405
+ :param dict [params]: extra parameters specific to the exchange API endpoint
5406
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
5407
+ """
5408
+ await self.load_markets()
5409
+ ordersRequests = []
5410
+ orderSymbols = []
5411
+ for i in range(0, len(orders)):
5412
+ rawOrder = orders[i]
5413
+ marketId = self.safe_string(rawOrder, 'symbol')
5414
+ orderSymbols.append(marketId)
5415
+ id = self.safe_string(rawOrder, 'id')
5416
+ type = self.safe_string(rawOrder, 'type')
5417
+ side = self.safe_string(rawOrder, 'side')
5418
+ amount = self.safe_value(rawOrder, 'amount')
5419
+ price = self.safe_value(rawOrder, 'price')
5420
+ orderParams = self.safe_dict(rawOrder, 'params', {})
5421
+ isPortfolioMargin = None
5422
+ isPortfolioMargin, orderParams = self.handle_option_and_params_2(orderParams, 'editOrders', 'papi', 'portfolioMargin', False)
5423
+ if isPortfolioMargin:
5424
+ raise NotSupported(self.id + ' editOrders() does not support portfolio margin orders')
5425
+ orderRequest = self.edit_contract_order_request(id, marketId, type, side, amount, price, orderParams)
5426
+ ordersRequests.append(orderRequest)
5427
+ orderSymbols = self.market_symbols(orderSymbols, None, False, True, True)
5428
+ market = self.market(orderSymbols[0])
5429
+ if market['spot'] or market['option']:
5430
+ raise NotSupported(self.id + ' editOrders() does not support ' + market['type'] + ' orders')
5431
+ response = None
5432
+ request: dict = {
5433
+ 'batchOrders': ordersRequests,
5434
+ }
5435
+ request = self.extend(request, params)
5436
+ if market['linear']:
5437
+ response = await self.fapiPrivatePutBatchOrders(request)
5438
+ elif market['inverse']:
5439
+ response = await self.dapiPrivatePutBatchOrders(request)
5440
+ #
5441
+ # [
5442
+ # {
5443
+ # "code": -4005,
5444
+ # "msg": "Quantity greater than max quantity."
5445
+ # },
5446
+ # {
5447
+ # "orderId": 650640530,
5448
+ # "symbol": "LTCUSDT",
5449
+ # "status": "NEW",
5450
+ # "clientOrderId": "x-xcKtGhcu32184eb13585491289bbaf",
5451
+ # "price": "54.00",
5452
+ # "avgPrice": "0.00",
5453
+ # "origQty": "0.100",
5454
+ # "executedQty": "0.000",
5455
+ # "cumQty": "0.000",
5456
+ # "cumQuote": "0.00000",
5457
+ # "timeInForce": "GTC",
5458
+ # "type": "LIMIT",
5459
+ # "reduceOnly": False,
5460
+ # "closePosition": False,
5461
+ # "side": "BUY",
5462
+ # "positionSide": "BOTH",
5463
+ # "stopPrice": "0.00",
5464
+ # "workingType": "CONTRACT_PRICE",
5465
+ # "priceProtect": False,
5466
+ # "origType": "LIMIT",
5467
+ # "priceMatch": "NONE",
5468
+ # "selfTradePreventionMode": "NONE",
5469
+ # "goodTillDate": 0,
5470
+ # "updateTime": 1698073926929
5471
+ # }
5472
+ # ]
5473
+ #
5474
+ return self.parse_orders(response)
5475
+
5396
5476
  def parse_order_status(self, status: Str):
5397
5477
  statuses: dict = {
5398
5478
  'NEW': 'open',
@@ -11243,7 +11323,7 @@ class binance(Exchange, ImplicitAPI):
11243
11323
  params['newClientOrderId'] = brokerId + self.uuid22()
11244
11324
  query = None
11245
11325
  # handle batchOrders
11246
- if (path == 'batchOrders') and (method == 'POST'):
11326
+ if (path == 'batchOrders') and ((method == 'POST') or (method == 'PUT')):
11247
11327
  batchOrders = self.safe_value(params, 'batchOrders')
11248
11328
  queryBatch = (self.json(batchOrders))
11249
11329
  params['batchOrders'] = queryBatch
@@ -5,11 +5,12 @@
5
5
 
6
6
  from ccxt.async_support.binance import binance
7
7
  from ccxt.abstract.binancecoinm import ImplicitAPI
8
+ from ccxt.base.types import Any
8
9
 
9
10
 
10
11
  class binancecoinm(binance, ImplicitAPI):
11
12
 
12
- def describe(self):
13
+ def describe(self) -> Any:
13
14
  return self.deep_extend(super(binancecoinm, self).describe(), {
14
15
  'id': 'binancecoinm',
15
16
  'name': 'Binance COIN-M',
@@ -5,11 +5,12 @@
5
5
 
6
6
  from ccxt.async_support.binance import binance
7
7
  from ccxt.abstract.binanceus import ImplicitAPI
8
+ from ccxt.base.types import Any
8
9
 
9
10
 
10
11
  class binanceus(binance, ImplicitAPI):
11
12
 
12
- def describe(self):
13
+ def describe(self) -> Any:
13
14
  return self.deep_extend(super(binanceus, self).describe(), {
14
15
  'id': 'binanceus',
15
16
  'name': 'Binance US',
@@ -5,12 +5,13 @@
5
5
 
6
6
  from ccxt.async_support.binance import binance
7
7
  from ccxt.abstract.binanceusdm import ImplicitAPI
8
+ from ccxt.base.types import Any
8
9
  from ccxt.base.errors import InvalidOrder
9
10
 
10
11
 
11
12
  class binanceusdm(binance, ImplicitAPI):
12
13
 
13
- def describe(self):
14
+ def describe(self) -> Any:
14
15
  return self.deep_extend(super(binanceusdm, self).describe(), {
15
16
  'id': 'binanceusdm',
16
17
  'name': 'Binance USDⓈ-M',
@@ -8,7 +8,7 @@ from ccxt.abstract.bingx import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
10
  import numbers
11
- from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, Transaction, TransferEntry
11
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, Transaction, TransferEntry
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
14
  from ccxt.base.errors import AuthenticationError
@@ -29,7 +29,7 @@ from ccxt.base.precise import Precise
29
29
 
30
30
  class bingx(Exchange, ImplicitAPI):
31
31
 
32
- def describe(self):
32
+ def describe(self) -> Any:
33
33
  return self.deep_extend(super(bingx, self).describe(), {
34
34
  'id': 'bingx',
35
35
  'name': 'BingX',
@@ -681,7 +681,7 @@ class bingx(Exchange, ImplicitAPI):
681
681
  },
682
682
  })
683
683
 
684
- async def fetch_time(self, params={}):
684
+ async def fetch_time(self, params={}) -> Int:
685
685
  """
686
686
  fetches the current integer timestamp in milliseconds from the bingx server
687
687
 
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bit2c import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
9
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -21,7 +21,7 @@ from ccxt.base.precise import Precise
21
21
 
22
22
  class bit2c(Exchange, ImplicitAPI):
23
23
 
24
- def describe(self):
24
+ def describe(self) -> Any:
25
25
  return self.deep_extend(super(bit2c, self).describe(), {
26
26
  'id': 'bit2c',
27
27
  'name': 'Bit2C',
@@ -630,7 +630,7 @@ class bit2c(Exchange, ImplicitAPI):
630
630
  # 0 = New
631
631
  # 1 = Open
632
632
  # 5 = Completed
633
- status = None
633
+ status: str
634
634
  if isNewOrder:
635
635
  tempStatus = self.safe_integer(orderUnified, 'status_type')
636
636
  if tempStatus == 0 or tempStatus == 1:
@@ -795,13 +795,13 @@ class bit2c(Exchange, ImplicitAPI):
795
795
  # "isMaker": True,
796
796
  # }
797
797
  #
798
- timestamp = None
799
- id = None
798
+ timestamp: Int
799
+ id: Str
800
800
  price = None
801
801
  amount = None
802
802
  orderId = None
803
803
  fee = None
804
- side = None
804
+ side: str
805
805
  makerOrTaker = None
806
806
  reference = self.safe_string(trade, 'reference')
807
807
  if reference is not None:
@@ -817,10 +817,10 @@ class bit2c(Exchange, ImplicitAPI):
817
817
  isMaker = self.safe_value(trade, 'isMaker')
818
818
  makerOrTaker = 'maker' if isMaker else 'taker'
819
819
  orderId = reference_parts[2] if isMaker else reference_parts[1]
820
- side = self.safe_integer(trade, 'action')
821
- if side == 0:
820
+ action = self.safe_integer(trade, 'action')
821
+ if action == 0:
822
822
  side = 'buy'
823
- elif side == 1:
823
+ else:
824
824
  side = 'sell'
825
825
  feeCost = self.safe_string(trade, 'feeAmount')
826
826
  if feeCost is not None:
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitbank import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -20,7 +20,7 @@ from ccxt.base.decimal_to_precision import TICK_SIZE
20
20
 
21
21
  class bitbank(Exchange, ImplicitAPI):
22
22
 
23
- def describe(self):
23
+ def describe(self) -> Any:
24
24
  return self.deep_extend(super(bitbank, self).describe(), {
25
25
  'id': 'bitbank',
26
26
  'name': 'bitbank',
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitbns import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -20,7 +20,7 @@ from ccxt.base.precise import Precise
20
20
 
21
21
  class bitbns(Exchange, ImplicitAPI):
22
22
 
23
- def describe(self):
23
+ def describe(self) -> Any:
24
24
  return self.deep_extend(super(bitbns, self).describe(), {
25
25
  'id': 'bitbns',
26
26
  'name': 'Bitbns',