ccxt 4.4.93 → 4.4.95

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 (893) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/abstract/alpaca.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +1 -1
  6. package/dist/cjs/src/abstract/ascendex.js +1 -1
  7. package/dist/cjs/src/abstract/bigone.js +1 -1
  8. package/dist/cjs/src/abstract/binance.js +1 -1
  9. package/dist/cjs/src/abstract/bingx.js +1 -1
  10. package/dist/cjs/src/abstract/bit2c.js +1 -1
  11. package/dist/cjs/src/abstract/bitbank.js +1 -1
  12. package/dist/cjs/src/abstract/bitbns.js +1 -1
  13. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  14. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  15. package/dist/cjs/src/abstract/bitget.js +1 -1
  16. package/dist/cjs/src/abstract/bithumb.js +1 -1
  17. package/dist/cjs/src/abstract/bitmart.js +1 -1
  18. package/dist/cjs/src/abstract/bitmex.js +1 -1
  19. package/dist/cjs/src/abstract/bitopro.js +1 -1
  20. package/dist/cjs/src/abstract/bitrue.js +1 -1
  21. package/dist/cjs/src/abstract/bitso.js +1 -1
  22. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  23. package/dist/cjs/src/abstract/bitteam.js +1 -1
  24. package/dist/cjs/src/abstract/bittrade.js +1 -1
  25. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  26. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  27. package/dist/cjs/src/abstract/blofin.js +1 -1
  28. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  29. package/dist/cjs/src/abstract/btcbox.js +1 -1
  30. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  31. package/dist/cjs/src/abstract/btcturk.js +1 -1
  32. package/dist/cjs/src/abstract/bybit.js +1 -1
  33. package/dist/cjs/src/abstract/cex.js +1 -1
  34. package/dist/cjs/src/abstract/coinbase.js +1 -1
  35. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  37. package/dist/cjs/src/abstract/coincatch.js +1 -1
  38. package/dist/cjs/src/abstract/coincheck.js +1 -1
  39. package/dist/cjs/src/abstract/coinex.js +1 -1
  40. package/dist/cjs/src/abstract/coinmate.js +1 -1
  41. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  42. package/dist/cjs/src/abstract/coinone.js +1 -1
  43. package/dist/cjs/src/abstract/coinsph.js +1 -1
  44. package/dist/cjs/src/abstract/coinspot.js +1 -1
  45. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  46. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  47. package/dist/cjs/src/abstract/defx.js +1 -1
  48. package/dist/cjs/src/abstract/delta.js +1 -1
  49. package/dist/cjs/src/abstract/deribit.js +1 -1
  50. package/dist/cjs/src/abstract/derive.js +1 -1
  51. package/dist/cjs/src/abstract/digifinex.js +1 -1
  52. package/dist/cjs/src/abstract/ellipx.js +1 -1
  53. package/dist/cjs/src/abstract/exmo.js +1 -1
  54. package/dist/cjs/src/abstract/gate.js +1 -1
  55. package/dist/cjs/src/abstract/gemini.js +1 -1
  56. package/dist/cjs/src/abstract/hashkey.js +1 -1
  57. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  58. package/dist/cjs/src/abstract/hollaex.js +1 -1
  59. package/dist/cjs/src/abstract/htx.js +1 -1
  60. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  61. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  62. package/dist/cjs/src/abstract/indodax.js +1 -1
  63. package/dist/cjs/src/abstract/kraken.js +1 -1
  64. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  65. package/dist/cjs/src/abstract/kucoin.js +1 -1
  66. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  67. package/dist/cjs/src/abstract/latoken.js +1 -1
  68. package/dist/cjs/src/abstract/lbank.js +1 -1
  69. package/dist/cjs/src/abstract/luno.js +1 -1
  70. package/dist/cjs/src/abstract/mercado.js +1 -1
  71. package/dist/cjs/src/abstract/mexc.js +1 -1
  72. package/dist/cjs/src/abstract/modetrade.js +1 -1
  73. package/dist/cjs/src/abstract/ndax.js +1 -1
  74. package/dist/cjs/src/abstract/novadax.js +1 -1
  75. package/dist/cjs/src/abstract/oceanex.js +1 -1
  76. package/dist/cjs/src/abstract/okcoin.js +1 -1
  77. package/dist/cjs/src/abstract/okx.js +1 -1
  78. package/dist/cjs/src/abstract/onetrading.js +1 -1
  79. package/dist/cjs/src/abstract/oxfun.js +1 -1
  80. package/dist/cjs/src/abstract/p2b.js +1 -1
  81. package/dist/cjs/src/abstract/paradex.js +1 -1
  82. package/dist/cjs/src/abstract/paymium.js +1 -1
  83. package/dist/cjs/src/abstract/phemex.js +1 -1
  84. package/dist/cjs/src/abstract/poloniex.js +1 -1
  85. package/dist/cjs/src/abstract/probit.js +1 -1
  86. package/dist/cjs/src/abstract/timex.js +1 -1
  87. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  88. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  89. package/dist/cjs/src/abstract/upbit.js +1 -1
  90. package/dist/cjs/src/abstract/vertex.js +1 -1
  91. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  92. package/dist/cjs/src/abstract/whitebit.js +1 -1
  93. package/dist/cjs/src/abstract/woo.js +1 -1
  94. package/dist/cjs/src/abstract/woofipro.js +1 -1
  95. package/dist/cjs/src/abstract/xt.js +1 -1
  96. package/dist/cjs/src/abstract/yobit.js +1 -1
  97. package/dist/cjs/src/abstract/zaif.js +1 -1
  98. package/dist/cjs/src/abstract/zonda.js +1 -1
  99. package/dist/cjs/src/alpaca.js +1 -1
  100. package/dist/cjs/src/apex.js +1 -1
  101. package/dist/cjs/src/ascendex.js +1 -1
  102. package/dist/cjs/src/base/Exchange.js +53 -24
  103. package/dist/cjs/src/base/Precise.js +0 -6
  104. package/dist/cjs/src/base/errors.js +0 -6
  105. package/dist/cjs/src/base/functions/crypto.js +1 -1
  106. package/dist/cjs/src/base/functions/encode.js +1 -1
  107. package/dist/cjs/src/base/functions/misc.js +0 -1
  108. package/dist/cjs/src/base/functions/number.js +0 -6
  109. package/dist/cjs/src/base/functions/platform.js +0 -6
  110. package/dist/cjs/src/base/functions/rsa.js +0 -1
  111. package/dist/cjs/src/base/functions/string.js +0 -6
  112. package/dist/cjs/src/base/functions/throttle.js +1 -1
  113. package/dist/cjs/src/base/functions/time.js +0 -6
  114. package/dist/cjs/src/base/functions/totp.js +0 -1
  115. package/dist/cjs/src/base/functions/type.js +0 -6
  116. package/dist/cjs/src/base/functions.js +1 -1
  117. package/dist/cjs/src/base/ws/Cache.js +0 -6
  118. package/dist/cjs/src/base/ws/Client.js +0 -1
  119. package/dist/cjs/src/base/ws/Future.js +3 -3
  120. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  121. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  122. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  123. package/dist/cjs/src/bequant.js +1 -1
  124. package/dist/cjs/src/bigone.js +1 -1
  125. package/dist/cjs/src/binance.js +1 -1
  126. package/dist/cjs/src/binancecoinm.js +1 -1
  127. package/dist/cjs/src/binanceus.js +1 -1
  128. package/dist/cjs/src/binanceusdm.js +1 -1
  129. package/dist/cjs/src/bingx.js +149 -95
  130. package/dist/cjs/src/bit2c.js +1 -1
  131. package/dist/cjs/src/bitbank.js +1 -1
  132. package/dist/cjs/src/bitbns.js +1 -1
  133. package/dist/cjs/src/bitfinex.js +1 -1
  134. package/dist/cjs/src/bitflyer.js +1 -1
  135. package/dist/cjs/src/bitget.js +2 -2
  136. package/dist/cjs/src/bithumb.js +1 -1
  137. package/dist/cjs/src/bitmart.js +1 -1
  138. package/dist/cjs/src/bitmex.js +1 -1
  139. package/dist/cjs/src/bitopro.js +1 -1
  140. package/dist/cjs/src/bitrue.js +1 -1
  141. package/dist/cjs/src/bitso.js +1 -1
  142. package/dist/cjs/src/bitstamp.js +2 -1
  143. package/dist/cjs/src/bitteam.js +1 -1
  144. package/dist/cjs/src/bittrade.js +1 -1
  145. package/dist/cjs/src/blockchaincom.js +1 -1
  146. package/dist/cjs/src/blofin.js +8 -2
  147. package/dist/cjs/src/btcalpha.js +1 -1
  148. package/dist/cjs/src/btcbox.js +1 -1
  149. package/dist/cjs/src/btcmarkets.js +1 -1
  150. package/dist/cjs/src/btcturk.js +1 -1
  151. package/dist/cjs/src/bybit.js +4 -4
  152. package/dist/cjs/src/cex.js +1 -1
  153. package/dist/cjs/src/coinbase.js +39 -1
  154. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  155. package/dist/cjs/src/coincatch.js +1 -1
  156. package/dist/cjs/src/coincheck.js +1 -1
  157. package/dist/cjs/src/coinex.js +1 -1
  158. package/dist/cjs/src/coinmate.js +35 -1
  159. package/dist/cjs/src/coinmetro.js +17 -4
  160. package/dist/cjs/src/coinone.js +35 -1
  161. package/dist/cjs/src/coinsph.js +29 -1
  162. package/dist/cjs/src/coinspot.js +1 -1
  163. package/dist/cjs/src/cryptocom.js +1 -1
  164. package/dist/cjs/src/cryptomus.js +1 -1
  165. package/dist/cjs/src/defx.js +1 -1
  166. package/dist/cjs/src/delta.js +1 -1
  167. package/dist/cjs/src/deribit.js +1 -1
  168. package/dist/cjs/src/derive.js +1 -1
  169. package/dist/cjs/src/digifinex.js +1 -1
  170. package/dist/cjs/src/ellipx.js +1 -1
  171. package/dist/cjs/src/exmo.js +1 -1
  172. package/dist/cjs/src/fmfwio.js +1 -1
  173. package/dist/cjs/src/gate.js +2 -2
  174. package/dist/cjs/src/gateio.js +1 -1
  175. package/dist/cjs/src/gemini.js +1 -1
  176. package/dist/cjs/src/hashkey.js +1 -1
  177. package/dist/cjs/src/hitbtc.js +0 -1
  178. package/dist/cjs/src/hollaex.js +1 -1
  179. package/dist/cjs/src/htx.js +8 -2
  180. package/dist/cjs/src/huobi.js +1 -1
  181. package/dist/cjs/src/hyperliquid.js +135 -34
  182. package/dist/cjs/src/independentreserve.js +1 -1
  183. package/dist/cjs/src/indodax.js +1 -1
  184. package/dist/cjs/src/kraken.js +1 -1
  185. package/dist/cjs/src/krakenfutures.js +1 -1
  186. package/dist/cjs/src/kucoin.js +1 -1
  187. package/dist/cjs/src/kucoinfutures.js +1 -1
  188. package/dist/cjs/src/latoken.js +1 -1
  189. package/dist/cjs/src/lbank.js +1 -1
  190. package/dist/cjs/src/luno.js +1 -1
  191. package/dist/cjs/src/mercado.js +1 -1
  192. package/dist/cjs/src/mexc.js +1 -1
  193. package/dist/cjs/src/modetrade.js +1 -1
  194. package/dist/cjs/src/myokx.js +1 -1
  195. package/dist/cjs/src/ndax.js +1 -1
  196. package/dist/cjs/src/novadax.js +1 -1
  197. package/dist/cjs/src/oceanex.js +1 -1
  198. package/dist/cjs/src/okcoin.js +1 -1
  199. package/dist/cjs/src/okx.js +14 -5
  200. package/dist/cjs/src/okxus.js +1 -1
  201. package/dist/cjs/src/onetrading.js +1 -1
  202. package/dist/cjs/src/oxfun.js +1 -1
  203. package/dist/cjs/src/p2b.js +1 -1
  204. package/dist/cjs/src/paradex.js +2 -2
  205. package/dist/cjs/src/paymium.js +1 -1
  206. package/dist/cjs/src/poloniex.js +1 -1
  207. package/dist/cjs/src/pro/alpaca.js +1 -1
  208. package/dist/cjs/src/pro/apex.js +1 -1
  209. package/dist/cjs/src/pro/ascendex.js +1 -1
  210. package/dist/cjs/src/pro/bequant.js +1 -1
  211. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  212. package/dist/cjs/src/pro/binanceus.js +1 -1
  213. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  214. package/dist/cjs/src/pro/bingx.js +1 -1
  215. package/dist/cjs/src/pro/bitfinex.js +1 -1
  216. package/dist/cjs/src/pro/bitget.js +1 -1
  217. package/dist/cjs/src/pro/bithumb.js +1 -1
  218. package/dist/cjs/src/pro/bitmart.js +1 -1
  219. package/dist/cjs/src/pro/bitmex.js +1 -1
  220. package/dist/cjs/src/pro/bitrue.js +1 -1
  221. package/dist/cjs/src/pro/bitstamp.js +1 -1
  222. package/dist/cjs/src/pro/bitvavo.js +1 -1
  223. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  224. package/dist/cjs/src/pro/blofin.js +1 -1
  225. package/dist/cjs/src/pro/bybit.js +1 -1
  226. package/dist/cjs/src/pro/cex.js +1 -1
  227. package/dist/cjs/src/pro/coinbase.js +1 -1
  228. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  229. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  230. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  231. package/dist/cjs/src/pro/coincatch.js +1 -1
  232. package/dist/cjs/src/pro/coincheck.js +1 -1
  233. package/dist/cjs/src/pro/coinex.js +1 -1
  234. package/dist/cjs/src/pro/coinone.js +1 -1
  235. package/dist/cjs/src/pro/cryptocom.js +1 -1
  236. package/dist/cjs/src/pro/defx.js +1 -1
  237. package/dist/cjs/src/pro/deribit.js +1 -1
  238. package/dist/cjs/src/pro/exmo.js +1 -1
  239. package/dist/cjs/src/pro/gate.js +1 -1
  240. package/dist/cjs/src/pro/gateio.js +1 -1
  241. package/dist/cjs/src/pro/gemini.js +1 -1
  242. package/dist/cjs/src/pro/hashkey.js +1 -1
  243. package/dist/cjs/src/pro/hitbtc.js +1 -1
  244. package/dist/cjs/src/pro/hollaex.js +1 -1
  245. package/dist/cjs/src/pro/htx.js +1 -1
  246. package/dist/cjs/src/pro/huobi.js +1 -1
  247. package/dist/cjs/src/pro/hyperliquid.js +7 -7
  248. package/dist/cjs/src/pro/independentreserve.js +1 -1
  249. package/dist/cjs/src/pro/kraken.js +19 -19
  250. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  251. package/dist/cjs/src/pro/kucoin.js +1 -1
  252. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  253. package/dist/cjs/src/pro/lbank.js +0 -1
  254. package/dist/cjs/src/pro/luno.js +1 -1
  255. package/dist/cjs/src/pro/mexc.js +11 -11
  256. package/dist/cjs/src/pro/myokx.js +1 -1
  257. package/dist/cjs/src/pro/ndax.js +1 -1
  258. package/dist/cjs/src/pro/okcoin.js +1 -1
  259. package/dist/cjs/src/pro/okx.js +1 -1
  260. package/dist/cjs/src/pro/okxus.js +1 -1
  261. package/dist/cjs/src/pro/onetrading.js +1 -1
  262. package/dist/cjs/src/pro/oxfun.js +1 -1
  263. package/dist/cjs/src/pro/p2b.js +1 -1
  264. package/dist/cjs/src/pro/paradex.js +1 -1
  265. package/dist/cjs/src/pro/phemex.js +1 -1
  266. package/dist/cjs/src/pro/poloniex.js +1 -1
  267. package/dist/cjs/src/pro/probit.js +1 -1
  268. package/dist/cjs/src/pro/tradeogre.js +1 -1
  269. package/dist/cjs/src/pro/upbit.js +1 -1
  270. package/dist/cjs/src/pro/whitebit.js +1 -1
  271. package/dist/cjs/src/pro/xt.js +1 -1
  272. package/dist/cjs/src/probit.js +1 -1
  273. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
  274. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  275. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  276. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  277. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  278. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  279. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  280. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  281. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  282. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  283. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  284. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  285. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  286. package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
  287. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  288. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  289. package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
  290. package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
  291. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  292. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  293. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  294. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
  295. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  296. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  297. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  298. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  299. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  300. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  301. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  302. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  303. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  304. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  305. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  306. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  307. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  308. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  309. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  310. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  315. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  316. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  317. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  318. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  319. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  320. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  321. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  322. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  323. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  324. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  327. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  328. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  329. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  330. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  331. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  332. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  333. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  334. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  335. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  336. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  337. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  338. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  339. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  340. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  341. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  342. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  343. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  344. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
  345. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  346. package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
  347. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  348. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  349. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  350. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  351. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  352. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  353. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  354. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  355. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  356. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  357. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  358. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  359. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  360. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  361. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  362. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  363. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
  364. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  365. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  366. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  367. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  368. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  369. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  370. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  371. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  372. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
  373. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  374. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  375. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  376. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  377. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
  378. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
  382. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  383. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  384. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  385. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  386. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  388. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  389. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  390. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  391. package/dist/cjs/src/timex.js +0 -1
  392. package/dist/cjs/src/tokocrypto.js +1 -1
  393. package/dist/cjs/src/tradeogre.js +1 -1
  394. package/dist/cjs/src/upbit.js +1 -1
  395. package/dist/cjs/src/vertex.js +1 -1
  396. package/dist/cjs/src/wavesexchange.js +16 -3
  397. package/dist/cjs/src/whitebit.js +1 -1
  398. package/dist/cjs/src/woo.js +1279 -897
  399. package/dist/cjs/src/woofipro.js +1 -1
  400. package/dist/cjs/src/xt.js +1 -1
  401. package/dist/cjs/src/yobit.js +1 -1
  402. package/dist/cjs/src/zaif.js +1 -1
  403. package/dist/cjs/src/zonda.js +1 -1
  404. package/js/ccxt.d.ts +1 -1
  405. package/js/ccxt.js +1 -7
  406. package/js/src/abstract/alpaca.js +0 -6
  407. package/js/src/abstract/apex.js +0 -6
  408. package/js/src/abstract/ascendex.js +0 -6
  409. package/js/src/abstract/bequant.js +0 -6
  410. package/js/src/abstract/bigone.js +0 -6
  411. package/js/src/abstract/binance.js +0 -6
  412. package/js/src/abstract/binancecoinm.js +0 -6
  413. package/js/src/abstract/binanceus.js +0 -6
  414. package/js/src/abstract/binanceusdm.js +0 -6
  415. package/js/src/abstract/bingx.d.ts +3 -0
  416. package/js/src/abstract/bingx.js +0 -6
  417. package/js/src/abstract/bit2c.js +0 -6
  418. package/js/src/abstract/bitbank.js +0 -6
  419. package/js/src/abstract/bitbns.js +0 -6
  420. package/js/src/abstract/bitfinex.js +0 -6
  421. package/js/src/abstract/bitflyer.js +0 -6
  422. package/js/src/abstract/bitget.js +0 -6
  423. package/js/src/abstract/bithumb.js +0 -6
  424. package/js/src/abstract/bitmart.js +0 -6
  425. package/js/src/abstract/bitmex.js +0 -6
  426. package/js/src/abstract/bitopro.js +0 -6
  427. package/js/src/abstract/bitrue.js +0 -6
  428. package/js/src/abstract/bitso.js +0 -6
  429. package/js/src/abstract/bitstamp.js +0 -6
  430. package/js/src/abstract/bitteam.js +0 -6
  431. package/js/src/abstract/bittrade.js +0 -6
  432. package/js/src/abstract/bitvavo.js +0 -6
  433. package/js/src/abstract/blockchaincom.js +0 -6
  434. package/js/src/abstract/blofin.js +0 -6
  435. package/js/src/abstract/btcalpha.js +0 -6
  436. package/js/src/abstract/btcbox.js +0 -6
  437. package/js/src/abstract/btcmarkets.js +0 -6
  438. package/js/src/abstract/btcturk.js +0 -6
  439. package/js/src/abstract/bybit.js +0 -6
  440. package/js/src/abstract/cex.js +0 -6
  441. package/js/src/abstract/coinbase.js +0 -6
  442. package/js/src/abstract/coinbaseadvanced.js +0 -6
  443. package/js/src/abstract/coinbaseexchange.js +0 -6
  444. package/js/src/abstract/coinbaseinternational.js +0 -6
  445. package/js/src/abstract/coincatch.js +0 -6
  446. package/js/src/abstract/coincheck.js +0 -6
  447. package/js/src/abstract/coinex.js +0 -6
  448. package/js/src/abstract/coinmate.js +0 -6
  449. package/js/src/abstract/coinmetro.js +0 -6
  450. package/js/src/abstract/coinone.js +0 -6
  451. package/js/src/abstract/coinsph.js +0 -6
  452. package/js/src/abstract/coinspot.js +0 -6
  453. package/js/src/abstract/cryptocom.js +0 -6
  454. package/js/src/abstract/cryptomus.js +0 -6
  455. package/js/src/abstract/defx.js +0 -6
  456. package/js/src/abstract/delta.js +0 -6
  457. package/js/src/abstract/deribit.js +0 -6
  458. package/js/src/abstract/derive.js +0 -6
  459. package/js/src/abstract/digifinex.js +0 -6
  460. package/js/src/abstract/ellipx.js +0 -6
  461. package/js/src/abstract/exmo.js +0 -6
  462. package/js/src/abstract/fmfwio.js +0 -6
  463. package/js/src/abstract/gate.js +0 -6
  464. package/js/src/abstract/gateio.js +0 -6
  465. package/js/src/abstract/gemini.js +0 -6
  466. package/js/src/abstract/hashkey.js +0 -6
  467. package/js/src/abstract/hitbtc.js +0 -6
  468. package/js/src/abstract/hollaex.js +0 -6
  469. package/js/src/abstract/htx.js +0 -6
  470. package/js/src/abstract/huobi.js +0 -6
  471. package/js/src/abstract/hyperliquid.js +0 -6
  472. package/js/src/abstract/independentreserve.js +0 -6
  473. package/js/src/abstract/indodax.js +0 -6
  474. package/js/src/abstract/kraken.js +0 -6
  475. package/js/src/abstract/krakenfutures.js +0 -6
  476. package/js/src/abstract/kucoin.js +0 -6
  477. package/js/src/abstract/kucoinfutures.js +0 -6
  478. package/js/src/abstract/latoken.js +0 -6
  479. package/js/src/abstract/lbank.js +0 -6
  480. package/js/src/abstract/luno.js +0 -6
  481. package/js/src/abstract/mercado.js +0 -6
  482. package/js/src/abstract/mexc.js +0 -6
  483. package/js/src/abstract/modetrade.js +0 -6
  484. package/js/src/abstract/myokx.js +0 -6
  485. package/js/src/abstract/ndax.js +0 -6
  486. package/js/src/abstract/novadax.js +0 -6
  487. package/js/src/abstract/oceanex.js +0 -6
  488. package/js/src/abstract/okcoin.js +0 -6
  489. package/js/src/abstract/okx.js +0 -6
  490. package/js/src/abstract/okxus.js +0 -6
  491. package/js/src/abstract/onetrading.js +0 -6
  492. package/js/src/abstract/oxfun.js +0 -6
  493. package/js/src/abstract/p2b.js +0 -6
  494. package/js/src/abstract/paradex.js +0 -6
  495. package/js/src/abstract/paymium.js +0 -6
  496. package/js/src/abstract/phemex.js +0 -6
  497. package/js/src/abstract/poloniex.js +0 -6
  498. package/js/src/abstract/probit.js +0 -6
  499. package/js/src/abstract/timex.js +0 -6
  500. package/js/src/abstract/tokocrypto.js +0 -6
  501. package/js/src/abstract/tradeogre.js +0 -6
  502. package/js/src/abstract/upbit.js +0 -6
  503. package/js/src/abstract/vertex.js +0 -6
  504. package/js/src/abstract/wavesexchange.js +0 -6
  505. package/js/src/abstract/whitebit.js +0 -6
  506. package/js/src/abstract/woo.d.ts +58 -3
  507. package/js/src/abstract/woo.js +0 -6
  508. package/js/src/abstract/woofipro.js +0 -6
  509. package/js/src/abstract/xt.js +0 -6
  510. package/js/src/abstract/yobit.js +0 -6
  511. package/js/src/abstract/zaif.js +0 -6
  512. package/js/src/abstract/zonda.js +0 -6
  513. package/js/src/alpaca.js +0 -6
  514. package/js/src/apex.js +0 -6
  515. package/js/src/ascendex.js +0 -6
  516. package/js/src/base/Exchange.js +53 -30
  517. package/js/src/base/Precise.js +0 -6
  518. package/js/src/base/errorHierarchy.js +0 -6
  519. package/js/src/base/errors.js +0 -6
  520. package/js/src/base/functions/crypto.js +0 -6
  521. package/js/src/base/functions/encode.js +0 -6
  522. package/js/src/base/functions/generic.js +0 -6
  523. package/js/src/base/functions/misc.js +0 -6
  524. package/js/src/base/functions/number.js +0 -6
  525. package/js/src/base/functions/platform.js +0 -6
  526. package/js/src/base/functions/rsa.js +0 -6
  527. package/js/src/base/functions/string.js +0 -6
  528. package/js/src/base/functions/throttle.js +0 -6
  529. package/js/src/base/functions/time.js +0 -6
  530. package/js/src/base/functions/totp.js +0 -6
  531. package/js/src/base/functions/type.js +0 -6
  532. package/js/src/base/functions.js +0 -6
  533. package/js/src/base/types.js +0 -6
  534. package/js/src/base/ws/Cache.js +0 -6
  535. package/js/src/base/ws/Client.js +0 -6
  536. package/js/src/base/ws/Future.js +2 -8
  537. package/js/src/base/ws/OrderBook.js +0 -6
  538. package/js/src/base/ws/OrderBookSide.js +0 -6
  539. package/js/src/base/ws/WsClient.js +0 -6
  540. package/js/src/base/ws/functions.js +0 -6
  541. package/js/src/bequant.js +0 -6
  542. package/js/src/bigone.js +0 -6
  543. package/js/src/binance.js +0 -6
  544. package/js/src/binancecoinm.js +0 -6
  545. package/js/src/binanceus.js +0 -6
  546. package/js/src/binanceusdm.js +0 -6
  547. package/js/src/bingx.d.ts +6 -6
  548. package/js/src/bingx.js +148 -100
  549. package/js/src/bit2c.js +0 -6
  550. package/js/src/bitbank.js +0 -6
  551. package/js/src/bitbns.js +0 -6
  552. package/js/src/bitfinex.js +0 -6
  553. package/js/src/bitflyer.js +0 -6
  554. package/js/src/bitget.js +1 -7
  555. package/js/src/bithumb.js +0 -6
  556. package/js/src/bitmart.js +0 -6
  557. package/js/src/bitmex.js +0 -6
  558. package/js/src/bitopro.js +0 -6
  559. package/js/src/bitrue.js +0 -6
  560. package/js/src/bitso.js +0 -6
  561. package/js/src/bitstamp.js +2 -7
  562. package/js/src/bitteam.js +0 -6
  563. package/js/src/bittrade.js +0 -6
  564. package/js/src/bitvavo.js +0 -6
  565. package/js/src/blockchaincom.js +0 -6
  566. package/js/src/blofin.d.ts +1 -0
  567. package/js/src/blofin.js +7 -7
  568. package/js/src/btcalpha.js +0 -6
  569. package/js/src/btcbox.js +0 -6
  570. package/js/src/btcmarkets.js +0 -6
  571. package/js/src/btcturk.js +0 -6
  572. package/js/src/bybit.js +3 -9
  573. package/js/src/cex.js +0 -6
  574. package/js/src/coinbase.js +40 -8
  575. package/js/src/coinbaseadvanced.js +0 -6
  576. package/js/src/coinbaseexchange.js +0 -6
  577. package/js/src/coinbaseinternational.js +0 -6
  578. package/js/src/coincatch.js +0 -6
  579. package/js/src/coincheck.js +0 -6
  580. package/js/src/coinex.js +0 -6
  581. package/js/src/coinmate.js +34 -6
  582. package/js/src/coinmetro.js +16 -9
  583. package/js/src/coinone.js +34 -6
  584. package/js/src/coinsph.js +29 -6
  585. package/js/src/coinspot.js +0 -6
  586. package/js/src/cryptocom.js +0 -6
  587. package/js/src/cryptomus.js +0 -6
  588. package/js/src/defx.js +0 -6
  589. package/js/src/delta.js +0 -6
  590. package/js/src/deribit.js +0 -6
  591. package/js/src/derive.js +0 -6
  592. package/js/src/digifinex.js +0 -6
  593. package/js/src/ellipx.js +0 -6
  594. package/js/src/exmo.js +0 -6
  595. package/js/src/fmfwio.js +0 -6
  596. package/js/src/gate.js +1 -7
  597. package/js/src/gateio.js +0 -6
  598. package/js/src/gemini.js +0 -6
  599. package/js/src/hashkey.js +0 -6
  600. package/js/src/hitbtc.js +0 -6
  601. package/js/src/hollaex.js +0 -6
  602. package/js/src/htx.js +7 -7
  603. package/js/src/huobi.js +0 -6
  604. package/js/src/hyperliquid.d.ts +31 -0
  605. package/js/src/hyperliquid.js +134 -39
  606. package/js/src/independentreserve.js +0 -6
  607. package/js/src/indodax.js +0 -6
  608. package/js/src/kraken.js +0 -6
  609. package/js/src/krakenfutures.js +0 -6
  610. package/js/src/kucoin.js +0 -6
  611. package/js/src/kucoinfutures.js +0 -6
  612. package/js/src/latoken.js +0 -6
  613. package/js/src/lbank.js +0 -6
  614. package/js/src/luno.js +0 -6
  615. package/js/src/mercado.js +0 -6
  616. package/js/src/mexc.js +0 -6
  617. package/js/src/modetrade.js +0 -6
  618. package/js/src/myokx.js +0 -6
  619. package/js/src/ndax.js +0 -6
  620. package/js/src/novadax.js +0 -6
  621. package/js/src/oceanex.js +0 -6
  622. package/js/src/okcoin.js +0 -6
  623. package/js/src/okx.js +13 -10
  624. package/js/src/okxus.js +0 -6
  625. package/js/src/onetrading.js +0 -6
  626. package/js/src/oxfun.js +0 -6
  627. package/js/src/p2b.js +0 -6
  628. package/js/src/paradex.js +1 -7
  629. package/js/src/paymium.js +0 -6
  630. package/js/src/phemex.js +0 -6
  631. package/js/src/poloniex.js +0 -6
  632. package/js/src/pro/alpaca.js +0 -6
  633. package/js/src/pro/apex.js +0 -6
  634. package/js/src/pro/ascendex.js +0 -6
  635. package/js/src/pro/bequant.js +0 -6
  636. package/js/src/pro/binance.js +0 -6
  637. package/js/src/pro/binancecoinm.js +0 -6
  638. package/js/src/pro/binanceus.js +0 -6
  639. package/js/src/pro/binanceusdm.js +0 -6
  640. package/js/src/pro/bingx.js +0 -6
  641. package/js/src/pro/bitfinex.js +0 -6
  642. package/js/src/pro/bitget.js +0 -6
  643. package/js/src/pro/bithumb.js +0 -6
  644. package/js/src/pro/bitmart.js +0 -6
  645. package/js/src/pro/bitmex.js +0 -6
  646. package/js/src/pro/bitopro.js +0 -6
  647. package/js/src/pro/bitrue.js +0 -6
  648. package/js/src/pro/bitstamp.js +0 -6
  649. package/js/src/pro/bittrade.js +0 -6
  650. package/js/src/pro/bitvavo.js +0 -6
  651. package/js/src/pro/blockchaincom.js +0 -6
  652. package/js/src/pro/blofin.js +0 -6
  653. package/js/src/pro/bybit.js +0 -6
  654. package/js/src/pro/cex.js +0 -6
  655. package/js/src/pro/coinbase.js +0 -6
  656. package/js/src/pro/coinbaseadvanced.js +0 -6
  657. package/js/src/pro/coinbaseexchange.js +0 -6
  658. package/js/src/pro/coinbaseinternational.js +0 -6
  659. package/js/src/pro/coincatch.js +0 -6
  660. package/js/src/pro/coincheck.js +0 -6
  661. package/js/src/pro/coinex.js +0 -6
  662. package/js/src/pro/coinone.js +0 -6
  663. package/js/src/pro/cryptocom.js +0 -6
  664. package/js/src/pro/defx.js +0 -6
  665. package/js/src/pro/deribit.js +0 -6
  666. package/js/src/pro/derive.js +0 -6
  667. package/js/src/pro/exmo.js +0 -6
  668. package/js/src/pro/gate.js +0 -6
  669. package/js/src/pro/gateio.js +0 -6
  670. package/js/src/pro/gemini.js +0 -6
  671. package/js/src/pro/hashkey.js +0 -6
  672. package/js/src/pro/hitbtc.js +0 -6
  673. package/js/src/pro/hollaex.js +0 -6
  674. package/js/src/pro/htx.js +0 -6
  675. package/js/src/pro/huobi.js +0 -6
  676. package/js/src/pro/hyperliquid.js +6 -12
  677. package/js/src/pro/independentreserve.js +0 -6
  678. package/js/src/pro/kraken.js +18 -24
  679. package/js/src/pro/krakenfutures.js +0 -6
  680. package/js/src/pro/kucoin.js +0 -6
  681. package/js/src/pro/kucoinfutures.js +0 -6
  682. package/js/src/pro/lbank.js +0 -6
  683. package/js/src/pro/luno.js +0 -6
  684. package/js/src/pro/mexc.js +10 -16
  685. package/js/src/pro/modetrade.js +0 -6
  686. package/js/src/pro/myokx.js +0 -6
  687. package/js/src/pro/ndax.js +0 -6
  688. package/js/src/pro/okcoin.js +0 -6
  689. package/js/src/pro/okx.js +0 -6
  690. package/js/src/pro/okxus.js +0 -6
  691. package/js/src/pro/onetrading.js +0 -6
  692. package/js/src/pro/oxfun.js +0 -6
  693. package/js/src/pro/p2b.js +0 -6
  694. package/js/src/pro/paradex.js +0 -6
  695. package/js/src/pro/phemex.js +0 -6
  696. package/js/src/pro/poloniex.js +0 -6
  697. package/js/src/pro/probit.js +0 -6
  698. package/js/src/pro/tradeogre.js +0 -6
  699. package/js/src/pro/upbit.js +0 -6
  700. package/js/src/pro/vertex.js +0 -6
  701. package/js/src/pro/whitebit.js +0 -6
  702. package/js/src/pro/woo.js +0 -6
  703. package/js/src/pro/woofipro.js +0 -6
  704. package/js/src/pro/xt.js +0 -6
  705. package/js/src/probit.js +0 -6
  706. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  707. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  708. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  709. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  710. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  711. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  712. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  713. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  714. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  715. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  716. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  717. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  718. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  719. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  720. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  721. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  722. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  723. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  724. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  725. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  726. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  727. package/js/src/static_dependencies/ethers/index.js +0 -6
  728. package/js/src/static_dependencies/ethers/interface.js +0 -6
  729. package/js/src/static_dependencies/ethers/typed.js +0 -6
  730. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  731. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  732. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  733. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  734. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  735. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  736. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  737. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  738. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  739. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  740. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  741. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  742. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  743. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  744. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  745. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  746. package/js/src/static_dependencies/fflake/browser.js +0 -6
  747. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  748. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  749. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  750. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  751. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  752. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  753. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  754. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  755. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  756. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  757. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  758. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  759. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  760. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  761. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  762. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  763. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  764. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  765. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  766. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  767. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  768. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  769. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  770. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  771. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  772. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  773. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  774. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  775. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  776. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  777. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  778. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  779. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  780. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  781. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  782. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  783. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  784. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  785. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  786. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  787. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  788. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  789. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  790. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  791. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  792. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  793. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  794. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  795. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  796. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  797. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  798. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  799. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  800. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  801. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  802. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  803. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  804. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  805. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  806. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  807. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  808. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  809. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  810. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  811. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  812. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  813. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  814. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  815. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  816. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  817. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  818. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  819. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  820. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  821. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  822. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  823. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  824. package/js/src/static_dependencies/qs/formats.cjs +0 -6
  825. package/js/src/static_dependencies/qs/index.cjs +0 -6
  826. package/js/src/static_dependencies/qs/parse.cjs +0 -6
  827. package/js/src/static_dependencies/qs/stringify.cjs +0 -6
  828. package/js/src/static_dependencies/qs/utils.cjs +0 -6
  829. package/js/src/static_dependencies/scure-base/index.js +0 -6
  830. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  831. package/js/src/static_dependencies/starknet/constants.js +0 -6
  832. package/js/src/static_dependencies/starknet/index.js +0 -6
  833. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  834. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  835. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  836. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  837. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  838. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  839. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  840. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  841. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  842. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  843. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  844. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  845. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  846. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  847. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  848. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  849. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  850. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  851. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  852. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  853. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  854. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  855. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  856. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  857. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  858. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  859. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  860. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  861. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  862. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  863. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  864. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  865. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  866. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  867. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  868. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  869. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  870. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  871. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  872. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  873. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  874. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  875. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  876. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  877. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  878. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  879. package/js/src/timex.js +0 -6
  880. package/js/src/tokocrypto.js +0 -6
  881. package/js/src/tradeogre.js +0 -6
  882. package/js/src/upbit.js +0 -6
  883. package/js/src/vertex.js +0 -6
  884. package/js/src/wavesexchange.js +15 -8
  885. package/js/src/whitebit.js +0 -6
  886. package/js/src/woo.d.ts +79 -49
  887. package/js/src/woo.js +1279 -903
  888. package/js/src/woofipro.js +0 -6
  889. package/js/src/xt.js +0 -6
  890. package/js/src/yobit.js +0 -6
  891. package/js/src/zaif.js +0 -6
  892. package/js/src/zonda.js +0 -6
  893. package/package.json +7 -7
@@ -6,7 +6,7 @@ var Precise = require('./base/Precise.js');
6
6
  var number = require('./base/functions/number.js');
7
7
  var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
8
8
 
9
- // ----------------------------------------------------------------------------
9
+ // ---------------------------------------------------------------------------
10
10
  // ---------------------------------------------------------------------------
11
11
  /**
12
12
  * @class woo
@@ -102,7 +102,7 @@ class woo extends woo$1 {
102
102
  'fetchTickers': false,
103
103
  'fetchTime': true,
104
104
  'fetchTrades': true,
105
- 'fetchTradingFee': false,
105
+ 'fetchTradingFee': true,
106
106
  'fetchTradingFees': true,
107
107
  'fetchTransactions': 'emulated',
108
108
  'fetchTransfers': true,
@@ -238,19 +238,56 @@ class woo extends woo$1 {
238
238
  'v3': {
239
239
  'public': {
240
240
  'get': {
241
- 'insuranceFund': 3,
241
+ 'systemInfo': 1,
242
+ 'instruments': 1,
243
+ 'token': 1,
244
+ 'tokenNetwork': 1,
245
+ 'tokenInfo': 1,
246
+ 'marketTrades': 1,
247
+ 'marketTradesHistory': 1,
248
+ 'orderbook': 1,
249
+ 'kline': 1,
250
+ 'klineHistory': 1,
251
+ 'futures': 1,
252
+ 'fundingRate': 1,
253
+ 'fundingRateHistory': 1,
254
+ 'insuranceFund': 1, // 10/1s
242
255
  },
243
256
  },
244
257
  'private': {
245
258
  'get': {
259
+ 'trade/order': 2,
260
+ 'trade/orders': 1,
261
+ 'trade/algoOrder': 1,
262
+ 'trade/algoOrders': 1,
263
+ 'trade/transaction': 1,
264
+ 'trade/transactionHistory': 5,
265
+ 'trade/tradingFee': 5,
266
+ 'account/info': 60,
267
+ 'account/tokenConfig': 1,
268
+ 'account/symbolConfig': 1,
269
+ 'account/subAccounts/all': 60,
270
+ 'account/referral/summary': 60,
271
+ 'account/referral/rewardHistory': 60,
272
+ 'account/credentials': 60,
273
+ 'asset/balances': 1,
274
+ 'asset/token/history': 60,
275
+ 'asset/transfer/history': 30,
276
+ 'asset/wallet/history': 60,
277
+ 'asset/wallet/deposit': 60,
278
+ 'asset/staking/yieldHistory': 60,
279
+ 'futures/positions': 3.33,
280
+ 'futures/leverage': 60,
281
+ 'futures/defaultMarginMode': 60,
282
+ 'futures/fundingFee/history': 30,
283
+ 'spotMargin/interestRate': 60,
284
+ 'spotMargin/interestHistory': 60,
285
+ 'spotMargin/maxMargin': 60,
246
286
  'algo/order/{oid}': 1,
247
287
  'algo/orders': 1,
248
288
  'balances': 1,
249
- 'accountinfo': 60,
250
289
  'positions': 3.33,
251
290
  'buypower': 1,
252
- 'referrals': 60,
253
- 'referral_rewards': 60,
254
291
  'convert/exchangeInfo': 1,
255
292
  'convert/assetInfo': 1,
256
293
  'convert/rfq': 60,
@@ -258,16 +295,34 @@ class woo extends woo$1 {
258
295
  'convert/trades': 1,
259
296
  },
260
297
  'post': {
298
+ 'trade/order': 2,
299
+ 'trade/algoOrder': 5,
300
+ 'trade/cancelAllAfter': 1,
301
+ 'account/tradingMode': 120,
302
+ 'account/listenKey': 20,
303
+ 'asset/transfer': 30,
304
+ 'asset/wallet/withdraw': 60,
305
+ 'spotMargin/leverage': 120,
306
+ 'spotMargin/interestRepay': 60,
261
307
  'algo/order': 5,
262
308
  'convert/rft': 60,
263
309
  },
264
310
  'put': {
311
+ 'trade/order': 2,
312
+ 'trade/algoOrder': 2,
313
+ 'futures/leverage': 60,
314
+ 'futures/positionMode': 120,
265
315
  'order/{oid}': 2,
266
316
  'order/client/{client_order_id}': 2,
267
317
  'algo/order/{oid}': 2,
268
318
  'algo/order/client/{client_order_id}': 2,
269
319
  },
270
320
  'delete': {
321
+ 'trade/order': 1,
322
+ 'trade/orders': 1,
323
+ 'trade/algoOrder': 1,
324
+ 'trade/algoOrders': 1,
325
+ 'trade/allOrders': 1,
271
326
  'algo/order/{order_id}': 1,
272
327
  'algo/orders/pending': 1,
273
328
  'algo/orders/pending/{symbol}': 1,
@@ -446,20 +501,21 @@ class woo extends woo$1 {
446
501
  * @method
447
502
  * @name woo#fetchStatus
448
503
  * @description the latest known information on the availability of the exchange API
449
- * @see https://docs.woox.io/#get-system-maintenance-status-public
504
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/systemInfo
450
505
  * @param {object} [params] extra parameters specific to the exchange API endpoint
451
506
  * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
452
507
  */
453
508
  async fetchStatus(params = {}) {
454
- const response = await this.v1PublicGetSystemInfo(params);
509
+ const response = await this.v3PublicGetSystemInfo(params);
455
510
  //
456
511
  // {
457
512
  // "success": true,
458
513
  // "data": {
459
- // "status": "0",
460
- // "msg": "System is functioning properly."
514
+ // "status": 0,
515
+ // "msg": "System is functioning properly.",
516
+ // "estimatedEndTime": 1749963600362
461
517
  // },
462
- // "timestamp": "1709274106602"
518
+ // "timestamp": 1751442989564
463
519
  // }
464
520
  //
465
521
  const data = this.safeDict(response, 'data', {});
@@ -485,20 +541,21 @@ class woo extends woo$1 {
485
541
  * @method
486
542
  * @name woo#fetchTime
487
543
  * @description fetches the current integer timestamp in milliseconds from the exchange server
488
- * @see https://docs.woox.io/#get-system-maintenance-status-public
544
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/systemInfo
489
545
  * @param {object} [params] extra parameters specific to the exchange API endpoint
490
546
  * @returns {int} the current integer timestamp in milliseconds from the exchange server
491
547
  */
492
548
  async fetchTime(params = {}) {
493
- const response = await this.v1PublicGetSystemInfo(params);
549
+ const response = await this.v3PublicGetSystemInfo(params);
494
550
  //
495
551
  // {
496
552
  // "success": true,
497
553
  // "data": {
498
- // "status": "0",
499
- // "msg": "System is functioning properly."
554
+ // "status": 0,
555
+ // "msg": "System is functioning properly.",
556
+ // "estimatedEndTime": 1749963600362
500
557
  // },
501
- // "timestamp": "1709274106602"
558
+ // "timestamp": 1751442989564
502
559
  // }
503
560
  //
504
561
  return this.safeInteger(response, 'timestamp');
@@ -507,7 +564,7 @@ class woo extends woo$1 {
507
564
  * @method
508
565
  * @name woo#fetchMarkets
509
566
  * @description retrieves data on all markets for woo
510
- * @see https://docs.woox.io/#exchange-information
567
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/instruments
511
568
  * @param {object} [params] extra parameters specific to the exchange API endpoint
512
569
  * @returns {object[]} an array of objects representing market data
513
570
  */
@@ -515,30 +572,42 @@ class woo extends woo$1 {
515
572
  if (this.options['adjustForTimeDifference']) {
516
573
  await this.loadTimeDifference();
517
574
  }
518
- const response = await this.v1PublicGetInfo(params);
575
+ const response = await this.v3PublicGetInstruments(params);
519
576
  //
520
- // {
521
- // "rows": [
522
- // {
523
- // "symbol": "SPOT_AAVE_USDT",
524
- // "quote_min": 0,
525
- // "quote_max": 100000,
526
- // "quote_tick": 0.01,
527
- // "base_min": 0.01,
528
- // "base_max": 7284,
529
- // "base_tick": 0.0001,
530
- // "min_notional": 10,
531
- // "price_range": 0.1,
532
- // "created_time": "0",
533
- // "updated_time": "1639107647.988",
534
- // "is_stable": 0
577
+ // {
578
+ // "success": true,
579
+ // "data": {
580
+ // "rows": [
581
+ // {
582
+ // "symbol": "SPOT_AAVE_USDT",
583
+ // "status": "TRADING",
584
+ // "baseAsset": "AAVE",
585
+ // "baseAssetMultiplier": 1,
586
+ // "quoteAsset": "USDT",
587
+ // "quoteMin": "0",
588
+ // "quoteMax": "100000",
589
+ // "quoteTick": "0.01",
590
+ // "baseMin": "0.005",
591
+ // "baseMax": "5000",
592
+ // "baseTick": "0.0001",
593
+ // "minNotional": "1",
594
+ // "bidCapRatio": "1.1",
595
+ // "bidFloorRatio": null,
596
+ // "askCapRatio": null,
597
+ // "askFloorRatio": "0.9",
598
+ // "orderMode": "NORMAL",
599
+ // "impactNotional": null,
600
+ // "isAllowedRpi": false,
601
+ // "tickGranularity": null
602
+ // }
603
+ // ]
535
604
  // },
536
- // ...
537
- // "success": true
538
- // }
605
+ // "timestamp": 1751512951338
606
+ // }
539
607
  //
540
- const data = this.safeList(response, 'rows', []);
541
- return this.parseMarkets(data);
608
+ const data = this.safeDict(response, 'data', {});
609
+ const rows = this.safeList(data, 'rows', []);
610
+ return this.parseMarkets(rows);
542
611
  }
543
612
  parseMarket(market) {
544
613
  const marketId = this.safeString(market, 'symbol');
@@ -576,7 +645,7 @@ class woo extends woo$1 {
576
645
  linear = true;
577
646
  inverse = false;
578
647
  }
579
- const active = this.safeString(market, 'is_trading') === '1';
648
+ const active = this.safeString(market, 'status') === 'TRADING';
580
649
  return {
581
650
  'id': marketId,
582
651
  'symbol': symbol,
@@ -602,8 +671,8 @@ class woo extends woo$1 {
602
671
  'strike': undefined,
603
672
  'optionType': undefined,
604
673
  'precision': {
605
- 'amount': this.safeNumber(market, 'base_tick'),
606
- 'price': this.safeNumber(market, 'quote_tick'),
674
+ 'amount': this.safeNumber(market, 'baseTick'),
675
+ 'price': this.safeNumber(market, 'quoteTick'),
607
676
  },
608
677
  'limits': {
609
678
  'leverage': {
@@ -611,19 +680,19 @@ class woo extends woo$1 {
611
680
  'max': undefined,
612
681
  },
613
682
  'amount': {
614
- 'min': this.safeNumber(market, 'base_min'),
615
- 'max': this.safeNumber(market, 'base_max'),
683
+ 'min': this.safeNumber(market, 'baseMin'),
684
+ 'max': this.safeNumber(market, 'baseMax'),
616
685
  },
617
686
  'price': {
618
- 'min': this.safeNumber(market, 'quote_min'),
619
- 'max': this.safeNumber(market, 'quote_max'),
687
+ 'min': this.safeNumber(market, 'quoteMin'),
688
+ 'max': this.safeNumber(market, 'quoteMax'),
620
689
  },
621
690
  'cost': {
622
- 'min': this.safeNumber(market, 'min_notional'),
691
+ 'min': this.safeNumber(market, 'minNotional'),
623
692
  'max': undefined,
624
693
  },
625
694
  },
626
- 'created': this.safeTimestamp(market, 'created_time'),
695
+ 'created': null,
627
696
  'info': market,
628
697
  };
629
698
  }
@@ -631,7 +700,7 @@ class woo extends woo$1 {
631
700
  * @method
632
701
  * @name woo#fetchTrades
633
702
  * @description get the list of most recent trades for a particular symbol
634
- * @see https://docs.woox.io/#market-trades-public
703
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/marketTrades
635
704
  * @param {string} symbol unified symbol of the market to fetch trades for
636
705
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
637
706
  * @param {int} [limit] the maximum amount of trades to fetch
@@ -647,38 +716,28 @@ class woo extends woo$1 {
647
716
  if (limit !== undefined) {
648
717
  request['limit'] = limit;
649
718
  }
650
- const response = await this.v1PublicGetMarketTrades(this.extend(request, params));
719
+ const response = await this.v3PublicGetMarketTrades(this.extend(request, params));
651
720
  //
652
- // {
653
- // "success": true,
654
- // "rows": [
655
- // {
656
- // "symbol": "SPOT_BTC_USDT",
657
- // "side": "SELL",
658
- // "executed_price": 46222.35,
659
- // "executed_quantity": 0.0012,
660
- // "executed_timestamp": "1641241162.329"
661
- // },
662
- // {
663
- // "symbol": "SPOT_BTC_USDT",
664
- // "side": "SELL",
665
- // "executed_price": 46222.35,
666
- // "executed_quantity": 0.0012,
667
- // "executed_timestamp": "1641241162.329"
668
- // },
669
- // {
670
- // "symbol": "SPOT_BTC_USDT",
671
- // "side": "BUY",
672
- // "executed_price": 46224.32,
673
- // "executed_quantity": 0.00039,
674
- // "executed_timestamp": "1641241162.287"
721
+ // {
722
+ // "success": true,
723
+ // "data": {
724
+ // "rows": [
725
+ // {
726
+ // "symbol": "SPOT_BTC_USDT",
727
+ // "side": "SELL",
728
+ // "source": 0,
729
+ // "executedPrice": "108741.01",
730
+ // "executedQuantity": "0.02477",
731
+ // "executedTimestamp": 1751513940144
732
+ // }
733
+ // ]
675
734
  // },
676
- // ...
677
- // ]
678
- // }
735
+ // "timestamp": 1751513988543
736
+ // }
679
737
  //
680
- const resultResponse = this.safeList(response, 'rows', []);
681
- return this.parseTrades(resultResponse, market, since, limit);
738
+ const data = this.safeDict(response, 'data', {});
739
+ const rows = this.safeList(data, 'rows', []);
740
+ return this.parseTrades(rows, market, since, limit);
682
741
  }
683
742
  parseTrade(trade, market = undefined) {
684
743
  //
@@ -687,36 +746,47 @@ class woo extends woo$1 {
687
746
  // {
688
747
  // "symbol": "SPOT_BTC_USDT",
689
748
  // "side": "SELL",
690
- // "executed_price": 46222.35,
691
- // "executed_quantity": 0.0012,
692
- // "executed_timestamp": "1641241162.329"
749
+ // "source": 0,
750
+ // "executedPrice": "108741.01",
751
+ // "executedQuantity": "0.02477",
752
+ // "executedTimestamp": 1751513940144
693
753
  // }
694
754
  //
695
755
  // fetchOrderTrades, fetchOrder
696
756
  //
697
757
  // {
698
- // "id": "99119876",
699
- // "symbol": "SPOT_WOO_USDT",
700
- // "fee": "0.0024",
758
+ // "id": 1734947821,
759
+ // "symbol": "SPOT_LTC_USDT",
760
+ // "orderId": 60780383217,
761
+ // "executedPrice": 87.86,
762
+ // "executedQuantity": 0.1,
763
+ // "fee": 0.0001,
764
+ // "realizedPnl": null,
765
+ // "feeAsset": "LTC",
766
+ // "orderTag": "default",
701
767
  // "side": "BUY",
702
- // "executed_timestamp": "1641481113.084",
703
- // "order_id": "87001234",
704
- // "order_tag": "default", <-- this param only in "fetchOrderTrades"
705
- // "executed_price": "1",
706
- // "executed_quantity": "12",
707
- // "fee_asset": "WOO",
708
- // "is_maker": "1"
768
+ // "executedTimestamp": "1752055173.630",
769
+ // "isMaker": 0
709
770
  // }
710
771
  //
711
772
  const isFromFetchOrder = ('id' in trade);
712
- const timestamp = this.safeTimestamp(trade, 'executed_timestamp');
773
+ const timestampString = this.safeString2(trade, 'executed_timestamp', 'executedTimestamp');
774
+ let timestamp = undefined;
775
+ if (timestampString !== undefined) {
776
+ if (timestampString.indexOf('.') > -1) {
777
+ timestamp = this.safeTimestamp2(trade, 'executed_timestamp', 'executedTimestamp');
778
+ }
779
+ else {
780
+ timestamp = this.safeInteger(trade, 'executedTimestamp');
781
+ }
782
+ }
713
783
  const marketId = this.safeString(trade, 'symbol');
714
784
  market = this.safeMarket(marketId, market);
715
785
  const symbol = market['symbol'];
716
- const price = this.safeString(trade, 'executed_price');
717
- const amount = this.safeString(trade, 'executed_quantity');
718
- const order_id = this.safeString(trade, 'order_id');
719
- const fee = this.parseTokenAndFeeTemp(trade, 'fee_asset', 'fee');
786
+ const price = this.safeString2(trade, 'executed_price', 'executedPrice');
787
+ const amount = this.safeString2(trade, 'executed_quantity', 'executedQuantity');
788
+ const order_id = this.safeString2(trade, 'order_id', 'orderId');
789
+ const fee = this.parseTokenAndFeeTemp(trade, ['fee_asset', 'feeAsset'], ['fee']);
720
790
  const feeCost = this.safeString(fee, 'cost');
721
791
  if (feeCost !== undefined) {
722
792
  fee['cost'] = feeCost;
@@ -726,7 +796,7 @@ class woo extends woo$1 {
726
796
  const id = this.safeString(trade, 'id');
727
797
  let takerOrMaker = undefined;
728
798
  if (isFromFetchOrder) {
729
- const isMaker = this.safeString(trade, 'is_maker') === '1';
799
+ const isMaker = this.safeString2(trade, 'is_maker', 'isMaker') === '1';
730
800
  takerOrMaker = isMaker ? 'maker' : 'taker';
731
801
  }
732
802
  return this.safeTrade({
@@ -745,11 +815,11 @@ class woo extends woo$1 {
745
815
  'info': trade,
746
816
  }, market);
747
817
  }
748
- parseTokenAndFeeTemp(item, feeTokenKey, feeAmountKey) {
749
- const feeCost = this.safeString(item, feeAmountKey);
818
+ parseTokenAndFeeTemp(item, feeTokenKeys, feeAmountKeys) {
819
+ const feeCost = this.safeStringN(item, feeAmountKeys);
750
820
  let fee = undefined;
751
821
  if (feeCost !== undefined) {
752
- const feeCurrencyId = this.safeString(item, feeTokenKey);
822
+ const feeCurrencyId = this.safeStringN(item, feeTokenKeys);
753
823
  const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
754
824
  fee = {
755
825
  'cost': feeCost,
@@ -758,43 +828,90 @@ class woo extends woo$1 {
758
828
  }
759
829
  return fee;
760
830
  }
831
+ parseTradingFee(fee, market = undefined) {
832
+ const marketId = this.safeString(fee, 'symbol');
833
+ const symbol = this.safeSymbol(marketId, market);
834
+ return {
835
+ 'info': fee,
836
+ 'symbol': symbol,
837
+ 'maker': this.parseNumber(Precise["default"].stringDiv(this.safeString(fee, 'makerFee'), '100')),
838
+ 'taker': this.parseNumber(Precise["default"].stringDiv(this.safeString(fee, 'takerFee'), '100')),
839
+ 'percentage': undefined,
840
+ 'tierBased': undefined,
841
+ };
842
+ }
843
+ /**
844
+ * @method
845
+ * @name woo#fetchTradingFee
846
+ * @description fetch the trading fees for a market
847
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_tradingFee
848
+ * @param {string} symbol unified market symbol
849
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
850
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to fetch trading fees in a portfolio margin account
851
+ * @param {string} [params.subType] "linear" or "inverse"
852
+ * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
853
+ */
854
+ async fetchTradingFee(symbol, params = {}) {
855
+ await this.loadMarkets();
856
+ const market = this.market(symbol);
857
+ const request = {
858
+ 'symbol': market['id'],
859
+ };
860
+ const response = await this.v3PrivateGetTradeTradingFee(this.extend(request, params));
861
+ //
862
+ // {
863
+ // "success": true,
864
+ // "data": {
865
+ // "symbol": "SPOT_BTC_USDT",
866
+ // "takerFee": "10",
867
+ // "makerFee": "8"
868
+ // },
869
+ // "timestamp": 1751858977368
870
+ // }
871
+ //
872
+ const data = this.safeDict(response, 'data', {});
873
+ return this.parseTradingFee(data, market);
874
+ }
761
875
  /**
762
876
  * @method
763
877
  * @name woo#fetchTradingFees
764
878
  * @description fetch the trading fees for multiple markets
765
- * @see https://docs.woox.io/#get-account-information-new
879
+ * @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
766
880
  * @param {object} [params] extra parameters specific to the exchange API endpoint
767
881
  * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
768
882
  */
769
883
  async fetchTradingFees(params = {}) {
770
884
  await this.loadMarkets();
771
- const response = await this.v3PrivateGetAccountinfo(params);
885
+ const response = await this.v3PrivateGetAccountInfo(params);
772
886
  //
773
887
  // {
774
888
  // "success": true,
775
889
  // "data": {
776
- // "applicationId": "dsa",
777
- // "account": "dsa",
778
- // "alias": "haha",
779
- // "accountMode": "MARGIN",
780
- // "leverage": 1,
781
- // "takerFeeRate": 1,
782
- // "makerFeeRate": 1,
783
- // "interestRate": 1,
784
- // "futuresTakerFeeRate": 1,
785
- // "futuresMakerFeeRate": 1,
890
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
891
+ // "account": "carlos_jose_lima@yahoo.com",
892
+ // "alias": "carlos_jose_lima@yahoo.com",
786
893
  // "otpauth": true,
787
- // "marginRatio": 1,
788
- // "openMarginRatio": 1,
789
- // "initialMarginRatio": 1,
790
- // "maintenanceMarginRatio": 1,
791
- // "totalCollateral": 1,
792
- // "freeCollateral": 1,
793
- // "totalAccountValue": 1,
794
- // "totalVaultValue": 1,
795
- // "totalStakingValue": 1
894
+ // "accountMode": "FUTURES",
895
+ // "positionMode": "ONE_WAY",
896
+ // "leverage": 0,
897
+ // "makerFeeRate": 0,
898
+ // "takerFeeRate": 0,
899
+ // "marginRatio": "10",
900
+ // "openMarginRatio": "10",
901
+ // "initialMarginRatio": "10",
902
+ // "maintenanceMarginRatio": "0.03",
903
+ // "totalCollateral": "165.55629469",
904
+ // "freeCollateral": "165.55629469",
905
+ // "totalAccountValue": "167.32418611",
906
+ // "totalTradingValue": "167.32418611",
907
+ // "totalVaultValue": "0",
908
+ // "totalStakingValue": "0",
909
+ // "totalLaunchpadValue": "0",
910
+ // "totalEarnValue": "0",
911
+ // "referrerID": null,
912
+ // "accountType": "Main"
796
913
  // },
797
- // "timestamp": 1673323685109
914
+ // "timestamp": 1752062807915
798
915
  // }
799
916
  //
800
917
  const data = this.safeDict(response, 'data', {});
@@ -1058,8 +1175,8 @@ class woo extends woo$1 {
1058
1175
  * @method
1059
1176
  * @name woo#createOrder
1060
1177
  * @description create a trade order
1061
- * @see https://docs.woox.io/#send-order
1062
- * @see https://docs.woox.io/#send-algo-order
1178
+ * @see https://developer.woox.io/api-reference/endpoint/trading/post_order
1179
+ * @see https://developer.woox.io/api-reference/endpoint/trading/post_algo_order
1063
1180
  * @param {string} symbol unified symbol of the market to create an order in
1064
1181
  * @param {string} type 'market' or 'limit'
1065
1182
  * @param {string} side 'buy' or 'sell'
@@ -1094,7 +1211,7 @@ class woo extends woo$1 {
1094
1211
  let marginMode = undefined;
1095
1212
  [marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
1096
1213
  if (marginMode !== undefined) {
1097
- request['margin_mode'] = this.encodeMarginMode(marginMode);
1214
+ request['marginMode'] = this.encodeMarginMode(marginMode);
1098
1215
  }
1099
1216
  const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
1100
1217
  const stopLoss = this.safeValue(params, 'stopLoss');
@@ -1110,33 +1227,29 @@ class woo extends woo$1 {
1110
1227
  const isMarket = orderType === 'MARKET';
1111
1228
  const timeInForce = this.safeStringLower(params, 'timeInForce');
1112
1229
  const postOnly = this.isPostOnly(isMarket, undefined, params);
1113
- const reduceOnlyKey = isConditional ? 'reduceOnly' : 'reduce_only';
1114
- const clientOrderIdKey = isConditional ? 'clientOrderId' : 'client_order_id';
1115
- const orderQtyKey = isConditional ? 'quantity' : 'order_quantity';
1116
- const priceKey = isConditional ? 'price' : 'order_price';
1117
- const typeKey = isConditional ? 'type' : 'order_type';
1118
- request[typeKey] = orderType; // LIMIT/MARKET/IOC/FOK/POST_ONLY/ASK/BID
1230
+ const clientOrderIdKey = isConditional ? 'clientAlgoOrderId' : 'clientOrderId';
1231
+ request['type'] = orderType; // LIMIT/MARKET/IOC/FOK/POST_ONLY/ASK/BID
1119
1232
  if (!isConditional) {
1120
1233
  if (postOnly) {
1121
- request['order_type'] = 'POST_ONLY';
1234
+ request['type'] = 'POST_ONLY';
1122
1235
  }
1123
1236
  else if (timeInForce === 'fok') {
1124
- request['order_type'] = 'FOK';
1237
+ request['type'] = 'FOK';
1125
1238
  }
1126
1239
  else if (timeInForce === 'ioc') {
1127
- request['order_type'] = 'IOC';
1240
+ request['type'] = 'IOC';
1128
1241
  }
1129
1242
  }
1130
1243
  if (reduceOnly) {
1131
- request[reduceOnlyKey] = reduceOnly;
1244
+ request['reduceOnly'] = reduceOnly;
1132
1245
  }
1133
1246
  if (!isMarket && price !== undefined) {
1134
- request[priceKey] = this.priceToPrecision(symbol, price);
1247
+ request['price'] = this.priceToPrecision(symbol, price);
1135
1248
  }
1136
1249
  if (isMarket && !isConditional) {
1137
1250
  // for market buy it requires the amount of quote currency to spend
1138
- const cost = this.safeString2(params, 'cost', 'order_amount');
1139
- params = this.omit(params, ['cost', 'order_amount']);
1251
+ const cost = this.safeStringN(params, ['cost', 'order_amount', 'orderAmount']);
1252
+ params = this.omit(params, ['cost', 'order_amount', 'orderAmount']);
1140
1253
  const isPriceProvided = price !== undefined;
1141
1254
  if (market['spot'] && (isPriceProvided || (cost !== undefined))) {
1142
1255
  let quoteAmount = undefined;
@@ -1149,14 +1262,14 @@ class woo extends woo$1 {
1149
1262
  const costRequest = Precise["default"].stringMul(amountString, priceString);
1150
1263
  quoteAmount = this.costToPrecision(symbol, costRequest);
1151
1264
  }
1152
- request['order_amount'] = quoteAmount;
1265
+ request['amount'] = quoteAmount;
1153
1266
  }
1154
1267
  else {
1155
- request['order_quantity'] = this.amountToPrecision(symbol, amount);
1268
+ request['quantity'] = this.amountToPrecision(symbol, amount);
1156
1269
  }
1157
1270
  }
1158
1271
  else if (algoType !== 'POSITIONAL_TP_SL') {
1159
- request[orderQtyKey] = this.amountToPrecision(symbol, amount);
1272
+ request['quantity'] = this.amountToPrecision(symbol, amount);
1160
1273
  }
1161
1274
  const clientOrderId = this.safeStringN(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
1162
1275
  if (clientOrderId !== undefined) {
@@ -1219,44 +1332,46 @@ class woo extends woo$1 {
1219
1332
  params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id', 'postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stopLoss', 'takeProfit', 'trailingPercent', 'trailingAmount', 'trailingTriggerPrice']);
1220
1333
  let response = undefined;
1221
1334
  if (isConditional) {
1222
- response = await this.v3PrivatePostAlgoOrder(this.extend(request, params));
1335
+ response = await this.v3PrivatePostTradeAlgoOrder(this.extend(request, params));
1336
+ //
1337
+ // {
1338
+ // "success": true,
1339
+ // "data": {
1340
+ // "rows": [
1341
+ // {
1342
+ // "orderId": "1578938",
1343
+ // "clientOrderId": "0",
1344
+ // "algoType": "STOP_LOSS",
1345
+ // "quantity": "0.1"
1346
+ // }
1347
+ // ]
1348
+ // },
1349
+ // "timestamp": "1686149372216"
1350
+ // }
1351
+ //
1223
1352
  }
1224
1353
  else {
1225
- response = await this.v1PrivatePostOrder(this.extend(request, params));
1226
- }
1227
- // {
1228
- // "success": true,
1229
- // "timestamp": "1641383206.489",
1230
- // "order_id": "86980774",
1231
- // "order_type": "LIMIT",
1232
- // "order_price": "1", // null for "MARKET" order
1233
- // "order_quantity": "12", // null for "MARKET" order
1234
- // "order_amount": null, // NOT-null for "MARKET" order
1235
- // "client_order_id": "0"
1236
- // }
1237
- // stop orders
1238
- // {
1239
- // "success": true,
1240
- // "data": {
1241
- // "rows": [
1242
- // {
1243
- // "orderId": "1578938",
1244
- // "clientOrderId": "0",
1245
- // "algoType": "STOP_LOSS",
1246
- // "quantity": "0.1"
1247
- // }
1248
- // ]
1249
- // },
1250
- // "timestamp": "1686149372216"
1251
- // }
1252
- const data = this.safeDict(response, 'data');
1253
- if (data !== undefined) {
1254
- const rows = this.safeList(data, 'rows', []);
1255
- return this.parseOrder(rows[0], market);
1354
+ response = await this.v3PrivatePostTradeOrder(this.extend(request, params));
1355
+ //
1356
+ // {
1357
+ // "success": true,
1358
+ // "data": {
1359
+ // "orderId": 60667653330,
1360
+ // "clientOrderId": 0,
1361
+ // "type": "LIMIT",
1362
+ // "price": 60,
1363
+ // "quantity": 0.1,
1364
+ // "amount": null,
1365
+ // "bidAskLevel": null
1366
+ // },
1367
+ // "timestamp": 1751871779855
1368
+ // }
1369
+ //
1256
1370
  }
1257
- const order = this.parseOrder(response, market);
1258
- order['type'] = type;
1259
- return order;
1371
+ let data = this.safeDict(response, 'data', {});
1372
+ data = this.safeDict(this.safeList(data, 'rows'), 0, data);
1373
+ data['timestamp'] = this.safeString(response, 'timestamp');
1374
+ return this.parseOrder(data, market);
1260
1375
  }
1261
1376
  encodeMarginMode(mode) {
1262
1377
  const modes = {
@@ -1365,9 +1480,8 @@ class woo extends woo$1 {
1365
1480
  /**
1366
1481
  * @method
1367
1482
  * @name woo#cancelOrder
1368
- * @see https://docs.woox.io/#cancel-algo-order
1369
- * @see https://docs.woox.io/#cancel-order
1370
- * @see https://docs.woox.io/#cancel-order-by-client_order_id
1483
+ * @see https://developer.woox.io/api-reference/endpoint/trading/cancel_order
1484
+ * @see https://developer.woox.io/api-reference/endpoint/trading/cancel_algo_order
1371
1485
  * @description cancels an open order
1372
1486
  * @param {string} id order id
1373
1487
  * @param {string} symbol unified symbol of the market the order was made in
@@ -1389,42 +1503,52 @@ class woo extends woo$1 {
1389
1503
  const request = {};
1390
1504
  const clientOrderIdUnified = this.safeString2(params, 'clOrdID', 'clientOrderId');
1391
1505
  const clientOrderIdExchangeSpecific = this.safeString(params, 'client_order_id', clientOrderIdUnified);
1506
+ params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
1392
1507
  const isByClientOrder = clientOrderIdExchangeSpecific !== undefined;
1393
1508
  let response = undefined;
1394
1509
  if (isTrigger) {
1395
- request['order_id'] = id;
1396
- response = await this.v3PrivateDeleteAlgoOrderOrderId(this.extend(request, params));
1510
+ if (isByClientOrder) {
1511
+ request['clientAlgoOrderId'] = clientOrderIdExchangeSpecific;
1512
+ }
1513
+ else {
1514
+ request['algoOrderId'] = id;
1515
+ }
1516
+ response = await this.v3PrivateDeleteTradeAlgoOrder(this.extend(request, params));
1397
1517
  }
1398
1518
  else {
1399
1519
  request['symbol'] = market['id'];
1400
1520
  if (isByClientOrder) {
1401
- request['client_order_id'] = clientOrderIdExchangeSpecific;
1402
- params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
1403
- response = await this.v1PrivateDeleteClientOrder(this.extend(request, params));
1521
+ request['clientOrderId'] = clientOrderIdExchangeSpecific;
1404
1522
  }
1405
1523
  else {
1406
- request['order_id'] = id;
1407
- response = await this.v1PrivateDeleteOrder(this.extend(request, params));
1524
+ request['orderId'] = id;
1408
1525
  }
1526
+ response = await this.v3PrivateDeleteTradeOrder(this.extend(request, params));
1409
1527
  }
1410
1528
  //
1411
- // { success: true, status: "CANCEL_SENT" }
1529
+ // {
1530
+ // "success": true,
1531
+ // "data": {
1532
+ // "status": "CANCEL_SENT"
1533
+ // },
1534
+ // "timestamp": 1751940315838
1535
+ // }
1412
1536
  //
1413
- const extendParams = { 'symbol': symbol };
1537
+ const data = this.safeDict(response, 'data', {});
1538
+ data['timestamp'] = this.safeString(response, 'timestamp');
1414
1539
  if (isByClientOrder) {
1415
- extendParams['client_order_id'] = clientOrderIdExchangeSpecific;
1540
+ data['clientOrderId'] = clientOrderIdExchangeSpecific;
1416
1541
  }
1417
1542
  else {
1418
- extendParams['id'] = id;
1543
+ data['orderId'] = id;
1419
1544
  }
1420
- return this.extend(this.parseOrder(response), extendParams);
1545
+ return this.parseOrder(data, market);
1421
1546
  }
1422
1547
  /**
1423
1548
  * @method
1424
1549
  * @name woo#cancelAllOrders
1425
- * @see https://docs.woox.io/#cancel-all-pending-orders
1426
- * @see https://docs.woox.io/#cancel-orders
1427
- * @see https://docs.woox.io/#cancel-all-pending-algo-orders
1550
+ * @see https://developer.woox.io/api-reference/endpoint/trading/cancel_all_order
1551
+ * @see https://developer.woox.io/api-reference/endpoint/trading/cancel_algo_orders
1428
1552
  * @description cancel all open orders in a market
1429
1553
  * @param {string} symbol unified market symbol
1430
1554
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -1435,32 +1559,30 @@ class woo extends woo$1 {
1435
1559
  await this.loadMarkets();
1436
1560
  const trigger = this.safeBool2(params, 'stop', 'trigger');
1437
1561
  params = this.omit(params, ['stop', 'trigger']);
1438
- if (trigger) {
1439
- return await this.v3PrivateDeleteAlgoOrdersPending(params);
1562
+ const request = {};
1563
+ if (symbol !== undefined) {
1564
+ const market = this.market(symbol);
1565
+ request['symbol'] = market['id'];
1440
1566
  }
1441
- if (symbol === undefined) {
1442
- throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
1567
+ if (trigger) {
1568
+ return await this.v3PrivateDeleteTradeAlgoOrders(params);
1443
1569
  }
1444
- const market = this.market(symbol);
1445
- const request = {
1446
- 'symbol': market['id'],
1447
- };
1448
- const response = await this.v1PrivateDeleteOrders(this.extend(request, params));
1449
1570
  //
1450
1571
  // {
1451
- // "success":true,
1452
- // "status":"CANCEL_ALL_SENT"
1572
+ // "success": true,
1573
+ // "data": {
1574
+ // "status": "CANCEL_ALL_SENT"
1575
+ // },
1576
+ // "timestamp": 1751941988134
1453
1577
  // }
1454
1578
  //
1455
- return [
1456
- this.safeOrder(response),
1457
- ];
1579
+ return await this.v3PrivateDeleteTradeOrders(this.extend(request, params));
1458
1580
  }
1459
1581
  /**
1460
1582
  * @method
1461
1583
  * @name woo#cancelAllOrdersAfter
1462
1584
  * @description dead man's switch, cancel all orders after the given timeout
1463
- * @see https://docs.woox.io/#cancel-all-after
1585
+ * @see https://developer.woox.io/api-reference/endpoint/trading/cancel_all_after
1464
1586
  * @param {number} timeout time in milliseconds, 0 represents cancel the timer
1465
1587
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1466
1588
  * @returns {object} the api result
@@ -1468,27 +1590,25 @@ class woo extends woo$1 {
1468
1590
  async cancelAllOrdersAfter(timeout, params = {}) {
1469
1591
  await this.loadMarkets();
1470
1592
  const request = {
1471
- 'trigger_after': (timeout > 0) ? timeout : 0,
1593
+ 'triggerAfter': (timeout > 0) ? Math.min(timeout, 900000) : 0,
1472
1594
  };
1473
- const response = await this.v1PrivatePostOrderCancelAllAfter(this.extend(request, params));
1595
+ const response = await this.v3PrivatePostTradeCancelAllAfter(this.extend(request, params));
1474
1596
  //
1475
- // {
1476
- // "success": true,
1477
- // "data": {
1478
- // "expected_trigger_time": 1711534302938
1479
- // },
1480
- // "timestamp": 1711534302943
1597
+ // {
1598
+ // "success": true,
1599
+ // "timestamp": 123,
1600
+ // "data": {
1601
+ // "expectedTriggerTime": 123
1481
1602
  // }
1603
+ // }
1482
1604
  //
1483
- return [
1484
- this.safeOrder(response),
1485
- ];
1605
+ return response;
1486
1606
  }
1487
1607
  /**
1488
1608
  * @method
1489
1609
  * @name woo#fetchOrder
1490
- * @see https://docs.woox.io/#get-algo-order
1491
- * @see https://docs.woox.io/#get-order
1610
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_order
1611
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_order
1492
1612
  * @description fetches information on an order made by the user
1493
1613
  * @param {string} id the order id
1494
1614
  * @param {string} symbol unified symbol of the market the order was made in
@@ -1498,68 +1618,109 @@ class woo extends woo$1 {
1498
1618
  */
1499
1619
  async fetchOrder(id, symbol = undefined, params = {}) {
1500
1620
  await this.loadMarkets();
1501
- const market = (symbol !== undefined) ? this.market(symbol) : undefined;
1621
+ let market = undefined;
1622
+ if (symbol !== undefined) {
1623
+ market = this.market(symbol);
1624
+ }
1502
1625
  const trigger = this.safeBool2(params, 'stop', 'trigger');
1503
1626
  params = this.omit(params, ['stop', 'trigger']);
1504
1627
  const request = {};
1505
1628
  const clientOrderId = this.safeString2(params, 'clOrdID', 'clientOrderId');
1506
1629
  let response = undefined;
1507
1630
  if (trigger) {
1508
- request['oid'] = id;
1509
- response = await this.v3PrivateGetAlgoOrderOid(this.extend(request, params));
1510
- }
1511
- else if (clientOrderId) {
1512
- request['client_order_id'] = clientOrderId;
1513
- response = await this.v1PrivateGetClientOrderClientOrderId(this.extend(request, params));
1631
+ if (clientOrderId !== undefined) {
1632
+ request['clientAlgoOrderId'] = id;
1633
+ }
1634
+ else {
1635
+ request['algoOrderId'] = id;
1636
+ }
1637
+ response = await this.v3PrivateGetTradeAlgoOrder(this.extend(request, params));
1638
+ //
1639
+ // {
1640
+ // "success": true,
1641
+ // "data": {
1642
+ // "algoOrderId": 10399260,
1643
+ // "clientAlgoOrderId": 0,
1644
+ // "rootAlgoOrderId": 10399260,
1645
+ // "parentAlgoOrderId": 0,
1646
+ // "symbol": "SPOT_LTC_USDT",
1647
+ // "algoOrderTag": "default",
1648
+ // "algoType": "TAKE_PROFIT",
1649
+ // "side": "BUY",
1650
+ // "quantity": 0.1,
1651
+ // "isTriggered": false,
1652
+ // "triggerPrice": 65,
1653
+ // "triggerStatus": "USELESS",
1654
+ // "type": "LIMIT",
1655
+ // "rootAlgoStatus": "NEW",
1656
+ // "algoStatus": "NEW",
1657
+ // "triggerPriceType": "MARKET_PRICE",
1658
+ // "price": 60,
1659
+ // "triggerTime": "0",
1660
+ // "totalExecutedQuantity": 0,
1661
+ // "visibleQuantity": 0.1,
1662
+ // "averageExecutedPrice": 0,
1663
+ // "totalFee": 0,
1664
+ // "feeAsset": "",
1665
+ // "totalRebate": 0,
1666
+ // "rebateAsset": "",
1667
+ // "reduceOnly": false,
1668
+ // "createdTime": "1752049747.732",
1669
+ // "updatedTime": "1752049747.732",
1670
+ // "positionSide": "BOTH"
1671
+ // },
1672
+ // "timestamp": 1752049767550
1673
+ // }
1674
+ //
1514
1675
  }
1515
1676
  else {
1516
- request['oid'] = id;
1517
- response = await this.v1PrivateGetOrderOid(this.extend(request, params));
1677
+ if (clientOrderId !== undefined) {
1678
+ request['clientOrderId'] = clientOrderId;
1679
+ }
1680
+ else {
1681
+ request['orderId'] = id;
1682
+ }
1683
+ response = await this.v3PrivateGetTradeOrder(this.extend(request, params));
1684
+ //
1685
+ // {
1686
+ // "success": true,
1687
+ // "data": {
1688
+ // "orderId": 60780315704,
1689
+ // "clientOrderId": 0,
1690
+ // "symbol": "SPOT_LTC_USDT",
1691
+ // "orderTag": "default",
1692
+ // "side": "BUY",
1693
+ // "quantity": 0.1,
1694
+ // "amount": null,
1695
+ // "type": "LIMIT",
1696
+ // "status": "NEW",
1697
+ // "price": 60,
1698
+ // "executed": 0,
1699
+ // "visible": 0.1,
1700
+ // "averageExecutedPrice": 0,
1701
+ // "totalFee": 0,
1702
+ // "feeAsset": "LTC",
1703
+ // "totalRebate": 0,
1704
+ // "rebateAsset": "USDT",
1705
+ // "reduceOnly": false,
1706
+ // "createdTime": "1752049062.496",
1707
+ // "realizedPnl": null,
1708
+ // "positionSide": "BOTH",
1709
+ // "bidAskLevel": null
1710
+ // },
1711
+ // "timestamp": 1752049393466
1712
+ // }
1713
+ //
1518
1714
  }
1519
- //
1520
- // {
1521
- // "success": true,
1522
- // "symbol": "SPOT_WOO_USDT",
1523
- // "status": "FILLED", // FILLED, NEW
1524
- // "side": "BUY",
1525
- // "created_time": "1641480933.000",
1526
- // "order_id": "87541111",
1527
- // "order_tag": "default",
1528
- // "price": "1",
1529
- // "type": "LIMIT",
1530
- // "quantity": "12",
1531
- // "amount": null,
1532
- // "visible": "12",
1533
- // "executed": "12", // or any partial amount
1534
- // "total_fee": "0.0024",
1535
- // "fee_asset": "WOO",
1536
- // "client_order_id": null,
1537
- // "average_executed_price": "1",
1538
- // "Transactions": [
1539
- // {
1540
- // "id": "99111647",
1541
- // "symbol": "SPOT_WOO_USDT",
1542
- // "fee": "0.0024",
1543
- // "side": "BUY",
1544
- // "executed_timestamp": "1641482113.084",
1545
- // "order_id": "87541111",
1546
- // "executed_price": "1",
1547
- // "executed_quantity": "12",
1548
- // "fee_asset": "WOO",
1549
- // "is_maker": "1"
1550
- // }
1551
- // ]
1552
- // }
1553
- //
1554
- const orders = this.safeDict(response, 'data', response);
1555
- return this.parseOrder(orders, market);
1715
+ const data = this.safeDict(response, 'data', {});
1716
+ return this.parseOrder(data, market);
1556
1717
  }
1557
1718
  /**
1558
1719
  * @method
1559
1720
  * @name woo#fetchOrders
1560
1721
  * @description fetches information on multiple orders made by the user
1561
- * @see https://docs.woox.io/#get-orders
1562
- * @see https://docs.woox.io/#get-algo-orders
1722
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
1723
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
1563
1724
  * @param {string} symbol unified market symbol of the market orders were made in
1564
1725
  * @param {int} [since] the earliest time in ms to fetch orders for
1565
1726
  * @param {int} [limit] the maximum number of order structures to retrieve
@@ -1567,7 +1728,6 @@ class woo extends woo$1 {
1567
1728
  * @param {boolean} [params.trigger] whether the order is a trigger/algo order
1568
1729
  * @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
1569
1730
  * @param {string} [params.side] 'buy' or 'sell'
1570
- * @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
1571
1731
  * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
1572
1732
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1573
1733
  */
@@ -1581,80 +1741,124 @@ class woo extends woo$1 {
1581
1741
  const request = {};
1582
1742
  let market = undefined;
1583
1743
  const trigger = this.safeBool2(params, 'stop', 'trigger');
1584
- const trailing = this.safeBool(params, 'trailing', false);
1585
- params = this.omit(params, ['stop', 'trailing', 'trigger']);
1744
+ params = this.omit(params, ['stop', 'trigger']);
1586
1745
  if (symbol !== undefined) {
1587
1746
  market = this.market(symbol);
1588
1747
  request['symbol'] = market['id'];
1589
1748
  }
1590
1749
  if (since !== undefined) {
1591
- if (trigger || trailing) {
1592
- request['createdTimeStart'] = since;
1593
- }
1594
- else {
1595
- request['start_t'] = since;
1596
- }
1597
- }
1598
- if (limit !== undefined) {
1599
- request['size'] = limit;
1600
- }
1601
- else {
1602
- request['size'] = trailing ? 50 : 500;
1750
+ request['startTime'] = since;
1603
1751
  }
1604
- if (trigger) {
1605
- request['algoType'] = 'stop';
1752
+ const until = this.safeInteger(params, 'until'); // unified in milliseconds
1753
+ params = this.omit(params, ['until']);
1754
+ if (until !== undefined) {
1755
+ request['endTime'] = until;
1606
1756
  }
1607
- else if (trailing) {
1608
- request['algoType'] = 'TRAILING_STOP';
1757
+ if (limit !== undefined) {
1758
+ request['size'] = Math.min(limit, 500);
1609
1759
  }
1610
1760
  let response = undefined;
1611
- if (trigger || trailing) {
1612
- response = await this.v3PrivateGetAlgoOrders(this.extend(request, params));
1761
+ if (trigger) {
1762
+ response = await this.v3PrivateGetTradeAlgoOrders(this.extend(request, params));
1763
+ //
1764
+ // {
1765
+ // "success": true,
1766
+ // "data": {
1767
+ // "rows": [
1768
+ // {
1769
+ // "algoOrderId": 10399260,
1770
+ // "clientAlgoOrderId": 0,
1771
+ // "rootAlgoOrderId": 10399260,
1772
+ // "parentAlgoOrderId": 0,
1773
+ // "symbol": "SPOT_LTC_USDT",
1774
+ // "algoOrderTag": "default",
1775
+ // "algoType": "TAKE_PROFIT",
1776
+ // "side": "BUY",
1777
+ // "quantity": 0.1,
1778
+ // "isTriggered": false,
1779
+ // "triggerPrice": 65,
1780
+ // "triggerStatus": "USELESS",
1781
+ // "type": "LIMIT",
1782
+ // "rootAlgoStatus": "NEW",
1783
+ // "algoStatus": "NEW",
1784
+ // "triggerPriceType": "MARKET_PRICE",
1785
+ // "price": 60,
1786
+ // "triggerTime": "0",
1787
+ // "totalExecutedQuantity": 0,
1788
+ // "visibleQuantity": 0.1,
1789
+ // "averageExecutedPrice": 0,
1790
+ // "totalFee": 0,
1791
+ // "feeAsset": "",
1792
+ // "totalRebate": 0,
1793
+ // "rebateAsset": "",
1794
+ // "reduceOnly": false,
1795
+ // "createdTime": "1752049747.730",
1796
+ // "updatedTime": "1752049747.730",
1797
+ // "positionSide": "BOTH"
1798
+ // }
1799
+ // ],
1800
+ // "meta": {
1801
+ // "total": 7,
1802
+ // "recordsPerPage": 1,
1803
+ // "currentPage": 1
1804
+ // }
1805
+ // },
1806
+ // "timestamp": 1752053127448
1807
+ // }
1808
+ //
1613
1809
  }
1614
1810
  else {
1615
- response = await this.v1PrivateGetOrders(this.extend(request, params));
1811
+ response = await this.v3PrivateGetTradeOrders(this.extend(request, params));
1812
+ //
1813
+ // {
1814
+ // "success": true,
1815
+ // "data": {
1816
+ // "rows": [
1817
+ // {
1818
+ // "orderId": 60780315704,
1819
+ // "clientOrderId": 0,
1820
+ // "symbol": "SPOT_LTC_USDT",
1821
+ // "orderTag": "default",
1822
+ // "side": "BUY",
1823
+ // "quantity": 0.1,
1824
+ // "amount": null,
1825
+ // "type": "LIMIT",
1826
+ // "status": "NEW",
1827
+ // "price": 60,
1828
+ // "executed": 0,
1829
+ // "visible": 0.1,
1830
+ // "averageExecutedPrice": 0,
1831
+ // "totalFee": 0,
1832
+ // "feeAsset": "LTC",
1833
+ // "totalRebate": 0,
1834
+ // "rebateAsset": "USDT",
1835
+ // "reduceOnly": false,
1836
+ // "createdTime": "1752049062.496",
1837
+ // "realizedPnl": null,
1838
+ // "positionSide": "BOTH",
1839
+ // "bidAskLevel": null
1840
+ // }
1841
+ // ],
1842
+ // "meta": {
1843
+ // "total": 11,
1844
+ // "recordsPerPage": 1,
1845
+ // "currentPage": 1
1846
+ // }
1847
+ // },
1848
+ // "timestamp": 1752053061236
1849
+ // }
1850
+ //
1616
1851
  }
1617
- //
1618
- // {
1619
- // "success":true,
1620
- // "meta":{
1621
- // "total":1,
1622
- // "records_per_page":100,
1623
- // "current_page":1
1624
- // },
1625
- // "rows":[
1626
- // {
1627
- // "symbol":"PERP_BTC_USDT",
1628
- // "status":"FILLED",
1629
- // "side":"SELL",
1630
- // "created_time":"1611617776.000",
1631
- // "updated_time":"1611617776.000",
1632
- // "order_id":52121167,
1633
- // "order_tag":"default",
1634
- // "price":null,
1635
- // "type":"MARKET",
1636
- // "quantity":0.002,
1637
- // "amount":null,
1638
- // "visible":0,
1639
- // "executed":0.002,
1640
- // "total_fee":0.01732885,
1641
- // "fee_asset":"USDT",
1642
- // "client_order_id":null,
1643
- // "average_executed_price":28881.41
1644
- // }
1645
- // ]
1646
- // }
1647
- //
1648
- const data = this.safeValue(response, 'data', response);
1649
- const orders = this.safeList(data, 'rows');
1852
+ const data = this.safeValue(response, 'data', {});
1853
+ const orders = this.safeList(data, 'rows', []);
1650
1854
  return this.parseOrders(orders, market, since, limit);
1651
1855
  }
1652
1856
  /**
1653
1857
  * @method
1654
1858
  * @name woo#fetchOpenOrders
1655
1859
  * @description fetches information on multiple orders made by the user
1656
- * @see https://docs.woox.io/#get-orders
1657
- * @see https://docs.woox.io/#get-algo-orders
1860
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
1861
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
1658
1862
  * @param {string} symbol unified market symbol of the market orders were made in
1659
1863
  * @param {int} [since] the earliest time in ms to fetch orders for
1660
1864
  * @param {int} [limit] the maximum number of order structures to retrieve
@@ -1675,8 +1879,8 @@ class woo extends woo$1 {
1675
1879
  * @method
1676
1880
  * @name woo#fetchClosedOrders
1677
1881
  * @description fetches information on multiple orders made by the user
1678
- * @see https://docs.woox.io/#get-orders
1679
- * @see https://docs.woox.io/#get-algo-orders
1882
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
1883
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
1680
1884
  * @param {string} symbol unified market symbol of the market orders were made in
1681
1885
  * @param {int} [since] the earliest time in ms to fetch orders for
1682
1886
  * @param {int} [limit] the maximum number of order structures to retrieve
@@ -1703,83 +1907,108 @@ class woo extends woo$1 {
1703
1907
  }
1704
1908
  parseOrder(order, market = undefined) {
1705
1909
  //
1706
- // Possible input functions:
1707
- // * createOrder
1708
- // * cancelOrder
1709
- // * fetchOrder
1710
- // * fetchOrders
1711
- // const isFromFetchOrder = ('order_tag' in order); TO_DO
1712
- //
1713
- // stop order after creating it:
1714
- // {
1715
- // "orderId": "1578938",
1716
- // "clientOrderId": "0",
1717
- // "algoType": "STOP_LOSS",
1718
- // "quantity": "0.1"
1719
- // }
1720
- // stop order after fetching it:
1721
- // {
1722
- // "algoOrderId": "1578958",
1723
- // "clientOrderId": "0",
1724
- // "rootAlgoOrderId": "1578958",
1725
- // "parentAlgoOrderId": "0",
1726
- // "symbol": "SPOT_LTC_USDT",
1727
- // "orderTag": "default",
1728
- // "algoType": "STOP_LOSS",
1729
- // "side": "BUY",
1730
- // "quantity": "0.1",
1731
- // "isTriggered": false,
1732
- // "triggerPrice": "100",
1733
- // "triggerStatus": "USELESS",
1734
- // "type": "LIMIT",
1735
- // "rootAlgoStatus": "CANCELLED",
1736
- // "algoStatus": "CANCELLED",
1737
- // "triggerPriceType": "MARKET_PRICE",
1738
- // "price": "75",
1739
- // "triggerTime": "0",
1740
- // "totalExecutedQuantity": "0",
1741
- // "averageExecutedPrice": "0",
1742
- // "totalFee": "0",
1743
- // "feeAsset": '',
1744
- // "reduceOnly": false,
1745
- // "createdTime": "1686149609.744",
1746
- // "updatedTime": "1686149903.362"
1747
- // }
1748
- //
1749
- const timestamp = this.safeTimestampN(order, ['timestamp', 'created_time', 'createdTime']);
1750
- const orderId = this.safeStringN(order, ['order_id', 'orderId', 'algoOrderId']);
1751
- const clientOrderId = this.omitZero(this.safeString2(order, 'client_order_id', 'clientOrderId')); // Somehow, this always returns 0 for limit order
1910
+ // createOrder
1911
+ // {
1912
+ // "orderId": 60667653330,
1913
+ // "clientOrderId": 0,
1914
+ // "type": "LIMIT",
1915
+ // "price": 60,
1916
+ // "quantity": 0.1,
1917
+ // "amount": null,
1918
+ // "bidAskLevel": null,
1919
+ // "timestamp": 1751871779855
1920
+ // }
1921
+ //
1922
+ // createOrder - algo
1923
+ // {
1924
+ // "orderId": "1578938",
1925
+ // "clientOrderId": "0",
1926
+ // "algoType": "STOP_LOSS",
1927
+ // "quantity": "0.1",
1928
+ // "timestamp": "1686149372216"
1929
+ // }
1930
+ //
1931
+ // fetchOrder
1932
+ // {
1933
+ // "orderId": 60780315704,
1934
+ // "clientOrderId": 0,
1935
+ // "symbol": "SPOT_LTC_USDT",
1936
+ // "orderTag": "default",
1937
+ // "side": "BUY",
1938
+ // "quantity": 0.1,
1939
+ // "amount": null,
1940
+ // "type": "LIMIT",
1941
+ // "status": "NEW",
1942
+ // "price": 60,
1943
+ // "executed": 0,
1944
+ // "visible": 0.1,
1945
+ // "averageExecutedPrice": 0,
1946
+ // "totalFee": 0,
1947
+ // "feeAsset": "LTC",
1948
+ // "totalRebate": 0,
1949
+ // "rebateAsset": "USDT",
1950
+ // "reduceOnly": false,
1951
+ // "createdTime": "1752049062.496",
1952
+ // "realizedPnl": null,
1953
+ // "positionSide": "BOTH",
1954
+ // "bidAskLevel": null
1955
+ // }
1956
+ //
1957
+ // fetchOrder - algo
1958
+ // {
1959
+ // "algoOrderId": 10399260,
1960
+ // "clientAlgoOrderId": 0,
1961
+ // "rootAlgoOrderId": 10399260,
1962
+ // "parentAlgoOrderId": 0,
1963
+ // "symbol": "SPOT_LTC_USDT",
1964
+ // "algoOrderTag": "default",
1965
+ // "algoType": "TAKE_PROFIT",
1966
+ // "side": "BUY",
1967
+ // "quantity": 0.1,
1968
+ // "isTriggered": false,
1969
+ // "triggerPrice": 65,
1970
+ // "triggerStatus": "USELESS",
1971
+ // "type": "LIMIT",
1972
+ // "rootAlgoStatus": "NEW",
1973
+ // "algoStatus": "NEW",
1974
+ // "triggerPriceType": "MARKET_PRICE",
1975
+ // "price": 60,
1976
+ // "triggerTime": "0",
1977
+ // "totalExecutedQuantity": 0,
1978
+ // "visibleQuantity": 0.1,
1979
+ // "averageExecutedPrice": 0,
1980
+ // "totalFee": 0,
1981
+ // "feeAsset": "",
1982
+ // "totalRebate": 0,
1983
+ // "rebateAsset": "",
1984
+ // "reduceOnly": false,
1985
+ // "createdTime": "1752049747.732",
1986
+ // "updatedTime": "1752049747.732",
1987
+ // "positionSide": "BOTH"
1988
+ // }
1989
+ //
1990
+ let timestamp = this.safeTimestamp(order, 'createdTime');
1991
+ if (timestamp === undefined) {
1992
+ timestamp = this.safeInteger(order, 'timestamp');
1993
+ }
1994
+ const orderId = this.safeString2(order, 'orderId', 'algoOrderId');
1995
+ const clientOrderId = this.omitZero(this.safeString2(order, 'clientOrderId', 'clientAlgoOrderId')); // Somehow, this always returns 0 for limit order
1752
1996
  const marketId = this.safeString(order, 'symbol');
1753
1997
  market = this.safeMarket(marketId, market);
1754
1998
  const symbol = market['symbol'];
1755
- const price = this.safeString2(order, 'order_price', 'price');
1756
- const amount = this.safeString2(order, 'order_quantity', 'quantity'); // This is base amount
1757
- const cost = this.safeString2(order, 'order_amount', 'amount'); // This is quote amount
1758
- const orderType = this.safeStringLower2(order, 'order_type', 'type');
1999
+ const price = this.safeString(order, 'price');
2000
+ const amount = this.safeString(order, 'quantity'); // This is base amount
2001
+ const cost = this.safeString(order, 'amount'); // This is quote amount
2002
+ const orderType = this.safeStringLower(order, 'type');
1759
2003
  const status = this.safeValue2(order, 'status', 'algoStatus');
1760
2004
  const side = this.safeStringLower(order, 'side');
1761
2005
  const filled = this.omitZero(this.safeValue2(order, 'executed', 'totalExecutedQuantity'));
1762
- const average = this.omitZero(this.safeString2(order, 'average_executed_price', 'averageExecutedPrice'));
2006
+ const average = this.omitZero(this.safeString(order, 'averageExecutedPrice'));
1763
2007
  // const remaining = Precise.stringSub (cost, filled);
1764
- const fee = this.safeNumber2(order, 'total_fee', 'totalFee');
1765
- const feeCurrency = this.safeString2(order, 'fee_asset', 'feeAsset');
1766
- const transactions = this.safeValue(order, 'Transactions');
2008
+ const fee = this.safeNumber(order, 'totalFee');
2009
+ const feeCurrency = this.safeString(order, 'feeAsset');
1767
2010
  const triggerPrice = this.safeNumber(order, 'triggerPrice');
1768
- let takeProfitPrice = undefined;
1769
- let stopLossPrice = undefined;
1770
- const childOrders = this.safeValue(order, 'childOrders');
1771
- if (childOrders !== undefined) {
1772
- const first = this.safeValue(childOrders, 0);
1773
- const innerChildOrders = this.safeValue(first, 'childOrders', []);
1774
- const innerChildOrdersLength = innerChildOrders.length;
1775
- if (innerChildOrdersLength > 0) {
1776
- const takeProfitOrder = this.safeValue(innerChildOrders, 0);
1777
- const stopLossOrder = this.safeValue(innerChildOrders, 1);
1778
- takeProfitPrice = this.safeNumber(takeProfitOrder, 'triggerPrice');
1779
- stopLossPrice = this.safeNumber(stopLossOrder, 'triggerPrice');
1780
- }
1781
- }
1782
- const lastUpdateTimestamp = this.safeTimestamp2(order, 'updatedTime', 'updated_time');
2011
+ const lastUpdateTimestamp = this.safeTimestamp(order, 'updatedTime');
1783
2012
  return this.safeOrder({
1784
2013
  'id': orderId,
1785
2014
  'clientOrderId': clientOrderId,
@@ -1792,18 +2021,18 @@ class woo extends woo$1 {
1792
2021
  'type': orderType,
1793
2022
  'timeInForce': this.parseTimeInForce(orderType),
1794
2023
  'postOnly': undefined,
1795
- 'reduceOnly': this.safeBool(order, 'reduce_only'),
2024
+ 'reduceOnly': this.safeBool(order, 'reduceOnly'),
1796
2025
  'side': side,
1797
2026
  'price': price,
1798
2027
  'triggerPrice': triggerPrice,
1799
- 'takeProfitPrice': takeProfitPrice,
1800
- 'stopLossPrice': stopLossPrice,
2028
+ 'takeProfitPrice': undefined,
2029
+ 'stopLossPrice': undefined,
1801
2030
  'average': average,
1802
2031
  'amount': amount,
1803
2032
  'filled': filled,
1804
2033
  'remaining': undefined,
1805
2034
  'cost': cost,
1806
- 'trades': transactions,
2035
+ 'trades': undefined,
1807
2036
  'fee': {
1808
2037
  'cost': fee,
1809
2038
  'currency': feeCurrency,
@@ -1832,7 +2061,7 @@ class woo extends woo$1 {
1832
2061
  * @method
1833
2062
  * @name woo#fetchOrderBook
1834
2063
  * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
1835
- * @see https://docs.woox.io/#orderbook-snapshot-public
2064
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/orderbook
1836
2065
  * @param {string} symbol unified symbol of the market to fetch the order book for
1837
2066
  * @param {int} [limit] the maximum amount of order book entries to return
1838
2067
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -1845,40 +2074,45 @@ class woo extends woo$1 {
1845
2074
  'symbol': market['id'],
1846
2075
  };
1847
2076
  if (limit !== undefined) {
1848
- limit = Math.min(limit, 1000);
1849
- request['max_level'] = limit;
2077
+ request['maxLevel'] = limit;
1850
2078
  }
1851
- const response = await this.v1PublicGetOrderbookSymbol(this.extend(request, params));
2079
+ const response = await this.v3PublicGetOrderbook(this.extend(request, params));
1852
2080
  //
1853
- // {
1854
- // "success": true,
1855
- // "timestamp": "1641562961192",
1856
- // "asks": [
1857
- // { price: '0.921', quantity: "76.01" },
1858
- // { price: '0.933', quantity: "477.10" },
1859
- // ...
1860
- // ],
1861
- // "bids": [
1862
- // { price: '0.940', quantity: "13502.47" },
1863
- // { price: '0.932', quantity: "43.91" },
1864
- // ...
1865
- // ]
1866
2081
  // }
1867
- //
1868
- const timestamp = this.safeInteger(response, 'timestamp');
1869
- return this.parseOrderBook(response, symbol, timestamp, 'bids', 'asks', 'price', 'quantity');
1870
- }
1871
- /**
1872
- * @method
2082
+ // {
2083
+ // "success": true,
2084
+ // "timestamp": 1751620923344,
2085
+ // "data": {
2086
+ // "asks": [
2087
+ // {
2088
+ // "price": "108924.86",
2089
+ // "quantity": "0.032126"
2090
+ // }
2091
+ // ],
2092
+ // "bids": [
2093
+ // {
2094
+ // "price": "108924.85",
2095
+ // "quantity": "1.714147"
2096
+ // }
2097
+ // ]
2098
+ // }
2099
+ // }
2100
+ //
2101
+ const data = this.safeDict(response, 'data', {});
2102
+ const timestamp = this.safeInteger(response, 'timestamp');
2103
+ return this.parseOrderBook(data, symbol, timestamp, 'bids', 'asks', 'price', 'quantity');
2104
+ }
2105
+ /**
2106
+ * @method
1873
2107
  * @name woo#fetchOHLCV
1874
- * @see https://docs.woox.io/#kline-public
1875
- * @see https://docs.woox.io/#kline-historical-data-public
2108
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/klineHistory
1876
2109
  * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1877
2110
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1878
2111
  * @param {string} timeframe the length of time each candle represents
1879
2112
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
1880
2113
  * @param {int} [limit] max=1000, max=100 when since is defined and is less than (now - (999 * (timeframe in ms)))
1881
2114
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2115
+ * @param {int} [params.until] the latest time in ms to fetch entries for
1882
2116
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1883
2117
  */
1884
2118
  async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
@@ -1888,75 +2122,47 @@ class woo extends woo$1 {
1888
2122
  'symbol': market['id'],
1889
2123
  'type': this.safeString(this.timeframes, timeframe, timeframe),
1890
2124
  };
1891
- let useHistEndpoint = since !== undefined;
1892
- if ((limit !== undefined) && (since !== undefined)) {
1893
- const oneThousandCandles = this.parseTimeframe(timeframe) * 1000 * 999; // 999 because there will be delay between this and the request, causing the latest candle to be excluded sometimes
1894
- const startWithLimit = this.milliseconds() - oneThousandCandles;
1895
- useHistEndpoint = since < startWithLimit;
1896
- }
1897
- if (useHistEndpoint) {
1898
- request['start_time'] = since;
1899
- }
1900
- else if (limit !== undefined) { // the hist endpoint does not accept limit
2125
+ if (limit !== undefined) {
1901
2126
  request['limit'] = Math.min(limit, 1000);
1902
2127
  }
1903
- let response = undefined;
1904
- if (!useHistEndpoint) {
1905
- response = await this.v1PublicGetKline(this.extend(request, params));
1906
- //
1907
- // {
1908
- // "success": true,
1909
- // "rows": [
1910
- // {
1911
- // "open": "0.94238",
1912
- // "close": "0.94271",
1913
- // "low": "0.94238",
1914
- // "high": "0.94296",
1915
- // "volume": "73.55",
1916
- // "amount": "69.32040520",
1917
- // "symbol": "SPOT_WOO_USDT",
1918
- // "type": "1m",
1919
- // "start_timestamp": "1641584700000",
1920
- // "end_timestamp": "1641584760000"
1921
- // },
1922
- // ...
1923
- // ]
1924
- // }
1925
- //
2128
+ if (since !== undefined) {
2129
+ request['after'] = since;
1926
2130
  }
1927
- else {
1928
- response = await this.v1PubGetHistKline(this.extend(request, params));
1929
- response = this.safeDict(response, 'data');
1930
- //
1931
- // {
1932
- // "success": true,
1933
- // "data": {
1934
- // "rows": [
1935
- // {
1936
- // "symbol": "SPOT_BTC_USDT",
1937
- // "open": 44181.40000000,
1938
- // "close": 44174.29000000,
1939
- // "high": 44193.44000000,
1940
- // "low": 44148.34000000,
1941
- // "volume": 110.11930100,
1942
- // "amount": 4863796.24318878,
1943
- // "type": "1m",
1944
- // "start_timestamp": 1704153600000,
1945
- // "end_timestamp": 1704153660000
1946
- // },
1947
- // ...
1948
- // ]
1949
- // }
1950
- // }
1951
- //
2131
+ const until = this.safeInteger(params, 'until');
2132
+ params = this.omit(params, 'until');
2133
+ if (until !== undefined) {
2134
+ request['before'] = until;
1952
2135
  }
1953
- const rows = this.safeList(response, 'rows', []);
2136
+ const response = await this.v3PublicGetKlineHistory(this.extend(request, params));
2137
+ //
2138
+ // {
2139
+ // "success": true,
2140
+ // "data": {
2141
+ // "rows": [
2142
+ // {
2143
+ // "symbol": "SPOT_BTC_USDT",
2144
+ // "open": "108994.16",
2145
+ // "close": "108994.16",
2146
+ // "high": "108994.16",
2147
+ // "low": "108994.16",
2148
+ // "volume": "0",
2149
+ // "amount": "0",
2150
+ // "type": "1m",
2151
+ // "startTimestamp": 1751622120000,
2152
+ // "endTimestamp": 1751622180000
2153
+ // }
2154
+ // ]
2155
+ // },
2156
+ // "timestamp": 1751622205410
2157
+ // }
2158
+ //
2159
+ const data = this.safeDict(response, 'data', {});
2160
+ const rows = this.safeList(data, 'rows', []);
1954
2161
  return this.parseOHLCVs(rows, market, timeframe, since, limit);
1955
2162
  }
1956
2163
  parseOHLCV(ohlcv, market = undefined) {
1957
- // example response in fetchOHLCV
1958
2164
  return [
1959
- this.safeInteger(ohlcv, 'start_timestamp'),
2165
+ this.safeInteger(ohlcv, 'startTimestamp'),
1960
2166
  this.safeNumber(ohlcv, 'open'),
1961
2167
  this.safeNumber(ohlcv, 'high'),
1962
2168
  this.safeNumber(ohlcv, 'low'),
@@ -2011,7 +2217,7 @@ class woo extends woo$1 {
2011
2217
  * @method
2012
2218
  * @name woo#fetchMyTrades
2013
2219
  * @description fetch all trades made by the user
2014
- * @see https://docs.woox.io/#get-trade-history
2220
+ * @see https://developer.woox.io/api-reference/endpoint/trading/get_transactions
2015
2221
  * @param {string} symbol unified market symbol
2016
2222
  * @param {int} [since] the earliest time in ms to fetch trades for
2017
2223
  * @param {int} [limit] the maximum number of trades structures to retrieve
@@ -2026,93 +2232,159 @@ class woo extends woo$1 {
2026
2232
  if (paginate) {
2027
2233
  return await this.fetchPaginatedCallIncremental('fetchMyTrades', symbol, since, limit, params, 'page', 500);
2028
2234
  }
2029
- let request = {};
2235
+ const request = {};
2030
2236
  let market = undefined;
2031
2237
  if (symbol !== undefined) {
2032
2238
  market = this.market(symbol);
2033
2239
  request['symbol'] = market['id'];
2034
2240
  }
2035
2241
  if (since !== undefined) {
2036
- request['start_t'] = since;
2242
+ request['startTime'] = since;
2037
2243
  }
2038
- [request, params] = this.handleUntilOption('end_t', request, params);
2039
- if (limit !== undefined) {
2040
- request['size'] = limit;
2244
+ const until = this.safeInteger(params, 'until'); // unified in milliseconds
2245
+ params = this.omit(params, ['until']);
2246
+ if (until !== undefined) {
2247
+ request['endTime'] = until;
2041
2248
  }
2042
- else {
2043
- request['size'] = 500;
2249
+ if (limit !== undefined) {
2250
+ request['limit'] = limit;
2044
2251
  }
2045
- const response = await this.v1PrivateGetClientTrades(this.extend(request, params));
2046
- // {
2047
- // "success": true,
2048
- // "meta": {
2049
- // "records_per_page": 25,
2050
- // "current_page": 1
2051
- // },
2052
- // "rows": [
2053
- // {
2054
- // "id": 5,
2055
- // "symbol": "SPOT_BTC_USDT",
2056
- // "order_id": 211,
2057
- // "order_tag": "default",
2058
- // "executed_price": 10892.84,
2059
- // "executed_quantity": 0.002,
2060
- // "is_maker": 0,
2061
- // "side": "SELL",
2062
- // "fee": 0,
2063
- // "fee_asset": "USDT",
2064
- // "executed_timestamp": "1566264290.250"
2252
+ const response = await this.v3PrivateGetTradeTransactionHistory(this.extend(request, params));
2253
+ //
2254
+ // {
2255
+ // "success": true,
2256
+ // "data": {
2257
+ // "rows": [
2258
+ // {
2259
+ // "id": 1734947821,
2260
+ // "symbol": "SPOT_LTC_USDT",
2261
+ // "orderId": 60780383217,
2262
+ // "executedPrice": 87.86,
2263
+ // "executedQuantity": 0.1,
2264
+ // "fee": 0.0001,
2265
+ // "realizedPnl": null,
2266
+ // "feeAsset": "LTC",
2267
+ // "orderTag": "default",
2268
+ // "side": "BUY",
2269
+ // "executedTimestamp": "1752055173.630",
2270
+ // "isMaker": 0
2271
+ // }
2272
+ // ],
2273
+ // "meta": {
2274
+ // "total": 1,
2275
+ // "recordsPerPage": 100,
2276
+ // "currentPage": 1
2277
+ // }
2065
2278
  // },
2066
- // ...
2067
- // ]
2068
- // }
2069
- const trades = this.safeList(response, 'rows', []);
2279
+ // "timestamp": 1752055545121
2280
+ // }
2281
+ //
2282
+ const data = this.safeDict(response, 'data', {});
2283
+ const trades = this.safeList(data, 'rows', []);
2070
2284
  return this.parseTrades(trades, market, since, limit, params);
2071
2285
  }
2072
2286
  /**
2073
2287
  * @method
2074
2288
  * @name woo#fetchAccounts
2075
2289
  * @description fetch all the accounts associated with a profile
2076
- * @see https://docs.woox.io/#get-assets-of-subaccounts
2290
+ * @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
2291
+ * @see https://developer.woox.io/api-reference/endpoint/account/sub_accounts
2077
2292
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2078
2293
  * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
2079
2294
  */
2080
2295
  async fetchAccounts(params = {}) {
2081
- const response = await this.v1PrivateGetSubAccountAssets(params);
2296
+ const mainAccountPromise = this.v3PrivateGetAccountInfo(params);
2082
2297
  //
2083
2298
  // {
2084
- // "rows": [{
2085
- // "application_id": "13e4fc34-e2ff-4cb7-b1e4-4c22fee7d365",
2086
- // "account": "Main",
2087
- // "usdt_balance": "4.0"
2088
- // },
2089
- // {
2090
- // "application_id": "432952aa-a401-4e26-aff6-972920aebba3",
2091
- // "account": "subaccount",
2092
- // "usdt_balance": "1.0"
2093
- // }
2094
- // ],
2095
- // "success": true
2299
+ // "success": true,
2300
+ // "data": {
2301
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
2302
+ // "account": "carlos_jose_lima@yahoo.com",
2303
+ // "alias": "carlos_jose_lima@yahoo.com",
2304
+ // "otpauth": true,
2305
+ // "accountMode": "FUTURES",
2306
+ // "positionMode": "ONE_WAY",
2307
+ // "leverage": 0,
2308
+ // "marginRatio": "10",
2309
+ // "openMarginRatio": "10",
2310
+ // "initialMarginRatio": "10",
2311
+ // "maintenanceMarginRatio": "0.03",
2312
+ // "totalCollateral": "165.55629469",
2313
+ // "freeCollateral": "165.55629469",
2314
+ // "totalAccountValue": "167.32418611",
2315
+ // "totalTradingValue": "167.32418611",
2316
+ // "totalVaultValue": "0",
2317
+ // "totalStakingValue": "0",
2318
+ // "totalLaunchpadValue": "0",
2319
+ // "totalEarnValue": "0",
2320
+ // "referrerID": null,
2321
+ // "accountType": "Main"
2322
+ // },
2323
+ // "timestamp": 1752062807915
2324
+ // }
2325
+ //
2326
+ const subAccountPromise = this.v3PrivateGetAccountSubAccountsAll(params);
2327
+ //
2328
+ // {
2329
+ // "success": true,
2330
+ // "data": {
2331
+ // "rows": [
2332
+ // {
2333
+ // "applicationId": "6b43de5c-0955-4887-9862-d84e4689f9fe",
2334
+ // "name": "sub_account_2",
2335
+ // "createdTime": "1606897264.994"
2336
+ // },
2337
+ // ]
2338
+ // },
2339
+ // "timestamp": 1721295317627
2096
2340
  // }
2097
2341
  //
2098
- const rows = this.safeList(response, 'rows', []);
2342
+ const [mainAccountResponse, subAccountResponse] = await Promise.all([mainAccountPromise, subAccountPromise]);
2343
+ const mainData = this.safeDict(mainAccountResponse, 'data', {});
2344
+ const mainRows = [mainData];
2345
+ const subData = this.safeDict(subAccountResponse, 'data', {});
2346
+ const subRows = this.safeList(subData, 'rows', []);
2347
+ const rows = this.arrayConcat(mainRows, subRows);
2099
2348
  return this.parseAccounts(rows, params);
2100
2349
  }
2101
2350
  parseAccount(account) {
2102
2351
  //
2103
2352
  // {
2104
- // "application_id": "336952aa-a401-4e26-aff6-972920aebba3",
2105
- // "account": "subaccount",
2106
- // "usdt_balance": "1.0",
2353
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
2354
+ // "account": "carlos_jose_lima@yahoo.com",
2355
+ // "alias": "carlos_jose_lima@yahoo.com",
2356
+ // "otpauth": true,
2357
+ // "accountMode": "FUTURES",
2358
+ // "positionMode": "ONE_WAY",
2359
+ // "leverage": 0,
2360
+ // "marginRatio": "10",
2361
+ // "openMarginRatio": "10",
2362
+ // "initialMarginRatio": "10",
2363
+ // "maintenanceMarginRatio": "0.03",
2364
+ // "totalCollateral": "165.55629469",
2365
+ // "freeCollateral": "165.55629469",
2366
+ // "totalAccountValue": "167.32418611",
2367
+ // "totalTradingValue": "167.32418611",
2368
+ // "totalVaultValue": "0",
2369
+ // "totalStakingValue": "0",
2370
+ // "totalLaunchpadValue": "0",
2371
+ // "totalEarnValue": "0",
2372
+ // "referrerID": null,
2373
+ // "accountType": "Main"
2374
+ // }
2375
+ //
2376
+ // {
2377
+ // "applicationId": "6b43de5c-0955-4887-9862-d84e4689f9fe",
2378
+ // "name": "sub_account_2",
2379
+ // "createdTime": "1606897264.994"
2107
2380
  // }
2108
2381
  //
2109
- const accountId = this.safeString(account, 'account');
2110
2382
  return {
2111
2383
  'info': account,
2112
- 'id': this.safeString(account, 'application_id'),
2113
- 'name': accountId,
2384
+ 'id': this.safeString(account, 'applicationId'),
2385
+ 'name': this.safeStringN(account, ['name', 'account', 'alias']),
2114
2386
  'code': undefined,
2115
- 'type': accountId === 'Main' ? 'main' : 'subaccount',
2387
+ 'type': this.safeStringLower(account, 'accountType', 'subaccount'),
2116
2388
  };
2117
2389
  }
2118
2390
  /**
@@ -2171,7 +2443,7 @@ class woo extends woo$1 {
2171
2443
  * @method
2172
2444
  * @name woo#fetchDepositAddress
2173
2445
  * @description fetch the deposit address for a currency associated with this account
2174
- * @see https://docs.woox.io/#get-token-deposit-address
2446
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_deposit
2175
2447
  * @param {string} code unified currency code
2176
2448
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2177
2449
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
@@ -2180,18 +2452,25 @@ class woo extends woo$1 {
2180
2452
  // this method is TODO because of networks unification
2181
2453
  await this.loadMarkets();
2182
2454
  const currency = this.currency(code);
2183
- let specialNetworkId = undefined;
2184
- [specialNetworkId, params] = this.getDedicatedNetworkId(currency, params);
2455
+ let networkCode = undefined;
2456
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
2185
2457
  const request = {
2186
- 'token': specialNetworkId,
2458
+ 'token': currency['id'],
2459
+ 'network': this.networkCodeToId(networkCode),
2187
2460
  };
2188
- const response = await this.v1PrivateGetAssetDeposit(this.extend(request, params));
2189
- // {
2190
- // "success": true,
2191
- // "address": "3Jmtjx5544T4smrit9Eroe4PCrRkpDeKjP",
2192
- // "extra": ''
2193
- // }
2194
- return this.parseDepositAddress(response, currency);
2461
+ const response = await this.v3PrivateGetAssetWalletDeposit(this.extend(request, params));
2462
+ //
2463
+ // {
2464
+ // "success": true,
2465
+ // "data": {
2466
+ // "address": "0x31d64B3230f8baDD91dE1710A65DF536aF8f7cDa",
2467
+ // "extra": ""
2468
+ // },
2469
+ // "timestamp": 1721300689532
2470
+ // }
2471
+ //
2472
+ const data = this.safeDict(response, 'data', {});
2473
+ return this.parseDepositAddress(data, currency);
2195
2474
  }
2196
2475
  getDedicatedNetworkId(currency, params) {
2197
2476
  let networkCode = undefined;
@@ -2222,61 +2501,68 @@ class woo extends woo$1 {
2222
2501
  let currency = undefined;
2223
2502
  if (code !== undefined) {
2224
2503
  currency = this.currency(code);
2225
- request['balance_token'] = currency['id'];
2504
+ request['token'] = currency['id'];
2505
+ }
2506
+ let networkCode = undefined;
2507
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
2508
+ if (networkCode !== undefined) {
2509
+ request['network'] = this.networkCodeToId(networkCode);
2226
2510
  }
2227
2511
  if (since !== undefined) {
2228
- request['start_t'] = since;
2512
+ request['startTime'] = since;
2229
2513
  }
2230
2514
  if (limit !== undefined) {
2231
- request['pageSize'] = limit;
2515
+ request['size'] = Math.min(limit, 1000);
2232
2516
  }
2233
2517
  const transactionType = this.safeString(params, 'type');
2234
2518
  params = this.omit(params, 'type');
2235
2519
  if (transactionType !== undefined) {
2236
2520
  request['type'] = transactionType;
2237
2521
  }
2238
- const response = await this.v1PrivateGetAssetHistory(this.extend(request, params));
2239
- // {
2240
- // "rows": [
2241
- // {
2242
- // "id": "22010508193900165",
2243
- // "token": "TRON_USDT",
2244
- // "extra": '',
2245
- // "amount": "13.75848500",
2246
- // "status": "COMPLETED",
2247
- // "account": null,
2248
- // "description": null,
2249
- // "user_id": "42222",
2250
- // "application_id": "6ad2b303-f354-45c0-8105-9f5f19d0e335",
2251
- // "external_id": "220105081900134",
2252
- // "target_address": "TXnyFSnAYad3YCaqtwMw9jvXKkeU39NLnK",
2253
- // "source_address": "TYDzsYUEpvnYmQk4zGP9sWWcTEd2MiAtW6",
2254
- // "type": "BALANCE",
2255
- // "token_side": "DEPOSIT",
2256
- // "tx_id": "35b0004022f6b3ad07f39a0b7af199f6b258c2c3e2c7cdc93c67efa74fd625ee",
2257
- // "fee_token": '',
2258
- // "fee_amount": "0.00000000",
2259
- // "created_time": "1641370779.442",
2260
- // "updated_time": "1641370779.465",
2261
- // "is_new_target_address": null,
2262
- // "confirmed_number": "29",
2263
- // "confirming_threshold": "27",
2264
- // "audit_tag": "1",
2265
- // "audit_result": "0",
2266
- // "balance_token": null, // TODO -write to support, that this seems broken. here should be the token id
2267
- // "network_name": null // TODO -write to support, that this seems broken. here should be the network id
2268
- // }
2269
- // ],
2270
- // "meta": { total: '1', records_per_page: "25", current_page: "1" },
2271
- // "success": true
2272
- // }
2273
- return [currency, this.safeList(response, 'rows', [])];
2522
+ const response = await this.v3PrivateGetAssetWalletHistory(this.extend(request, params));
2523
+ //
2524
+ // {
2525
+ // "success": true,
2526
+ // "data": {
2527
+ // "rows": [
2528
+ // {
2529
+ // "createdTime": "1734964440.523",
2530
+ // "updatedTime": "1734964614.081",
2531
+ // "id": "24122314340000585",
2532
+ // "externalId": "241223143600621",
2533
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
2534
+ // "token": "ARB_USDCNATIVE",
2535
+ // "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
2536
+ // "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
2537
+ // "extra": "",
2538
+ // "type": "BALANCE",
2539
+ // "tokenSide": "WITHDRAW",
2540
+ // "amount": "10.00000000",
2541
+ // "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
2542
+ // "feeToken": "USDC",
2543
+ // "feeAmount": "2",
2544
+ // "status": "COMPLETED",
2545
+ // "confirmingThreshold": null,
2546
+ // "confirmedNumber": null
2547
+ // }
2548
+ // ],
2549
+ // "meta": {
2550
+ // "total": 1,
2551
+ // "records_per_page": 25,
2552
+ // "current_page": 1
2553
+ // }
2554
+ // },
2555
+ // "timestamp": 1752485344719
2556
+ // }
2557
+ //
2558
+ const data = this.safeDict(response, 'data', {});
2559
+ return [currency, this.safeList(data, 'rows', [])];
2274
2560
  }
2275
2561
  /**
2276
2562
  * @method
2277
2563
  * @name woo#fetchLedger
2278
2564
  * @description fetch the history of changes, actions done by the user or operations that altered balance of the user
2279
- * @see https://docs.woox.io/#get-asset-history
2565
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
2280
2566
  * @param {string} [code] unified currency code, default is undefined
2281
2567
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
2282
2568
  * @param {int} [limit] max number of ledger entries to return, default is undefined
@@ -2290,22 +2576,43 @@ class woo extends woo$1 {
2290
2576
  return this.parseLedger(rows, currency, since, limit, params);
2291
2577
  }
2292
2578
  parseLedgerEntry(item, currency = undefined) {
2579
+ //
2580
+ // {
2581
+ // "createdTime": "1734964440.523",
2582
+ // "updatedTime": "1734964614.081",
2583
+ // "id": "24122314340000585",
2584
+ // "externalId": "241223143600621",
2585
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
2586
+ // "token": "ARB_USDCNATIVE",
2587
+ // "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
2588
+ // "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
2589
+ // "extra": "",
2590
+ // "type": "BALANCE",
2591
+ // "tokenSide": "WITHDRAW",
2592
+ // "amount": "10.00000000",
2593
+ // "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
2594
+ // "feeToken": "USDC",
2595
+ // "feeAmount": "2",
2596
+ // "status": "COMPLETED",
2597
+ // "confirmingThreshold": null,
2598
+ // "confirmedNumber": null
2599
+ // }
2600
+ //
2293
2601
  const networkizedCode = this.safeString(item, 'token');
2294
- const currencyDefined = this.getCurrencyFromChaincode(networkizedCode, currency);
2295
- const code = currencyDefined['code'];
2602
+ const code = this.safeCurrencyCode(networkizedCode, currency);
2296
2603
  currency = this.safeCurrency(code, currency);
2297
2604
  const amount = this.safeNumber(item, 'amount');
2298
- const side = this.safeString(item, 'token_side');
2605
+ const side = this.safeString(item, 'tokenSide');
2299
2606
  const direction = (side === 'DEPOSIT') ? 'in' : 'out';
2300
- const timestamp = this.safeTimestamp(item, 'created_time');
2301
- const fee = this.parseTokenAndFeeTemp(item, 'fee_token', 'fee_amount');
2607
+ const timestamp = this.safeTimestamp(item, 'createdTime');
2608
+ const fee = this.parseTokenAndFeeTemp(item, ['feeToken'], ['feeAmount']);
2302
2609
  return this.safeLedgerEntry({
2303
2610
  'info': item,
2304
2611
  'id': this.safeString(item, 'id'),
2305
2612
  'currency': code,
2306
2613
  'account': this.safeString(item, 'account'),
2307
2614
  'referenceAccount': undefined,
2308
- 'referenceId': this.safeString(item, 'tx_id'),
2615
+ 'referenceId': this.safeString(item, 'txId'),
2309
2616
  'status': this.parseTransactionStatus(this.safeString(item, 'status')),
2310
2617
  'amount': amount,
2311
2618
  'before': undefined,
@@ -2344,7 +2651,7 @@ class woo extends woo$1 {
2344
2651
  * @method
2345
2652
  * @name woo#fetchDeposits
2346
2653
  * @description fetch all deposits made to an account
2347
- * @see https://docs.woox.io/#get-asset-history
2654
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
2348
2655
  * @param {string} code unified currency code
2349
2656
  * @param {int} [since] the earliest time in ms to fetch deposits for
2350
2657
  * @param {int} [limit] the maximum number of deposits structures to retrieve
@@ -2353,7 +2660,7 @@ class woo extends woo$1 {
2353
2660
  */
2354
2661
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
2355
2662
  const request = {
2356
- 'token_side': 'DEPOSIT',
2663
+ 'tokenSide': 'DEPOSIT',
2357
2664
  };
2358
2665
  return await this.fetchDepositsWithdrawals(code, since, limit, this.extend(request, params));
2359
2666
  }
@@ -2361,7 +2668,7 @@ class woo extends woo$1 {
2361
2668
  * @method
2362
2669
  * @name woo#fetchWithdrawals
2363
2670
  * @description fetch all withdrawals made from an account
2364
- * @see https://docs.woox.io/#get-asset-history
2671
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
2365
2672
  * @param {string} code unified currency code
2366
2673
  * @param {int} [since] the earliest time in ms to fetch withdrawals for
2367
2674
  * @param {int} [limit] the maximum number of withdrawals structures to retrieve
@@ -2370,7 +2677,7 @@ class woo extends woo$1 {
2370
2677
  */
2371
2678
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
2372
2679
  const request = {
2373
- 'token_side': 'WITHDRAW',
2680
+ 'tokenSide': 'WITHDRAW',
2374
2681
  };
2375
2682
  return await this.fetchDepositsWithdrawals(code, since, limit, this.extend(request, params));
2376
2683
  }
@@ -2378,7 +2685,7 @@ class woo extends woo$1 {
2378
2685
  * @method
2379
2686
  * @name woo#fetchDepositsWithdrawals
2380
2687
  * @description fetch history of deposits and withdrawals
2381
- * @see https://docs.woox.io/#get-asset-history
2688
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
2382
2689
  * @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
2383
2690
  * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
2384
2691
  * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
@@ -2392,36 +2699,46 @@ class woo extends woo$1 {
2392
2699
  const currencyRows = await this.getAssetHistoryRows(code, since, limit, this.extend(request, params));
2393
2700
  const currency = this.safeValue(currencyRows, 0);
2394
2701
  const rows = this.safeList(currencyRows, 1);
2702
+ return this.parseTransactions(rows, currency, since, limit, params);
2703
+ }
2704
+ parseTransaction(transaction, currency = undefined) {
2395
2705
  //
2396
2706
  // {
2397
- // "rows":[],
2398
- // "meta":{
2399
- // "total":0,
2400
- // "records_per_page":25,
2401
- // "current_page":1
2402
- // },
2403
- // "success":true
2707
+ // "createdTime": "1734964440.523",
2708
+ // "updatedTime": "1734964614.081",
2709
+ // "id": "24122314340000585",
2710
+ // "externalId": "241223143600621",
2711
+ // "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
2712
+ // "token": "ARB_USDCNATIVE",
2713
+ // "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
2714
+ // "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
2715
+ // "extra": "",
2716
+ // "type": "BALANCE",
2717
+ // "tokenSide": "WITHDRAW",
2718
+ // "amount": "10.00000000",
2719
+ // "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
2720
+ // "feeToken": "USDC",
2721
+ // "feeAmount": "2",
2722
+ // "status": "COMPLETED",
2723
+ // "confirmingThreshold": null,
2724
+ // "confirmedNumber": null
2404
2725
  // }
2405
2726
  //
2406
- return this.parseTransactions(rows, currency, since, limit, params);
2407
- }
2408
- parseTransaction(transaction, currency = undefined) {
2409
- // example in fetchLedger
2410
2727
  const networkizedCode = this.safeString(transaction, 'token');
2411
2728
  const currencyDefined = this.getCurrencyFromChaincode(networkizedCode, currency);
2412
2729
  const code = currencyDefined['code'];
2413
- let movementDirection = this.safeStringLower(transaction, 'token_side');
2730
+ let movementDirection = this.safeStringLower2(transaction, 'token_side', 'tokenSide');
2414
2731
  if (movementDirection === 'withdraw') {
2415
2732
  movementDirection = 'withdrawal';
2416
2733
  }
2417
- const fee = this.parseTokenAndFeeTemp(transaction, 'fee_token', 'fee_amount');
2418
- const addressTo = this.safeString(transaction, 'target_address');
2419
- const addressFrom = this.safeString(transaction, 'source_address');
2420
- const timestamp = this.safeTimestamp(transaction, 'created_time');
2734
+ const fee = this.parseTokenAndFeeTemp(transaction, ['fee_token', 'feeToken'], ['fee_amount', 'feeAmount']);
2735
+ const addressTo = this.safeString2(transaction, 'target_address', 'targetAddress');
2736
+ const addressFrom = this.safeString2(transaction, 'source_address', 'sourceAddress');
2737
+ const timestamp = this.safeTimestamp2(transaction, 'created_time', 'createdTime');
2421
2738
  return {
2422
2739
  'info': transaction,
2423
- 'id': this.safeString2(transaction, 'id', 'withdraw_id'),
2424
- 'txid': this.safeString(transaction, 'tx_id'),
2740
+ 'id': this.safeStringN(transaction, ['id', 'withdraw_id', 'withdrawId']),
2741
+ 'txid': this.safeString2(transaction, 'tx_id', 'txId'),
2425
2742
  'timestamp': timestamp,
2426
2743
  'datetime': this.iso8601(timestamp),
2427
2744
  'address': undefined,
@@ -2434,7 +2751,7 @@ class woo extends woo$1 {
2434
2751
  'amount': this.safeNumber(transaction, 'amount'),
2435
2752
  'currency': code,
2436
2753
  'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
2437
- 'updated': this.safeTimestamp(transaction, 'updated_time'),
2754
+ 'updated': this.safeTimestamp2(transaction, 'updated_time', 'updatedTime'),
2438
2755
  'comment': undefined,
2439
2756
  'internal': undefined,
2440
2757
  'fee': fee,
@@ -2493,7 +2810,7 @@ class woo extends woo$1 {
2493
2810
  * @method
2494
2811
  * @name woo#fetchTransfers
2495
2812
  * @description fetch a history of internal transfers made on an account
2496
- * @see https://docs.woox.io/#get-transfer-history
2813
+ * @see https://developer.woox.io/api-reference/endpoint/assets/get_transfer_history
2497
2814
  * @param {string} code unified currency code of the currency transferred
2498
2815
  * @param {int} [since] the earliest time in ms to fetch transfers for
2499
2816
  * @param {int} [limit] the maximum number of transfers structures to retrieve
@@ -2503,44 +2820,56 @@ class woo extends woo$1 {
2503
2820
  */
2504
2821
  async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
2505
2822
  const request = {};
2823
+ let currency = undefined;
2824
+ if (code !== undefined) {
2825
+ currency = this.currency(code);
2826
+ }
2506
2827
  if (limit !== undefined) {
2507
2828
  request['size'] = limit;
2508
2829
  }
2509
2830
  if (since !== undefined) {
2510
- request['start_t'] = since;
2831
+ request['startTime'] = since;
2511
2832
  }
2512
2833
  const until = this.safeInteger(params, 'until'); // unified in milliseconds
2513
2834
  params = this.omit(params, ['until']);
2514
2835
  if (until !== undefined) {
2515
- request['end_t'] = until;
2836
+ request['endTime'] = until;
2516
2837
  }
2517
- const response = await this.v1PrivateGetAssetMainSubTransferHistory(this.extend(request, params));
2838
+ const response = await this.v3PrivateGetAssetTransferHistory(this.extend(request, params));
2518
2839
  //
2519
2840
  // {
2520
- // "rows": [
2521
- // {
2522
- // "id": 46704,
2523
- // "token": "USDT",
2524
- // "amount": 30000.00000000,
2525
- // "status": "COMPLETED",
2526
- // "from_application_id": "0f1bd3cd-dba2-4563-b8bb-0adb1bfb83a3",
2527
- // "to_application_id": "c01e6940-a735-4022-9b6c-9d3971cdfdfa",
2528
- // "from_user": "LeverageLow",
2529
- // "to_user": "dev",
2530
- // "created_time": "1709022325.427",
2531
- // "updated_time": "1709022325.542"
2841
+ // "success": true,
2842
+ // "data": {
2843
+ // "rows": [
2844
+ // {
2845
+ // "id": 225,
2846
+ // "token": "USDT",
2847
+ // "amount": "1000000",
2848
+ // "status": "COMPLETED",
2849
+ // "from": {
2850
+ // "applicationId": "046b5c5c-5b44-4d27-9593-ddc32c0a08ae",
2851
+ // "accountName": "Main"
2852
+ // },
2853
+ // "to": {
2854
+ // "applicationId": "082ae5ae-e26a-4fb1-be5b-03e5b4867663",
2855
+ // "accountName": "sub001"
2856
+ // },
2857
+ // "createdTime": "1642660941.534",
2858
+ // "updatedTime": "1642660941.950"
2859
+ // }
2860
+ // ],
2861
+ // "meta": {
2862
+ // "total": 46,
2863
+ // "recordsPerPage": 1,
2864
+ // "currentPage": 1
2532
2865
  // }
2533
- // ],
2534
- // "meta": {
2535
- // "total": 50,
2536
- // "records_per_page": 25,
2537
- // "current_page": 1
2538
2866
  // },
2539
- // "success": true
2867
+ // "timestamp": 1721295317627
2540
2868
  // }
2541
2869
  //
2542
- const data = this.safeList(response, 'rows', []);
2543
- return this.parseTransfers(data, undefined, since, limit, params);
2870
+ const data = this.safeDict(response, 'data', {});
2871
+ const rows = this.safeList(data, 'rows', []);
2872
+ return this.parseTransfers(rows, currency, since, limit, params);
2544
2873
  }
2545
2874
  parseTransfer(transfer, currency = undefined) {
2546
2875
  //
@@ -2557,6 +2886,22 @@ class woo extends woo$1 {
2557
2886
  // "created_time": "1709022325.427",
2558
2887
  // "updated_time": "1709022325.542"
2559
2888
  // }
2889
+ // {
2890
+ // "id": 225,
2891
+ // "token": "USDT",
2892
+ // "amount": "1000000",
2893
+ // "status": "COMPLETED",
2894
+ // "from": {
2895
+ // "applicationId": "046b5c5c-5b44-4d27-9593-ddc32c0a08ae",
2896
+ // "accountName": "Main"
2897
+ // },
2898
+ // "to": {
2899
+ // "applicationId": "082ae5ae-e26a-4fb1-be5b-03e5b4867663",
2900
+ // "accountName": "sub001"
2901
+ // },
2902
+ // "createdTime": "1642660941.534",
2903
+ // "updatedTime": "1642660941.950"
2904
+ // }
2560
2905
  //
2561
2906
  // transfer
2562
2907
  // {
@@ -2564,23 +2909,23 @@ class woo extends woo$1 {
2564
2909
  // "id": 200
2565
2910
  // }
2566
2911
  //
2567
- const networkizedCode = this.safeString(transfer, 'token');
2568
- const currencyDefined = this.getCurrencyFromChaincode(networkizedCode, currency);
2569
- const code = currencyDefined['code'];
2570
- const timestamp = this.safeTimestamp(transfer, 'created_time');
2912
+ const code = this.safeCurrencyCode(this.safeString(transfer, 'token'), currency);
2913
+ const timestamp = this.safeTimestamp(transfer, 'createdTime');
2571
2914
  const success = this.safeBool(transfer, 'success');
2572
2915
  let status = undefined;
2573
2916
  if (success !== undefined) {
2574
2917
  status = success ? 'ok' : 'failed';
2575
2918
  }
2919
+ const fromAccount = this.safeDict(transfer, 'from', {});
2920
+ const toAccount = this.safeDict(transfer, 'to', {});
2576
2921
  return {
2577
2922
  'id': this.safeString(transfer, 'id'),
2578
2923
  'timestamp': timestamp,
2579
2924
  'datetime': this.iso8601(timestamp),
2580
2925
  'currency': code,
2581
2926
  'amount': this.safeNumber(transfer, 'amount'),
2582
- 'fromAccount': this.safeString(transfer, 'from_application_id'),
2583
- 'toAccount': this.safeString(transfer, 'to_application_id'),
2927
+ 'fromAccount': this.safeString(fromAccount, 'applicationId'),
2928
+ 'toAccount': this.safeString(toAccount, 'applicationId'),
2584
2929
  'status': this.parseTransferStatus(this.safeString(transfer, 'status', status)),
2585
2930
  'info': transfer,
2586
2931
  };
@@ -2707,7 +3052,7 @@ class woo extends woo$1 {
2707
3052
  }
2708
3053
  else {
2709
3054
  this.checkRequiredCredentials();
2710
- if (method === 'POST' && (path === 'algo/order' || path === 'order')) {
3055
+ if (method === 'POST' && (path === 'trade/algoOrder' || path === 'trade/order')) {
2711
3056
  const isSandboxMode = this.safeBool(this.options, 'sandboxMode', false);
2712
3057
  if (!isSandboxMode) {
2713
3058
  const applicationId = 'bc830de7-50f3-460b-9ee0-f430f83f9dad';
@@ -2731,9 +3076,10 @@ class woo extends woo$1 {
2731
3076
  };
2732
3077
  if (version === 'v3') {
2733
3078
  auth = ts + method + '/' + version + '/' + pathWithParams;
2734
- if (method === 'POST' || method === 'PUT' || method === 'DELETE') {
3079
+ if (method === 'POST' || method === 'PUT') {
2735
3080
  body = this.json(params);
2736
3081
  auth += body;
3082
+ headers['content-type'] = 'application/json';
2737
3083
  }
2738
3084
  else {
2739
3085
  if (Object.keys(params).length) {
@@ -2742,7 +3088,6 @@ class woo extends woo$1 {
2742
3088
  auth += '?' + query;
2743
3089
  }
2744
3090
  }
2745
- headers['content-type'] = 'application/json';
2746
3091
  }
2747
3092
  else {
2748
3093
  auth = this.urlencode(params);
@@ -2781,25 +3126,26 @@ class woo extends woo$1 {
2781
3126
  parseIncome(income, market = undefined) {
2782
3127
  //
2783
3128
  // {
2784
- // "id":666666,
2785
- // "symbol":"PERP_BTC_USDT",
2786
- // "funding_rate":0.00001198,
2787
- // "mark_price":28941.04000000,
2788
- // "funding_fee":0.00069343,
2789
- // "payment_type":"Pay",
2790
- // "status":"COMPLETED",
2791
- // "created_time":"1653616000.666",
2792
- // "updated_time":"1653616000.605"
3129
+ // "id": 1286360,
3130
+ // "symbol": "PERP_BTC_USDT",
3131
+ // "fundingRate": -0.00001445,
3132
+ // "markPrice": "26930.60000000",
3133
+ // "fundingFee": "9.56021744",
3134
+ // "fundingIntervalHours": 8,
3135
+ // "paymentType": "Pay",
3136
+ // "status": "COMPLETED",
3137
+ // "createdTime": 1696060873259,
3138
+ // "updatedTime": 1696060873286
2793
3139
  // }
2794
3140
  //
2795
3141
  const marketId = this.safeString(income, 'symbol');
2796
3142
  const symbol = this.safeSymbol(marketId, market);
2797
- let amount = this.safeString(income, 'funding_fee');
3143
+ let amount = this.safeString(income, 'fundingFee');
2798
3144
  const code = this.safeCurrencyCode('USD');
2799
3145
  const id = this.safeString(income, 'id');
2800
- const timestamp = this.safeTimestamp(income, 'updated_time');
2801
- const rate = this.safeNumber(income, 'funding_rate');
2802
- const paymentType = this.safeString(income, 'payment_type');
3146
+ const timestamp = this.safeInteger(income, 'updatedTime');
3147
+ const rate = this.safeNumber(income, 'fundingRate');
3148
+ const paymentType = this.safeString(income, 'paymentType');
2803
3149
  amount = (paymentType === 'Pay') ? Precise["default"].stringNeg(amount) : amount;
2804
3150
  return {
2805
3151
  'info': income,
@@ -2816,7 +3162,7 @@ class woo extends woo$1 {
2816
3162
  * @method
2817
3163
  * @name woo#fetchFundingHistory
2818
3164
  * @description fetch the history of funding payments paid and received on this account
2819
- * @see https://docs.woox.io/#get-funding-fee-history
3165
+ * @see https://developer.woox.io/api-reference/endpoint/futures/get_fundingFee_history
2820
3166
  * @param {string} [symbol] unified market symbol
2821
3167
  * @param {int} [since] the earliest time in ms to fetch funding history for
2822
3168
  * @param {int} [limit] the maximum number of funding history structures to retrieve
@@ -2829,7 +3175,7 @@ class woo extends woo$1 {
2829
3175
  let paginate = false;
2830
3176
  [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingHistory', 'paginate');
2831
3177
  if (paginate) {
2832
- return await this.fetchPaginatedCallCursor('fetchFundingHistory', symbol, since, limit, params, 'page', 'page', 1, 500);
3178
+ return await this.fetchPaginatedCallIncremental('fetchFundingHistory', symbol, since, limit, params, 'page', 500);
2833
3179
  }
2834
3180
  const request = {};
2835
3181
  let market = undefined;
@@ -2838,70 +3184,67 @@ class woo extends woo$1 {
2838
3184
  request['symbol'] = market['id'];
2839
3185
  }
2840
3186
  if (since !== undefined) {
2841
- request['start_t'] = since;
3187
+ request['startTime'] = since;
2842
3188
  }
2843
- if (limit !== undefined) {
2844
- request['size'] = limit;
3189
+ const until = this.safeInteger(params, 'until'); // unified in milliseconds
3190
+ params = this.omit(params, ['until']);
3191
+ if (until !== undefined) {
3192
+ request['endTime'] = until;
2845
3193
  }
2846
- else {
2847
- request['size'] = 5000;
3194
+ if (limit !== undefined) {
3195
+ request['size'] = Math.min(limit, 500);
2848
3196
  }
2849
- const response = await this.v1PrivateGetFundingFeeHistory(this.extend(request, params));
3197
+ const response = await this.v3PrivateGetFuturesFundingFeeHistory(this.extend(request, params));
2850
3198
  //
2851
3199
  // {
2852
- // "rows":[
2853
- // {
2854
- // "id":666666,
2855
- // "symbol":"PERP_BTC_USDT",
2856
- // "funding_rate":0.00001198,
2857
- // "mark_price":28941.04000000,
2858
- // "funding_fee":0.00069343,
2859
- // "payment_type":"Pay",
2860
- // "status":"COMPLETED",
2861
- // "created_time":"1653616000.666",
2862
- // "updated_time":"1653616000.605"
2863
- // }
2864
- // ],
2865
- // "meta":{
2866
- // "total":235,
2867
- // "records_per_page":25,
2868
- // "current_page":1
3200
+ // "success": true,
3201
+ // "data": {
3202
+ // "meta": {
3203
+ // "total": 670,
3204
+ // "recordsPerPage": 25,
3205
+ // "currentPage": 1
3206
+ // },
3207
+ // "rows": [
3208
+ // {
3209
+ // "id": 1286360,
3210
+ // "symbol": "PERP_BTC_USDT",
3211
+ // "fundingRate": -0.00001445,
3212
+ // "markPrice": "26930.60000000",
3213
+ // "fundingFee": "9.56021744",
3214
+ // "fundingIntervalHours": 8,
3215
+ // "paymentType": "Pay",
3216
+ // "status": "COMPLETED",
3217
+ // "createdTime": 1696060873259,
3218
+ // "updatedTime": 1696060873286
3219
+ // }
3220
+ // ]
2869
3221
  // },
2870
- // "success":true
3222
+ // "timestamp": 1721351502594
2871
3223
  // }
2872
3224
  //
2873
- const meta = this.safeDict(response, 'meta', {});
2874
- const cursor = this.safeInteger(meta, 'current_page');
2875
- const result = this.safeList(response, 'rows', []);
2876
- const resultLength = result.length;
2877
- if (resultLength > 0) {
2878
- const lastItem = result[resultLength - 1];
2879
- lastItem['page'] = cursor;
2880
- result[resultLength - 1] = lastItem;
2881
- }
2882
- return this.parseIncomes(result, market, since, limit);
3225
+ const data = this.safeDict(response, 'data', {});
3226
+ const rows = this.safeList(data, 'rows', []);
3227
+ return this.parseIncomes(rows, market, since, limit);
2883
3228
  }
2884
3229
  parseFundingRate(fundingRate, market = undefined) {
2885
3230
  //
2886
3231
  // {
2887
- // "success": true,
2888
- // "timestamp": 1727427915529,
2889
3232
  // "symbol": "PERP_BTC_USDT",
2890
- // "est_funding_rate": -0.00092719,
2891
- // "est_funding_rate_timestamp": 1727427899060,
2892
- // "last_funding_rate": -0.00092610,
2893
- // "last_funding_rate_timestamp": 1727424000000,
2894
- // "next_funding_time": 1727452800000,
2895
- // "last_funding_rate_interval": 8,
2896
- // "est_funding_rate_interval": 8
3233
+ // "estFundingRate": "-0.00000441",
3234
+ // "estFundingRateTimestamp": 1751623979022,
3235
+ // "lastFundingRate": "-0.00004953",
3236
+ // "lastFundingRateTimestamp": 1751616000000,
3237
+ // "nextFundingTime": 1751644800000,
3238
+ // "lastFundingIntervalHours": 8,
3239
+ // "estFundingIntervalHours": 8
2897
3240
  // }
2898
3241
  //
2899
3242
  const symbol = this.safeString(fundingRate, 'symbol');
2900
3243
  market = this.market(symbol);
2901
- const nextFundingTimestamp = this.safeInteger(fundingRate, 'next_funding_time');
2902
- const estFundingRateTimestamp = this.safeInteger(fundingRate, 'est_funding_rate_timestamp');
2903
- const lastFundingRateTimestamp = this.safeInteger(fundingRate, 'last_funding_rate_timestamp');
2904
- const intervalString = this.safeString(fundingRate, 'est_funding_rate_interval');
3244
+ const nextFundingTimestamp = this.safeInteger(fundingRate, 'nextFundingTime');
3245
+ const estFundingRateTimestamp = this.safeInteger(fundingRate, 'estFundingRateTimestamp');
3246
+ const lastFundingRateTimestamp = this.safeInteger(fundingRate, 'lastFundingRateTimestamp');
3247
+ const intervalString = this.safeString(fundingRate, 'estFundingIntervalHours');
2905
3248
  return {
2906
3249
  'info': fundingRate,
2907
3250
  'symbol': market['symbol'],
@@ -2911,13 +3254,13 @@ class woo extends woo$1 {
2911
3254
  'estimatedSettlePrice': undefined,
2912
3255
  'timestamp': estFundingRateTimestamp,
2913
3256
  'datetime': this.iso8601(estFundingRateTimestamp),
2914
- 'fundingRate': this.safeNumber(fundingRate, 'est_funding_rate'),
3257
+ 'fundingRate': this.safeNumber(fundingRate, 'estFundingRate'),
2915
3258
  'fundingTimestamp': nextFundingTimestamp,
2916
3259
  'fundingDatetime': this.iso8601(nextFundingTimestamp),
2917
3260
  'nextFundingRate': undefined,
2918
3261
  'nextFundingTimestamp': undefined,
2919
3262
  'nextFundingDatetime': undefined,
2920
- 'previousFundingRate': this.safeNumber(fundingRate, 'last_funding_rate'),
3263
+ 'previousFundingRate': this.safeNumber(fundingRate, 'lastFundingRate'),
2921
3264
  'previousFundingTimestamp': lastFundingRateTimestamp,
2922
3265
  'previousFundingDatetime': this.iso8601(lastFundingRateTimestamp),
2923
3266
  'interval': intervalString + 'h',
@@ -2927,7 +3270,7 @@ class woo extends woo$1 {
2927
3270
  * @method
2928
3271
  * @name woo#fetchFundingInterval
2929
3272
  * @description fetch the current funding rate interval
2930
- * @see https://docs.woox.io/#get-predicted-funding-rate-for-one-market-public
3273
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
2931
3274
  * @param {string} symbol unified market symbol
2932
3275
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2933
3276
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -2939,7 +3282,7 @@ class woo extends woo$1 {
2939
3282
  * @method
2940
3283
  * @name woo#fetchFundingRate
2941
3284
  * @description fetch the current funding rate
2942
- * @see https://docs.woox.io/#get-predicted-funding-rate-for-one-market-public
3285
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
2943
3286
  * @param {string} symbol unified market symbol
2944
3287
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2945
3288
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -2950,28 +3293,37 @@ class woo extends woo$1 {
2950
3293
  const request = {
2951
3294
  'symbol': market['id'],
2952
3295
  };
2953
- const response = await this.v1PublicGetFundingRateSymbol(this.extend(request, params));
3296
+ const response = await this.v3PublicGetFundingRate(this.extend(request, params));
2954
3297
  //
2955
3298
  // {
2956
3299
  // "success": true,
2957
- // "timestamp": 1727428037877,
2958
- // "symbol": "PERP_BTC_USDT",
2959
- // "est_funding_rate": -0.00092674,
2960
- // "est_funding_rate_timestamp": 1727428019064,
2961
- // "last_funding_rate": -0.00092610,
2962
- // "last_funding_rate_timestamp": 1727424000000,
2963
- // "next_funding_time": 1727452800000,
2964
- // "last_funding_rate_interval": 8,
2965
- // "est_funding_rate_interval": 8
3300
+ // "data": {
3301
+ // "rows": [
3302
+ // {
3303
+ // "symbol": "PERP_BTC_USDT",
3304
+ // "estFundingRate": "-0.00000441",
3305
+ // "estFundingRateTimestamp": 1751623979022,
3306
+ // "lastFundingRate": "-0.00004953",
3307
+ // "lastFundingRateTimestamp": 1751616000000,
3308
+ // "nextFundingTime": 1751644800000,
3309
+ // "lastFundingIntervalHours": 8,
3310
+ // "estFundingIntervalHours": 8
3311
+ // }
3312
+ // ]
3313
+ // },
3314
+ // "timestamp": 1751624037798
2966
3315
  // }
2967
3316
  //
2968
- return this.parseFundingRate(response, market);
3317
+ const data = this.safeDict(response, 'data', {});
3318
+ const rows = this.safeList(data, 'rows', []);
3319
+ const first = this.safeDict(rows, 0, {});
3320
+ return this.parseFundingRate(first, market);
2969
3321
  }
2970
3322
  /**
2971
3323
  * @method
2972
3324
  * @name woo#fetchFundingRates
2973
3325
  * @description fetch the funding rate for multiple markets
2974
- * @see https://docs.woox.io/#get-predicted-funding-rate-for-all-markets-public
3326
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
2975
3327
  * @param {string[]|undefined} symbols list of unified market symbols
2976
3328
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2977
3329
  * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
@@ -2979,31 +3331,36 @@ class woo extends woo$1 {
2979
3331
  async fetchFundingRates(symbols = undefined, params = {}) {
2980
3332
  await this.loadMarkets();
2981
3333
  symbols = this.marketSymbols(symbols);
2982
- const response = await this.v1PublicGetFundingRates(params);
3334
+ const response = await this.v3PublicGetFundingRate(params);
2983
3335
  //
2984
3336
  // {
2985
- // "success":true,
2986
- // "rows":[
2987
- // {
2988
- // "symbol":"PERP_AAVE_USDT",
2989
- // "est_funding_rate":-0.00003447,
2990
- // "est_funding_rate_timestamp":1653633959001,
2991
- // "last_funding_rate":-0.00002094,
2992
- // "last_funding_rate_timestamp":1653631200000,
2993
- // "next_funding_time":1653634800000
2994
- // }
2995
- // ],
2996
- // "timestamp":1653633985646
3337
+ // "success": true,
3338
+ // "data": {
3339
+ // "rows": [
3340
+ // {
3341
+ // "symbol": "PERP_BTC_USDT",
3342
+ // "estFundingRate": "-0.00000441",
3343
+ // "estFundingRateTimestamp": 1751623979022,
3344
+ // "lastFundingRate": "-0.00004953",
3345
+ // "lastFundingRateTimestamp": 1751616000000,
3346
+ // "nextFundingTime": 1751644800000,
3347
+ // "lastFundingIntervalHours": 8,
3348
+ // "estFundingIntervalHours": 8
3349
+ // }
3350
+ // ]
3351
+ // },
3352
+ // "timestamp": 1751624037798
2997
3353
  // }
2998
3354
  //
2999
- const rows = this.safeList(response, 'rows', []);
3355
+ const data = this.safeDict(response, 'data', {});
3356
+ const rows = this.safeList(data, 'rows', []);
3000
3357
  return this.parseFundingRates(rows, symbols);
3001
3358
  }
3002
3359
  /**
3003
3360
  * @method
3004
3361
  * @name woo#fetchFundingRateHistory
3005
3362
  * @description fetches historical funding rate prices
3006
- * @see https://docs.woox.io/#get-funding-rate-history-for-one-market-public
3363
+ * @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRateHistory
3007
3364
  * @param {string} symbol unified symbol of the market to fetch the funding rate history for
3008
3365
  * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
3009
3366
  * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
@@ -3019,46 +3376,52 @@ class woo extends woo$1 {
3019
3376
  if (paginate) {
3020
3377
  return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'page', 25);
3021
3378
  }
3022
- let request = {};
3023
- if (symbol !== undefined) {
3024
- const market = this.market(symbol);
3025
- symbol = market['symbol'];
3026
- request['symbol'] = market['id'];
3379
+ if (symbol === undefined) {
3380
+ throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
3027
3381
  }
3382
+ const market = this.market(symbol);
3383
+ symbol = market['symbol'];
3384
+ let request = {
3385
+ 'symbol': market['id'],
3386
+ };
3028
3387
  if (since !== undefined) {
3029
- request['start_t'] = this.parseToInt(since / 1000);
3388
+ request['startTime'] = since;
3030
3389
  }
3031
- [request, params] = this.handleUntilOption('end_t', request, params, 0.001);
3032
- const response = await this.v1PublicGetFundingRateHistory(this.extend(request, params));
3390
+ [request, params] = this.handleUntilOption('endTime', request, params);
3391
+ const response = await this.v3PublicGetFundingRateHistory(this.extend(request, params));
3033
3392
  //
3034
3393
  // {
3035
- // "success":true,
3036
- // "meta":{
3037
- // "total":2464,
3038
- // "records_per_page":25,
3039
- // "current_page":1
3040
- // },
3041
- // "rows":[
3042
- // {
3043
- // "symbol":"PERP_BTC_USDT",
3044
- // "funding_rate":0.00000629,
3045
- // "funding_rate_timestamp":1653638400000,
3046
- // "next_funding_time":1653642000000
3394
+ // "success": true,
3395
+ // "data": {
3396
+ // "rows": [
3397
+ // {
3398
+ // "symbol": "PERP_BTC_USDT",
3399
+ // "fundingRate": "-0.00004953",
3400
+ // "fundingRateTimestamp": 1751616000000,
3401
+ // "nextFundingTime": 1751644800000,
3402
+ // "markPrice": "108708"
3403
+ // }
3404
+ // ],
3405
+ // "meta": {
3406
+ // "total": 11690,
3407
+ // "recordsPerPage": 25,
3408
+ // "currentPage": 1
3047
3409
  // }
3048
- // ],
3049
- // "timestamp":1653640814885
3410
+ // },
3411
+ // "timestamp": 1751632390031
3050
3412
  // }
3051
3413
  //
3052
- const result = this.safeList(response, 'rows');
3414
+ const data = this.safeDict(response, 'data', {});
3415
+ const rows = this.safeList(data, 'rows', []);
3053
3416
  const rates = [];
3054
- for (let i = 0; i < result.length; i++) {
3055
- const entry = result[i];
3417
+ for (let i = 0; i < rows.length; i++) {
3418
+ const entry = rows[i];
3056
3419
  const marketId = this.safeString(entry, 'symbol');
3057
- const timestamp = this.safeInteger(entry, 'funding_rate_timestamp');
3420
+ const timestamp = this.safeInteger(entry, 'fundingRateTimestamp');
3058
3421
  rates.push({
3059
3422
  'info': entry,
3060
3423
  'symbol': this.safeSymbol(marketId),
3061
- 'fundingRate': this.safeNumber(entry, 'funding_rate'),
3424
+ 'fundingRate': this.safeNumber(entry, 'fundingRate'),
3062
3425
  'timestamp': timestamp,
3063
3426
  'datetime': this.iso8601(timestamp),
3064
3427
  });
@@ -3070,7 +3433,7 @@ class woo extends woo$1 {
3070
3433
  * @method
3071
3434
  * @name woo#setPositionMode
3072
3435
  * @description set hedged to true or false for a market
3073
- * @see https://docs.woox.io/#update-position-mode
3436
+ * @see https://developer.woox.io/api-reference/endpoint/futures/position_mode
3074
3437
  * @param {bool} hedged set to true to use HEDGE_MODE, false for ONE_WAY
3075
3438
  * @param {string} symbol not used by woo setPositionMode
3076
3439
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -3085,14 +3448,13 @@ class woo extends woo$1 {
3085
3448
  hedgeMode = 'ONE_WAY';
3086
3449
  }
3087
3450
  const request = {
3088
- 'position_mode': hedgeMode,
3451
+ 'positionMode': hedgeMode,
3089
3452
  };
3090
- const response = await this.v1PrivatePostClientPositionMode(this.extend(request, params));
3453
+ const response = await this.v3PrivatePutFuturesPositionMode(this.extend(request, params));
3091
3454
  //
3092
3455
  // {
3093
3456
  // "success": true,
3094
- // "data": {},
3095
- // "timestamp": "1709195608551"
3457
+ // "timestamp": 1752550492845
3096
3458
  // }
3097
3459
  //
3098
3460
  return response;
@@ -3101,11 +3463,12 @@ class woo extends woo$1 {
3101
3463
  * @method
3102
3464
  * @name woo#fetchLeverage
3103
3465
  * @description fetch the set leverage for a market
3104
- * @see https://docs.woox.io/#get-account-information-new
3466
+ * @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
3467
+ * @see https://developer.woox.io/api-reference/endpoint/futures/get_leverage
3105
3468
  * @param {string} symbol unified market symbol
3106
3469
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3107
3470
  * @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
3108
- * @param {string} [params.position_mode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
3471
+ * @param {string} [params.positionMode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
3109
3472
  * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
3110
3473
  */
3111
3474
  async fetchLeverage(symbol, params = {}) {
@@ -3113,7 +3476,7 @@ class woo extends woo$1 {
3113
3476
  const market = this.market(symbol);
3114
3477
  let response = undefined;
3115
3478
  if (market['spot']) {
3116
- response = await this.v3PrivateGetAccountinfo(params);
3479
+ response = await this.v3PrivateGetAccountInfo(params);
3117
3480
  //
3118
3481
  // {
3119
3482
  // "success": true,
@@ -3121,25 +3484,26 @@ class woo extends woo$1 {
3121
3484
  // "applicationId": "dsa",
3122
3485
  // "account": "dsa",
3123
3486
  // "alias": "haha",
3124
- // "accountMode": "MARGIN",
3125
- // "leverage": 1,
3126
- // "takerFeeRate": 1,
3127
- // "makerFeeRate": 1,
3128
- // "interestRate": 1,
3129
- // "futuresTakerFeeRate": 1,
3130
- // "futuresMakerFeeRate": 1,
3131
3487
  // "otpauth": true,
3132
- // "marginRatio": 1,
3133
- // "openMarginRatio": 1,
3134
- // "initialMarginRatio": 1,
3135
- // "maintenanceMarginRatio": 1,
3136
- // "totalCollateral": 1,
3137
- // "freeCollateral": 1,
3138
- // "totalAccountValue": 1,
3139
- // "totalVaultValue": 1,
3140
- // "totalStakingValue": 1
3488
+ // "accountMode": "FUTURES",
3489
+ // "positionMode": "ONE_WAY",
3490
+ // "leverage": 0,
3491
+ // "marginRatio": "10",
3492
+ // "openMarginRatio": "10",
3493
+ // "initialMarginRatio": "10",
3494
+ // "maintenanceMarginRatio": "0.03",
3495
+ // "totalCollateral": "165.6115334",
3496
+ // "freeCollateral": "165.6115334",
3497
+ // "totalAccountValue": "167.52723093",
3498
+ // "totalTradingValue": "167.52723093",
3499
+ // "totalVaultValue": "0",
3500
+ // "totalStakingValue": "0",
3501
+ // "totalLaunchpadValue": "0",
3502
+ // "totalEarnValue": "0",
3503
+ // "referrerID": null,
3504
+ // "accountType": "Main"
3141
3505
  // },
3142
- // "timestamp": 1673323685109
3506
+ // "timestamp": 1752645129054
3143
3507
  // }
3144
3508
  //
3145
3509
  }
@@ -3149,8 +3513,8 @@ class woo extends woo$1 {
3149
3513
  };
3150
3514
  let marginMode = undefined;
3151
3515
  [marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
3152
- request['margin_mode'] = this.encodeMarginMode(marginMode);
3153
- response = await this.v1PrivateGetClientFuturesLeverage(this.extend(request, params));
3516
+ request['marginMode'] = this.encodeMarginMode(marginMode);
3517
+ response = await this.v3PrivateGetFuturesLeverage(this.extend(request, params));
3154
3518
  //
3155
3519
  // HEDGE_MODE
3156
3520
  // {
@@ -3158,15 +3522,15 @@ class woo extends woo$1 {
3158
3522
  // "data":
3159
3523
  // {
3160
3524
  // "symbol": "PERP_ETH_USDT",
3161
- // "default_margin_mode": "CROSS",
3162
- // "position_mode": "HEDGE_MODE",
3525
+ // "marginMode": "CROSS",
3526
+ // "positionMode": "HEDGE_MODE",
3163
3527
  // "details": [
3164
3528
  // {
3165
- // "position_side": "LONG",
3529
+ // "positionSide": "LONG",
3166
3530
  // "leverage": 10
3167
3531
  // },
3168
3532
  // {
3169
- // "position_side": "SHORT",
3533
+ // "positionSide": "SHORT",
3170
3534
  // "leverage": 10
3171
3535
  // }
3172
3536
  // ]
@@ -3179,11 +3543,11 @@ class woo extends woo$1 {
3179
3543
  // "success": true,
3180
3544
  // "data": {
3181
3545
  // "symbol": "PERP_ETH_USDT",
3182
- // "default_margin_mode": "ISOLATED",
3183
- // "position_mode": "ONE_WAY",
3546
+ // "marginMode": "ISOLATED",
3547
+ // "positionMode": "ONE_WAY",
3184
3548
  // "details": [
3185
3549
  // {
3186
- // "position_side": "BOTH",
3550
+ // "positionSide": "BOTH",
3187
3551
  // "leverage": 10
3188
3552
  // }
3189
3553
  // ]
@@ -3201,15 +3565,18 @@ class woo extends woo$1 {
3201
3565
  parseLeverage(leverage, market = undefined) {
3202
3566
  const marketId = this.safeString(leverage, 'symbol');
3203
3567
  market = this.safeMarket(marketId, market);
3204
- const marginMode = this.safeStringLower(leverage, 'default_margin_mode');
3205
- const spotLeverage = this.safeInteger(leverage, 'leverage');
3568
+ const marginMode = this.safeStringLower(leverage, 'marginMode');
3569
+ let spotLeverage = this.safeInteger(leverage, 'leverage');
3570
+ if (spotLeverage === 0) {
3571
+ spotLeverage = null;
3572
+ }
3206
3573
  let longLeverage = spotLeverage;
3207
3574
  let shortLeverage = spotLeverage;
3208
3575
  const details = this.safeList(leverage, 'details', []);
3209
3576
  for (let i = 0; i < details.length; i++) {
3210
3577
  const position = this.safeDict(details, i, {});
3211
3578
  const positionLeverage = this.safeInteger(position, 'leverage');
3212
- const side = this.safeString(position, 'position_side');
3579
+ const side = this.safeString(position, 'positionSide');
3213
3580
  if (side === 'BOTH') {
3214
3581
  longLeverage = positionLeverage;
3215
3582
  shortLeverage = positionLeverage;
@@ -3233,13 +3600,13 @@ class woo extends woo$1 {
3233
3600
  * @method
3234
3601
  * @name woo#setLeverage
3235
3602
  * @description set the level of leverage for a market
3236
- * @see https://docs.woox.io/#update-leverage-setting
3237
- * @see https://docs.woox.io/#update-futures-leverage-setting
3603
+ * @see https://developer.woox.io/api-reference/endpoint/spot_margin/set_leverage
3604
+ * @see https://developer.woox.io/api-reference/endpoint/futures/set_leverage
3238
3605
  * @param {float} leverage the rate of leverage (1, 2, 3, 4 or 5 for spot markets, 1, 2, 3, 4, 5, 10, 15, 20 for swap markets)
3239
3606
  * @param {string} [symbol] unified market symbol (is mandatory for swap markets)
3240
3607
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3241
3608
  * @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
3242
- * @param {string} [params.position_side] *for swap markets only* 'LONG' or 'SHORT' in hedge mode, 'BOTH' in one way mode.
3609
+ * @param {string} [params.positionMode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
3243
3610
  * @returns {object} response from the exchange
3244
3611
  */
3245
3612
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -3252,14 +3619,14 @@ class woo extends woo$1 {
3252
3619
  market = this.market(symbol);
3253
3620
  }
3254
3621
  if ((symbol === undefined) || market['spot']) {
3255
- return await this.v1PrivatePostClientLeverage(this.extend(request, params));
3622
+ return await this.v3PrivatePostSpotMarginLeverage(this.extend(request, params));
3256
3623
  }
3257
3624
  else if (market['swap']) {
3258
3625
  request['symbol'] = market['id'];
3259
3626
  let marginMode = undefined;
3260
3627
  [marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
3261
- request['margin_mode'] = this.encodeMarginMode(marginMode);
3262
- return await this.v1PrivatePostClientFuturesLeverage(this.extend(request, params));
3628
+ request['marginMode'] = this.encodeMarginMode(marginMode);
3629
+ return await this.v3PrivatePutFuturesLeverage(this.extend(request, params));
3263
3630
  }
3264
3631
  else {
3265
3632
  throw new errors.NotSupported(this.id + ' fetchLeverage() is not supported for ' + market['type'] + ' markets');
@@ -3304,93 +3671,99 @@ class woo extends woo$1 {
3304
3671
  };
3305
3672
  return await this.v1PrivatePostClientIsolatedMargin(this.extend(request, params));
3306
3673
  }
3674
+ /**
3675
+ * @method
3676
+ * @name woo#fetchPosition
3677
+ * @description fetch data on an open position
3678
+ * @see https://developer.woox.io/api-reference/endpoint/futures/get_positions
3679
+ * @param {string} symbol unified market symbol of the market the position is held in
3680
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3681
+ * @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
3682
+ */
3307
3683
  async fetchPosition(symbol, params = {}) {
3308
3684
  await this.loadMarkets();
3309
3685
  const market = this.market(symbol);
3310
3686
  const request = {
3311
3687
  'symbol': market['id'],
3312
3688
  };
3313
- const response = await this.v1PrivateGetPositionSymbol(this.extend(request, params));
3689
+ const response = await this.v3PrivateGetFuturesPositions(this.extend(request, params));
3314
3690
  //
3315
3691
  // {
3316
- // "symbol": "PERP_ETH_USDT",
3317
- // "position_side": "BOTH",
3318
- // "leverage": 10,
3319
- // "margin_mode": "CROSS",
3320
- // "average_open_price": 3139.9,
3321
- // "isolated_margin_amount": 0.0,
3322
- // "isolated_margin_token": "",
3323
- // "opening_time": "1720627963.094",
3324
- // "mark_price": 3155.19169891,
3325
- // "pending_short_qty": 0.0,
3326
- // "pending_long_qty": 0.0,
3327
- // "holding": -0.7,
3328
- // "pnl_24_h": 0.0,
3329
- // "est_liq_price": 9107.40055552,
3330
- // "settle_price": 3151.0319904,
3331
3692
  // "success": true,
3332
- // "fee_24_h": 0.0,
3333
- // "isolated_frozen_long": 0.0,
3334
- // "isolated_frozen_short": 0.0,
3335
- // "timestamp": "1720867502.544"
3693
+ // "data": {
3694
+ // "positions": [
3695
+ // {
3696
+ // "symbol": "PERP_LTC_USDT",
3697
+ // "holding": "0.1",
3698
+ // "pendingLongQty": "0",
3699
+ // "pendingShortQty": "0",
3700
+ // "settlePrice": "96.87",
3701
+ // "averageOpenPrice": "96.87",
3702
+ // "pnl24H": "0",
3703
+ // "fee24H": "0.0048435",
3704
+ // "markPrice": "96.83793449",
3705
+ // "estLiqPrice": "0",
3706
+ // "timestamp": 1752500555823,
3707
+ // "adlQuantile": 2,
3708
+ // "positionSide": "BOTH",
3709
+ // "marginMode": "CROSS",
3710
+ // "isolatedMarginToken": "",
3711
+ // "isolatedMarginAmount": "0",
3712
+ // "isolatedFrozenLong": "0",
3713
+ // "isolatedFrozenShort": "0",
3714
+ // "leverage": 10
3715
+ // }
3716
+ // ]
3717
+ // },
3718
+ // "timestamp": 1752500579848
3336
3719
  // }
3337
3720
  //
3338
- return this.parsePosition(response, market);
3721
+ const result = this.safeDict(response, 'data', {});
3722
+ const positions = this.safeList(result, 'positions', []);
3723
+ const first = this.safeDict(positions, 0, {});
3724
+ return this.parsePosition(first, market);
3339
3725
  }
3726
+ /**
3727
+ * @method
3728
+ * @name woo#fetchPositions
3729
+ * @description fetch all open positions
3730
+ * @see https://developer.woox.io/api-reference/endpoint/futures/get_positions
3731
+ * @param {string[]} [symbols] list of unified market symbols
3732
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3733
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
3734
+ */
3340
3735
  async fetchPositions(symbols = undefined, params = {}) {
3341
3736
  await this.loadMarkets();
3342
- const response = await this.v3PrivateGetPositions(params);
3737
+ const response = await this.v3PrivateGetFuturesPositions(params);
3343
3738
  //
3344
3739
  // {
3345
3740
  // "success": true,
3346
- // "data":
3347
- // {
3741
+ // "data": {
3348
3742
  // "positions": [
3349
3743
  // {
3350
- // "symbol": "PERP_ETH_USDT",
3351
- // "holding": -1.0,
3352
- // "pendingLongQty": 0.0,
3353
- // "pendingShortQty": 0.0,
3354
- // "settlePrice": 3143.2,
3355
- // "averageOpenPrice": 3143.2,
3356
- // "pnl24H": 0.0,
3357
- // "fee24H": 1.5716,
3358
- // "markPrice": 3134.97984158,
3359
- // "estLiqPrice": 3436.176349,
3360
- // "timestamp": 1720628031.463,
3361
- // "adlQuantile": 5,
3362
- // "positionSide": "BOTH",
3363
- // "marginMode": "ISOLATED",
3364
- // "isolatedMarginToken": "USDT",
3365
- // "isolatedMarginAmount": 314.62426,
3366
- // "isolatedFrozenLong": 0.0,
3367
- // "isolatedFrozenShort": 0.0,
3368
- // "leverage": 10
3369
- // },
3370
- // {
3371
- // "symbol": "PERP_SOL_USDT",
3372
- // "holding": -1.0,
3373
- // "pendingLongQty": 0.0,
3374
- // "pendingShortQty": 0.0,
3375
- // "settlePrice": 141.89933923,
3376
- // "averageOpenPrice": 171.38,
3377
- // "pnl24H": 0.0,
3378
- // "fee24H": 0.0,
3379
- // "markPrice": 141.65155427,
3380
- // "estLiqPrice": 4242.73548551,
3381
- // "timestamp": 1720616702.68,
3382
- // "adlQuantile": 5,
3744
+ // "symbol": "PERP_LTC_USDT",
3745
+ // "holding": "0.1",
3746
+ // "pendingLongQty": "0",
3747
+ // "pendingShortQty": "0",
3748
+ // "settlePrice": "96.87",
3749
+ // "averageOpenPrice": "96.87",
3750
+ // "pnl24H": "0",
3751
+ // "fee24H": "0.0048435",
3752
+ // "markPrice": "96.83793449",
3753
+ // "estLiqPrice": "0",
3754
+ // "timestamp": 1752500555823,
3755
+ // "adlQuantile": 2,
3383
3756
  // "positionSide": "BOTH",
3384
3757
  // "marginMode": "CROSS",
3385
3758
  // "isolatedMarginToken": "",
3386
- // "isolatedMarginAmount": 0.0,
3387
- // "isolatedFrozenLong": 0.0,
3388
- // "isolatedFrozenShort": 0.0,
3759
+ // "isolatedMarginAmount": "0",
3760
+ // "isolatedFrozenLong": "0",
3761
+ // "isolatedFrozenShort": "0",
3389
3762
  // "leverage": 10
3390
3763
  // }
3391
3764
  // ]
3392
3765
  // },
3393
- // "timestamp": 1720628675078
3766
+ // "timestamp": 1752500579848
3394
3767
  // }
3395
3768
  //
3396
3769
  const result = this.safeDict(response, 'data', {});
@@ -3425,24 +3798,24 @@ class woo extends woo$1 {
3425
3798
  //
3426
3799
  // v3PrivateGetPositions
3427
3800
  // {
3428
- // "symbol": "PERP_ETH_USDT",
3429
- // "holding": -1.0,
3430
- // "pendingLongQty": 0.0, // todo: check
3431
- // "pendingShortQty": 0.0, // todo: check
3432
- // "settlePrice": 3143.2,
3433
- // "averageOpenPrice": 3143.2,
3434
- // "pnl24H": 0.0, // todo: check
3435
- // "fee24H": 1.5716, // todo: check
3436
- // "markPrice": 3134.97984158,
3437
- // "estLiqPrice": 3436.176349,
3438
- // "timestamp": 1720628031.463,
3439
- // "adlQuantile": 5,
3801
+ // "symbol": "PERP_LTC_USDT",
3802
+ // "holding": "0.1",
3803
+ // "pendingLongQty": "0",
3804
+ // "pendingShortQty": "0",
3805
+ // "settlePrice": "96.87",
3806
+ // "averageOpenPrice": "96.87",
3807
+ // "pnl24H": "0",
3808
+ // "fee24H": "0.0048435",
3809
+ // "markPrice": "96.83793449",
3810
+ // "estLiqPrice": "0",
3811
+ // "timestamp": 1752500555823,
3812
+ // "adlQuantile": 2,
3440
3813
  // "positionSide": "BOTH",
3441
- // "marginMode": "ISOLATED",
3442
- // "isolatedMarginToken": "USDT", // todo: check
3443
- // "isolatedMarginAmount": 314.62426, // todo: check
3444
- // "isolatedFrozenLong": 0.0, // todo: check
3445
- // "isolatedFrozenShort": 0.0, // todo: check
3814
+ // "marginMode": "CROSS",
3815
+ // "isolatedMarginToken": "",
3816
+ // "isolatedMarginAmount": "0",
3817
+ // "isolatedFrozenLong": "0",
3818
+ // "isolatedFrozenShort": "0",
3446
3819
  // "leverage": 10
3447
3820
  // }
3448
3821
  //
@@ -3458,7 +3831,16 @@ class woo extends woo$1 {
3458
3831
  }
3459
3832
  const contractSize = this.safeString(market, 'contractSize');
3460
3833
  const markPrice = this.safeString2(position, 'markPrice', 'mark_price');
3461
- const timestamp = this.safeTimestamp(position, 'timestamp');
3834
+ const timestampString = this.safeString(position, 'timestamp');
3835
+ let timestamp = undefined;
3836
+ if (timestampString !== undefined) {
3837
+ if (timestampString.indexOf('.') > -1) {
3838
+ timestamp = this.safeTimestamp(position, 'timestamp');
3839
+ }
3840
+ else {
3841
+ timestamp = this.safeInteger(position, 'timestamp');
3842
+ }
3843
+ }
3462
3844
  const entryPrice = this.safeString2(position, 'averageOpenPrice', 'average_open_price');
3463
3845
  const priceDifference = Precise["default"].stringSub(markPrice, entryPrice);
3464
3846
  const unrealisedPnl = Precise["default"].stringMul(priceDifference, size);