ccxt 4.4.11__tar.gz → 4.4.12__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 (664) hide show
  1. {ccxt-4.4.11/ccxt.egg-info → ccxt-4.4.12}/PKG-INFO +4 -4
  2. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/__init__.py +1 -1
  3. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/binance.py +10 -2
  6. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bingx.py +15 -2
  7. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitget.py +1 -0
  8. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bybit.py +2 -1
  9. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/htx.py +6 -0
  10. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/kraken.py +4 -4
  11. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/mexc.py +16 -4
  12. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/okx.py +15 -20
  13. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/phemex.py +10 -3
  14. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/exchange.py +1 -1
  15. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/binance.py +10 -2
  16. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bingx.py +15 -2
  17. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitget.py +1 -0
  18. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bybit.py +2 -1
  19. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/htx.py +6 -0
  20. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/kraken.py +4 -4
  21. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/mexc.py +16 -4
  22. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/okx.py +15 -20
  23. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/phemex.py +10 -3
  24. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/__init__.py +1 -1
  25. {ccxt-4.4.11 → ccxt-4.4.12/ccxt.egg-info}/PKG-INFO +4 -4
  26. {ccxt-4.4.11 → ccxt-4.4.12}/package.json +1 -1
  27. {ccxt-4.4.11 → ccxt-4.4.12}/LICENSE.txt +0 -0
  28. {ccxt-4.4.11 → ccxt-4.4.12}/MANIFEST.in +0 -0
  29. {ccxt-4.4.11 → ccxt-4.4.12}/README.rst +0 -0
  30. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/__init__.py +0 -0
  31. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/ace.py +0 -0
  32. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/alpaca.py +0 -0
  33. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/ascendex.py +0 -0
  34. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bequant.py +0 -0
  35. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bigone.py +0 -0
  36. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/binance.py +0 -0
  37. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/binancecoinm.py +0 -0
  38. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/binanceus.py +0 -0
  39. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/binanceusdm.py +0 -0
  40. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bingx.py +0 -0
  41. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bit2c.py +0 -0
  42. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitbank.py +0 -0
  43. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitbns.py +0 -0
  44. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitcoincom.py +0 -0
  45. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitfinex.py +0 -0
  46. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitfinex2.py +0 -0
  47. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitflyer.py +0 -0
  48. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitget.py +0 -0
  49. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bithumb.py +0 -0
  50. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitmart.py +0 -0
  51. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitmex.py +0 -0
  52. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitopro.py +0 -0
  53. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitpanda.py +0 -0
  54. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitrue.py +0 -0
  55. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitso.py +0 -0
  56. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitstamp.py +0 -0
  57. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitteam.py +0 -0
  58. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bitvavo.py +0 -0
  59. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bl3p.py +0 -0
  60. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/blockchaincom.py +0 -0
  61. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/blofin.py +0 -0
  62. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/btcalpha.py +0 -0
  63. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/btcbox.py +0 -0
  64. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/btcmarkets.py +0 -0
  65. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/btcturk.py +0 -0
  66. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/bybit.py +0 -0
  67. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/cex.py +0 -0
  68. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinbase.py +0 -0
  69. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinbaseadvanced.py +0 -0
  70. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinbaseexchange.py +0 -0
  71. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinbaseinternational.py +0 -0
  72. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coincheck.py +0 -0
  73. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinex.py +0 -0
  74. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinlist.py +0 -0
  75. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinmate.py +0 -0
  76. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinmetro.py +0 -0
  77. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinone.py +0 -0
  78. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinsph.py +0 -0
  79. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/coinspot.py +0 -0
  80. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/cryptocom.py +0 -0
  81. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/currencycom.py +0 -0
  82. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/delta.py +0 -0
  83. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/deribit.py +0 -0
  84. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/digifinex.py +0 -0
  85. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/exmo.py +0 -0
  86. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/fmfwio.py +0 -0
  87. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/gate.py +0 -0
  88. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/gateio.py +0 -0
  89. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/gemini.py +0 -0
  90. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/hashkey.py +0 -0
  91. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/hitbtc.py +0 -0
  92. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/hollaex.py +0 -0
  93. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/htx.py +0 -0
  94. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/huobi.py +0 -0
  95. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/huobijp.py +0 -0
  96. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/hyperliquid.py +0 -0
  97. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/idex.py +0 -0
  98. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/independentreserve.py +0 -0
  99. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/indodax.py +0 -0
  100. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/kraken.py +0 -0
  101. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/krakenfutures.py +0 -0
  102. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/kucoin.py +0 -0
  103. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/kucoinfutures.py +0 -0
  104. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/kuna.py +0 -0
  105. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/latoken.py +0 -0
  106. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/lbank.py +0 -0
  107. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/luno.py +0 -0
  108. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/lykke.py +0 -0
  109. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/mercado.py +0 -0
  110. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/mexc.py +0 -0
  111. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/ndax.py +0 -0
  112. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/novadax.py +0 -0
  113. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/oceanex.py +0 -0
  114. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/okcoin.py +0 -0
  115. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/okx.py +0 -0
  116. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/onetrading.py +0 -0
  117. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/oxfun.py +0 -0
  118. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/p2b.py +0 -0
  119. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/paradex.py +0 -0
  120. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/paymium.py +0 -0
  121. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/phemex.py +0 -0
  122. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/poloniex.py +0 -0
  123. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/poloniexfutures.py +0 -0
  124. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/probit.py +0 -0
  125. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/timex.py +0 -0
  126. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/tokocrypto.py +0 -0
  127. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/tradeogre.py +0 -0
  128. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/upbit.py +0 -0
  129. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/vertex.py +0 -0
  130. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/wavesexchange.py +0 -0
  131. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/wazirx.py +0 -0
  132. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/whitebit.py +0 -0
  133. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/woo.py +0 -0
  134. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/woofipro.py +0 -0
  135. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/xt.py +0 -0
  136. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/yobit.py +0 -0
  137. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/zaif.py +0 -0
  138. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/abstract/zonda.py +0 -0
  139. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/ace.py +0 -0
  140. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/alpaca.py +0 -0
  141. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/ascendex.py +0 -0
  142. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/ace.py +0 -0
  143. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/alpaca.py +0 -0
  144. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/ascendex.py +0 -0
  145. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/__init__.py +0 -0
  146. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/throttler.py +0 -0
  147. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/__init__.py +0 -0
  148. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  149. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/cache.py +0 -0
  150. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/client.py +0 -0
  151. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/fast_client.py +0 -0
  152. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/functions.py +0 -0
  153. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/future.py +0 -0
  154. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/order_book.py +0 -0
  155. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  156. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bequant.py +0 -0
  157. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bigone.py +0 -0
  158. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/binancecoinm.py +0 -0
  159. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/binanceus.py +0 -0
  160. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/binanceusdm.py +0 -0
  161. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bit2c.py +0 -0
  162. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitbank.py +0 -0
  163. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitbay.py +0 -0
  164. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitbns.py +0 -0
  165. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitcoincom.py +0 -0
  166. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitfinex.py +0 -0
  167. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitfinex2.py +0 -0
  168. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitflyer.py +0 -0
  169. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bithumb.py +0 -0
  170. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitmart.py +0 -0
  171. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitmex.py +0 -0
  172. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitopro.py +0 -0
  173. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitpanda.py +0 -0
  174. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitrue.py +0 -0
  175. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitso.py +0 -0
  176. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitstamp.py +0 -0
  177. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitteam.py +0 -0
  178. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bitvavo.py +0 -0
  179. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/bl3p.py +0 -0
  180. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/blockchaincom.py +0 -0
  181. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/blofin.py +0 -0
  182. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/btcalpha.py +0 -0
  183. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/btcbox.py +0 -0
  184. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/btcmarkets.py +0 -0
  185. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/btcturk.py +0 -0
  186. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/cex.py +0 -0
  187. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinbase.py +0 -0
  188. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinbaseadvanced.py +0 -0
  189. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinbaseexchange.py +0 -0
  190. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinbaseinternational.py +0 -0
  191. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coincheck.py +0 -0
  192. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinex.py +0 -0
  193. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinlist.py +0 -0
  194. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinmate.py +0 -0
  195. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinmetro.py +0 -0
  196. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinone.py +0 -0
  197. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinsph.py +0 -0
  198. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/coinspot.py +0 -0
  199. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/cryptocom.py +0 -0
  200. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/currencycom.py +0 -0
  201. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/delta.py +0 -0
  202. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/deribit.py +0 -0
  203. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/digifinex.py +0 -0
  204. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/exmo.py +0 -0
  205. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/fmfwio.py +0 -0
  206. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/gate.py +0 -0
  207. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/gateio.py +0 -0
  208. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/gemini.py +0 -0
  209. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/hashkey.py +0 -0
  210. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/hitbtc.py +0 -0
  211. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/hitbtc3.py +0 -0
  212. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/hollaex.py +0 -0
  213. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/huobi.py +0 -0
  214. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/huobijp.py +0 -0
  215. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/hyperliquid.py +0 -0
  216. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/idex.py +0 -0
  217. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/independentreserve.py +0 -0
  218. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/indodax.py +0 -0
  219. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/krakenfutures.py +0 -0
  220. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/kucoin.py +0 -0
  221. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/kucoinfutures.py +0 -0
  222. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/kuna.py +0 -0
  223. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/latoken.py +0 -0
  224. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/lbank.py +0 -0
  225. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/luno.py +0 -0
  226. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/lykke.py +0 -0
  227. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/mercado.py +0 -0
  228. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/ndax.py +0 -0
  229. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/novadax.py +0 -0
  230. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/oceanex.py +0 -0
  231. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/okcoin.py +0 -0
  232. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/onetrading.py +0 -0
  233. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/oxfun.py +0 -0
  234. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/p2b.py +0 -0
  235. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/paradex.py +0 -0
  236. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/paymium.py +0 -0
  237. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/poloniex.py +0 -0
  238. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/poloniexfutures.py +0 -0
  239. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/probit.py +0 -0
  240. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/timex.py +0 -0
  241. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/tokocrypto.py +0 -0
  242. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/tradeogre.py +0 -0
  243. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/upbit.py +0 -0
  244. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/vertex.py +0 -0
  245. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/wavesexchange.py +0 -0
  246. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/wazirx.py +0 -0
  247. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/whitebit.py +0 -0
  248. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/woo.py +0 -0
  249. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/woofipro.py +0 -0
  250. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/xt.py +0 -0
  251. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/yobit.py +0 -0
  252. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/zaif.py +0 -0
  253. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/async_support/zonda.py +0 -0
  254. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/__init__.py +0 -0
  255. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/decimal_to_precision.py +0 -0
  256. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/errors.py +0 -0
  257. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/precise.py +0 -0
  258. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/base/types.py +0 -0
  259. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bequant.py +0 -0
  260. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bigone.py +0 -0
  261. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/binancecoinm.py +0 -0
  262. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/binanceus.py +0 -0
  263. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/binanceusdm.py +0 -0
  264. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bit2c.py +0 -0
  265. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitbank.py +0 -0
  266. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitbay.py +0 -0
  267. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitbns.py +0 -0
  268. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitcoincom.py +0 -0
  269. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitfinex.py +0 -0
  270. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitfinex2.py +0 -0
  271. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitflyer.py +0 -0
  272. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bithumb.py +0 -0
  273. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitmart.py +0 -0
  274. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitmex.py +0 -0
  275. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitopro.py +0 -0
  276. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitpanda.py +0 -0
  277. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitrue.py +0 -0
  278. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitso.py +0 -0
  279. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitstamp.py +0 -0
  280. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitteam.py +0 -0
  281. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bitvavo.py +0 -0
  282. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/bl3p.py +0 -0
  283. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/blockchaincom.py +0 -0
  284. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/blofin.py +0 -0
  285. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/btcalpha.py +0 -0
  286. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/btcbox.py +0 -0
  287. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/btcmarkets.py +0 -0
  288. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/btcturk.py +0 -0
  289. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/cex.py +0 -0
  290. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinbase.py +0 -0
  291. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinbaseadvanced.py +0 -0
  292. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinbaseexchange.py +0 -0
  293. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinbaseinternational.py +0 -0
  294. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coincheck.py +0 -0
  295. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinex.py +0 -0
  296. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinlist.py +0 -0
  297. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinmate.py +0 -0
  298. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinmetro.py +0 -0
  299. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinone.py +0 -0
  300. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinsph.py +0 -0
  301. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/coinspot.py +0 -0
  302. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/cryptocom.py +0 -0
  303. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/currencycom.py +0 -0
  304. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/delta.py +0 -0
  305. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/deribit.py +0 -0
  306. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/digifinex.py +0 -0
  307. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/exmo.py +0 -0
  308. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/fmfwio.py +0 -0
  309. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/gate.py +0 -0
  310. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/gateio.py +0 -0
  311. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/gemini.py +0 -0
  312. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/hashkey.py +0 -0
  313. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/hitbtc.py +0 -0
  314. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/hitbtc3.py +0 -0
  315. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/hollaex.py +0 -0
  316. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/huobi.py +0 -0
  317. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/huobijp.py +0 -0
  318. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/hyperliquid.py +0 -0
  319. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/idex.py +0 -0
  320. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/independentreserve.py +0 -0
  321. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/indodax.py +0 -0
  322. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/krakenfutures.py +0 -0
  323. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/kucoin.py +0 -0
  324. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/kucoinfutures.py +0 -0
  325. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/kuna.py +0 -0
  326. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/latoken.py +0 -0
  327. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/lbank.py +0 -0
  328. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/luno.py +0 -0
  329. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/lykke.py +0 -0
  330. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/mercado.py +0 -0
  331. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/ndax.py +0 -0
  332. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/novadax.py +0 -0
  333. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/oceanex.py +0 -0
  334. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/okcoin.py +0 -0
  335. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/onetrading.py +0 -0
  336. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/oxfun.py +0 -0
  337. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/p2b.py +0 -0
  338. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/paradex.py +0 -0
  339. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/paymium.py +0 -0
  340. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/poloniex.py +0 -0
  341. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/poloniexfutures.py +0 -0
  342. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/alpaca.py +0 -0
  343. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/ascendex.py +0 -0
  344. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bequant.py +0 -0
  345. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/binance.py +0 -0
  346. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/binancecoinm.py +0 -0
  347. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/binanceus.py +0 -0
  348. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/binanceusdm.py +0 -0
  349. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bingx.py +0 -0
  350. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitcoincom.py +0 -0
  351. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitfinex.py +0 -0
  352. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitfinex2.py +0 -0
  353. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitget.py +0 -0
  354. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bithumb.py +0 -0
  355. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitmart.py +0 -0
  356. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitmex.py +0 -0
  357. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitopro.py +0 -0
  358. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitpanda.py +0 -0
  359. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitrue.py +0 -0
  360. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitstamp.py +0 -0
  361. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bitvavo.py +0 -0
  362. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/blockchaincom.py +0 -0
  363. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/blofin.py +0 -0
  364. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/bybit.py +0 -0
  365. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/cex.py +0 -0
  366. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coinbase.py +0 -0
  367. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coinbaseexchange.py +0 -0
  368. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coinbaseinternational.py +0 -0
  369. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coincheck.py +0 -0
  370. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coinex.py +0 -0
  371. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/coinone.py +0 -0
  372. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/cryptocom.py +0 -0
  373. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/currencycom.py +0 -0
  374. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/deribit.py +0 -0
  375. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/exmo.py +0 -0
  376. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/gate.py +0 -0
  377. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/gateio.py +0 -0
  378. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/gemini.py +0 -0
  379. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/hashkey.py +0 -0
  380. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/hitbtc.py +0 -0
  381. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/hollaex.py +0 -0
  382. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/htx.py +0 -0
  383. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/huobi.py +0 -0
  384. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/huobijp.py +0 -0
  385. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/hyperliquid.py +0 -0
  386. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/idex.py +0 -0
  387. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/independentreserve.py +0 -0
  388. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/kraken.py +0 -0
  389. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/krakenfutures.py +0 -0
  390. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/kucoin.py +0 -0
  391. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/kucoinfutures.py +0 -0
  392. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/lbank.py +0 -0
  393. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/luno.py +0 -0
  394. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/mexc.py +0 -0
  395. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/ndax.py +0 -0
  396. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/okcoin.py +0 -0
  397. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/okx.py +0 -0
  398. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/onetrading.py +0 -0
  399. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/oxfun.py +0 -0
  400. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/p2b.py +0 -0
  401. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/paradex.py +0 -0
  402. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/phemex.py +0 -0
  403. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/poloniex.py +0 -0
  404. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/poloniexfutures.py +0 -0
  405. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/probit.py +0 -0
  406. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/upbit.py +0 -0
  407. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/vertex.py +0 -0
  408. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/wazirx.py +0 -0
  409. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/whitebit.py +0 -0
  410. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/woo.py +0 -0
  411. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/woofipro.py +0 -0
  412. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/pro/xt.py +0 -0
  413. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/probit.py +0 -0
  414. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/__init__.py +0 -0
  415. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  416. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  417. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  418. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  419. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  420. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  421. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  422. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  423. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  424. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  425. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  426. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  427. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  428. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  429. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  430. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  431. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  432. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  433. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  434. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  435. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  436. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  437. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  438. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  439. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  440. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  441. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  442. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  443. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  444. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  445. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  446. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  447. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  448. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  449. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  450. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  451. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  452. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  453. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  454. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  455. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  456. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  457. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  458. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  459. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  460. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  461. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  462. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  463. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  464. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  465. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  466. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  467. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  468. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  469. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  470. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  471. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  472. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  473. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  474. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  475. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  476. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  477. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  478. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  479. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  480. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  481. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  482. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  483. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  484. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  485. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  486. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  487. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  488. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  489. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/__init__.py +0 -0
  490. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -0
  491. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -0
  492. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/ast_utils.py +0 -0
  493. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/common.py +0 -0
  494. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/exceptions.py +0 -0
  495. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/grammar.py +0 -0
  496. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  497. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/indenter.py +0 -0
  498. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/lark.py +0 -0
  499. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/lexer.py +0 -0
  500. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/load_grammar.py +0 -0
  501. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -0
  502. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parser_frontends.py +0 -0
  503. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  504. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/cyk.py +0 -0
  505. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/earley.py +0 -0
  506. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -0
  507. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -0
  508. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -0
  509. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -0
  510. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -0
  511. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -0
  512. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -0
  513. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/parsers/xearley.py +0 -0
  514. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/py.typed +0 -0
  515. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/reconstruct.py +0 -0
  516. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tools/__init__.py +0 -0
  517. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tools/nearley.py +0 -0
  518. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tools/serialize.py +0 -0
  519. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tools/standalone.py +0 -0
  520. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tree.py +0 -0
  521. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tree_matcher.py +0 -0
  522. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/tree_templates.py +0 -0
  523. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/utils.py +0 -0
  524. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/lark/visitors.py +0 -0
  525. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/__init__.py +0 -0
  526. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/base.py +0 -0
  527. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/class_registry.py +0 -0
  528. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/decorators.py +0 -0
  529. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/error_store.py +0 -0
  530. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/exceptions.py +0 -0
  531. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/fields.py +0 -0
  532. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/orderedset.py +0 -0
  533. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  534. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/schema.py +0 -0
  535. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/types.py +0 -0
  536. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/utils.py +0 -0
  537. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/validate.py +0 -0
  538. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow/warnings.py +0 -0
  539. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -0
  540. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -0
  541. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -0
  542. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -0
  543. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  544. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -0
  545. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -0
  546. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -0
  547. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -0
  548. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  549. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  550. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  551. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  552. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  553. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  554. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  555. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  556. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  557. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  558. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  559. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/__init__.py +0 -0
  560. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  561. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -0
  562. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  563. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -0
  564. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -0
  565. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -0
  566. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/felt.py +0 -0
  567. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -0
  568. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  569. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -0
  570. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  571. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -0
  572. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -0
  573. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/common.py +0 -0
  574. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/constants.py +0 -0
  575. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  576. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/address.py +0 -0
  577. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -0
  578. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/selector.py +0 -0
  579. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/storage.py +0 -0
  580. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/hash/utils.py +0 -0
  581. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  582. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/models/typed_data.py +0 -0
  583. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -0
  584. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -0
  585. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/_context.py +0 -0
  586. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -0
  587. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -0
  588. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -0
  589. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -0
  590. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -0
  591. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -0
  592. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -0
  593. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -0
  594. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -0
  595. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -0
  596. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -0
  597. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -0
  598. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -0
  599. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -0
  600. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -0
  601. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -0
  602. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -0
  603. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/errors.py +0 -0
  604. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/factory.py +0 -0
  605. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -0
  606. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -0
  607. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  608. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -0
  609. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/utils/iterable.py +0 -0
  610. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/utils/schema.py +0 -0
  611. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -0
  612. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/__init__.py +0 -0
  613. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  614. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -0
  615. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -0
  616. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/crypto/signature.py +0 -0
  617. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/starkware/crypto/utils.py +0 -0
  618. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/__init__.py +0 -0
  619. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  620. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/core/intfunc.py +0 -0
  621. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  622. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/external/gmpy.py +0 -0
  623. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/external/importtools.py +0 -0
  624. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/external/ntheory.py +0 -0
  625. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -0
  626. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  627. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  628. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/_version.py +0 -0
  629. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  630. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  631. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  632. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  633. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  634. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  635. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  636. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  637. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/toolz/utils.py +0 -0
  638. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  639. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -0
  640. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/test/__init__.py +0 -0
  641. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/test/tests_async.py +0 -0
  642. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/test/tests_helpers.py +0 -0
  643. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/test/tests_init.py +0 -0
  644. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/test/tests_sync.py +0 -0
  645. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/timex.py +0 -0
  646. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/tokocrypto.py +0 -0
  647. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/tradeogre.py +0 -0
  648. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/upbit.py +0 -0
  649. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/vertex.py +0 -0
  650. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/wavesexchange.py +0 -0
  651. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/wazirx.py +0 -0
  652. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/whitebit.py +0 -0
  653. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/woo.py +0 -0
  654. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/woofipro.py +0 -0
  655. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/xt.py +0 -0
  656. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/yobit.py +0 -0
  657. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/zaif.py +0 -0
  658. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt/zonda.py +0 -0
  659. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt.egg-info/SOURCES.txt +0 -0
  660. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt.egg-info/dependency_links.txt +0 -0
  661. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt.egg-info/requires.txt +0 -0
  662. {ccxt-4.4.11 → ccxt-4.4.12}/ccxt.egg-info/top_level.txt +0 -0
  663. {ccxt-4.4.11 → ccxt-4.4.12}/setup.cfg +0 -0
  664. {ccxt-4.4.11 → ccxt-4.4.12}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.11
3
+ Version: 4.4.12
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
@@ -261,13 +261,13 @@ console.log(version, Object.keys(exchanges));
261
261
 
262
262
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
263
263
 
264
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.11/dist/ccxt.browser.min.js
265
- * unpkg: https://unpkg.com/ccxt@4.4.11/dist/ccxt.browser.min.js
264
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.12/dist/ccxt.browser.min.js
265
+ * unpkg: https://unpkg.com/ccxt@4.4.12/dist/ccxt.browser.min.js
266
266
 
267
267
  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.
268
268
 
269
269
  ```HTML
270
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.11/dist/ccxt.browser.min.js"></script>
270
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.12/dist/ccxt.browser.min.js"></script>
271
271
  ```
272
272
 
273
273
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.11'
25
+ __version__ = '4.4.12'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.11'
7
+ __version__ = '4.4.12'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.11'
5
+ __version__ = '4.4.12'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -5596,6 +5596,8 @@ class binance(Exchange, ImplicitAPI):
5596
5596
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
5597
5597
  :param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
5598
5598
  :param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
5599
+ :param str [params.positionSide]: *swap and portfolio margin only* "BOTH" for one-way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
5600
+ :param bool [params.hedged]: *swap and portfolio margin only* True for hedged mode, False for one way mode, default is False
5599
5601
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
5600
5602
  """
5601
5603
  await self.load_markets()
@@ -5681,9 +5683,9 @@ class binance(Exchange, ImplicitAPI):
5681
5683
  isPortfolioMargin, params = self.handle_option_and_params_2(params, 'createOrder', 'papi', 'portfolioMargin', False)
5682
5684
  marginMode = None
5683
5685
  marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
5686
+ reduceOnly = self.safe_bool(params, 'reduceOnly', False)
5684
5687
  if (marketType == 'margin') or (marginMode is not None) or market['option']:
5685
5688
  # for swap and future reduceOnly is a string that cant be sent with close position set to True or in hedge mode
5686
- reduceOnly = self.safe_bool(params, 'reduceOnly', False)
5687
5689
  params = self.omit(params, 'reduceOnly')
5688
5690
  if market['option']:
5689
5691
  request['reduceOnly'] = reduceOnly
@@ -5884,7 +5886,13 @@ class binance(Exchange, ImplicitAPI):
5884
5886
  # remove timeInForce from params because PO is only used by self.is_post_only and it's not a valid value for Binance
5885
5887
  if self.safe_string(params, 'timeInForce') == 'PO':
5886
5888
  params = self.omit(params, 'timeInForce')
5887
- requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test'])
5889
+ hedged = self.safe_bool(params, 'hedged', False)
5890
+ if not market['spot'] and not market['option'] and hedged:
5891
+ if reduceOnly:
5892
+ params = self.omit(params, 'reduceOnly')
5893
+ side = 'sell' if (side == 'buy') else 'buy'
5894
+ request['positionSide'] = 'LONG' if (side == 'buy') else 'SHORT'
5895
+ requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test', 'hedged'])
5888
5896
  return self.extend(request, requestParams)
5889
5897
 
5890
5898
  async def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
@@ -2458,6 +2458,7 @@ class bingx(Exchange, ImplicitAPI):
2458
2458
  :param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
2459
2459
  :param float [params.stopLoss.triggerPrice]: stop loss trigger price
2460
2460
  :param boolean [params.test]: *swap only* whether to use the test endpoint or not, default is False
2461
+ :param str [params.positionSide]: *contracts only* "BOTH" for one way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
2461
2462
  :param boolean [params.hedged]: *swap only* whether the order is in hedged mode or one way mode
2462
2463
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2463
2464
  """
@@ -4184,13 +4185,25 @@ class bingx(Exchange, ImplicitAPI):
4184
4185
  currencyId = self.safe_string(depositAddress, 'coin')
4185
4186
  currency = self.safe_currency(currencyId, currency)
4186
4187
  code = currency['code']
4187
- network = self.safe_string(depositAddress, 'network')
4188
+ # the exchange API returns deposit addresses without the leading '0x' prefix
4189
+ # however, the exchange API does require the 0x prefix to withdraw
4190
+ # so we append the prefix before returning the address to the user
4191
+ # that is only if the underlying contract address has the 0x prefix
4192
+ networkCode = self.safe_string(depositAddress, 'network')
4193
+ if networkCode is not None:
4194
+ if networkCode in currency['networks']:
4195
+ network = currency['networks'][networkCode]
4196
+ contractAddress = self.safe_string(network['info'], 'contractAddress')
4197
+ if contractAddress is not None:
4198
+ if contractAddress[0] == '0' and contractAddress[1] == 'x':
4199
+ if address[0] != '0' or address[1] != 'x':
4200
+ address = '0x' + address
4188
4201
  self.check_address(address)
4189
4202
  return {
4190
4203
  'currency': code,
4191
4204
  'address': address,
4192
4205
  'tag': tag,
4193
- 'network': network,
4206
+ 'network': networkCode,
4194
4207
  'info': depositAddress,
4195
4208
  }
4196
4209
 
@@ -3948,6 +3948,7 @@ class bitget(Exchange, ImplicitAPI):
3948
3948
  :param str [params.trailingTriggerPrice]: *swap and future only* the price to trigger a trailing stop order, default uses the price argument
3949
3949
  :param str [params.triggerType]: *swap and future only* 'fill_price', 'mark_price' or 'index_price'
3950
3950
  :param boolean [params.oneWayMode]: *swap and future only* required to set self to True in one_way_mode and you can leave self in hedge_mode, can adjust the mode using the setPositionMode() method
3951
+ :param bool [params.hedged]: *swap and future only* True for hedged mode, False for one way mode, default is False
3951
3952
  :param bool [params.reduceOnly]: True or False whether the order is reduce-only
3952
3953
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
3953
3954
  """
@@ -3431,7 +3431,8 @@ class bybit(Exchange, ImplicitAPI):
3431
3431
  :param str [params.timeInForce]: "GTC", "IOC", "FOK"
3432
3432
  :param bool [params.postOnly]: True or False whether the order is post-only
3433
3433
  :param bool [params.reduceOnly]: True or False whether the order is reduce-only
3434
- :param str [params.positionIdx]: *contracts only* 0 for one-way mode, 1 buy side of hedged mode, 2 sell side of hedged mode
3434
+ :param str [params.positionIdx]: *contracts only* 0 for one-way mode, 1 buy side of hedged mode, 2 sell side of hedged mode
3435
+ :param bool [params.hedged]: *contracts only* True for hedged mode, False for one way mode, default is False
3435
3436
  :param boolean [params.isLeverage]: *unified spot only* False then spot trading True then margin trading
3436
3437
  :param str [params.tpslMode]: *contract only* 'full' or 'partial'
3437
3438
  :param str [params.mmp]: *option only* market maker protection
@@ -3482,6 +3482,12 @@ class htx(Exchange, ImplicitAPI):
3482
3482
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
3483
3483
  """
3484
3484
  fetches information on an order made by the user
3485
+ :see: https://huobiapi.github.io/docs/spot/v1/en/#get-the-order-detail-of-an-order-based-on-client-order-id
3486
+ :see: https://huobiapi.github.io/docs/spot/v1/en/#get-the-order-detail-of-an-order
3487
+ :see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#isolated-get-information-of-an-order
3488
+ :see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#cross-get-information-of-order
3489
+ :see: https://huobiapi.github.io/docs/dm/v1/en/#get-information-of-an-order
3490
+ :see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-information-of-an-order
3485
3491
  :param str symbol: unified symbol of the market the order was made in
3486
3492
  :param dict [params]: extra parameters specific to the exchange API endpoint
3487
3493
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1740,7 +1740,7 @@ class kraken(Exchange, ImplicitAPI):
1740
1740
  request['volume'] = self.cost_to_precision(symbol, cost)
1741
1741
  extendedOflags = flags + ',viqc' if (flags is not None) else 'viqc'
1742
1742
  request['oflags'] = extendedOflags
1743
- elif isLimitOrder and not isTrailingAmountOrder:
1743
+ elif isLimitOrder and not isTrailingAmountOrder and not isTrailingPercentOrder:
1744
1744
  request['price'] = self.price_to_precision(symbol, price)
1745
1745
  reduceOnly = self.safe_bool_2(params, 'reduceOnly', 'reduce_only')
1746
1746
  if isStopLossOrTakeProfitTrigger:
@@ -1760,8 +1760,8 @@ class kraken(Exchange, ImplicitAPI):
1760
1760
  request['price2'] = self.price_to_precision(symbol, price)
1761
1761
  elif isTrailingAmountOrder or isTrailingPercentOrder:
1762
1762
  trailingPercentString = None
1763
- if isTrailingPercentOrder:
1764
- trailingPercentString = trailingPercent if (trailingPercent.endswith('%')) else '+' + (self.number_to_string(trailingPercent) + '%')
1763
+ if trailingPercent is not None:
1764
+ trailingPercentString = ('+' + trailingPercent) if (trailingPercent.endswith('%')) else ('+' + trailingPercent + '%')
1765
1765
  trailingAmountString = '+' + trailingAmount if (trailingAmount is not None) else None # must use + for self
1766
1766
  offset = self.safe_string(params, 'offset', '-') # can use + or - for self
1767
1767
  trailingLimitAmountString = offset + self.number_to_string(trailingLimitAmount) if (trailingLimitAmount is not None) else None
@@ -1770,7 +1770,7 @@ class kraken(Exchange, ImplicitAPI):
1770
1770
  if isLimitOrder or (trailingLimitAmount is not None) or (trailingLimitPercent is not None):
1771
1771
  request['ordertype'] = 'trailing-stop-limit'
1772
1772
  if trailingLimitPercent is not None:
1773
- trailingLimitPercentString = trailingLimitPercent if (trailingLimitPercent.endswith('%')) else (self.number_to_string(trailingLimitPercent) + '%')
1773
+ trailingLimitPercentString = (offset + trailingLimitPercent) if (trailingLimitPercent.endswith('%')) else (offset + trailingLimitPercent + '%')
1774
1774
  request['price'] = trailingPercentString
1775
1775
  request['price2'] = trailingLimitPercentString
1776
1776
  elif trailingLimitAmount is not None:
@@ -2055,6 +2055,7 @@ class mexc(Exchange, ImplicitAPI):
2055
2055
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
2056
2056
  :param bool [params.postOnly]: if True, the order will only be posted if it will be a maker order
2057
2057
  :param bool [params.reduceOnly]: *contract only* indicates if self order is to reduce the size of a position
2058
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2058
2059
  *
2059
2060
  * EXCHANGE SPECIFIC PARAMETERS
2060
2061
  :param int [params.leverage]: *contract only* leverage is necessary on isolated margin
@@ -2180,6 +2181,7 @@ class mexc(Exchange, ImplicitAPI):
2180
2181
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
2181
2182
  :param bool [params.postOnly]: if True, the order will only be posted if it will be a maker order
2182
2183
  :param bool [params.reduceOnly]: indicates if self order is to reduce the size of a position
2184
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2183
2185
  *
2184
2186
  * EXCHANGE SPECIFIC PARAMETERS
2185
2187
  :param int [params.leverage]: leverage is necessary on isolated margin
@@ -2247,15 +2249,25 @@ class mexc(Exchange, ImplicitAPI):
2247
2249
  if leverage is None:
2248
2250
  raise ArgumentsRequired(self.id + ' createSwapOrder() requires a leverage parameter for isolated margin orders')
2249
2251
  reduceOnly = self.safe_bool(params, 'reduceOnly', False)
2250
- if reduceOnly:
2251
- request['side'] = 2 if (side == 'buy') else 4
2252
+ hedged = self.safe_bool(params, 'hedged', False)
2253
+ sideInteger = None
2254
+ if hedged:
2255
+ if reduceOnly:
2256
+ params = self.omit(params, 'reduceOnly') # hedged mode does not accept self parameter
2257
+ side = 'sell' if (side == 'buy') else 'buy'
2258
+ sideInteger = 1 if (side == 'buy') else 3
2259
+ request['positionMode'] = 1
2252
2260
  else:
2253
- request['side'] = 1 if (side == 'buy') else 3
2261
+ if reduceOnly:
2262
+ sideInteger = 2 if (side == 'buy') else 4
2263
+ else:
2264
+ sideInteger = 1 if (side == 'buy') else 3
2265
+ request['side'] = sideInteger
2254
2266
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'externalOid')
2255
2267
  if clientOrderId is not None:
2256
2268
  request['externalOid'] = clientOrderId
2257
2269
  stopPrice = self.safe_number_2(params, 'triggerPrice', 'stopPrice')
2258
- params = self.omit(params, ['clientOrderId', 'externalOid', 'postOnly', 'stopPrice', 'triggerPrice'])
2270
+ params = self.omit(params, ['clientOrderId', 'externalOid', 'postOnly', 'stopPrice', 'triggerPrice', 'hedged'])
2259
2271
  response = None
2260
2272
  if stopPrice:
2261
2273
  request['triggerPrice'] = self.price_to_precision(symbol, stopPrice)
@@ -2795,7 +2795,7 @@ class okx(Exchange, ImplicitAPI):
2795
2795
  :param str [params.positionSide]: if position mode is one-way: set to 'net', if position mode is hedge-mode: set to 'long' or 'short'
2796
2796
  :param str [params.trailingPercent]: the percent to trail away from the current market price
2797
2797
  :param str [params.tpOrdKind]: 'condition' or 'limit', the default is 'condition'
2798
- :param str [params.hedged]: True/false, to automatically set exchange-specific params needed when trading in hedge mode
2798
+ :param bool [params.hedged]: *swap and future only* True for hedged mode, False for one way mode
2799
2799
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2800
2800
  """
2801
2801
  await self.load_markets()
@@ -4528,32 +4528,27 @@ class okx(Exchange, ImplicitAPI):
4528
4528
  :see: https://www.okx.com/docs-v5/en/#funding-account-rest-api-get-deposit-address
4529
4529
  :param str code: unified currency code
4530
4530
  :param dict [params]: extra parameters specific to the exchange API endpoint
4531
+ :param str [params.network]: the network name for the deposit address
4531
4532
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
4532
4533
  """
4534
+ await self.load_markets()
4533
4535
  rawNetwork = self.safe_string_upper(params, 'network')
4534
- networks = self.safe_value(self.options, 'networks', {})
4535
- network = self.safe_string(networks, rawNetwork, rawNetwork)
4536
4536
  params = self.omit(params, 'network')
4537
+ code = self.safe_currency_code(code)
4538
+ network = self.network_id_to_code(rawNetwork, code)
4537
4539
  response = await self.fetch_deposit_addresses_by_network(code, params)
4538
- result = None
4539
- if network is None:
4540
- result = self.safe_value(response, code)
4540
+ if network is not None:
4541
+ result = self.safe_dict(response, network)
4541
4542
  if result is None:
4542
- alias = self.safe_string(networks, code, code)
4543
- result = self.safe_value(response, alias)
4544
- if result is None:
4545
- defaultNetwork = self.safe_string(self.options, 'defaultNetwork', 'ERC20')
4546
- result = self.safe_value(response, defaultNetwork)
4547
- if result is None:
4548
- values = list(response.values())
4549
- result = self.safe_value(values, 0)
4550
- if result is None:
4551
- raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find deposit address for ' + code)
4543
+ raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find ' + network + ' deposit address for ' + code)
4552
4544
  return result
4553
- result = self.safe_value(response, network)
4554
- if result is None:
4555
- raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find ' + network + ' deposit address for ' + code)
4556
- return result
4545
+ codeNetwork = self.network_id_to_code(code, code)
4546
+ if codeNetwork in response:
4547
+ return response[codeNetwork]
4548
+ # if the network is not specified, return the first address
4549
+ keys = list(response.keys())
4550
+ first = self.safe_string(keys, 0)
4551
+ return self.safe_dict(response, first)
4557
4552
 
4558
4553
  async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
4559
4554
  """
@@ -2402,6 +2402,8 @@ class phemex(Exchange, ImplicitAPI):
2402
2402
  :param float [params.takeProfit.triggerPrice]: take profit trigger price
2403
2403
  :param dict [params.stopLoss]: *swap only* *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered(perpetual swap markets only)
2404
2404
  :param float [params.stopLoss.triggerPrice]: stop loss trigger price
2405
+ :param str [params.posSide]: *swap only* "Merged" for one way mode, "Long" for buy side of hedged mode, "Short" for sell side of hedged mode
2406
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2405
2407
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2406
2408
  """
2407
2409
  await self.load_markets()
@@ -2486,13 +2488,18 @@ class phemex(Exchange, ImplicitAPI):
2486
2488
  amountString = self.number_to_string(amount)
2487
2489
  request['baseQtyEv'] = self.to_ev(amountString, market)
2488
2490
  elif market['swap']:
2491
+ hedged = self.safe_bool(params, 'hedged', False)
2492
+ params = self.omit(params, 'hedged')
2489
2493
  posSide = self.safe_string_lower(params, 'posSide')
2490
2494
  if posSide is None:
2491
- posSide = 'Merged'
2495
+ if hedged:
2496
+ if reduceOnly:
2497
+ side = 'sell' if (side == 'buy') else 'buy'
2498
+ posSide = 'Long' if (side == 'buy') else 'Short'
2499
+ else:
2500
+ posSide = 'Merged'
2492
2501
  posSide = self.capitalize(posSide)
2493
2502
  request['posSide'] = posSide
2494
- if reduceOnly is not None:
2495
- request['reduceOnly'] = reduceOnly
2496
2503
  if market['settle'] == 'USDT':
2497
2504
  request['orderQtyRq'] = amount
2498
2505
  else:
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.11'
7
+ __version__ = '4.4.12'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -5595,6 +5595,8 @@ class binance(Exchange, ImplicitAPI):
5595
5595
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
5596
5596
  :param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
5597
5597
  :param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
5598
+ :param str [params.positionSide]: *swap and portfolio margin only* "BOTH" for one-way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
5599
+ :param bool [params.hedged]: *swap and portfolio margin only* True for hedged mode, False for one way mode, default is False
5598
5600
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
5599
5601
  """
5600
5602
  self.load_markets()
@@ -5680,9 +5682,9 @@ class binance(Exchange, ImplicitAPI):
5680
5682
  isPortfolioMargin, params = self.handle_option_and_params_2(params, 'createOrder', 'papi', 'portfolioMargin', False)
5681
5683
  marginMode = None
5682
5684
  marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
5685
+ reduceOnly = self.safe_bool(params, 'reduceOnly', False)
5683
5686
  if (marketType == 'margin') or (marginMode is not None) or market['option']:
5684
5687
  # for swap and future reduceOnly is a string that cant be sent with close position set to True or in hedge mode
5685
- reduceOnly = self.safe_bool(params, 'reduceOnly', False)
5686
5688
  params = self.omit(params, 'reduceOnly')
5687
5689
  if market['option']:
5688
5690
  request['reduceOnly'] = reduceOnly
@@ -5883,7 +5885,13 @@ class binance(Exchange, ImplicitAPI):
5883
5885
  # remove timeInForce from params because PO is only used by self.is_post_only and it's not a valid value for Binance
5884
5886
  if self.safe_string(params, 'timeInForce') == 'PO':
5885
5887
  params = self.omit(params, 'timeInForce')
5886
- requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test'])
5888
+ hedged = self.safe_bool(params, 'hedged', False)
5889
+ if not market['spot'] and not market['option'] and hedged:
5890
+ if reduceOnly:
5891
+ params = self.omit(params, 'reduceOnly')
5892
+ side = 'sell' if (side == 'buy') else 'buy'
5893
+ request['positionSide'] = 'LONG' if (side == 'buy') else 'SHORT'
5894
+ requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test', 'hedged'])
5887
5895
  return self.extend(request, requestParams)
5888
5896
 
5889
5897
  def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
@@ -2457,6 +2457,7 @@ class bingx(Exchange, ImplicitAPI):
2457
2457
  :param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
2458
2458
  :param float [params.stopLoss.triggerPrice]: stop loss trigger price
2459
2459
  :param boolean [params.test]: *swap only* whether to use the test endpoint or not, default is False
2460
+ :param str [params.positionSide]: *contracts only* "BOTH" for one way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
2460
2461
  :param boolean [params.hedged]: *swap only* whether the order is in hedged mode or one way mode
2461
2462
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2462
2463
  """
@@ -4183,13 +4184,25 @@ class bingx(Exchange, ImplicitAPI):
4183
4184
  currencyId = self.safe_string(depositAddress, 'coin')
4184
4185
  currency = self.safe_currency(currencyId, currency)
4185
4186
  code = currency['code']
4186
- network = self.safe_string(depositAddress, 'network')
4187
+ # the exchange API returns deposit addresses without the leading '0x' prefix
4188
+ # however, the exchange API does require the 0x prefix to withdraw
4189
+ # so we append the prefix before returning the address to the user
4190
+ # that is only if the underlying contract address has the 0x prefix
4191
+ networkCode = self.safe_string(depositAddress, 'network')
4192
+ if networkCode is not None:
4193
+ if networkCode in currency['networks']:
4194
+ network = currency['networks'][networkCode]
4195
+ contractAddress = self.safe_string(network['info'], 'contractAddress')
4196
+ if contractAddress is not None:
4197
+ if contractAddress[0] == '0' and contractAddress[1] == 'x':
4198
+ if address[0] != '0' or address[1] != 'x':
4199
+ address = '0x' + address
4187
4200
  self.check_address(address)
4188
4201
  return {
4189
4202
  'currency': code,
4190
4203
  'address': address,
4191
4204
  'tag': tag,
4192
- 'network': network,
4205
+ 'network': networkCode,
4193
4206
  'info': depositAddress,
4194
4207
  }
4195
4208
 
@@ -3947,6 +3947,7 @@ class bitget(Exchange, ImplicitAPI):
3947
3947
  :param str [params.trailingTriggerPrice]: *swap and future only* the price to trigger a trailing stop order, default uses the price argument
3948
3948
  :param str [params.triggerType]: *swap and future only* 'fill_price', 'mark_price' or 'index_price'
3949
3949
  :param boolean [params.oneWayMode]: *swap and future only* required to set self to True in one_way_mode and you can leave self in hedge_mode, can adjust the mode using the setPositionMode() method
3950
+ :param bool [params.hedged]: *swap and future only* True for hedged mode, False for one way mode, default is False
3950
3951
  :param bool [params.reduceOnly]: True or False whether the order is reduce-only
3951
3952
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
3952
3953
  """
@@ -3430,7 +3430,8 @@ class bybit(Exchange, ImplicitAPI):
3430
3430
  :param str [params.timeInForce]: "GTC", "IOC", "FOK"
3431
3431
  :param bool [params.postOnly]: True or False whether the order is post-only
3432
3432
  :param bool [params.reduceOnly]: True or False whether the order is reduce-only
3433
- :param str [params.positionIdx]: *contracts only* 0 for one-way mode, 1 buy side of hedged mode, 2 sell side of hedged mode
3433
+ :param str [params.positionIdx]: *contracts only* 0 for one-way mode, 1 buy side of hedged mode, 2 sell side of hedged mode
3434
+ :param bool [params.hedged]: *contracts only* True for hedged mode, False for one way mode, default is False
3434
3435
  :param boolean [params.isLeverage]: *unified spot only* False then spot trading True then margin trading
3435
3436
  :param str [params.tpslMode]: *contract only* 'full' or 'partial'
3436
3437
  :param str [params.mmp]: *option only* market maker protection
@@ -3481,6 +3481,12 @@ class htx(Exchange, ImplicitAPI):
3481
3481
  def fetch_order(self, id: str, symbol: Str = None, params={}):
3482
3482
  """
3483
3483
  fetches information on an order made by the user
3484
+ :see: https://huobiapi.github.io/docs/spot/v1/en/#get-the-order-detail-of-an-order-based-on-client-order-id
3485
+ :see: https://huobiapi.github.io/docs/spot/v1/en/#get-the-order-detail-of-an-order
3486
+ :see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#isolated-get-information-of-an-order
3487
+ :see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#cross-get-information-of-order
3488
+ :see: https://huobiapi.github.io/docs/dm/v1/en/#get-information-of-an-order
3489
+ :see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-information-of-an-order
3484
3490
  :param str symbol: unified symbol of the market the order was made in
3485
3491
  :param dict [params]: extra parameters specific to the exchange API endpoint
3486
3492
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1740,7 +1740,7 @@ class kraken(Exchange, ImplicitAPI):
1740
1740
  request['volume'] = self.cost_to_precision(symbol, cost)
1741
1741
  extendedOflags = flags + ',viqc' if (flags is not None) else 'viqc'
1742
1742
  request['oflags'] = extendedOflags
1743
- elif isLimitOrder and not isTrailingAmountOrder:
1743
+ elif isLimitOrder and not isTrailingAmountOrder and not isTrailingPercentOrder:
1744
1744
  request['price'] = self.price_to_precision(symbol, price)
1745
1745
  reduceOnly = self.safe_bool_2(params, 'reduceOnly', 'reduce_only')
1746
1746
  if isStopLossOrTakeProfitTrigger:
@@ -1760,8 +1760,8 @@ class kraken(Exchange, ImplicitAPI):
1760
1760
  request['price2'] = self.price_to_precision(symbol, price)
1761
1761
  elif isTrailingAmountOrder or isTrailingPercentOrder:
1762
1762
  trailingPercentString = None
1763
- if isTrailingPercentOrder:
1764
- trailingPercentString = trailingPercent if (trailingPercent.endswith('%')) else '+' + (self.number_to_string(trailingPercent) + '%')
1763
+ if trailingPercent is not None:
1764
+ trailingPercentString = ('+' + trailingPercent) if (trailingPercent.endswith('%')) else ('+' + trailingPercent + '%')
1765
1765
  trailingAmountString = '+' + trailingAmount if (trailingAmount is not None) else None # must use + for self
1766
1766
  offset = self.safe_string(params, 'offset', '-') # can use + or - for self
1767
1767
  trailingLimitAmountString = offset + self.number_to_string(trailingLimitAmount) if (trailingLimitAmount is not None) else None
@@ -1770,7 +1770,7 @@ class kraken(Exchange, ImplicitAPI):
1770
1770
  if isLimitOrder or (trailingLimitAmount is not None) or (trailingLimitPercent is not None):
1771
1771
  request['ordertype'] = 'trailing-stop-limit'
1772
1772
  if trailingLimitPercent is not None:
1773
- trailingLimitPercentString = trailingLimitPercent if (trailingLimitPercent.endswith('%')) else (self.number_to_string(trailingLimitPercent) + '%')
1773
+ trailingLimitPercentString = (offset + trailingLimitPercent) if (trailingLimitPercent.endswith('%')) else (offset + trailingLimitPercent + '%')
1774
1774
  request['price'] = trailingPercentString
1775
1775
  request['price2'] = trailingLimitPercentString
1776
1776
  elif trailingLimitAmount is not None:
@@ -2054,6 +2054,7 @@ class mexc(Exchange, ImplicitAPI):
2054
2054
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
2055
2055
  :param bool [params.postOnly]: if True, the order will only be posted if it will be a maker order
2056
2056
  :param bool [params.reduceOnly]: *contract only* indicates if self order is to reduce the size of a position
2057
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2057
2058
  *
2058
2059
  * EXCHANGE SPECIFIC PARAMETERS
2059
2060
  :param int [params.leverage]: *contract only* leverage is necessary on isolated margin
@@ -2179,6 +2180,7 @@ class mexc(Exchange, ImplicitAPI):
2179
2180
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
2180
2181
  :param bool [params.postOnly]: if True, the order will only be posted if it will be a maker order
2181
2182
  :param bool [params.reduceOnly]: indicates if self order is to reduce the size of a position
2183
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2182
2184
  *
2183
2185
  * EXCHANGE SPECIFIC PARAMETERS
2184
2186
  :param int [params.leverage]: leverage is necessary on isolated margin
@@ -2246,15 +2248,25 @@ class mexc(Exchange, ImplicitAPI):
2246
2248
  if leverage is None:
2247
2249
  raise ArgumentsRequired(self.id + ' createSwapOrder() requires a leverage parameter for isolated margin orders')
2248
2250
  reduceOnly = self.safe_bool(params, 'reduceOnly', False)
2249
- if reduceOnly:
2250
- request['side'] = 2 if (side == 'buy') else 4
2251
+ hedged = self.safe_bool(params, 'hedged', False)
2252
+ sideInteger = None
2253
+ if hedged:
2254
+ if reduceOnly:
2255
+ params = self.omit(params, 'reduceOnly') # hedged mode does not accept self parameter
2256
+ side = 'sell' if (side == 'buy') else 'buy'
2257
+ sideInteger = 1 if (side == 'buy') else 3
2258
+ request['positionMode'] = 1
2251
2259
  else:
2252
- request['side'] = 1 if (side == 'buy') else 3
2260
+ if reduceOnly:
2261
+ sideInteger = 2 if (side == 'buy') else 4
2262
+ else:
2263
+ sideInteger = 1 if (side == 'buy') else 3
2264
+ request['side'] = sideInteger
2253
2265
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'externalOid')
2254
2266
  if clientOrderId is not None:
2255
2267
  request['externalOid'] = clientOrderId
2256
2268
  stopPrice = self.safe_number_2(params, 'triggerPrice', 'stopPrice')
2257
- params = self.omit(params, ['clientOrderId', 'externalOid', 'postOnly', 'stopPrice', 'triggerPrice'])
2269
+ params = self.omit(params, ['clientOrderId', 'externalOid', 'postOnly', 'stopPrice', 'triggerPrice', 'hedged'])
2258
2270
  response = None
2259
2271
  if stopPrice:
2260
2272
  request['triggerPrice'] = self.price_to_precision(symbol, stopPrice)
@@ -2794,7 +2794,7 @@ class okx(Exchange, ImplicitAPI):
2794
2794
  :param str [params.positionSide]: if position mode is one-way: set to 'net', if position mode is hedge-mode: set to 'long' or 'short'
2795
2795
  :param str [params.trailingPercent]: the percent to trail away from the current market price
2796
2796
  :param str [params.tpOrdKind]: 'condition' or 'limit', the default is 'condition'
2797
- :param str [params.hedged]: True/false, to automatically set exchange-specific params needed when trading in hedge mode
2797
+ :param bool [params.hedged]: *swap and future only* True for hedged mode, False for one way mode
2798
2798
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2799
2799
  """
2800
2800
  self.load_markets()
@@ -4527,32 +4527,27 @@ class okx(Exchange, ImplicitAPI):
4527
4527
  :see: https://www.okx.com/docs-v5/en/#funding-account-rest-api-get-deposit-address
4528
4528
  :param str code: unified currency code
4529
4529
  :param dict [params]: extra parameters specific to the exchange API endpoint
4530
+ :param str [params.network]: the network name for the deposit address
4530
4531
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
4531
4532
  """
4533
+ self.load_markets()
4532
4534
  rawNetwork = self.safe_string_upper(params, 'network')
4533
- networks = self.safe_value(self.options, 'networks', {})
4534
- network = self.safe_string(networks, rawNetwork, rawNetwork)
4535
4535
  params = self.omit(params, 'network')
4536
+ code = self.safe_currency_code(code)
4537
+ network = self.network_id_to_code(rawNetwork, code)
4536
4538
  response = self.fetch_deposit_addresses_by_network(code, params)
4537
- result = None
4538
- if network is None:
4539
- result = self.safe_value(response, code)
4539
+ if network is not None:
4540
+ result = self.safe_dict(response, network)
4540
4541
  if result is None:
4541
- alias = self.safe_string(networks, code, code)
4542
- result = self.safe_value(response, alias)
4543
- if result is None:
4544
- defaultNetwork = self.safe_string(self.options, 'defaultNetwork', 'ERC20')
4545
- result = self.safe_value(response, defaultNetwork)
4546
- if result is None:
4547
- values = list(response.values())
4548
- result = self.safe_value(values, 0)
4549
- if result is None:
4550
- raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find deposit address for ' + code)
4542
+ raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find ' + network + ' deposit address for ' + code)
4551
4543
  return result
4552
- result = self.safe_value(response, network)
4553
- if result is None:
4554
- raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find ' + network + ' deposit address for ' + code)
4555
- return result
4544
+ codeNetwork = self.network_id_to_code(code, code)
4545
+ if codeNetwork in response:
4546
+ return response[codeNetwork]
4547
+ # if the network is not specified, return the first address
4548
+ keys = list(response.keys())
4549
+ first = self.safe_string(keys, 0)
4550
+ return self.safe_dict(response, first)
4556
4551
 
4557
4552
  def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
4558
4553
  """
@@ -2402,6 +2402,8 @@ class phemex(Exchange, ImplicitAPI):
2402
2402
  :param float [params.takeProfit.triggerPrice]: take profit trigger price
2403
2403
  :param dict [params.stopLoss]: *swap only* *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered(perpetual swap markets only)
2404
2404
  :param float [params.stopLoss.triggerPrice]: stop loss trigger price
2405
+ :param str [params.posSide]: *swap only* "Merged" for one way mode, "Long" for buy side of hedged mode, "Short" for sell side of hedged mode
2406
+ :param bool [params.hedged]: *swap only* True for hedged mode, False for one way mode, default is False
2405
2407
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2406
2408
  """
2407
2409
  self.load_markets()
@@ -2486,13 +2488,18 @@ class phemex(Exchange, ImplicitAPI):
2486
2488
  amountString = self.number_to_string(amount)
2487
2489
  request['baseQtyEv'] = self.to_ev(amountString, market)
2488
2490
  elif market['swap']:
2491
+ hedged = self.safe_bool(params, 'hedged', False)
2492
+ params = self.omit(params, 'hedged')
2489
2493
  posSide = self.safe_string_lower(params, 'posSide')
2490
2494
  if posSide is None:
2491
- posSide = 'Merged'
2495
+ if hedged:
2496
+ if reduceOnly:
2497
+ side = 'sell' if (side == 'buy') else 'buy'
2498
+ posSide = 'Long' if (side == 'buy') else 'Short'
2499
+ else:
2500
+ posSide = 'Merged'
2492
2501
  posSide = self.capitalize(posSide)
2493
2502
  request['posSide'] = posSide
2494
- if reduceOnly is not None:
2495
- request['reduceOnly'] = reduceOnly
2496
2503
  if market['settle'] == 'USDT':
2497
2504
  request['orderQtyRq'] = amount
2498
2505
  else: