ccxt 4.4.61__tar.gz → 4.4.62__tar.gz

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 (670) hide show
  1. {ccxt-4.4.61/ccxt.egg-info → ccxt-4.4.62}/PKG-INFO +4 -4
  2. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/__init__.py +1 -1
  3. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bybit.py +1 -0
  4. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/exchange.py +9 -7
  6. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bingx.py +5 -6
  7. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bybit.py +109 -2
  8. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/kraken.py +2 -2
  9. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/phemex.py +221 -5
  10. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/whitebit.py +3 -1
  11. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/exchange.py +53 -26
  12. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bingx.py +5 -6
  13. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bybit.py +109 -2
  14. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/kraken.py +2 -2
  15. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/phemex.py +221 -5
  16. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/__init__.py +1 -1
  17. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/binance.py +25 -11
  18. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/lbank.py +10 -4
  19. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/myokx.py +10 -1
  20. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/test/tests_init.py +2 -1
  21. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/whitebit.py +3 -1
  22. {ccxt-4.4.61 → ccxt-4.4.62/ccxt.egg-info}/PKG-INFO +4 -4
  23. {ccxt-4.4.61 → ccxt-4.4.62}/package.json +1 -1
  24. {ccxt-4.4.61 → ccxt-4.4.62}/LICENSE.txt +0 -0
  25. {ccxt-4.4.61 → ccxt-4.4.62}/MANIFEST.in +0 -0
  26. {ccxt-4.4.61 → ccxt-4.4.62}/README.rst +0 -0
  27. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/__init__.py +0 -0
  28. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/ace.py +0 -0
  29. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/alpaca.py +0 -0
  30. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/ascendex.py +0 -0
  31. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bequant.py +0 -0
  32. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bigone.py +0 -0
  33. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/binance.py +0 -0
  34. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/binancecoinm.py +0 -0
  35. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/binanceus.py +0 -0
  36. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/binanceusdm.py +0 -0
  37. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bingx.py +0 -0
  38. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bit2c.py +0 -0
  39. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitbank.py +0 -0
  40. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitbns.py +0 -0
  41. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitcoincom.py +0 -0
  42. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitfinex.py +0 -0
  43. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitfinex1.py +0 -0
  44. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitflyer.py +0 -0
  45. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitget.py +0 -0
  46. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bithumb.py +0 -0
  47. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitmart.py +0 -0
  48. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitmex.py +0 -0
  49. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitopro.py +0 -0
  50. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitpanda.py +0 -0
  51. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitrue.py +0 -0
  52. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitso.py +0 -0
  53. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitstamp.py +0 -0
  54. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitteam.py +0 -0
  55. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bitvavo.py +0 -0
  56. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/bl3p.py +0 -0
  57. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/blockchaincom.py +0 -0
  58. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/blofin.py +0 -0
  59. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/btcalpha.py +0 -0
  60. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/btcbox.py +0 -0
  61. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/btcmarkets.py +0 -0
  62. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/btcturk.py +0 -0
  63. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/cex.py +0 -0
  64. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinbase.py +0 -0
  65. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinbaseadvanced.py +0 -0
  66. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinbaseexchange.py +0 -0
  67. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinbaseinternational.py +0 -0
  68. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coincatch.py +0 -0
  69. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coincheck.py +0 -0
  70. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinex.py +0 -0
  71. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinlist.py +0 -0
  72. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinmate.py +0 -0
  73. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinmetro.py +0 -0
  74. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinone.py +0 -0
  75. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinsph.py +0 -0
  76. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/coinspot.py +0 -0
  77. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/cryptocom.py +0 -0
  78. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/currencycom.py +0 -0
  79. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/defx.py +0 -0
  80. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/delta.py +0 -0
  81. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/deribit.py +0 -0
  82. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/digifinex.py +0 -0
  83. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/ellipx.py +0 -0
  84. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/exmo.py +0 -0
  85. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/fmfwio.py +0 -0
  86. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/gate.py +0 -0
  87. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/gateio.py +0 -0
  88. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/gemini.py +0 -0
  89. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/hashkey.py +0 -0
  90. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/hitbtc.py +0 -0
  91. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/hollaex.py +0 -0
  92. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/htx.py +0 -0
  93. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/huobi.py +0 -0
  94. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/huobijp.py +0 -0
  95. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/hyperliquid.py +0 -0
  96. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/idex.py +0 -0
  97. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/independentreserve.py +0 -0
  98. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/indodax.py +0 -0
  99. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/kraken.py +0 -0
  100. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/krakenfutures.py +0 -0
  101. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/kucoin.py +0 -0
  102. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/kucoinfutures.py +0 -0
  103. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/kuna.py +0 -0
  104. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/latoken.py +0 -0
  105. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/lbank.py +0 -0
  106. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/luno.py +0 -0
  107. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/mercado.py +0 -0
  108. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/mexc.py +0 -0
  109. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/myokx.py +0 -0
  110. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/ndax.py +0 -0
  111. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/novadax.py +0 -0
  112. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/oceanex.py +0 -0
  113. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/okcoin.py +0 -0
  114. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/okx.py +0 -0
  115. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/onetrading.py +0 -0
  116. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/oxfun.py +0 -0
  117. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/p2b.py +0 -0
  118. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/paradex.py +0 -0
  119. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/paymium.py +0 -0
  120. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/phemex.py +0 -0
  121. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/poloniex.py +0 -0
  122. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/poloniexfutures.py +0 -0
  123. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/probit.py +0 -0
  124. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/timex.py +0 -0
  125. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/tokocrypto.py +0 -0
  126. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/tradeogre.py +0 -0
  127. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/upbit.py +0 -0
  128. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/vertex.py +0 -0
  129. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/wavesexchange.py +0 -0
  130. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/whitebit.py +0 -0
  131. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/woo.py +0 -0
  132. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/woofipro.py +0 -0
  133. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/xt.py +0 -0
  134. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/yobit.py +0 -0
  135. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/zaif.py +0 -0
  136. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/abstract/zonda.py +0 -0
  137. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/ace.py +0 -0
  138. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/alpaca.py +0 -0
  139. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/ascendex.py +0 -0
  140. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/ace.py +0 -0
  141. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/alpaca.py +0 -0
  142. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/ascendex.py +0 -0
  143. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/__init__.py +0 -0
  144. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/throttler.py +0 -0
  145. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/__init__.py +0 -0
  146. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  147. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/cache.py +0 -0
  148. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/client.py +0 -0
  149. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/fast_client.py +0 -0
  150. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/functions.py +0 -0
  151. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/future.py +0 -0
  152. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/order_book.py +0 -0
  153. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  154. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bequant.py +0 -0
  155. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bigone.py +0 -0
  156. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/binance.py +0 -0
  157. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/binancecoinm.py +0 -0
  158. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/binanceus.py +0 -0
  159. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/binanceusdm.py +0 -0
  160. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bit2c.py +0 -0
  161. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitbank.py +0 -0
  162. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitbns.py +0 -0
  163. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitcoincom.py +0 -0
  164. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitfinex.py +0 -0
  165. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitfinex1.py +0 -0
  166. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitflyer.py +0 -0
  167. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitget.py +0 -0
  168. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bithumb.py +0 -0
  169. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitmart.py +0 -0
  170. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitmex.py +0 -0
  171. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitopro.py +0 -0
  172. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitpanda.py +0 -0
  173. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitrue.py +0 -0
  174. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitso.py +0 -0
  175. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitstamp.py +0 -0
  176. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitteam.py +0 -0
  177. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bitvavo.py +0 -0
  178. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/bl3p.py +0 -0
  179. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/blockchaincom.py +0 -0
  180. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/blofin.py +0 -0
  181. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/btcalpha.py +0 -0
  182. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/btcbox.py +0 -0
  183. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/btcmarkets.py +0 -0
  184. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/btcturk.py +0 -0
  185. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/cex.py +0 -0
  186. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinbase.py +0 -0
  187. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinbaseadvanced.py +0 -0
  188. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinbaseexchange.py +0 -0
  189. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinbaseinternational.py +0 -0
  190. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coincatch.py +0 -0
  191. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coincheck.py +0 -0
  192. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinex.py +0 -0
  193. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinlist.py +0 -0
  194. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinmate.py +0 -0
  195. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinmetro.py +0 -0
  196. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinone.py +0 -0
  197. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinsph.py +0 -0
  198. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/coinspot.py +0 -0
  199. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/cryptocom.py +0 -0
  200. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/currencycom.py +0 -0
  201. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/defx.py +0 -0
  202. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/delta.py +0 -0
  203. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/deribit.py +0 -0
  204. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/digifinex.py +0 -0
  205. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/ellipx.py +0 -0
  206. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/exmo.py +0 -0
  207. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/fmfwio.py +0 -0
  208. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/gate.py +0 -0
  209. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/gateio.py +0 -0
  210. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/gemini.py +0 -0
  211. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/hashkey.py +0 -0
  212. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/hitbtc.py +0 -0
  213. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/hollaex.py +0 -0
  214. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/htx.py +0 -0
  215. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/huobi.py +0 -0
  216. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/huobijp.py +0 -0
  217. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/hyperliquid.py +0 -0
  218. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/idex.py +0 -0
  219. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/independentreserve.py +0 -0
  220. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/indodax.py +0 -0
  221. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/krakenfutures.py +0 -0
  222. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/kucoin.py +0 -0
  223. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/kucoinfutures.py +0 -0
  224. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/kuna.py +0 -0
  225. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/latoken.py +0 -0
  226. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/lbank.py +0 -0
  227. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/luno.py +0 -0
  228. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/mercado.py +0 -0
  229. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/mexc.py +0 -0
  230. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/myokx.py +0 -0
  231. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/ndax.py +0 -0
  232. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/novadax.py +0 -0
  233. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/oceanex.py +0 -0
  234. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/okcoin.py +0 -0
  235. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/okx.py +0 -0
  236. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/onetrading.py +0 -0
  237. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/oxfun.py +0 -0
  238. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/p2b.py +0 -0
  239. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/paradex.py +0 -0
  240. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/paymium.py +0 -0
  241. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/poloniex.py +0 -0
  242. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/poloniexfutures.py +0 -0
  243. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/probit.py +0 -0
  244. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/timex.py +0 -0
  245. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/tokocrypto.py +0 -0
  246. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/tradeogre.py +0 -0
  247. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/upbit.py +0 -0
  248. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/vertex.py +0 -0
  249. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/wavesexchange.py +0 -0
  250. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/woo.py +0 -0
  251. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/woofipro.py +0 -0
  252. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/xt.py +0 -0
  253. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/yobit.py +0 -0
  254. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/zaif.py +0 -0
  255. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/async_support/zonda.py +0 -0
  256. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/__init__.py +0 -0
  257. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/decimal_to_precision.py +0 -0
  258. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/errors.py +0 -0
  259. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/precise.py +0 -0
  260. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/base/types.py +0 -0
  261. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bequant.py +0 -0
  262. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bigone.py +0 -0
  263. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/binance.py +0 -0
  264. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/binancecoinm.py +0 -0
  265. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/binanceus.py +0 -0
  266. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/binanceusdm.py +0 -0
  267. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bit2c.py +0 -0
  268. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitbank.py +0 -0
  269. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitbns.py +0 -0
  270. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitcoincom.py +0 -0
  271. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitfinex.py +0 -0
  272. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitfinex1.py +0 -0
  273. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitflyer.py +0 -0
  274. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitget.py +0 -0
  275. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bithumb.py +0 -0
  276. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitmart.py +0 -0
  277. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitmex.py +0 -0
  278. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitopro.py +0 -0
  279. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitpanda.py +0 -0
  280. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitrue.py +0 -0
  281. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitso.py +0 -0
  282. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitstamp.py +0 -0
  283. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitteam.py +0 -0
  284. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bitvavo.py +0 -0
  285. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/bl3p.py +0 -0
  286. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/blockchaincom.py +0 -0
  287. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/blofin.py +0 -0
  288. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/btcalpha.py +0 -0
  289. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/btcbox.py +0 -0
  290. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/btcmarkets.py +0 -0
  291. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/btcturk.py +0 -0
  292. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/cex.py +0 -0
  293. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinbase.py +0 -0
  294. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinbaseadvanced.py +0 -0
  295. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinbaseexchange.py +0 -0
  296. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinbaseinternational.py +0 -0
  297. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coincatch.py +0 -0
  298. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coincheck.py +0 -0
  299. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinex.py +0 -0
  300. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinlist.py +0 -0
  301. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinmate.py +0 -0
  302. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinmetro.py +0 -0
  303. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinone.py +0 -0
  304. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinsph.py +0 -0
  305. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/coinspot.py +0 -0
  306. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/cryptocom.py +0 -0
  307. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/currencycom.py +0 -0
  308. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/defx.py +0 -0
  309. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/delta.py +0 -0
  310. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/deribit.py +0 -0
  311. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/digifinex.py +0 -0
  312. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/ellipx.py +0 -0
  313. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/exmo.py +0 -0
  314. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/fmfwio.py +0 -0
  315. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/gate.py +0 -0
  316. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/gateio.py +0 -0
  317. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/gemini.py +0 -0
  318. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/hashkey.py +0 -0
  319. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/hitbtc.py +0 -0
  320. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/hollaex.py +0 -0
  321. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/htx.py +0 -0
  322. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/huobi.py +0 -0
  323. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/huobijp.py +0 -0
  324. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/hyperliquid.py +0 -0
  325. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/idex.py +0 -0
  326. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/independentreserve.py +0 -0
  327. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/indodax.py +0 -0
  328. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/krakenfutures.py +0 -0
  329. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/kucoin.py +0 -0
  330. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/kucoinfutures.py +0 -0
  331. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/kuna.py +0 -0
  332. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/latoken.py +0 -0
  333. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/lbank.py +0 -0
  334. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/luno.py +0 -0
  335. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/mercado.py +0 -0
  336. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/mexc.py +0 -0
  337. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/myokx.py +0 -0
  338. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/ndax.py +0 -0
  339. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/novadax.py +0 -0
  340. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/oceanex.py +0 -0
  341. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/okcoin.py +0 -0
  342. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/okx.py +0 -0
  343. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/onetrading.py +0 -0
  344. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/oxfun.py +0 -0
  345. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/p2b.py +0 -0
  346. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/paradex.py +0 -0
  347. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/paymium.py +0 -0
  348. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/poloniex.py +0 -0
  349. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/poloniexfutures.py +0 -0
  350. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/alpaca.py +0 -0
  351. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/ascendex.py +0 -0
  352. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bequant.py +0 -0
  353. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/binancecoinm.py +0 -0
  354. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/binanceus.py +0 -0
  355. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/binanceusdm.py +0 -0
  356. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bingx.py +0 -0
  357. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitcoincom.py +0 -0
  358. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitfinex.py +0 -0
  359. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitfinex1.py +0 -0
  360. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitget.py +0 -0
  361. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bithumb.py +0 -0
  362. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitmart.py +0 -0
  363. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitmex.py +0 -0
  364. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitopro.py +0 -0
  365. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitpanda.py +0 -0
  366. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitrue.py +0 -0
  367. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitstamp.py +0 -0
  368. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bitvavo.py +0 -0
  369. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/blockchaincom.py +0 -0
  370. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/blofin.py +0 -0
  371. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/bybit.py +0 -0
  372. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/cex.py +0 -0
  373. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinbase.py +0 -0
  374. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinbaseadvanced.py +0 -0
  375. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinbaseexchange.py +0 -0
  376. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinbaseinternational.py +0 -0
  377. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coincatch.py +0 -0
  378. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coincheck.py +0 -0
  379. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinex.py +0 -0
  380. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/coinone.py +0 -0
  381. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/cryptocom.py +0 -0
  382. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/currencycom.py +0 -0
  383. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/defx.py +0 -0
  384. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/deribit.py +0 -0
  385. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/exmo.py +0 -0
  386. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/gate.py +0 -0
  387. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/gateio.py +0 -0
  388. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/gemini.py +0 -0
  389. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/hashkey.py +0 -0
  390. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/hitbtc.py +0 -0
  391. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/hollaex.py +0 -0
  392. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/htx.py +0 -0
  393. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/huobi.py +0 -0
  394. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/huobijp.py +0 -0
  395. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/hyperliquid.py +0 -0
  396. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/idex.py +0 -0
  397. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/independentreserve.py +0 -0
  398. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/kraken.py +0 -0
  399. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/krakenfutures.py +0 -0
  400. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/kucoin.py +0 -0
  401. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/kucoinfutures.py +0 -0
  402. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/luno.py +0 -0
  403. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/mexc.py +0 -0
  404. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/ndax.py +0 -0
  405. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/okcoin.py +0 -0
  406. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/okx.py +0 -0
  407. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/onetrading.py +0 -0
  408. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/oxfun.py +0 -0
  409. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/p2b.py +0 -0
  410. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/paradex.py +0 -0
  411. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/phemex.py +0 -0
  412. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/poloniex.py +0 -0
  413. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/poloniexfutures.py +0 -0
  414. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/probit.py +0 -0
  415. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/upbit.py +0 -0
  416. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/vertex.py +0 -0
  417. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/wazirx.py +0 -0
  418. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/whitebit.py +0 -0
  419. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/woo.py +0 -0
  420. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/woofipro.py +0 -0
  421. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/pro/xt.py +0 -0
  422. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/probit.py +0 -0
  423. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/__init__.py +0 -0
  424. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  425. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  426. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  427. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  428. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  429. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  430. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  431. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  432. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  433. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  434. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  435. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  436. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  437. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  438. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  439. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  440. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  441. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  442. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  443. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  444. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  445. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  446. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  447. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  448. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  449. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  450. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  451. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  452. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  453. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  454. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  455. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  456. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  457. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  458. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  459. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  460. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  461. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  462. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  463. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  464. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  465. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  466. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  467. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  468. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  469. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  470. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  471. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  472. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  473. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  474. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  475. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  476. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  477. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  478. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  479. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  480. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  481. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  482. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  483. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  484. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  485. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  486. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  487. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  488. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  489. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  490. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  491. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  492. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  493. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  494. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  495. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  496. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  497. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  498. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/__init__.py +0 -0
  499. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -0
  500. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -0
  501. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/ast_utils.py +0 -0
  502. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/common.py +0 -0
  503. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/exceptions.py +0 -0
  504. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/grammar.py +0 -0
  505. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  506. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/indenter.py +0 -0
  507. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/lark.py +0 -0
  508. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/lexer.py +0 -0
  509. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/load_grammar.py +0 -0
  510. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -0
  511. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parser_frontends.py +0 -0
  512. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  513. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/cyk.py +0 -0
  514. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/earley.py +0 -0
  515. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -0
  516. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -0
  517. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -0
  518. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -0
  519. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -0
  520. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -0
  521. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -0
  522. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/parsers/xearley.py +0 -0
  523. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/py.typed +0 -0
  524. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/reconstruct.py +0 -0
  525. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tools/__init__.py +0 -0
  526. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tools/nearley.py +0 -0
  527. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tools/serialize.py +0 -0
  528. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tools/standalone.py +0 -0
  529. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tree.py +0 -0
  530. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tree_matcher.py +0 -0
  531. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/tree_templates.py +0 -0
  532. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/utils.py +0 -0
  533. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/lark/visitors.py +0 -0
  534. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/__init__.py +0 -0
  535. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/base.py +0 -0
  536. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/class_registry.py +0 -0
  537. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/decorators.py +0 -0
  538. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/error_store.py +0 -0
  539. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/exceptions.py +0 -0
  540. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/fields.py +0 -0
  541. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/orderedset.py +0 -0
  542. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  543. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/schema.py +0 -0
  544. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/types.py +0 -0
  545. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/utils.py +0 -0
  546. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/validate.py +0 -0
  547. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow/warnings.py +0 -0
  548. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -0
  549. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -0
  550. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -0
  551. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -0
  552. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  553. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -0
  554. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -0
  555. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -0
  556. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -0
  557. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  558. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  559. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  560. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  561. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  562. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  563. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  564. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  565. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  566. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  567. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  568. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/__init__.py +0 -0
  569. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  570. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -0
  571. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  572. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -0
  573. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -0
  574. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -0
  575. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/felt.py +0 -0
  576. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -0
  577. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  578. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -0
  579. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  580. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -0
  581. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -0
  582. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/common.py +0 -0
  583. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/constants.py +0 -0
  584. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  585. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/address.py +0 -0
  586. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -0
  587. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/selector.py +0 -0
  588. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/storage.py +0 -0
  589. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/hash/utils.py +0 -0
  590. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  591. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/models/typed_data.py +0 -0
  592. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -0
  593. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -0
  594. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/_context.py +0 -0
  595. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -0
  596. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -0
  597. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -0
  598. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -0
  599. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -0
  600. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -0
  601. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -0
  602. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -0
  603. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -0
  604. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -0
  605. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -0
  606. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -0
  607. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -0
  608. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -0
  609. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -0
  610. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -0
  611. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -0
  612. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/errors.py +0 -0
  613. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/factory.py +0 -0
  614. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -0
  615. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -0
  616. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  617. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -0
  618. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/utils/iterable.py +0 -0
  619. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/utils/schema.py +0 -0
  620. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -0
  621. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/__init__.py +0 -0
  622. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  623. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -0
  624. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -0
  625. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/crypto/signature.py +0 -0
  626. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/starkware/crypto/utils.py +0 -0
  627. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/__init__.py +0 -0
  628. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  629. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/core/intfunc.py +0 -0
  630. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  631. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/external/gmpy.py +0 -0
  632. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/external/importtools.py +0 -0
  633. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/external/ntheory.py +0 -0
  634. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -0
  635. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  636. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  637. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/_version.py +0 -0
  638. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  639. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  640. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  641. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  642. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  643. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  644. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  645. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  646. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/toolz/utils.py +0 -0
  647. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  648. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -0
  649. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/test/__init__.py +0 -0
  650. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/test/tests_async.py +0 -0
  651. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/test/tests_helpers.py +0 -0
  652. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/test/tests_sync.py +0 -0
  653. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/timex.py +0 -0
  654. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/tokocrypto.py +0 -0
  655. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/tradeogre.py +0 -0
  656. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/upbit.py +0 -0
  657. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/vertex.py +0 -0
  658. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/wavesexchange.py +0 -0
  659. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/woo.py +0 -0
  660. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/woofipro.py +0 -0
  661. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/xt.py +0 -0
  662. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/yobit.py +0 -0
  663. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/zaif.py +0 -0
  664. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt/zonda.py +0 -0
  665. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt.egg-info/SOURCES.txt +0 -0
  666. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt.egg-info/dependency_links.txt +0 -0
  667. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt.egg-info/requires.txt +0 -0
  668. {ccxt-4.4.61 → ccxt-4.4.62}/ccxt.egg-info/top_level.txt +0 -0
  669. {ccxt-4.4.61 → ccxt-4.4.62}/setup.cfg +0 -0
  670. {ccxt-4.4.61 → ccxt-4.4.62}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.61
3
+ Version: 4.4.62
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -266,13 +266,13 @@ console.log(version, Object.keys(exchanges));
266
266
 
267
267
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
268
268
 
269
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.61/dist/ccxt.browser.min.js
270
- * unpkg: https://unpkg.com/ccxt@4.4.61/dist/ccxt.browser.min.js
269
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.62/dist/ccxt.browser.min.js
270
+ * unpkg: https://unpkg.com/ccxt@4.4.62/dist/ccxt.browser.min.js
271
271
 
272
272
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
273
273
 
274
274
  ```HTML
275
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.61/dist/ccxt.browser.min.js"></script>
275
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.62/dist/ccxt.browser.min.js"></script>
276
276
  ```
277
277
 
278
278
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.61'
25
+ __version__ = '4.4.62'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -48,6 +48,7 @@ class ImplicitAPI:
48
48
  public_get_v5_spot_lever_token_info = publicGetV5SpotLeverTokenInfo = Entry('v5/spot-lever-token/info', 'public', 'GET', {'cost': 5})
49
49
  public_get_v5_spot_lever_token_reference = publicGetV5SpotLeverTokenReference = Entry('v5/spot-lever-token/reference', 'public', 'GET', {'cost': 5})
50
50
  public_get_v5_spot_margin_trade_data = publicGetV5SpotMarginTradeData = Entry('v5/spot-margin-trade/data', 'public', 'GET', {'cost': 5})
51
+ public_get_v5_spot_margin_trade_collateral = publicGetV5SpotMarginTradeCollateral = Entry('v5/spot-margin-trade/collateral', 'public', 'GET', {'cost': 5})
51
52
  public_get_v5_spot_cross_margin_trade_data = publicGetV5SpotCrossMarginTradeData = Entry('v5/spot-cross-margin-trade/data', 'public', 'GET', {'cost': 5})
52
53
  public_get_v5_spot_cross_margin_trade_pledge_token = publicGetV5SpotCrossMarginTradePledgeToken = Entry('v5/spot-cross-margin-trade/pledge-token', 'public', 'GET', {'cost': 5})
53
54
  public_get_v5_spot_cross_margin_trade_borrow_token = publicGetV5SpotCrossMarginTradeBorrowToken = Entry('v5/spot-cross-margin-trade/borrow-token', 'public', 'GET', {'cost': 5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.61'
7
+ __version__ = '4.4.62'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.61'
5
+ __version__ = '4.4.62'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -74,18 +74,20 @@ class Exchange(BaseExchange):
74
74
  self.verify = config.get('verify', self.verify)
75
75
  self.own_session = 'session' not in config
76
76
  self.cafile = config.get('cafile', certifi.where())
77
+ self.throttler = None
77
78
  super(Exchange, self).__init__(config)
78
- self.throttle = None
79
- self.init_rest_rate_limiter()
80
79
  self.markets_loading = None
81
80
  self.reloading_markets = False
82
81
 
83
- def init_rest_rate_limiter(self):
84
- self.throttle = Throttler(self.tokenBucket, self.asyncio_loop)
85
-
86
82
  def get_event_loop(self):
87
83
  return self.asyncio_loop
88
84
 
85
+ def init_throttler(self, cost=None):
86
+ self.throttler = Throttler(self.tokenBucket, self.asyncio_loop)
87
+
88
+ async def throttle(self, cost=None):
89
+ return await self.throttler(cost)
90
+
89
91
  def get_session(self):
90
92
  return self.session
91
93
 
@@ -107,7 +109,7 @@ class Exchange(BaseExchange):
107
109
  self.asyncio_loop = asyncio.get_running_loop()
108
110
  else:
109
111
  self.asyncio_loop = asyncio.get_event_loop()
110
- self.throttle.loop = self.asyncio_loop
112
+ self.throttler.loop = self.asyncio_loop
111
113
 
112
114
  if self.ssl_context is None:
113
115
  # Create our SSL context object with our CA cert file
@@ -4455,13 +4455,12 @@ class bingx(Exchange, ImplicitAPI):
4455
4455
  :param boolean [params.twap]: if fetching twap orders
4456
4456
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
4457
4457
  """
4458
- if symbol is None:
4459
- raise ArgumentsRequired(self.id + ' fetchClosedOrders() requires a symbol argument')
4460
4458
  await self.load_markets()
4461
- market = self.market(symbol)
4462
- request: dict = {
4463
- 'symbol': market['id'],
4464
- }
4459
+ market = None
4460
+ request: dict = {}
4461
+ if symbol is not None:
4462
+ market = self.market(symbol)
4463
+ request['symbol'] = market['id']
4465
4464
  type = None
4466
4465
  subType = None
4467
4466
  standard = None
@@ -74,7 +74,9 @@ class bybit(Exchange, ImplicitAPI):
74
74
  'createTrailingAmountOrder': True,
75
75
  'createTriggerOrder': True,
76
76
  'editOrder': True,
77
+ 'editOrders': True,
77
78
  'fetchBalance': True,
79
+ 'fetchBidsAsks': 'emulated',
78
80
  'fetchBorrowInterest': False, # temporarily disabled, doesn't work
79
81
  'fetchBorrowRateHistories': False,
80
82
  'fetchBorrowRateHistory': False,
@@ -255,6 +257,7 @@ class bybit(Exchange, ImplicitAPI):
255
257
  'v5/spot-lever-token/reference': 5,
256
258
  # spot margin trade
257
259
  'v5/spot-margin-trade/data': 5,
260
+ 'v5/spot-margin-trade/collateral': 5,
258
261
  'v5/spot-cross-margin-trade/data': 5,
259
262
  'v5/spot-cross-margin-trade/pledge-token': 5,
260
263
  'v5/spot-cross-margin-trade/borrow-token': 5,
@@ -1240,6 +1243,9 @@ class bybit(Exchange, ImplicitAPI):
1240
1243
  'fetchOHLCV': {
1241
1244
  'limit': 1000,
1242
1245
  },
1246
+ 'editOrders': {
1247
+ 'max': 10,
1248
+ },
1243
1249
  },
1244
1250
  'spot': {
1245
1251
  'extends': 'default',
@@ -2463,6 +2469,20 @@ class bybit(Exchange, ImplicitAPI):
2463
2469
  tickerList = self.safe_list(result, 'list', [])
2464
2470
  return self.parse_tickers(tickerList, parsedSymbols)
2465
2471
 
2472
+ async def fetch_bids_asks(self, symbols: Strings = None, params={}):
2473
+ """
2474
+ fetches the bid and ask price and volume for multiple markets
2475
+
2476
+ https://bybit-exchange.github.io/docs/v5/market/tickers
2477
+
2478
+ :param str[]|None symbols: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
2479
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2480
+ :param str [params.subType]: *contract only* 'linear', 'inverse'
2481
+ :param str [params.baseCoin]: *option only* base coin, default is 'BTC'
2482
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
2483
+ """
2484
+ return await self.fetch_tickers(symbols, params)
2485
+
2466
2486
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
2467
2487
  #
2468
2488
  # [
@@ -3985,13 +4005,15 @@ class bybit(Exchange, ImplicitAPI):
3985
4005
  price = self.safe_value(rawOrder, 'price')
3986
4006
  orderParams = self.safe_dict(rawOrder, 'params', {})
3987
4007
  orderRequest = self.create_order_request(marketId, type, side, amount, price, orderParams, isUta)
4008
+ del orderRequest['category']
3988
4009
  ordersRequests.append(orderRequest)
3989
4010
  symbols = self.market_symbols(orderSymbols, None, False, True, True)
3990
4011
  market = self.market(symbols[0])
4012
+ unifiedMarginStatus = self.safe_integer(self.options, 'unifiedMarginStatus', 3)
3991
4013
  category = None
3992
4014
  category, params = self.get_bybit_type('createOrders', market, params)
3993
- if category == 'inverse':
3994
- raise NotSupported(self.id + ' createOrders does not allow inverse orders')
4015
+ if (category == 'inverse') and (unifiedMarginStatus < 5):
4016
+ raise NotSupported(self.id + ' createOrders does not allow inverse orders for non UTA2.0 account')
3995
4017
  request: dict = {
3996
4018
  'category': category,
3997
4019
  'request': ordersRequests,
@@ -4158,6 +4180,91 @@ class bybit(Exchange, ImplicitAPI):
4158
4180
  'id': self.safe_string(result, 'orderId'),
4159
4181
  })
4160
4182
 
4183
+ async def edit_orders(self, orders: List[OrderRequest], params={}):
4184
+ """
4185
+ edit a list of trade orders
4186
+
4187
+ https://bybit-exchange.github.io/docs/v5/order/batch-amend
4188
+
4189
+ :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
4190
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4191
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
4192
+ """
4193
+ await self.load_markets()
4194
+ ordersRequests = []
4195
+ orderSymbols = []
4196
+ for i in range(0, len(orders)):
4197
+ rawOrder = orders[i]
4198
+ symbol = self.safe_string(rawOrder, 'symbol')
4199
+ orderSymbols.append(symbol)
4200
+ id = self.safe_string(rawOrder, 'id')
4201
+ type = self.safe_string(rawOrder, 'type')
4202
+ side = self.safe_string(rawOrder, 'side')
4203
+ amount = self.safe_value(rawOrder, 'amount')
4204
+ price = self.safe_value(rawOrder, 'price')
4205
+ orderParams = self.safe_dict(rawOrder, 'params', {})
4206
+ orderRequest = self.edit_order_request(id, symbol, type, side, amount, price, orderParams)
4207
+ del orderRequest['category']
4208
+ ordersRequests.append(orderRequest)
4209
+ orderSymbols = self.market_symbols(orderSymbols, None, False, True, True)
4210
+ market = self.market(orderSymbols[0])
4211
+ unifiedMarginStatus = self.safe_integer(self.options, 'unifiedMarginStatus', 3)
4212
+ category = None
4213
+ category, params = self.get_bybit_type('editOrders', market, params)
4214
+ if (category == 'inverse') and (unifiedMarginStatus < 5):
4215
+ raise NotSupported(self.id + ' editOrders does not allow inverse orders for non UTA2.0 account')
4216
+ request: dict = {
4217
+ 'category': category,
4218
+ 'request': ordersRequests,
4219
+ }
4220
+ response = await self.privatePostV5OrderAmendBatch(self.extend(request, params))
4221
+ result = self.safe_dict(response, 'result', {})
4222
+ data = self.safe_list(result, 'list', [])
4223
+ retInfo = self.safe_dict(response, 'retExtInfo', {})
4224
+ codes = self.safe_list(retInfo, 'list', [])
4225
+ # self.extend the error with the unsuccessful orders
4226
+ for i in range(0, len(codes)):
4227
+ code = codes[i]
4228
+ retCode = self.safe_integer(code, 'code')
4229
+ if retCode != 0:
4230
+ data[i] = self.extend(data[i], code)
4231
+ #
4232
+ # {
4233
+ # "retCode": 0,
4234
+ # "retMsg": "OK",
4235
+ # "result": {
4236
+ # "list": [
4237
+ # {
4238
+ # "category": "option",
4239
+ # "symbol": "ETH-30DEC22-500-C",
4240
+ # "orderId": "b551f227-7059-4fb5-a6a6-699c04dbd2f2",
4241
+ # "orderLinkId": ""
4242
+ # },
4243
+ # {
4244
+ # "category": "option",
4245
+ # "symbol": "ETH-30DEC22-700-C",
4246
+ # "orderId": "fa6a595f-1a57-483f-b9d3-30e9c8235a52",
4247
+ # "orderLinkId": ""
4248
+ # }
4249
+ # ]
4250
+ # },
4251
+ # "retExtInfo": {
4252
+ # "list": [
4253
+ # {
4254
+ # "code": 0,
4255
+ # "msg": "OK"
4256
+ # },
4257
+ # {
4258
+ # "code": 0,
4259
+ # "msg": "OK"
4260
+ # }
4261
+ # ]
4262
+ # },
4263
+ # "time": 1672222808060
4264
+ # }
4265
+ #
4266
+ return self.parse_orders(data)
4267
+
4161
4268
  def cancel_order_request(self, id: str, symbol: Str = None, params={}):
4162
4269
  market = self.market(symbol)
4163
4270
  request: dict = {
@@ -981,9 +981,9 @@ class kraken(Exchange, ImplicitAPI):
981
981
  'high': self.safe_string(high, 1),
982
982
  'low': self.safe_string(low, 1),
983
983
  'bid': self.safe_string(bid, 0),
984
- 'bidVolume': None,
984
+ 'bidVolume': self.safe_string(bid, 2),
985
985
  'ask': self.safe_string(ask, 0),
986
- 'askVolume': None,
986
+ 'askVolume': self.safe_string(ask, 2),
987
987
  'vwap': vwap,
988
988
  'open': self.safe_string(ticker, 'o'),
989
989
  'close': last,
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.phemex import ImplicitAPI
8
8
  import hashlib
9
9
  import numbers
10
- from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, Transaction, TransferEntry
10
+ from ccxt.base.types import Any, Balances, Conversion, Currencies, Currency, DepositAddress, Int, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -50,6 +50,7 @@ class phemex(Exchange, ImplicitAPI):
50
50
  'cancelAllOrders': True,
51
51
  'cancelOrder': True,
52
52
  'closePosition': False,
53
+ 'createConvertTrade': True,
53
54
  'createOrder': True,
54
55
  'createReduceOnlyOrder': True,
55
56
  'createStopLimitOrder': True,
@@ -60,6 +61,9 @@ class phemex(Exchange, ImplicitAPI):
60
61
  'fetchBorrowRateHistories': False,
61
62
  'fetchBorrowRateHistory': False,
62
63
  'fetchClosedOrders': True,
64
+ 'fetchConvertQuote': True,
65
+ 'fetchConvertTrade': False,
66
+ 'fetchConvertTradeHistory': True,
63
67
  'fetchCrossBorrowRate': False,
64
68
  'fetchCrossBorrowRates': False,
65
69
  'fetchCurrencies': True,
@@ -1078,7 +1082,7 @@ class phemex(Exchange, ImplicitAPI):
1078
1082
  for i in range(0, len(products)):
1079
1083
  market = products[i]
1080
1084
  type = self.safe_string_lower(market, 'type')
1081
- if (type == 'perpetual') or (type == 'perpetualv2') or (type == 'PerpetualPilot'):
1085
+ if (type == 'perpetual') or (type == 'perpetualv2') or (type == 'perpetualpilot'):
1082
1086
  id = self.safe_string(market, 'symbol')
1083
1087
  riskLimitValues = self.safe_value(riskLimitsById, id, {})
1084
1088
  market = self.extend(market, riskLimitValues)
@@ -1254,7 +1258,7 @@ class phemex(Exchange, ImplicitAPI):
1254
1258
  precise.decimals = precise.decimals - scale
1255
1259
  precise.reduce()
1256
1260
  preciseString = str(precise)
1257
- return self.parse_to_int(preciseString)
1261
+ return self.parse_to_numeric(preciseString)
1258
1262
 
1259
1263
  def to_ev(self, amount, market: Market = None):
1260
1264
  if (amount is None) or (market is None):
@@ -2547,7 +2551,6 @@ class phemex(Exchange, ImplicitAPI):
2547
2551
  market = self.market(symbol)
2548
2552
  requestSide = self.capitalize(side)
2549
2553
  type = self.capitalize(type)
2550
- reduceOnly = self.safe_bool(params, 'reduceOnly')
2551
2554
  request: dict = {
2552
2555
  # common
2553
2556
  'symbol': market['id'],
@@ -2630,8 +2633,10 @@ class phemex(Exchange, ImplicitAPI):
2630
2633
  posSide = self.safe_string_lower(params, 'posSide')
2631
2634
  if posSide is None:
2632
2635
  if hedged:
2636
+ reduceOnly = self.safe_bool(params, 'reduceOnly')
2633
2637
  if reduceOnly:
2634
2638
  side = 'sell' if (side == 'buy') else 'buy'
2639
+ params = self.omit(params, 'reduceOnly')
2635
2640
  posSide = 'Long' if (side == 'buy') else 'Short'
2636
2641
  else:
2637
2642
  posSide = 'Merged'
@@ -2709,7 +2714,6 @@ class phemex(Exchange, ImplicitAPI):
2709
2714
  else:
2710
2715
  request['stopLossEp'] = self.to_ep(stopLossPrice, market)
2711
2716
  params = self.omit(params, 'stopLossPrice')
2712
- params = self.omit(params, 'reduceOnly')
2713
2717
  response = None
2714
2718
  if market['settle'] == 'USDT':
2715
2719
  response = await self.privatePostGOrders(self.extend(request, params))
@@ -4760,6 +4764,218 @@ class phemex(Exchange, ImplicitAPI):
4760
4764
  'datetime': self.iso8601(timestamp),
4761
4765
  }, market)
4762
4766
 
4767
+ async def fetch_convert_quote(self, fromCode: str, toCode: str, amount: Num = None, params={}) -> Conversion:
4768
+ """
4769
+ fetch a quote for converting from one currency to another
4770
+
4771
+ https://phemex-docs.github.io/#rfq-quote
4772
+
4773
+ :param str fromCode: the currency that you want to sell and convert from
4774
+ :param str toCode: the currency that you want to buy and convert into
4775
+ :param float amount: how much you want to trade in units of the from currency
4776
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4777
+ :returns dict: a `conversion structure <https://docs.ccxt.com/#/?id=conversion-structure>`
4778
+ """
4779
+ await self.load_markets()
4780
+ fromCurrency = self.currency(fromCode)
4781
+ toCurrency = self.currency(toCode)
4782
+ valueScale = self.safe_integer(fromCurrency, 'valueScale')
4783
+ request: dict = {
4784
+ 'fromCurrency': fromCode,
4785
+ 'toCurrency': toCode,
4786
+ 'fromAmountEv': self.to_en(amount, valueScale),
4787
+ }
4788
+ response = await self.privateGetAssetsQuote(self.extend(request, params))
4789
+ #
4790
+ # {
4791
+ # "code": 0,
4792
+ # "msg": "OK",
4793
+ # "data": {
4794
+ # "code": "GIF...AAA",
4795
+ # "quoteArgs": {
4796
+ # "origin": 10,
4797
+ # "price": "0.00000939",
4798
+ # "proceeds": "0.00000000",
4799
+ # "ttlMs": 7000,
4800
+ # "expireAt": 1739875826009,
4801
+ # "requestAt": 1739875818009,
4802
+ # "quoteAt": 1739875816594
4803
+ # }
4804
+ # }
4805
+ # }
4806
+ #
4807
+ data = self.safe_dict(response, 'data', {})
4808
+ return self.parse_conversion(data, fromCurrency, toCurrency)
4809
+
4810
+ async def create_convert_trade(self, id: str, fromCode: str, toCode: str, amount: Num = None, params={}) -> Conversion:
4811
+ """
4812
+ convert from one currency to another
4813
+
4814
+ https://phemex-docs.github.io/#convert
4815
+
4816
+ :param str id: the id of the trade that you want to make
4817
+ :param str fromCode: the currency that you want to sell and convert from
4818
+ :param str toCode: the currency that you want to buy and convert into
4819
+ :param float [amount]: how much you want to trade in units of the from currency
4820
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4821
+ :returns dict: a `conversion structure <https://docs.ccxt.com/#/?id=conversion-structure>`
4822
+ """
4823
+ await self.load_markets()
4824
+ fromCurrency = self.currency(fromCode)
4825
+ toCurrency = self.currency(toCode)
4826
+ valueScale = self.safe_integer(fromCurrency, 'valueScale')
4827
+ request: dict = {
4828
+ 'code': id,
4829
+ 'fromCurrency': fromCode,
4830
+ 'toCurrency': toCode,
4831
+ }
4832
+ if amount is not None:
4833
+ request['fromAmountEv'] = self.to_en(amount, valueScale)
4834
+ response = await self.privatePostAssetsConvert(self.extend(request, params))
4835
+ #
4836
+ # {
4837
+ # "code": 0,
4838
+ # "msg": "OK",
4839
+ # "data": {
4840
+ # "moveOp": 0,
4841
+ # "fromCurrency": "USDT",
4842
+ # "toCurrency": "BTC",
4843
+ # "fromAmountEv": 4000000000,
4844
+ # "toAmountEv": 41511,
4845
+ # "linkKey": "45c8ed8e-d3f4-472d-8262-e464e8c46247",
4846
+ # "status": 10
4847
+ # }
4848
+ # }
4849
+ #
4850
+ data = self.safe_dict(response, 'data', {})
4851
+ fromCurrencyId = self.safe_string(data, 'fromCurrency')
4852
+ fromResult = self.safe_currency(fromCurrencyId, fromCurrency)
4853
+ toCurrencyId = self.safe_string(data, 'toCurrency')
4854
+ to = self.safe_currency(toCurrencyId, toCurrency)
4855
+ return self.parse_conversion(data, fromResult, to)
4856
+
4857
+ async def fetch_convert_trade_history(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Conversion]:
4858
+ """
4859
+ fetch the users history of conversion trades
4860
+
4861
+ https://phemex-docs.github.io/#query-convert-history
4862
+
4863
+ :param str [code]: the unified currency code
4864
+ :param int [since]: the earliest time in ms to fetch conversions for
4865
+ :param int [limit]: the maximum number of conversion structures to retrieve, default 20, max 200
4866
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4867
+ :param str [params.until]: the end time in ms
4868
+ :param str [params.fromCurrency]: the currency that you sold and converted from
4869
+ :param str [params.toCurrency]: the currency that you bought and converted into
4870
+ :returns dict[]: a list of `conversion structures <https://docs.ccxt.com/#/?id=conversion-structure>`
4871
+ """
4872
+ await self.load_markets()
4873
+ request: dict = {}
4874
+ if code is not None:
4875
+ request['fromCurrency'] = code
4876
+ if since is not None:
4877
+ request['startTime'] = since
4878
+ if limit is not None:
4879
+ request['limit'] = limit
4880
+ request, params = self.handle_until_option('endTime', request, params)
4881
+ response = await self.privateGetAssetsConvert(self.extend(request, params))
4882
+ #
4883
+ # {
4884
+ # "code": 0,
4885
+ # "msg": "OK",
4886
+ # "data": {
4887
+ # "total": 2,
4888
+ # "rows": [
4889
+ # {
4890
+ # "linkKey": "45c8ed8e-d3f4-472d-8262-e464e8c46247",
4891
+ # "createTime": 1739882294000,
4892
+ # "fromCurrency": "USDT",
4893
+ # "toCurrency": "BTC",
4894
+ # "fromAmountEv": 4000000000,
4895
+ # "toAmountEv": 41511,
4896
+ # "status": 10,
4897
+ # "conversionRate": 1037,
4898
+ # "errorCode": 0
4899
+ # },
4900
+ # ]
4901
+ # }
4902
+ # }
4903
+ #
4904
+ data = self.safe_dict(response, 'data', {})
4905
+ rows = self.safe_list(data, 'rows', [])
4906
+ return self.parse_conversions(rows, code, 'fromCurrency', 'toCurrency', since, limit)
4907
+
4908
+ def parse_conversion(self, conversion: dict, fromCurrency: Currency = None, toCurrency: Currency = None) -> Conversion:
4909
+ #
4910
+ # fetchConvertQuote
4911
+ #
4912
+ # {
4913
+ # "code": "GIF...AAA",
4914
+ # "quoteArgs": {
4915
+ # "origin": 10,
4916
+ # "price": "0.00000939",
4917
+ # "proceeds": "0.00000000",
4918
+ # "ttlMs": 7000,
4919
+ # "expireAt": 1739875826009,
4920
+ # "requestAt": 1739875818009,
4921
+ # "quoteAt": 1739875816594
4922
+ # }
4923
+ # }
4924
+ #
4925
+ # createConvertTrade
4926
+ #
4927
+ # {
4928
+ # "moveOp": 0,
4929
+ # "fromCurrency": "USDT",
4930
+ # "toCurrency": "BTC",
4931
+ # "fromAmountEv": 4000000000,
4932
+ # "toAmountEv": 41511,
4933
+ # "linkKey": "45c8ed8e-d3f4-472d-8262-e464e8c46247",
4934
+ # "status": 10
4935
+ # }
4936
+ #
4937
+ # fetchConvertTradeHistory
4938
+ #
4939
+ # {
4940
+ # "linkKey": "45c8ed8e-d3f4-472d-8262-e464e8c46247",
4941
+ # "createTime": 1739882294000,
4942
+ # "fromCurrency": "USDT",
4943
+ # "toCurrency": "BTC",
4944
+ # "fromAmountEv": 4000000000,
4945
+ # "toAmountEv": 41511,
4946
+ # "status": 10,
4947
+ # "conversionRate": 1037,
4948
+ # "errorCode": 0
4949
+ # }
4950
+ #
4951
+ quoteArgs = self.safe_dict(conversion, 'quoteArgs', {})
4952
+ requestTime = self.safe_integer(quoteArgs, 'requestAt')
4953
+ timestamp = self.safe_integer(conversion, 'createTime', requestTime)
4954
+ fromCoin = self.safe_string(conversion, 'fromCurrency', self.safe_string(fromCurrency, 'code'))
4955
+ fromCode = self.safe_currency_code(fromCoin, fromCurrency)
4956
+ toCoin = self.safe_string(conversion, 'toCurrency', self.safe_string(toCurrency, 'code'))
4957
+ toCode = self.safe_currency_code(toCoin, toCurrency)
4958
+ fromValueScale = self.safe_integer(fromCurrency, 'valueScale')
4959
+ toValueScale = self.safe_integer(toCurrency, 'valueScale')
4960
+ fromAmount = self.from_en(self.safe_string(conversion, 'fromAmountEv'), fromValueScale)
4961
+ if fromAmount is None and quoteArgs is not None:
4962
+ fromAmount = self.from_en(self.safe_string(quoteArgs, 'origin'), fromValueScale)
4963
+ toAmount = self.from_en(self.safe_string(conversion, 'toAmountEv'), toValueScale)
4964
+ if toAmount is None and quoteArgs is not None:
4965
+ toAmount = self.from_en(self.safe_string(quoteArgs, 'proceeds'), toValueScale)
4966
+ return {
4967
+ 'info': conversion,
4968
+ 'timestamp': timestamp,
4969
+ 'datetime': self.iso8601(timestamp),
4970
+ 'id': self.safe_string(conversion, 'code'),
4971
+ 'fromCurrency': fromCode,
4972
+ 'fromAmount': self.parse_number(fromAmount),
4973
+ 'toCurrency': toCode,
4974
+ 'toAmount': self.parse_number(toAmount),
4975
+ 'price': self.safe_number(quoteArgs, 'price'),
4976
+ 'fee': None,
4977
+ }
4978
+
4763
4979
  def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
4764
4980
  if response is None:
4765
4981
  return None # fallback to default error handler
@@ -1150,6 +1150,7 @@ class whitebit(Exchange, ImplicitAPI):
1150
1150
  # "clientOrderId": "customId11",
1151
1151
  # "role": 2, # 1 = maker, 2 = taker
1152
1152
  # "deal": "0.00419198" # amount in money
1153
+ # "feeAsset": "USDT"
1153
1154
  # }
1154
1155
  #
1155
1156
  # fetchMyTrades
@@ -1165,6 +1166,7 @@ class whitebit(Exchange, ImplicitAPI):
1165
1166
  # "deal": "9.981007",
1166
1167
  # "fee": "0.009981007",
1167
1168
  # "orderId": 58166729555,
1169
+ # "feeAsset": "USDT"
1168
1170
  # }
1169
1171
  #
1170
1172
  market = self.safe_market(None, market)
@@ -1185,7 +1187,7 @@ class whitebit(Exchange, ImplicitAPI):
1185
1187
  if feeCost is not None:
1186
1188
  fee = {
1187
1189
  'cost': feeCost,
1188
- 'currency': market['quote'],
1190
+ 'currency': self.safe_currency_code(self.safe_string(trade, 'feeAsset')),
1189
1191
  }
1190
1192
  return self.safe_trade({
1191
1193
  'info': trade,