ccxt 4.2.79__tar.gz → 4.2.80__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 (542) hide show
  1. {ccxt-4.2.79/ccxt.egg-info → ccxt-4.2.80}/PKG-INFO +4 -4
  2. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/__init__.py +1 -1
  3. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/upbit.py +1 -0
  4. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/exchange.py +10 -1
  6. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/binance.py +3 -3
  7. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/deribit.py +152 -1
  8. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/gate.py +10 -5
  9. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/hyperliquid.py +42 -9
  10. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/mexc.py +2 -2
  11. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/upbit.py +2 -0
  12. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/exchange.py +34 -5
  13. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/types.py +23 -0
  14. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/binance.py +3 -3
  15. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/deribit.py +152 -1
  16. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/gate.py +10 -5
  17. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/hyperliquid.py +42 -9
  18. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/mexc.py +2 -2
  19. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/__init__.py +1 -1
  20. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/binance.py +5 -5
  21. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitopro.py +2 -1
  22. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/gemini.py +4 -3
  23. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/phemex.py +6 -1
  24. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_ohlcv.py +3 -2
  25. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_shared_methods.py +8 -0
  26. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_ticker.py +7 -1
  27. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/test_async.py +26 -25
  28. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/test_sync.py +26 -25
  29. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/upbit.py +2 -0
  30. {ccxt-4.2.79 → ccxt-4.2.80/ccxt.egg-info}/PKG-INFO +4 -4
  31. {ccxt-4.2.79 → ccxt-4.2.80}/package.json +1 -1
  32. {ccxt-4.2.79 → ccxt-4.2.80}/LICENSE.txt +0 -0
  33. {ccxt-4.2.79 → ccxt-4.2.80}/MANIFEST.in +0 -0
  34. {ccxt-4.2.79 → ccxt-4.2.80}/README.rst +0 -0
  35. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/__init__.py +0 -0
  36. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/ace.py +0 -0
  37. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/alpaca.py +0 -0
  38. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/ascendex.py +0 -0
  39. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bequant.py +0 -0
  40. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bigone.py +0 -0
  41. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/binance.py +0 -0
  42. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/binancecoinm.py +0 -0
  43. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/binanceus.py +0 -0
  44. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/binanceusdm.py +0 -0
  45. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bingx.py +0 -0
  46. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bit2c.py +0 -0
  47. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitbank.py +0 -0
  48. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitbay.py +0 -0
  49. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitbns.py +0 -0
  50. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitcoincom.py +0 -0
  51. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitfinex.py +0 -0
  52. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitfinex2.py +0 -0
  53. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitflyer.py +0 -0
  54. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitget.py +0 -0
  55. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bithumb.py +0 -0
  56. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitmart.py +0 -0
  57. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitmex.py +0 -0
  58. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitopro.py +0 -0
  59. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitpanda.py +0 -0
  60. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitrue.py +0 -0
  61. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitso.py +0 -0
  62. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitstamp.py +0 -0
  63. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitteam.py +0 -0
  64. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bitvavo.py +0 -0
  65. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bl3p.py +0 -0
  66. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/blockchaincom.py +0 -0
  67. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/blofin.py +0 -0
  68. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/btcalpha.py +0 -0
  69. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/btcbox.py +0 -0
  70. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/btcmarkets.py +0 -0
  71. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/btcturk.py +0 -0
  72. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/bybit.py +0 -0
  73. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/cex.py +0 -0
  74. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinbase.py +0 -0
  75. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinbaseinternational.py +0 -0
  76. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinbasepro.py +0 -0
  77. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coincheck.py +0 -0
  78. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinex.py +0 -0
  79. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinlist.py +0 -0
  80. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinmate.py +0 -0
  81. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinmetro.py +0 -0
  82. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinone.py +0 -0
  83. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinsph.py +0 -0
  84. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/coinspot.py +0 -0
  85. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/cryptocom.py +0 -0
  86. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/currencycom.py +0 -0
  87. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/delta.py +0 -0
  88. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/deribit.py +0 -0
  89. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/digifinex.py +0 -0
  90. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/exmo.py +0 -0
  91. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/fmfwio.py +0 -0
  92. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/gate.py +0 -0
  93. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/gateio.py +0 -0
  94. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/gemini.py +0 -0
  95. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/hitbtc.py +0 -0
  96. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/hitbtc3.py +0 -0
  97. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/hollaex.py +0 -0
  98. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/htx.py +0 -0
  99. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/huobi.py +0 -0
  100. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/huobijp.py +0 -0
  101. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/hyperliquid.py +0 -0
  102. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/idex.py +0 -0
  103. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/independentreserve.py +0 -0
  104. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/indodax.py +0 -0
  105. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/kraken.py +0 -0
  106. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/krakenfutures.py +0 -0
  107. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/kucoin.py +0 -0
  108. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/kucoinfutures.py +0 -0
  109. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/kuna.py +0 -0
  110. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/latoken.py +0 -0
  111. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/lbank.py +0 -0
  112. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/luno.py +0 -0
  113. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/lykke.py +0 -0
  114. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/mercado.py +0 -0
  115. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/mexc.py +0 -0
  116. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/ndax.py +0 -0
  117. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/novadax.py +0 -0
  118. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/oceanex.py +0 -0
  119. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/okcoin.py +0 -0
  120. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/okx.py +0 -0
  121. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/onetrading.py +0 -0
  122. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/p2b.py +0 -0
  123. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/paymium.py +0 -0
  124. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/phemex.py +0 -0
  125. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/poloniex.py +0 -0
  126. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/poloniexfutures.py +0 -0
  127. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/probit.py +0 -0
  128. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/timex.py +0 -0
  129. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/tokocrypto.py +0 -0
  130. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/tradeogre.py +0 -0
  131. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/wavesexchange.py +0 -0
  132. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/wazirx.py +0 -0
  133. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/whitebit.py +0 -0
  134. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/woo.py +0 -0
  135. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/yobit.py +0 -0
  136. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/zaif.py +0 -0
  137. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/abstract/zonda.py +0 -0
  138. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/ace.py +0 -0
  139. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/alpaca.py +0 -0
  140. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/ascendex.py +0 -0
  141. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/ace.py +0 -0
  142. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/alpaca.py +0 -0
  143. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/ascendex.py +0 -0
  144. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/__init__.py +0 -0
  145. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/throttler.py +0 -0
  146. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/__init__.py +0 -0
  147. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  148. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/cache.py +0 -0
  149. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/client.py +0 -0
  150. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/fast_client.py +0 -0
  151. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/functions.py +0 -0
  152. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/future.py +0 -0
  153. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/order_book.py +0 -0
  154. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  155. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bequant.py +0 -0
  156. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bigone.py +0 -0
  157. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/binancecoinm.py +0 -0
  158. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/binanceus.py +0 -0
  159. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/binanceusdm.py +0 -0
  160. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bingx.py +0 -0
  161. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bit2c.py +0 -0
  162. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitbank.py +0 -0
  163. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitbay.py +0 -0
  164. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitbns.py +0 -0
  165. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitcoincom.py +0 -0
  166. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitfinex.py +0 -0
  167. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitfinex2.py +0 -0
  168. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitflyer.py +0 -0
  169. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitget.py +0 -0
  170. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bithumb.py +0 -0
  171. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitmart.py +0 -0
  172. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitmex.py +0 -0
  173. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitopro.py +0 -0
  174. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitpanda.py +0 -0
  175. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitrue.py +0 -0
  176. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitso.py +0 -0
  177. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitstamp.py +0 -0
  178. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitteam.py +0 -0
  179. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bitvavo.py +0 -0
  180. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bl3p.py +0 -0
  181. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/blockchaincom.py +0 -0
  182. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/blofin.py +0 -0
  183. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/btcalpha.py +0 -0
  184. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/btcbox.py +0 -0
  185. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/btcmarkets.py +0 -0
  186. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/btcturk.py +0 -0
  187. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/bybit.py +0 -0
  188. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/cex.py +0 -0
  189. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinbase.py +0 -0
  190. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinbaseinternational.py +0 -0
  191. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinbasepro.py +0 -0
  192. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coincheck.py +0 -0
  193. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinex.py +0 -0
  194. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinlist.py +0 -0
  195. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinmate.py +0 -0
  196. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinmetro.py +0 -0
  197. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinone.py +0 -0
  198. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinsph.py +0 -0
  199. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/coinspot.py +0 -0
  200. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/cryptocom.py +0 -0
  201. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/currencycom.py +0 -0
  202. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/delta.py +0 -0
  203. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/digifinex.py +0 -0
  204. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/exmo.py +0 -0
  205. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/flowbtc.py +0 -0
  206. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/fmfwio.py +0 -0
  207. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/gateio.py +0 -0
  208. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/gemini.py +0 -0
  209. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/hitbtc.py +0 -0
  210. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/hitbtc3.py +0 -0
  211. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/hollaex.py +0 -0
  212. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/htx.py +0 -0
  213. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/huobi.py +0 -0
  214. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/huobijp.py +0 -0
  215. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/idex.py +0 -0
  216. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/independentreserve.py +0 -0
  217. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/indodax.py +0 -0
  218. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/kraken.py +0 -0
  219. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/krakenfutures.py +0 -0
  220. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/kucoin.py +0 -0
  221. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/kucoinfutures.py +0 -0
  222. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/kuna.py +0 -0
  223. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/latoken.py +0 -0
  224. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/lbank.py +0 -0
  225. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/luno.py +0 -0
  226. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/lykke.py +0 -0
  227. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/mercado.py +0 -0
  228. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/ndax.py +0 -0
  229. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/novadax.py +0 -0
  230. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/oceanex.py +0 -0
  231. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/okcoin.py +0 -0
  232. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/okx.py +0 -0
  233. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/onetrading.py +0 -0
  234. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/p2b.py +0 -0
  235. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/paymium.py +0 -0
  236. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/phemex.py +0 -0
  237. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/poloniex.py +0 -0
  238. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/poloniexfutures.py +0 -0
  239. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/probit.py +0 -0
  240. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/timex.py +0 -0
  241. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/tokocrypto.py +0 -0
  242. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/tradeogre.py +0 -0
  243. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/wavesexchange.py +0 -0
  244. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/wazirx.py +0 -0
  245. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/whitebit.py +0 -0
  246. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/woo.py +0 -0
  247. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/yobit.py +0 -0
  248. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/zaif.py +0 -0
  249. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/async_support/zonda.py +0 -0
  250. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/__init__.py +0 -0
  251. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/decimal_to_precision.py +0 -0
  252. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/errors.py +0 -0
  253. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/base/precise.py +0 -0
  254. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bequant.py +0 -0
  255. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bigone.py +0 -0
  256. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/binancecoinm.py +0 -0
  257. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/binanceus.py +0 -0
  258. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/binanceusdm.py +0 -0
  259. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bingx.py +0 -0
  260. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bit2c.py +0 -0
  261. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitbank.py +0 -0
  262. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitbay.py +0 -0
  263. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitbns.py +0 -0
  264. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitcoincom.py +0 -0
  265. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitfinex.py +0 -0
  266. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitfinex2.py +0 -0
  267. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitflyer.py +0 -0
  268. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitget.py +0 -0
  269. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bithumb.py +0 -0
  270. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitmart.py +0 -0
  271. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitmex.py +0 -0
  272. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitopro.py +0 -0
  273. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitpanda.py +0 -0
  274. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitrue.py +0 -0
  275. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitso.py +0 -0
  276. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitstamp.py +0 -0
  277. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitteam.py +0 -0
  278. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bitvavo.py +0 -0
  279. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bl3p.py +0 -0
  280. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/blockchaincom.py +0 -0
  281. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/blofin.py +0 -0
  282. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/btcalpha.py +0 -0
  283. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/btcbox.py +0 -0
  284. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/btcmarkets.py +0 -0
  285. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/btcturk.py +0 -0
  286. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/bybit.py +0 -0
  287. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/cex.py +0 -0
  288. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinbase.py +0 -0
  289. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinbaseinternational.py +0 -0
  290. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinbasepro.py +0 -0
  291. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coincheck.py +0 -0
  292. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinex.py +0 -0
  293. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinlist.py +0 -0
  294. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinmate.py +0 -0
  295. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinmetro.py +0 -0
  296. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinone.py +0 -0
  297. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinsph.py +0 -0
  298. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/coinspot.py +0 -0
  299. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/cryptocom.py +0 -0
  300. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/currencycom.py +0 -0
  301. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/delta.py +0 -0
  302. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/digifinex.py +0 -0
  303. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/exmo.py +0 -0
  304. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/flowbtc.py +0 -0
  305. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/fmfwio.py +0 -0
  306. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/gateio.py +0 -0
  307. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/gemini.py +0 -0
  308. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/hitbtc.py +0 -0
  309. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/hitbtc3.py +0 -0
  310. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/hollaex.py +0 -0
  311. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/htx.py +0 -0
  312. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/huobi.py +0 -0
  313. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/huobijp.py +0 -0
  314. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/idex.py +0 -0
  315. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/independentreserve.py +0 -0
  316. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/indodax.py +0 -0
  317. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/kraken.py +0 -0
  318. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/krakenfutures.py +0 -0
  319. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/kucoin.py +0 -0
  320. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/kucoinfutures.py +0 -0
  321. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/kuna.py +0 -0
  322. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/latoken.py +0 -0
  323. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/lbank.py +0 -0
  324. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/luno.py +0 -0
  325. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/lykke.py +0 -0
  326. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/mercado.py +0 -0
  327. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/ndax.py +0 -0
  328. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/novadax.py +0 -0
  329. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/oceanex.py +0 -0
  330. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/okcoin.py +0 -0
  331. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/okx.py +0 -0
  332. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/onetrading.py +0 -0
  333. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/p2b.py +0 -0
  334. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/paymium.py +0 -0
  335. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/phemex.py +0 -0
  336. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/poloniex.py +0 -0
  337. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/poloniexfutures.py +0 -0
  338. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/alpaca.py +0 -0
  339. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/ascendex.py +0 -0
  340. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bequant.py +0 -0
  341. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/binancecoinm.py +0 -0
  342. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/binanceus.py +0 -0
  343. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/binanceusdm.py +0 -0
  344. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bingx.py +0 -0
  345. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitcoincom.py +0 -0
  346. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitfinex.py +0 -0
  347. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitfinex2.py +0 -0
  348. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitget.py +0 -0
  349. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitmart.py +0 -0
  350. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitmex.py +0 -0
  351. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitpanda.py +0 -0
  352. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitrue.py +0 -0
  353. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitstamp.py +0 -0
  354. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bitvavo.py +0 -0
  355. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/blockchaincom.py +0 -0
  356. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/bybit.py +0 -0
  357. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/cex.py +0 -0
  358. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coinbase.py +0 -0
  359. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coinbaseinternational.py +0 -0
  360. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coinbasepro.py +0 -0
  361. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coincheck.py +0 -0
  362. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coinex.py +0 -0
  363. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/coinone.py +0 -0
  364. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/cryptocom.py +0 -0
  365. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/currencycom.py +0 -0
  366. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/deribit.py +0 -0
  367. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/exmo.py +0 -0
  368. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/gate.py +0 -0
  369. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/gateio.py +0 -0
  370. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/hitbtc.py +0 -0
  371. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/hollaex.py +0 -0
  372. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/htx.py +0 -0
  373. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/huobi.py +0 -0
  374. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/huobijp.py +0 -0
  375. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/hyperliquid.py +0 -0
  376. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/idex.py +0 -0
  377. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/independentreserve.py +0 -0
  378. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/kraken.py +0 -0
  379. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/krakenfutures.py +0 -0
  380. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/kucoin.py +0 -0
  381. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/kucoinfutures.py +0 -0
  382. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/lbank.py +0 -0
  383. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/luno.py +0 -0
  384. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/mexc.py +0 -0
  385. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/ndax.py +0 -0
  386. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/okcoin.py +0 -0
  387. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/okx.py +0 -0
  388. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/onetrading.py +0 -0
  389. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/p2b.py +0 -0
  390. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/poloniex.py +0 -0
  391. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/poloniexfutures.py +0 -0
  392. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/probit.py +0 -0
  393. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/upbit.py +0 -0
  394. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/wazirx.py +0 -0
  395. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/whitebit.py +0 -0
  396. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/pro/woo.py +0 -0
  397. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/probit.py +0 -0
  398. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/__init__.py +0 -0
  399. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  400. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  401. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  402. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  403. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  404. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  405. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  406. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  407. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  408. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  409. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  410. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  411. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  412. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  413. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  414. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  415. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  416. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  417. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  418. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  419. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  420. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  421. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  422. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  423. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  424. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  425. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  426. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  427. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  428. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  429. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  430. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  431. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  432. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  433. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  434. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  435. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  436. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  437. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  438. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  439. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  440. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  441. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  442. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  443. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  444. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  445. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  446. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  447. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  448. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  449. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  450. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  451. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  452. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  453. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  454. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  455. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  456. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  457. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  458. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  459. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  460. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  461. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  462. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  463. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  464. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  465. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  466. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  467. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  468. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  469. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  470. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  471. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  472. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  473. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  474. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  475. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  476. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  477. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  478. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  479. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  480. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  481. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  482. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  483. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  484. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  485. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/_version.py +0 -0
  486. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  487. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  488. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  489. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  490. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  491. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  492. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  493. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  494. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/static_dependencies/toolz/utils.py +0 -0
  495. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/__init__.py +0 -0
  496. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/__init__.py +0 -0
  497. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_account.py +0 -0
  498. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_balance.py +0 -0
  499. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_borrow_interest.py +0 -0
  500. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_borrow_rate.py +0 -0
  501. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_calculate_fee.py +0 -0
  502. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_crypto.py +0 -0
  503. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_currency.py +0 -0
  504. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_datetime.py +0 -0
  505. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  506. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_deep_extend.py +0 -0
  507. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  508. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  509. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_funding_rate_history.py +0 -0
  510. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_last_price.py +0 -0
  511. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_ledger_entry.py +0 -0
  512. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_ledger_item.py +0 -0
  513. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_leverage_tier.py +0 -0
  514. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_margin_mode.py +0 -0
  515. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_margin_modification.py +0 -0
  516. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_market.py +0 -0
  517. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_number.py +0 -0
  518. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_open_interest.py +0 -0
  519. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_order.py +0 -0
  520. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_order_book.py +0 -0
  521. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_position.py +0 -0
  522. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_status.py +0 -0
  523. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_throttle.py +0 -0
  524. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_trade.py +0 -0
  525. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_trading_fee.py +0 -0
  526. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/test/base/test_transaction.py +0 -0
  527. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/timex.py +0 -0
  528. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/tokocrypto.py +0 -0
  529. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/tradeogre.py +0 -0
  530. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/wavesexchange.py +0 -0
  531. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/wazirx.py +0 -0
  532. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/whitebit.py +0 -0
  533. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/woo.py +0 -0
  534. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/yobit.py +0 -0
  535. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/zaif.py +0 -0
  536. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt/zonda.py +0 -0
  537. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt.egg-info/SOURCES.txt +0 -0
  538. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt.egg-info/dependency_links.txt +0 -0
  539. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt.egg-info/requires.txt +0 -0
  540. {ccxt-4.2.79 → ccxt-4.2.80}/ccxt.egg-info/top_level.txt +0 -0
  541. {ccxt-4.2.79 → ccxt-4.2.80}/setup.cfg +0 -0
  542. {ccxt-4.2.79 → ccxt-4.2.80}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.79
3
+ Version: 4.2.80
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
@@ -226,13 +226,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
226
226
 
227
227
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
228
228
 
229
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.79/dist/ccxt.browser.js
230
- * unpkg: https://unpkg.com/ccxt@4.2.79/dist/ccxt.browser.js
229
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.80/dist/ccxt.browser.js
230
+ * unpkg: https://unpkg.com/ccxt@4.2.80/dist/ccxt.browser.js
231
231
 
232
232
  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.
233
233
 
234
234
  ```HTML
235
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.79/dist/ccxt.browser.js"></script>
235
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.80/dist/ccxt.browser.js"></script>
236
236
  ```
237
237
 
238
238
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.79'
25
+ __version__ = '4.2.80'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -9,6 +9,7 @@ class ImplicitAPI:
9
9
  public_get_candles_minutes_1 = publicGetCandlesMinutes1 = Entry('candles/minutes/1', 'public', 'GET', {})
10
10
  public_get_candles_minutes_3 = publicGetCandlesMinutes3 = Entry('candles/minutes/3', 'public', 'GET', {})
11
11
  public_get_candles_minutes_5 = publicGetCandlesMinutes5 = Entry('candles/minutes/5', 'public', 'GET', {})
12
+ public_get_candles_minutes_10 = publicGetCandlesMinutes10 = Entry('candles/minutes/10', 'public', 'GET', {})
12
13
  public_get_candles_minutes_15 = publicGetCandlesMinutes15 = Entry('candles/minutes/15', 'public', 'GET', {})
13
14
  public_get_candles_minutes_30 = publicGetCandlesMinutes30 = Entry('candles/minutes/30', 'public', 'GET', {})
14
15
  public_get_candles_minutes_60 = publicGetCandlesMinutes60 = Entry('candles/minutes/60', 'public', 'GET', {})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.79'
7
+ __version__ = '4.2.80'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.79'
5
+ __version__ = '4.2.80'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -982,6 +982,9 @@ class Exchange(BaseExchange):
982
982
  async def fetch_order_books(self, symbols: List[str] = None, limit: Int = None, params={}):
983
983
  raise NotSupported(self.id + ' fetchOrderBooks() is not supported yet')
984
984
 
985
+ async def watch_bids_asks(self, symbols: List[str] = None, params={}):
986
+ raise NotSupported(self.id + ' watchBidsAsks() is not supported yet')
987
+
985
988
  async def watch_tickers(self, symbols: List[str] = None, params={}):
986
989
  raise NotSupported(self.id + ' watchTickers() is not supported yet')
987
990
 
@@ -1284,6 +1287,12 @@ class Exchange(BaseExchange):
1284
1287
  async def fetch_greeks(self, symbol: str, params={}):
1285
1288
  raise NotSupported(self.id + ' fetchGreeks() is not supported yet')
1286
1289
 
1290
+ async def fetch_option_chain(self, code: str, params={}):
1291
+ raise NotSupported(self.id + ' fetchOptionChain() is not supported yet')
1292
+
1293
+ async def fetch_option(self, symbol: str, params={}):
1294
+ raise NotSupported(self.id + ' fetchOption() is not supported yet')
1295
+
1287
1296
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1288
1297
  """
1289
1298
  fetch history of deposits and withdrawals
@@ -2423,13 +2423,13 @@ class binance(Exchange, ImplicitAPI):
2423
2423
  },
2424
2424
  })
2425
2425
 
2426
- def is_inverse(self, type, subType=None) -> bool:
2426
+ def is_inverse(self, type: str, subType: Str = None) -> bool:
2427
2427
  if subType is None:
2428
- return type == 'delivery'
2428
+ return(type == 'delivery')
2429
2429
  else:
2430
2430
  return subType == 'inverse'
2431
2431
 
2432
- def is_linear(self, type, subType=None) -> bool:
2432
+ def is_linear(self, type: str, subType: Str = None) -> bool:
2433
2433
  if subType is None:
2434
2434
  return(type == 'future') or (type == 'swap')
2435
2435
  else:
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.deribit import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Market, MarketInterface, Num, Option, OptionChain, 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 PermissionDenied
@@ -83,6 +83,8 @@ class deribit(Exchange, ImplicitAPI):
83
83
  'fetchMyTrades': True,
84
84
  'fetchOHLCV': True,
85
85
  'fetchOpenOrders': True,
86
+ 'fetchOption': True,
87
+ 'fetchOptionChain': True,
86
88
  'fetchOrder': True,
87
89
  'fetchOrderBook': True,
88
90
  'fetchOrders': False,
@@ -3270,6 +3272,155 @@ class deribit(Exchange, ImplicitAPI):
3270
3272
  'info': greeks,
3271
3273
  }
3272
3274
 
3275
+ async def fetch_option(self, symbol: str, params={}) -> Option:
3276
+ """
3277
+ fetches option data that is commonly found in an option chain
3278
+ :see: https://docs.deribit.com/#public-get_book_summary_by_instrument
3279
+ :param str symbol: unified market symbol
3280
+ :param dict [params]: extra parameters specific to the exchange API endpoint
3281
+ :returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
3282
+ """
3283
+ await self.load_markets()
3284
+ market = self.market(symbol)
3285
+ request = {
3286
+ 'instrument_name': market['id'],
3287
+ }
3288
+ response = await self.publicGetGetBookSummaryByInstrument(self.extend(request, params))
3289
+ #
3290
+ # {
3291
+ # "jsonrpc": "2.0",
3292
+ # "result": [
3293
+ # {
3294
+ # "mid_price": 0.04025,
3295
+ # "volume_usd": 11045.12,
3296
+ # "quote_currency": "BTC",
3297
+ # "estimated_delivery_price": 65444.72,
3298
+ # "creation_timestamp": 1711100949273,
3299
+ # "base_currency": "BTC",
3300
+ # "underlying_index": "BTC-27DEC24",
3301
+ # "underlying_price": 73742.14,
3302
+ # "volume": 4.0,
3303
+ # "interest_rate": 0.0,
3304
+ # "price_change": -6.9767,
3305
+ # "open_interest": 274.2,
3306
+ # "ask_price": 0.042,
3307
+ # "bid_price": 0.0385,
3308
+ # "instrument_name": "BTC-27DEC24-240000-C",
3309
+ # "mark_price": 0.04007735,
3310
+ # "last": 0.04,
3311
+ # "low": 0.04,
3312
+ # "high": 0.043
3313
+ # }
3314
+ # ],
3315
+ # "usIn": 1711100949273223,
3316
+ # "usOut": 1711100949273580,
3317
+ # "usDiff": 357,
3318
+ # "testnet": False
3319
+ # }
3320
+ #
3321
+ result = self.safe_list(response, 'result', [])
3322
+ chain = self.safe_dict(result, 0, {})
3323
+ return self.parse_option(chain, None, market)
3324
+
3325
+ async def fetch_option_chain(self, code: str, params={}) -> OptionChain:
3326
+ """
3327
+ fetches data for an underlying asset that is commonly found in an option chain
3328
+ :see: https://docs.deribit.com/#public-get_book_summary_by_currency
3329
+ :param str currency: base currency to fetch an option chain for
3330
+ :param dict [params]: extra parameters specific to the exchange API endpoint
3331
+ :returns dict: a list of `option chain structures <https://docs.ccxt.com/#/?id=option-chain-structure>`
3332
+ """
3333
+ await self.load_markets()
3334
+ currency = self.currency(code)
3335
+ request = {
3336
+ 'currency': currency['id'],
3337
+ 'kind': 'option',
3338
+ }
3339
+ response = await self.publicGetGetBookSummaryByCurrency(self.extend(request, params))
3340
+ #
3341
+ # {
3342
+ # "jsonrpc": "2.0",
3343
+ # "result": [
3344
+ # {
3345
+ # "mid_price": 0.4075,
3346
+ # "volume_usd": 2836.83,
3347
+ # "quote_currency": "BTC",
3348
+ # "estimated_delivery_price": 65479.26,
3349
+ # "creation_timestamp": 1711101594477,
3350
+ # "base_currency": "BTC",
3351
+ # "underlying_index": "BTC-28JUN24",
3352
+ # "underlying_price": 68827.27,
3353
+ # "volume": 0.1,
3354
+ # "interest_rate": 0.0,
3355
+ # "price_change": 0.0,
3356
+ # "open_interest": 364.1,
3357
+ # "ask_price": 0.411,
3358
+ # "bid_price": 0.404,
3359
+ # "instrument_name": "BTC-28JUN24-42000-C",
3360
+ # "mark_price": 0.40752052,
3361
+ # "last": 0.423,
3362
+ # "low": 0.423,
3363
+ # "high": 0.423
3364
+ # }
3365
+ # ],
3366
+ # "usIn": 1711101594456388,
3367
+ # "usOut": 1711101594484065,
3368
+ # "usDiff": 27677,
3369
+ # "testnet": False
3370
+ # }
3371
+ #
3372
+ result = self.safe_list(response, 'result', [])
3373
+ return self.parse_option_chain(result, 'base_currency', 'instrument_name')
3374
+
3375
+ def parse_option(self, chain, currency: Currency = None, market: Market = None):
3376
+ #
3377
+ # {
3378
+ # "mid_price": 0.04025,
3379
+ # "volume_usd": 11045.12,
3380
+ # "quote_currency": "BTC",
3381
+ # "estimated_delivery_price": 65444.72,
3382
+ # "creation_timestamp": 1711100949273,
3383
+ # "base_currency": "BTC",
3384
+ # "underlying_index": "BTC-27DEC24",
3385
+ # "underlying_price": 73742.14,
3386
+ # "volume": 4.0,
3387
+ # "interest_rate": 0.0,
3388
+ # "price_change": -6.9767,
3389
+ # "open_interest": 274.2,
3390
+ # "ask_price": 0.042,
3391
+ # "bid_price": 0.0385,
3392
+ # "instrument_name": "BTC-27DEC24-240000-C",
3393
+ # "mark_price": 0.04007735,
3394
+ # "last": 0.04,
3395
+ # "low": 0.04,
3396
+ # "high": 0.043
3397
+ # }
3398
+ #
3399
+ marketId = self.safe_string(chain, 'instrument_name')
3400
+ market = self.safe_market(marketId, market)
3401
+ currencyId = self.safe_string(chain, 'base_currency')
3402
+ code = self.safe_currency_code(currencyId, currency)
3403
+ timestamp = self.safe_integer(chain, 'timestamp')
3404
+ return {
3405
+ 'info': chain,
3406
+ 'currency': code['code'],
3407
+ 'symbol': market['symbol'],
3408
+ 'timestamp': timestamp,
3409
+ 'datetime': self.iso8601(timestamp),
3410
+ 'impliedVolatility': None,
3411
+ 'openInterest': self.safe_number(chain, 'open_interest'),
3412
+ 'bidPrice': self.safe_number(chain, 'bid_price'),
3413
+ 'askPrice': self.safe_number(chain, 'ask_price'),
3414
+ 'midPrice': self.safe_number(chain, 'mid_price'),
3415
+ 'markPrice': self.safe_number(chain, 'mark_price'),
3416
+ 'lastPrice': self.safe_number(chain, 'last'),
3417
+ 'underlyingPrice': self.safe_number(chain, 'underlying_price'),
3418
+ 'change': None,
3419
+ 'percentage': self.safe_number(chain, 'price_change'),
3420
+ 'baseVolume': self.safe_number(chain, 'volume'),
3421
+ 'quoteVolume': self.safe_number(chain, 'volume_usd'),
3422
+ }
3423
+
3273
3424
  def nonce(self):
3274
3425
  return self.milliseconds()
3275
3426
 
@@ -3960,8 +3960,13 @@ class gate(Exchange, ImplicitAPI):
3960
3960
  'account': account,
3961
3961
  }
3962
3962
  if amount is not None:
3963
- amountKey = 'amount' if (market['spot']) else 'size'
3964
- request[amountKey] = self.amount_to_precision(symbol, amount)
3963
+ if market['spot']:
3964
+ request['amount'] = self.amount_to_precision(symbol, amount)
3965
+ else:
3966
+ if side == 'sell':
3967
+ request['size'] = Precise.string_neg(self.amount_to_precision(symbol, amount))
3968
+ else:
3969
+ request['size'] = self.amount_to_precision(symbol, amount)
3965
3970
  if price is not None:
3966
3971
  request['price'] = self.price_to_precision(symbol, price)
3967
3972
  response = None
@@ -4691,8 +4696,8 @@ class gate(Exchange, ImplicitAPI):
4691
4696
  """
4692
4697
  await self.load_markets()
4693
4698
  market = None if (symbol is None) else self.market(symbol)
4694
- stop = self.safe_value(params, 'stop')
4695
- params = self.omit(params, 'stop')
4699
+ stop = self.safe_bool_2(params, 'stop', 'trigger')
4700
+ params = self.omit(params, ['stop', 'trigger'])
4696
4701
  type, query = self.handle_market_type_and_params('cancelAllOrders', market, params)
4697
4702
  request, requestParams = self.multi_order_spot_prepare_request(market, stop, query) if (type == 'spot') else self.prepare_request(market, type, query)
4698
4703
  response = None
@@ -4986,7 +4991,7 @@ class gate(Exchange, ImplicitAPI):
4986
4991
  'unrealizedPnl': self.parse_number(unrealisedPnl),
4987
4992
  'realizedPnl': self.safe_number(position, 'realised_pnl'),
4988
4993
  'contracts': self.parse_number(Precise.string_abs(size)),
4989
- 'contractSize': self.safe_value(market, 'contractSize'),
4994
+ 'contractSize': self.safe_number(market, 'contractSize'),
4990
4995
  # 'realisedPnl': position['realised_pnl'],
4991
4996
  'marginRatio': None,
4992
4997
  'liquidationPrice': self.safe_number(position, 'liq_price'),
@@ -754,6 +754,8 @@ class hyperliquid(Exchange, ImplicitAPI):
754
754
  """
755
755
  await self.load_markets()
756
756
  market = self.market(symbol)
757
+ vaultAddress = self.safe_string(params, 'vaultAddress')
758
+ params = self.omit(params, 'vaultAddress')
757
759
  symbol = market['symbol']
758
760
  order = {
759
761
  'symbol': symbol,
@@ -763,7 +765,10 @@ class hyperliquid(Exchange, ImplicitAPI):
763
765
  'price': price,
764
766
  'params': params,
765
767
  }
766
- response = await self.create_orders([order], params)
768
+ globalParams = {}
769
+ if vaultAddress is not None:
770
+ globalParams['vaultAddress'] = vaultAddress
771
+ response = await self.create_orders([order], globalParams)
767
772
  first = self.safe_dict(response, 0)
768
773
  return first
769
774
 
@@ -807,7 +812,6 @@ class hyperliquid(Exchange, ImplicitAPI):
807
812
  amount = self.safe_string(rawOrder, 'amount')
808
813
  price = self.safe_string(rawOrder, 'price')
809
814
  orderParams = self.safe_dict(rawOrder, 'params', {})
810
- orderParams = self.extend(params, orderParams)
811
815
  clientOrderId = self.safe_string_2(orderParams, 'clientOrderId', 'client_id')
812
816
  slippage = self.safe_string(orderParams, 'slippage', defaultSlippage)
813
817
  defaultTimeInForce = 'ioc' if (isMarket) else 'gtc'
@@ -847,6 +851,7 @@ class hyperliquid(Exchange, ImplicitAPI):
847
851
  orderType['limit'] = {
848
852
  'tif': timeInForce,
849
853
  }
854
+ orderParams = self.omit(orderParams, ['clientOrderId', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce', 'client_id'])
850
855
  orderObj = {
851
856
  'a': self.parse_to_int(market['baseId']),
852
857
  'b': isBuy,
@@ -858,8 +863,8 @@ class hyperliquid(Exchange, ImplicitAPI):
858
863
  }
859
864
  if clientOrderId is not None:
860
865
  orderObj['c'] = clientOrderId
861
- orderReq.append(orderObj)
862
- vaultAddress = self.safe_string(params, 'vaultAddress')
866
+ orderReq.append(self.extend(orderObj, orderParams))
867
+ vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
863
868
  orderAction = {
864
869
  'type': 'order',
865
870
  'orders': orderReq,
@@ -875,6 +880,9 @@ class hyperliquid(Exchange, ImplicitAPI):
875
880
  'signature': signature,
876
881
  # 'vaultAddress': vaultAddress,
877
882
  }
883
+ if vaultAddress is not None:
884
+ params = self.omit(params, 'vaultAddress')
885
+ request['vaultAddress'] = vaultAddress
878
886
  response = await self.privatePostExchange(self.extend(request, params))
879
887
  #
880
888
  # {
@@ -957,10 +965,13 @@ class hyperliquid(Exchange, ImplicitAPI):
957
965
  'o': self.parse_to_numeric(ids[i]),
958
966
  })
959
967
  cancelAction['cancels'] = cancelReq
960
- vaultAddress = self.safe_string(params, 'vaultAddress')
968
+ vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
961
969
  signature = self.sign_l1_action(cancelAction, nonce, vaultAddress)
962
970
  request['action'] = cancelAction
963
971
  request['signature'] = signature
972
+ if vaultAddress is not None:
973
+ params = self.omit(params, 'vaultAddress')
974
+ request['vaultAddress'] = vaultAddress
964
975
  response = await self.privatePostExchange(self.extend(request, params))
965
976
  #
966
977
  # {
@@ -1066,7 +1077,7 @@ class hyperliquid(Exchange, ImplicitAPI):
1066
1077
  'type': 'batchModify',
1067
1078
  'modifies': [modifyReq],
1068
1079
  }
1069
- vaultAddress = self.safe_string(params, 'vaultAddress')
1080
+ vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
1070
1081
  signature = self.sign_l1_action(modifyAction, nonce, vaultAddress)
1071
1082
  request = {
1072
1083
  'action': modifyAction,
@@ -1074,6 +1085,9 @@ class hyperliquid(Exchange, ImplicitAPI):
1074
1085
  'signature': signature,
1075
1086
  # 'vaultAddress': vaultAddress,
1076
1087
  }
1088
+ if vaultAddress is not None:
1089
+ params = self.omit(params, 'vaultAddress')
1090
+ request['vaultAddress'] = vaultAddress
1077
1091
  response = await self.privatePostExchange(self.extend(request, params))
1078
1092
  #
1079
1093
  # {
@@ -1643,7 +1657,7 @@ class hyperliquid(Exchange, ImplicitAPI):
1643
1657
  'isolated': isIsolated,
1644
1658
  'hedged': None,
1645
1659
  'side': side,
1646
- 'contracts': self.parse_number(quantity),
1660
+ 'contracts': self.safe_number(entry, 'szi'),
1647
1661
  'contractSize': None,
1648
1662
  'entryPrice': self.safe_number(entry, 'entryPx'),
1649
1663
  'markPrice': None,
@@ -1687,6 +1701,10 @@ class hyperliquid(Exchange, ImplicitAPI):
1687
1701
  'leverage': leverage,
1688
1702
  }
1689
1703
  vaultAddress = self.safe_string(params, 'vaultAddress')
1704
+ if vaultAddress is not None:
1705
+ params = self.omit(params, 'vaultAddress')
1706
+ if vaultAddress.startswith('0x'):
1707
+ vaultAddress = vaultAddress.replace('0x', '')
1690
1708
  signature = self.sign_l1_action(updateAction, nonce, vaultAddress)
1691
1709
  request = {
1692
1710
  'action': updateAction,
@@ -1694,6 +1712,8 @@ class hyperliquid(Exchange, ImplicitAPI):
1694
1712
  'signature': signature,
1695
1713
  # 'vaultAddress': vaultAddress,
1696
1714
  }
1715
+ if vaultAddress is not None:
1716
+ request['vaultAddress'] = vaultAddress
1697
1717
  response = await self.privatePostExchange(self.extend(request, params))
1698
1718
  #
1699
1719
  # {
@@ -1729,7 +1749,7 @@ class hyperliquid(Exchange, ImplicitAPI):
1729
1749
  'isCross': isCross,
1730
1750
  'leverage': leverage,
1731
1751
  }
1732
- vaultAddress = self.safe_string(params, 'vaultAddress')
1752
+ vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
1733
1753
  signature = self.sign_l1_action(updateAction, nonce, vaultAddress)
1734
1754
  request = {
1735
1755
  'action': updateAction,
@@ -1737,6 +1757,9 @@ class hyperliquid(Exchange, ImplicitAPI):
1737
1757
  'signature': signature,
1738
1758
  # 'vaultAddress': vaultAddress,
1739
1759
  }
1760
+ if vaultAddress is not None:
1761
+ params = self.omit(params, 'vaultAddress')
1762
+ request['vaultAddress'] = vaultAddress
1740
1763
  response = await self.privatePostExchange(self.extend(request, params))
1741
1764
  #
1742
1765
  # {
@@ -1784,7 +1807,7 @@ class hyperliquid(Exchange, ImplicitAPI):
1784
1807
  'isBuy': True,
1785
1808
  'ntli': sz,
1786
1809
  }
1787
- vaultAddress = self.safe_string(params, 'vaultAddress')
1810
+ vaultAddress = self.format_vault_address(self.safe_string(params, 'vaultAddress'))
1788
1811
  signature = self.sign_l1_action(updateAction, nonce, vaultAddress)
1789
1812
  request = {
1790
1813
  'action': updateAction,
@@ -1792,6 +1815,9 @@ class hyperliquid(Exchange, ImplicitAPI):
1792
1815
  'signature': signature,
1793
1816
  # 'vaultAddress': vaultAddress,
1794
1817
  }
1818
+ if vaultAddress is not None:
1819
+ params = self.omit(params, 'vaultAddress')
1820
+ request['vaultAddress'] = vaultAddress
1795
1821
  response = await self.privatePostExchange(self.extend(request, params))
1796
1822
  #
1797
1823
  # {
@@ -1882,6 +1908,13 @@ class hyperliquid(Exchange, ImplicitAPI):
1882
1908
  response = await self.privatePostExchange(self.extend(request, params))
1883
1909
  return response
1884
1910
 
1911
+ def format_vault_address(self, address: Str = None):
1912
+ if address is None:
1913
+ return None
1914
+ if address.startswith('0x'):
1915
+ return address.replace('0x', '')
1916
+ return address
1917
+
1885
1918
  def handle_public_address(self, methodName: str, params: dict):
1886
1919
  userAux = None
1887
1920
  userAux, params = self.handle_option_and_params(params, methodName, 'user')
@@ -899,8 +899,8 @@ class mexc(Exchange, ImplicitAPI):
899
899
  '30032': InvalidOrder, # Cannot exceed the maximum position
900
900
  '30041': InvalidOrder, # current order type can not place order
901
901
  '60005': ExchangeError, # your account is abnormal
902
- '700001': AuthenticationError, # API-key format invalid
903
- '700002': AuthenticationError, # Signature for self request is not valid
902
+ '700001': AuthenticationError, # {"code":700002,"msg":"Signature for self request is not valid."} # same message for expired API keys
903
+ '700002': AuthenticationError, # Signature for self request is not valid # or the API secret is incorrect
904
904
  '700004': BadRequest, # Param 'origClientOrderId' or 'orderId' must be sent, but both were empty/null
905
905
  '700005': InvalidNonce, # recvWindow must less than 60000
906
906
  '700006': BadRequest, # IP non white list
@@ -85,6 +85,7 @@ class upbit(Exchange, ImplicitAPI):
85
85
  '1m': 'minutes',
86
86
  '3m': 'minutes',
87
87
  '5m': 'minutes',
88
+ '10m': 'minutes',
88
89
  '15m': 'minutes',
89
90
  '30m': 'minutes',
90
91
  '1h': 'minutes',
@@ -114,6 +115,7 @@ class upbit(Exchange, ImplicitAPI):
114
115
  'candles/minutes/1',
115
116
  'candles/minutes/3',
116
117
  'candles/minutes/5',
118
+ 'candles/minutes/10',
117
119
  'candles/minutes/15',
118
120
  'candles/minutes/30',
119
121
  'candles/minutes/60',
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.79'
7
+ __version__ = '4.2.80'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -31,7 +31,7 @@ from ccxt.base.decimal_to_precision import decimal_to_precision
31
31
  from ccxt.base.decimal_to_precision import DECIMAL_PLACES, TICK_SIZE, NO_PADDING, TRUNCATE, ROUND, ROUND_UP, ROUND_DOWN, SIGNIFICANT_DIGITS
32
32
  from ccxt.base.decimal_to_precision import number_to_string
33
33
  from ccxt.base.precise import Precise
34
- from ccxt.base.types import BalanceAccount, Currency, IndexType, OrderSide, OrderType, Trade, OrderRequest, Market, MarketType, Str, Num
34
+ from ccxt.base.types import BalanceAccount, Currency, IndexType, OrderSide, OrderType, Trade, OrderRequest, Market, MarketType, Str, Num, Strings
35
35
 
36
36
  # -----------------------------------------------------------------------------
37
37
 
@@ -1728,6 +1728,12 @@ class Exchange(object):
1728
1728
  modifiedContent = modifiedContent.replace('}"', '}')
1729
1729
  return modifiedContent
1730
1730
 
1731
+ def extend_exchange_options(self, newOptions):
1732
+ self.options = self.extend(self.options, newOptions)
1733
+
1734
+ def create_safe_dictionary(self):
1735
+ return {}
1736
+
1731
1737
  # ########################################################################
1732
1738
  # ########################################################################
1733
1739
  # ########################################################################
@@ -3187,7 +3193,7 @@ class Exchange(object):
3187
3193
  else:
3188
3194
  raise BadResponse(errorMessage)
3189
3195
 
3190
- def market_ids(self, symbols):
3196
+ def market_ids(self, symbols: Strings = None):
3191
3197
  if symbols is None:
3192
3198
  return symbols
3193
3199
  result = []
@@ -3195,7 +3201,7 @@ class Exchange(object):
3195
3201
  result.append(self.market_id(symbols[i]))
3196
3202
  return result
3197
3203
 
3198
- def market_symbols(self, symbols, type: Str = None, allowEmpty=True, sameTypeOnly=False, sameSubTypeOnly=False):
3204
+ def market_symbols(self, symbols: Strings = None, type: Str = None, allowEmpty=True, sameTypeOnly=False, sameSubTypeOnly=False):
3199
3205
  if symbols is None:
3200
3206
  if not allowEmpty:
3201
3207
  raise ArgumentsRequired(self.id + ' empty list of symbols is not supported')
@@ -3225,7 +3231,7 @@ class Exchange(object):
3225
3231
  result.append(symbol)
3226
3232
  return result
3227
3233
 
3228
- def market_codes(self, codes):
3234
+ def market_codes(self, codes: Strings = None):
3229
3235
  if codes is None:
3230
3236
  return codes
3231
3237
  result = []
@@ -4025,6 +4031,9 @@ class Exchange(object):
4025
4031
  def fetch_order_books(self, symbols: List[str] = None, limit: Int = None, params={}):
4026
4032
  raise NotSupported(self.id + ' fetchOrderBooks() is not supported yet')
4027
4033
 
4034
+ def watch_bids_asks(self, symbols: List[str] = None, params={}):
4035
+ raise NotSupported(self.id + ' watchBidsAsks() is not supported yet')
4036
+
4028
4037
  def watch_tickers(self, symbols: List[str] = None, params={}):
4029
4038
  raise NotSupported(self.id + ' watchTickers() is not supported yet')
4030
4039
 
@@ -4327,6 +4336,12 @@ class Exchange(object):
4327
4336
  def fetch_greeks(self, symbol: str, params={}):
4328
4337
  raise NotSupported(self.id + ' fetchGreeks() is not supported yet')
4329
4338
 
4339
+ def fetch_option_chain(self, code: str, params={}):
4340
+ raise NotSupported(self.id + ' fetchOptionChain() is not supported yet')
4341
+
4342
+ def fetch_option(self, symbol: str, params={}):
4343
+ raise NotSupported(self.id + ' fetchOption() is not supported yet')
4344
+
4330
4345
  def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
4331
4346
  """
4332
4347
  fetch history of deposits and withdrawals
@@ -5324,6 +5339,20 @@ class Exchange(object):
5324
5339
  def parse_greeks(self, greeks, market: Market = None):
5325
5340
  raise NotSupported(self.id + ' parseGreeks() is not supported yet')
5326
5341
 
5342
+ def parse_option(self, chain, currency: Currency = None, market: Market = None):
5343
+ raise NotSupported(self.id + ' parseOption() is not supported yet')
5344
+
5345
+ def parse_option_chain(self, response: List[object], currencyKey: Str = None, symbolKey: Str = None):
5346
+ optionStructures = {}
5347
+ for i in range(0, len(response)):
5348
+ info = response[i]
5349
+ currencyId = self.safe_string(info, currencyKey)
5350
+ currency = self.safe_currency(currencyId)
5351
+ marketId = self.safe_string(info, symbolKey)
5352
+ market = self.safe_market(marketId, None, None, 'option')
5353
+ optionStructures[market['symbol']] = self.parseOption(info, currency, market)
5354
+ return optionStructures
5355
+
5327
5356
  def parse_margin_modes(self, response: List[object], symbols: List[str] = None, symbolKey: Str = None, marketType: MarketType = None):
5328
5357
  marginModeStructures = {}
5329
5358
  for i in range(0, len(response)):
@@ -53,6 +53,7 @@ Strings = Optional[List[str]]
53
53
  Int = Optional[int]
54
54
  Bool = Optional[bool]
55
55
  MarketType = Literal['spot', 'margin', 'swap', 'future', 'option']
56
+ SubType = Literal['linear', 'inverse']
56
57
 
57
58
 
58
59
  class FeeInterface(TypedDict):
@@ -301,6 +302,28 @@ class Greeks(TypedDict):
301
302
  info: Dict[str, Any]
302
303
 
303
304
 
305
+ class Option(TypedDict):
306
+ info: Dict[str, Any]
307
+ currency: Str
308
+ symbol: Str
309
+ timestamp: Int
310
+ datetime: Str
311
+ impliedVolatility: Num
312
+ openInterest: Num
313
+ bidPrice: Num
314
+ askPrice: Num
315
+ midPrice: Num
316
+ markPrice: Num
317
+ lastPrice: Num
318
+ underlyingPrice: Num
319
+ change: Num
320
+ percentage: Num
321
+ baseVolume: Num
322
+ quoteVolume: Num
323
+
324
+
325
+ OptionChain = Dict[str, Option]
326
+
304
327
  class MarketInterface(TypedDict):
305
328
  info: Dict[str, Any]
306
329
  id: Str