ccxt 4.4.77 → 4.4.78

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 (936) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +8 -4
  4. package/dist/cjs/src/abstract/ace.js +1 -1
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/apex.js +9 -0
  7. package/dist/cjs/src/abstract/ascendex.js +1 -1
  8. package/dist/cjs/src/abstract/bigone.js +1 -1
  9. package/dist/cjs/src/abstract/binance.js +1 -1
  10. package/dist/cjs/src/abstract/bingx.js +1 -1
  11. package/dist/cjs/src/abstract/bit2c.js +1 -1
  12. package/dist/cjs/src/abstract/bitbank.js +1 -1
  13. package/dist/cjs/src/abstract/bitbns.js +1 -1
  14. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  15. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  16. package/dist/cjs/src/abstract/bitget.js +1 -1
  17. package/dist/cjs/src/abstract/bithumb.js +1 -1
  18. package/dist/cjs/src/abstract/bitmart.js +1 -1
  19. package/dist/cjs/src/abstract/bitmex.js +1 -1
  20. package/dist/cjs/src/abstract/bitopro.js +1 -1
  21. package/dist/cjs/src/abstract/bitrue.js +1 -1
  22. package/dist/cjs/src/abstract/bitso.js +1 -1
  23. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  24. package/dist/cjs/src/abstract/bitteam.js +1 -1
  25. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  26. package/dist/cjs/src/abstract/bl3p.js +1 -1
  27. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  28. package/dist/cjs/src/abstract/blofin.js +1 -1
  29. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  30. package/dist/cjs/src/abstract/btcbox.js +1 -1
  31. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  32. package/dist/cjs/src/abstract/btcturk.js +1 -1
  33. package/dist/cjs/src/abstract/bybit.js +1 -1
  34. package/dist/cjs/src/abstract/cex.js +1 -1
  35. package/dist/cjs/src/abstract/coinbase.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  37. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  38. package/dist/cjs/src/abstract/coincatch.js +1 -1
  39. package/dist/cjs/src/abstract/coincheck.js +1 -1
  40. package/dist/cjs/src/abstract/coinex.js +1 -1
  41. package/dist/cjs/src/abstract/coinlist.js +1 -1
  42. package/dist/cjs/src/abstract/coinmate.js +1 -1
  43. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  44. package/dist/cjs/src/abstract/coinone.js +1 -1
  45. package/dist/cjs/src/abstract/coinsph.js +1 -1
  46. package/dist/cjs/src/abstract/coinspot.js +1 -1
  47. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  48. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  49. package/dist/cjs/src/abstract/defx.js +1 -1
  50. package/dist/cjs/src/abstract/delta.js +1 -1
  51. package/dist/cjs/src/abstract/deribit.js +1 -1
  52. package/dist/cjs/src/abstract/derive.js +1 -1
  53. package/dist/cjs/src/abstract/digifinex.js +1 -1
  54. package/dist/cjs/src/abstract/ellipx.js +1 -1
  55. package/dist/cjs/src/abstract/exmo.js +1 -1
  56. package/dist/cjs/src/abstract/gate.js +1 -1
  57. package/dist/cjs/src/abstract/gemini.js +1 -1
  58. package/dist/cjs/src/abstract/hashkey.js +1 -1
  59. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  60. package/dist/cjs/src/abstract/hollaex.js +1 -1
  61. package/dist/cjs/src/abstract/htx.js +1 -1
  62. package/dist/cjs/src/abstract/huobijp.js +1 -1
  63. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  64. package/dist/cjs/src/abstract/idex.js +1 -1
  65. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  66. package/dist/cjs/src/abstract/indodax.js +1 -1
  67. package/dist/cjs/src/abstract/kraken.js +1 -1
  68. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  69. package/dist/cjs/src/abstract/kucoin.js +1 -1
  70. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  71. package/dist/cjs/src/abstract/kuna.js +1 -1
  72. package/dist/cjs/src/abstract/latoken.js +1 -1
  73. package/dist/cjs/src/abstract/lbank.js +1 -1
  74. package/dist/cjs/src/abstract/luno.js +1 -1
  75. package/dist/cjs/src/abstract/mercado.js +1 -1
  76. package/dist/cjs/src/abstract/mexc.js +1 -1
  77. package/dist/cjs/src/abstract/ndax.js +1 -1
  78. package/dist/cjs/src/abstract/novadax.js +1 -1
  79. package/dist/cjs/src/abstract/oceanex.js +1 -1
  80. package/dist/cjs/src/abstract/okcoin.js +1 -1
  81. package/dist/cjs/src/abstract/okx.js +1 -1
  82. package/dist/cjs/src/abstract/onetrading.js +1 -1
  83. package/dist/cjs/src/abstract/oxfun.js +1 -1
  84. package/dist/cjs/src/abstract/p2b.js +1 -1
  85. package/dist/cjs/src/abstract/paradex.js +1 -1
  86. package/dist/cjs/src/abstract/paymium.js +1 -1
  87. package/dist/cjs/src/abstract/phemex.js +1 -1
  88. package/dist/cjs/src/abstract/poloniex.js +1 -1
  89. package/dist/cjs/src/abstract/probit.js +1 -1
  90. package/dist/cjs/src/abstract/timex.js +1 -1
  91. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  92. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  93. package/dist/cjs/src/abstract/upbit.js +1 -1
  94. package/dist/cjs/src/abstract/vertex.js +1 -1
  95. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  96. package/dist/cjs/src/abstract/whitebit.js +1 -1
  97. package/dist/cjs/src/abstract/woo.js +1 -1
  98. package/dist/cjs/src/abstract/woofipro.js +1 -1
  99. package/dist/cjs/src/abstract/xt.js +1 -1
  100. package/dist/cjs/src/abstract/yobit.js +1 -1
  101. package/dist/cjs/src/abstract/zaif.js +1 -1
  102. package/dist/cjs/src/abstract/zonda.js +1 -1
  103. package/dist/cjs/src/ace.js +1 -1
  104. package/dist/cjs/src/alpaca.js +1 -1
  105. package/dist/cjs/src/apex.js +1949 -0
  106. package/dist/cjs/src/ascendex.js +1 -1
  107. package/dist/cjs/src/base/Exchange.js +42 -2
  108. package/dist/cjs/src/base/Precise.js +6 -0
  109. package/dist/cjs/src/base/errors.js +6 -0
  110. package/dist/cjs/src/base/functions/crypto.js +1 -1
  111. package/dist/cjs/src/base/functions/encode.js +1 -1
  112. package/dist/cjs/src/base/functions/misc.js +1 -0
  113. package/dist/cjs/src/base/functions/number.js +6 -0
  114. package/dist/cjs/src/base/functions/platform.js +6 -0
  115. package/dist/cjs/src/base/functions/rsa.js +1 -0
  116. package/dist/cjs/src/base/functions/string.js +6 -0
  117. package/dist/cjs/src/base/functions/throttle.js +1 -1
  118. package/dist/cjs/src/base/functions/time.js +6 -0
  119. package/dist/cjs/src/base/functions/totp.js +1 -0
  120. package/dist/cjs/src/base/functions/type.js +6 -0
  121. package/dist/cjs/src/base/functions.js +1 -1
  122. package/dist/cjs/src/base/ws/Cache.js +6 -0
  123. package/dist/cjs/src/base/ws/Client.js +1 -0
  124. package/dist/cjs/src/base/ws/Future.js +1 -1
  125. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  126. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  127. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  128. package/dist/cjs/src/bequant.js +1 -1
  129. package/dist/cjs/src/bigone.js +1 -1
  130. package/dist/cjs/src/binance.js +2 -2
  131. package/dist/cjs/src/binancecoinm.js +1 -1
  132. package/dist/cjs/src/binanceus.js +1 -1
  133. package/dist/cjs/src/binanceusdm.js +1 -1
  134. package/dist/cjs/src/bingx.js +1 -1
  135. package/dist/cjs/src/bit2c.js +1 -1
  136. package/dist/cjs/src/bitbank.js +1 -1
  137. package/dist/cjs/src/bitbns.js +1 -1
  138. package/dist/cjs/src/bitfinex.js +1 -1
  139. package/dist/cjs/src/bitflyer.js +1 -1
  140. package/dist/cjs/src/bitget.js +139 -71
  141. package/dist/cjs/src/bithumb.js +1 -1
  142. package/dist/cjs/src/bitmart.js +1 -1
  143. package/dist/cjs/src/bitmex.js +5 -5
  144. package/dist/cjs/src/bitopro.js +1 -1
  145. package/dist/cjs/src/bitrue.js +1 -1
  146. package/dist/cjs/src/bitso.js +1 -1
  147. package/dist/cjs/src/bitstamp.js +1 -1
  148. package/dist/cjs/src/bitteam.js +1 -1
  149. package/dist/cjs/src/bl3p.js +1 -1
  150. package/dist/cjs/src/blockchaincom.js +1 -1
  151. package/dist/cjs/src/blofin.js +1 -1
  152. package/dist/cjs/src/btcalpha.js +1 -1
  153. package/dist/cjs/src/btcbox.js +1 -1
  154. package/dist/cjs/src/btcmarkets.js +1 -1
  155. package/dist/cjs/src/btcturk.js +1 -1
  156. package/dist/cjs/src/bybit.js +1 -1
  157. package/dist/cjs/src/cex.js +2 -2
  158. package/dist/cjs/src/coinbase.js +32 -3
  159. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  160. package/dist/cjs/src/coincatch.js +69 -1
  161. package/dist/cjs/src/coincheck.js +1 -1
  162. package/dist/cjs/src/coinex.js +1 -1
  163. package/dist/cjs/src/coinlist.js +1 -0
  164. package/dist/cjs/src/coinmate.js +1 -1
  165. package/dist/cjs/src/coinmetro.js +1 -1
  166. package/dist/cjs/src/coinone.js +1 -1
  167. package/dist/cjs/src/coinsph.js +1 -0
  168. package/dist/cjs/src/coinspot.js +1 -1
  169. package/dist/cjs/src/cryptocom.js +1 -1
  170. package/dist/cjs/src/cryptomus.js +1 -1
  171. package/dist/cjs/src/defx.js +1 -1
  172. package/dist/cjs/src/delta.js +1 -1
  173. package/dist/cjs/src/deribit.js +1 -1
  174. package/dist/cjs/src/derive.js +1 -1
  175. package/dist/cjs/src/digifinex.js +1 -1
  176. package/dist/cjs/src/ellipx.js +1 -1
  177. package/dist/cjs/src/exmo.js +1 -1
  178. package/dist/cjs/src/fmfwio.js +1 -1
  179. package/dist/cjs/src/gate.js +1 -1
  180. package/dist/cjs/src/gateio.js +1 -1
  181. package/dist/cjs/src/gemini.js +1 -1
  182. package/dist/cjs/src/hashkey.js +1 -1
  183. package/dist/cjs/src/hitbtc.js +4 -0
  184. package/dist/cjs/src/hollaex.js +1 -1
  185. package/dist/cjs/src/htx.js +1 -1
  186. package/dist/cjs/src/huobi.js +1 -1
  187. package/dist/cjs/src/huobijp.js +1 -1
  188. package/dist/cjs/src/hyperliquid.js +14 -5
  189. package/dist/cjs/src/idex.js +1 -1
  190. package/dist/cjs/src/independentreserve.js +1 -1
  191. package/dist/cjs/src/indodax.js +1 -1
  192. package/dist/cjs/src/kraken.js +1 -1
  193. package/dist/cjs/src/krakenfutures.js +1 -1
  194. package/dist/cjs/src/kucoin.js +1 -1
  195. package/dist/cjs/src/kucoinfutures.js +1 -1
  196. package/dist/cjs/src/kuna.js +1 -1
  197. package/dist/cjs/src/latoken.js +1 -1
  198. package/dist/cjs/src/lbank.js +1 -1
  199. package/dist/cjs/src/luno.js +1 -1
  200. package/dist/cjs/src/mercado.js +1 -1
  201. package/dist/cjs/src/mexc.js +51 -58
  202. package/dist/cjs/src/myokx.js +1 -1
  203. package/dist/cjs/src/ndax.js +1 -1
  204. package/dist/cjs/src/novadax.js +1 -1
  205. package/dist/cjs/src/oceanex.js +1 -1
  206. package/dist/cjs/src/okcoin.js +1 -1
  207. package/dist/cjs/src/okx.js +1 -1
  208. package/dist/cjs/src/onetrading.js +1 -1
  209. package/dist/cjs/src/oxfun.js +1 -1
  210. package/dist/cjs/src/p2b.js +1 -1
  211. package/dist/cjs/src/paradex.js +1 -1
  212. package/dist/cjs/src/paymium.js +1 -1
  213. package/dist/cjs/src/phemex.js +2 -1
  214. package/dist/cjs/src/poloniex.js +2 -2
  215. package/dist/cjs/src/pro/alpaca.js +1 -1
  216. package/dist/cjs/src/pro/apex.js +1043 -0
  217. package/dist/cjs/src/pro/ascendex.js +1 -1
  218. package/dist/cjs/src/pro/bequant.js +1 -1
  219. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  220. package/dist/cjs/src/pro/binanceus.js +1 -1
  221. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  222. package/dist/cjs/src/pro/bingx.js +1 -1
  223. package/dist/cjs/src/pro/bitfinex.js +1 -1
  224. package/dist/cjs/src/pro/bitget.js +1 -1
  225. package/dist/cjs/src/pro/bithumb.js +1 -1
  226. package/dist/cjs/src/pro/bitmart.js +1 -1
  227. package/dist/cjs/src/pro/bitmex.js +1 -1
  228. package/dist/cjs/src/pro/bitrue.js +1 -1
  229. package/dist/cjs/src/pro/bitstamp.js +1 -1
  230. package/dist/cjs/src/pro/bitvavo.js +1 -1
  231. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  232. package/dist/cjs/src/pro/blofin.js +1 -1
  233. package/dist/cjs/src/pro/bybit.js +1 -1
  234. package/dist/cjs/src/pro/cex.js +1 -1
  235. package/dist/cjs/src/pro/coinbase.js +5 -9
  236. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  237. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  238. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  239. package/dist/cjs/src/pro/coincatch.js +1 -1
  240. package/dist/cjs/src/pro/coincheck.js +1 -1
  241. package/dist/cjs/src/pro/coinex.js +1 -1
  242. package/dist/cjs/src/pro/coinone.js +1 -1
  243. package/dist/cjs/src/pro/cryptocom.js +1 -1
  244. package/dist/cjs/src/pro/defx.js +1 -1
  245. package/dist/cjs/src/pro/deribit.js +1 -1
  246. package/dist/cjs/src/pro/exmo.js +1 -1
  247. package/dist/cjs/src/pro/gate.js +28 -3
  248. package/dist/cjs/src/pro/gateio.js +1 -1
  249. package/dist/cjs/src/pro/gemini.js +1 -1
  250. package/dist/cjs/src/pro/hashkey.js +1 -1
  251. package/dist/cjs/src/pro/hitbtc.js +1 -1
  252. package/dist/cjs/src/pro/hollaex.js +3 -3
  253. package/dist/cjs/src/pro/htx.js +1 -1
  254. package/dist/cjs/src/pro/huobi.js +1 -1
  255. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  256. package/dist/cjs/src/pro/idex.js +1 -1
  257. package/dist/cjs/src/pro/independentreserve.js +1 -1
  258. package/dist/cjs/src/pro/kraken.js +1 -1
  259. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  260. package/dist/cjs/src/pro/kucoin.js +1 -1
  261. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  262. package/dist/cjs/src/pro/lbank.js +1 -0
  263. package/dist/cjs/src/pro/luno.js +1 -1
  264. package/dist/cjs/src/pro/mexc.js +1 -1
  265. package/dist/cjs/src/pro/myokx.js +1 -1
  266. package/dist/cjs/src/pro/ndax.js +1 -1
  267. package/dist/cjs/src/pro/okcoin.js +1 -1
  268. package/dist/cjs/src/pro/okx.js +1 -1
  269. package/dist/cjs/src/pro/onetrading.js +1 -1
  270. package/dist/cjs/src/pro/oxfun.js +1 -1
  271. package/dist/cjs/src/pro/p2b.js +3 -3
  272. package/dist/cjs/src/pro/paradex.js +1 -1
  273. package/dist/cjs/src/pro/phemex.js +1 -1
  274. package/dist/cjs/src/pro/poloniex.js +1 -1
  275. package/dist/cjs/src/pro/probit.js +1 -1
  276. package/dist/cjs/src/pro/tradeogre.js +283 -0
  277. package/dist/cjs/src/pro/upbit.js +1 -1
  278. package/dist/cjs/src/pro/whitebit.js +1 -1
  279. package/dist/cjs/src/pro/xt.js +1 -1
  280. package/dist/cjs/src/probit.js +2 -1
  281. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  282. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  283. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  284. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  285. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  286. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  287. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  288. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  289. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  290. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  291. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  292. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  293. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  294. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  295. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  296. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  297. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  298. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  299. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  300. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  301. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  302. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  303. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  304. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  305. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  306. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  307. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  308. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  309. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  310. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  321. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  323. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  324. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  327. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  328. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  332. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  333. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  335. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  336. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  337. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  338. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  339. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  340. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  341. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  342. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  343. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  344. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  345. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  346. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  347. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  348. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  349. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  350. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  351. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  352. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  353. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  354. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  355. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  356. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  357. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  358. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  359. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  360. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  361. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  362. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  363. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  364. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  365. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  366. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  367. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  368. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  369. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  370. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  371. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  372. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  373. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  374. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  375. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  377. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  378. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  390. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  391. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  392. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  393. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  394. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  395. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  396. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  397. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  398. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +2645 -0
  399. package/dist/cjs/src/timex.js +1 -0
  400. package/dist/cjs/src/tokocrypto.js +1 -1
  401. package/dist/cjs/src/tradeogre.js +3 -2
  402. package/dist/cjs/src/upbit.js +236 -48
  403. package/dist/cjs/src/vertex.js +1 -1
  404. package/dist/cjs/src/wavesexchange.js +1 -1
  405. package/dist/cjs/src/whitebit.js +2 -1
  406. package/dist/cjs/src/woo.js +4 -2
  407. package/dist/cjs/src/woofipro.js +1 -1
  408. package/dist/cjs/src/xt.js +10 -1
  409. package/dist/cjs/src/yobit.js +1 -1
  410. package/dist/cjs/src/zaif.js +1 -1
  411. package/dist/cjs/src/zonda.js +1 -1
  412. package/js/ccxt.d.ts +11 -5
  413. package/js/ccxt.js +14 -4
  414. package/js/src/abstract/alpaca.js +6 -0
  415. package/js/src/abstract/apex.d.ts +34 -0
  416. package/js/src/abstract/apex.js +11 -0
  417. package/js/src/abstract/ascendex.js +6 -0
  418. package/js/src/abstract/bequant.js +6 -0
  419. package/js/src/abstract/bigone.js +6 -0
  420. package/js/src/abstract/binance.js +6 -0
  421. package/js/src/abstract/binancecoinm.js +6 -0
  422. package/js/src/abstract/binanceus.js +6 -0
  423. package/js/src/abstract/binanceusdm.js +6 -0
  424. package/js/src/abstract/bingx.js +6 -0
  425. package/js/src/abstract/bit2c.js +6 -0
  426. package/js/src/abstract/bitbank.js +6 -0
  427. package/js/src/abstract/bitbns.js +6 -0
  428. package/js/src/abstract/bitfinex.js +6 -0
  429. package/js/src/abstract/bitflyer.js +6 -0
  430. package/js/src/abstract/bitget.js +6 -0
  431. package/js/src/abstract/bithumb.js +6 -0
  432. package/js/src/abstract/bitmart.js +6 -0
  433. package/js/src/abstract/bitmex.js +6 -0
  434. package/js/src/abstract/bitopro.js +6 -0
  435. package/js/src/abstract/bitrue.js +6 -0
  436. package/js/src/abstract/bitso.js +6 -0
  437. package/js/src/abstract/bitstamp.js +6 -0
  438. package/js/src/abstract/bitteam.js +6 -0
  439. package/js/src/abstract/bitvavo.js +6 -0
  440. package/js/src/abstract/bl3p.js +6 -0
  441. package/js/src/abstract/blockchaincom.js +6 -0
  442. package/js/src/abstract/blofin.js +6 -0
  443. package/js/src/abstract/btcalpha.js +6 -0
  444. package/js/src/abstract/btcbox.js +6 -0
  445. package/js/src/abstract/btcmarkets.js +6 -0
  446. package/js/src/abstract/btcturk.js +6 -0
  447. package/js/src/abstract/bybit.js +6 -0
  448. package/js/src/abstract/cex.js +6 -0
  449. package/js/src/abstract/coinbase.js +6 -0
  450. package/js/src/abstract/coinbaseadvanced.js +6 -0
  451. package/js/src/abstract/coinbaseexchange.js +6 -0
  452. package/js/src/abstract/coinbaseinternational.js +6 -0
  453. package/js/src/abstract/coincatch.js +6 -0
  454. package/js/src/abstract/coincheck.js +6 -0
  455. package/js/src/abstract/coinex.js +6 -0
  456. package/js/src/abstract/coinlist.js +6 -0
  457. package/js/src/abstract/coinmate.js +6 -0
  458. package/js/src/abstract/coinmetro.js +6 -0
  459. package/js/src/abstract/coinone.js +6 -0
  460. package/js/src/abstract/coinsph.js +6 -0
  461. package/js/src/abstract/coinspot.js +6 -0
  462. package/js/src/abstract/cryptocom.js +6 -0
  463. package/js/src/abstract/cryptomus.js +6 -0
  464. package/js/src/abstract/defx.js +6 -0
  465. package/js/src/abstract/delta.js +6 -0
  466. package/js/src/abstract/deribit.js +6 -0
  467. package/js/src/abstract/derive.js +6 -0
  468. package/js/src/abstract/digifinex.js +6 -0
  469. package/js/src/abstract/ellipx.js +6 -0
  470. package/js/src/abstract/exmo.js +6 -0
  471. package/js/src/abstract/fmfwio.js +6 -0
  472. package/js/src/abstract/gate.js +6 -0
  473. package/js/src/abstract/gateio.js +6 -0
  474. package/js/src/abstract/gemini.js +6 -0
  475. package/js/src/abstract/hashkey.js +6 -0
  476. package/js/src/abstract/hitbtc.js +6 -0
  477. package/js/src/abstract/hollaex.js +6 -0
  478. package/js/src/abstract/htx.js +6 -0
  479. package/js/src/abstract/huobi.js +6 -0
  480. package/js/src/abstract/huobijp.js +6 -0
  481. package/js/src/abstract/hyperliquid.js +6 -0
  482. package/js/src/abstract/idex.js +6 -0
  483. package/js/src/abstract/independentreserve.js +6 -0
  484. package/js/src/abstract/indodax.js +6 -0
  485. package/js/src/abstract/kraken.js +6 -0
  486. package/js/src/abstract/krakenfutures.js +6 -0
  487. package/js/src/abstract/kucoin.js +6 -0
  488. package/js/src/abstract/kucoinfutures.js +6 -0
  489. package/js/src/abstract/kuna.js +6 -0
  490. package/js/src/abstract/latoken.js +6 -0
  491. package/js/src/abstract/lbank.js +6 -0
  492. package/js/src/abstract/luno.js +6 -0
  493. package/js/src/abstract/mercado.js +6 -0
  494. package/js/src/abstract/mexc.js +6 -0
  495. package/js/src/abstract/myokx.js +6 -0
  496. package/js/src/abstract/ndax.js +6 -0
  497. package/js/src/abstract/novadax.js +6 -0
  498. package/js/src/abstract/oceanex.js +6 -0
  499. package/js/src/abstract/okcoin.js +6 -0
  500. package/js/src/abstract/okx.js +6 -0
  501. package/js/src/abstract/onetrading.js +6 -0
  502. package/js/src/abstract/oxfun.js +6 -0
  503. package/js/src/abstract/p2b.js +6 -0
  504. package/js/src/abstract/paradex.js +6 -0
  505. package/js/src/abstract/paymium.js +6 -0
  506. package/js/src/abstract/phemex.js +6 -0
  507. package/js/src/abstract/poloniex.js +6 -0
  508. package/js/src/abstract/probit.js +6 -0
  509. package/js/src/abstract/timex.js +6 -0
  510. package/js/src/abstract/tokocrypto.js +6 -0
  511. package/js/src/abstract/tradeogre.js +6 -0
  512. package/js/src/abstract/upbit.js +6 -0
  513. package/js/src/abstract/vertex.js +6 -0
  514. package/js/src/abstract/wavesexchange.js +6 -0
  515. package/js/src/abstract/whitebit.js +6 -0
  516. package/js/src/abstract/woo.js +6 -0
  517. package/js/src/abstract/woofipro.js +6 -0
  518. package/js/src/abstract/xt.js +6 -0
  519. package/js/src/abstract/yobit.js +6 -0
  520. package/js/src/abstract/zaif.js +6 -0
  521. package/js/src/abstract/zonda.js +6 -0
  522. package/js/src/alpaca.js +6 -0
  523. package/js/src/apex.d.ts +333 -0
  524. package/js/src/apex.js +1951 -0
  525. package/js/src/ascendex.d.ts +3 -3
  526. package/js/src/ascendex.js +6 -0
  527. package/js/src/base/Exchange.d.ts +2 -0
  528. package/js/src/base/Exchange.js +48 -1
  529. package/js/src/base/Precise.js +6 -0
  530. package/js/src/base/errorHierarchy.js +6 -0
  531. package/js/src/base/errors.js +6 -0
  532. package/js/src/base/functions/crypto.js +6 -0
  533. package/js/src/base/functions/encode.js +6 -0
  534. package/js/src/base/functions/generic.js +6 -0
  535. package/js/src/base/functions/misc.js +6 -0
  536. package/js/src/base/functions/number.js +6 -0
  537. package/js/src/base/functions/platform.js +6 -0
  538. package/js/src/base/functions/rsa.js +6 -0
  539. package/js/src/base/functions/string.js +6 -0
  540. package/js/src/base/functions/throttle.js +6 -0
  541. package/js/src/base/functions/time.js +6 -0
  542. package/js/src/base/functions/totp.js +6 -0
  543. package/js/src/base/functions/type.js +6 -0
  544. package/js/src/base/functions.js +6 -0
  545. package/js/src/base/types.js +6 -0
  546. package/js/src/base/ws/Cache.js +6 -0
  547. package/js/src/base/ws/Client.js +6 -0
  548. package/js/src/base/ws/Future.js +6 -0
  549. package/js/src/base/ws/OrderBook.js +6 -0
  550. package/js/src/base/ws/OrderBookSide.js +6 -0
  551. package/js/src/base/ws/WsClient.js +6 -0
  552. package/js/src/base/ws/functions.js +6 -0
  553. package/js/src/bequant.js +6 -0
  554. package/js/src/bigone.js +6 -0
  555. package/js/src/binance.d.ts +7 -7
  556. package/js/src/binance.js +7 -1
  557. package/js/src/binancecoinm.js +6 -0
  558. package/js/src/binanceus.js +6 -0
  559. package/js/src/binanceusdm.js +6 -0
  560. package/js/src/bingx.js +6 -0
  561. package/js/src/bit2c.js +6 -0
  562. package/js/src/bitbank.js +6 -0
  563. package/js/src/bitbns.js +6 -0
  564. package/js/src/bitfinex.d.ts +3 -3
  565. package/js/src/bitfinex.js +6 -0
  566. package/js/src/bitflyer.d.ts +2 -2
  567. package/js/src/bitflyer.js +6 -0
  568. package/js/src/bitget.d.ts +2 -0
  569. package/js/src/bitget.js +144 -70
  570. package/js/src/bithumb.js +6 -0
  571. package/js/src/bitmart.d.ts +4 -4
  572. package/js/src/bitmart.js +6 -0
  573. package/js/src/bitmex.d.ts +3 -3
  574. package/js/src/bitmex.js +10 -4
  575. package/js/src/bitopro.js +6 -0
  576. package/js/src/bitrue.js +6 -0
  577. package/js/src/bitso.js +6 -0
  578. package/js/src/bitstamp.js +6 -0
  579. package/js/src/bitteam.js +6 -0
  580. package/js/src/bitvavo.js +6 -0
  581. package/js/src/bl3p.js +6 -0
  582. package/js/src/blockchaincom.js +6 -0
  583. package/js/src/blofin.js +6 -0
  584. package/js/src/btcalpha.js +6 -0
  585. package/js/src/btcbox.js +6 -0
  586. package/js/src/btcmarkets.js +6 -0
  587. package/js/src/btcturk.js +6 -0
  588. package/js/src/bybit.js +6 -0
  589. package/js/src/cex.js +7 -1
  590. package/js/src/coinbase.d.ts +6 -4
  591. package/js/src/coinbase.js +38 -3
  592. package/js/src/coinbaseadvanced.js +6 -0
  593. package/js/src/coinbaseexchange.d.ts +1 -1
  594. package/js/src/coinbaseexchange.js +6 -0
  595. package/js/src/coinbaseinternational.js +6 -0
  596. package/js/src/coincatch.d.ts +11 -0
  597. package/js/src/coincatch.js +74 -0
  598. package/js/src/coincheck.js +6 -0
  599. package/js/src/coinex.js +6 -0
  600. package/js/src/coinlist.js +6 -0
  601. package/js/src/coinmate.js +6 -0
  602. package/js/src/coinmetro.js +6 -0
  603. package/js/src/coinone.js +6 -0
  604. package/js/src/coinsph.js +6 -0
  605. package/js/src/coinspot.js +6 -0
  606. package/js/src/cryptocom.d.ts +4 -4
  607. package/js/src/cryptocom.js +6 -0
  608. package/js/src/cryptomus.js +6 -0
  609. package/js/src/defx.js +6 -0
  610. package/js/src/delta.js +6 -0
  611. package/js/src/deribit.d.ts +4 -4
  612. package/js/src/deribit.js +6 -0
  613. package/js/src/derive.d.ts +3 -3
  614. package/js/src/derive.js +6 -0
  615. package/js/src/digifinex.d.ts +4 -4
  616. package/js/src/digifinex.js +6 -0
  617. package/js/src/ellipx.js +6 -0
  618. package/js/src/exmo.js +6 -0
  619. package/js/src/fmfwio.js +6 -0
  620. package/js/src/gate.js +6 -0
  621. package/js/src/gateio.js +6 -0
  622. package/js/src/gemini.js +6 -0
  623. package/js/src/hashkey.js +6 -0
  624. package/js/src/hitbtc.js +9 -0
  625. package/js/src/hollaex.js +6 -0
  626. package/js/src/htx.d.ts +4 -4
  627. package/js/src/htx.js +6 -0
  628. package/js/src/huobi.js +6 -0
  629. package/js/src/huobijp.js +6 -0
  630. package/js/src/hyperliquid.d.ts +1 -0
  631. package/js/src/hyperliquid.js +19 -4
  632. package/js/src/idex.js +6 -0
  633. package/js/src/independentreserve.js +6 -0
  634. package/js/src/indodax.js +6 -0
  635. package/js/src/kraken.d.ts +3 -3
  636. package/js/src/kraken.js +6 -0
  637. package/js/src/krakenfutures.d.ts +2 -2
  638. package/js/src/krakenfutures.js +6 -0
  639. package/js/src/kucoin.js +6 -0
  640. package/js/src/kucoinfutures.d.ts +5 -5
  641. package/js/src/kucoinfutures.js +6 -0
  642. package/js/src/kuna.js +6 -0
  643. package/js/src/latoken.js +6 -0
  644. package/js/src/lbank.js +6 -0
  645. package/js/src/luno.js +6 -0
  646. package/js/src/mercado.js +6 -0
  647. package/js/src/mexc.d.ts +1 -0
  648. package/js/src/mexc.js +56 -57
  649. package/js/src/myokx.js +6 -0
  650. package/js/src/ndax.js +6 -0
  651. package/js/src/novadax.js +6 -0
  652. package/js/src/oceanex.js +6 -0
  653. package/js/src/okcoin.js +6 -0
  654. package/js/src/okx.js +6 -0
  655. package/js/src/onetrading.js +6 -0
  656. package/js/src/oxfun.d.ts +3 -3
  657. package/js/src/oxfun.js +6 -0
  658. package/js/src/p2b.js +6 -0
  659. package/js/src/paradex.js +6 -0
  660. package/js/src/paymium.js +6 -0
  661. package/js/src/phemex.d.ts +3 -3
  662. package/js/src/phemex.js +8 -1
  663. package/js/src/poloniex.d.ts +3 -3
  664. package/js/src/poloniex.js +7 -1
  665. package/js/src/pro/alpaca.js +6 -0
  666. package/js/src/pro/apex.d.ts +160 -0
  667. package/js/src/pro/apex.js +1044 -0
  668. package/js/src/pro/ascendex.js +6 -0
  669. package/js/src/pro/bequant.js +6 -0
  670. package/js/src/pro/binance.js +6 -0
  671. package/js/src/pro/binancecoinm.js +6 -0
  672. package/js/src/pro/binanceus.js +6 -0
  673. package/js/src/pro/binanceusdm.js +6 -0
  674. package/js/src/pro/bingx.js +6 -0
  675. package/js/src/pro/bitfinex.js +6 -0
  676. package/js/src/pro/bitget.js +6 -0
  677. package/js/src/pro/bithumb.js +6 -0
  678. package/js/src/pro/bitmart.js +6 -0
  679. package/js/src/pro/bitmex.js +6 -0
  680. package/js/src/pro/bitopro.js +6 -0
  681. package/js/src/pro/bitrue.js +6 -0
  682. package/js/src/pro/bitstamp.js +6 -0
  683. package/js/src/pro/bitvavo.js +6 -0
  684. package/js/src/pro/blockchaincom.js +6 -0
  685. package/js/src/pro/blofin.js +6 -0
  686. package/js/src/pro/bybit.js +6 -0
  687. package/js/src/pro/cex.js +6 -0
  688. package/js/src/pro/coinbase.js +10 -8
  689. package/js/src/pro/coinbaseadvanced.js +6 -0
  690. package/js/src/pro/coinbaseexchange.js +6 -0
  691. package/js/src/pro/coinbaseinternational.js +6 -0
  692. package/js/src/pro/coincatch.js +6 -0
  693. package/js/src/pro/coincheck.js +6 -0
  694. package/js/src/pro/coinex.js +6 -0
  695. package/js/src/pro/coinone.js +6 -0
  696. package/js/src/pro/cryptocom.js +6 -0
  697. package/js/src/pro/defx.js +6 -0
  698. package/js/src/pro/deribit.js +6 -0
  699. package/js/src/pro/derive.js +6 -0
  700. package/js/src/pro/exmo.js +6 -0
  701. package/js/src/pro/gate.js +33 -2
  702. package/js/src/pro/gateio.js +6 -0
  703. package/js/src/pro/gemini.js +6 -0
  704. package/js/src/pro/hashkey.js +6 -0
  705. package/js/src/pro/hitbtc.js +6 -0
  706. package/js/src/pro/hollaex.js +8 -2
  707. package/js/src/pro/htx.js +6 -0
  708. package/js/src/pro/huobi.js +6 -0
  709. package/js/src/pro/huobijp.js +6 -0
  710. package/js/src/pro/hyperliquid.js +6 -0
  711. package/js/src/pro/idex.js +6 -0
  712. package/js/src/pro/independentreserve.js +6 -0
  713. package/js/src/pro/kraken.js +6 -0
  714. package/js/src/pro/krakenfutures.js +6 -0
  715. package/js/src/pro/kucoin.js +6 -0
  716. package/js/src/pro/kucoinfutures.js +6 -0
  717. package/js/src/pro/lbank.js +6 -0
  718. package/js/src/pro/luno.js +6 -0
  719. package/js/src/pro/mexc.js +6 -0
  720. package/js/src/pro/myokx.js +6 -0
  721. package/js/src/pro/ndax.js +6 -0
  722. package/js/src/pro/okcoin.js +6 -0
  723. package/js/src/pro/okx.js +6 -0
  724. package/js/src/pro/onetrading.js +6 -0
  725. package/js/src/pro/oxfun.js +6 -0
  726. package/js/src/pro/p2b.js +8 -2
  727. package/js/src/pro/paradex.js +6 -0
  728. package/js/src/pro/phemex.js +6 -0
  729. package/js/src/pro/poloniex.js +6 -0
  730. package/js/src/pro/probit.js +6 -0
  731. package/js/src/pro/tradeogre.d.ts +49 -0
  732. package/js/src/pro/tradeogre.js +284 -0
  733. package/js/src/pro/upbit.js +6 -0
  734. package/js/src/pro/vertex.js +6 -0
  735. package/js/src/pro/whitebit.js +6 -0
  736. package/js/src/pro/woo.js +6 -0
  737. package/js/src/pro/woofipro.js +6 -0
  738. package/js/src/pro/xt.js +6 -0
  739. package/js/src/probit.js +7 -0
  740. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  741. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  742. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  743. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  744. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  745. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  746. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  747. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  748. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  749. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  750. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  751. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  752. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  753. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  754. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  755. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  756. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  757. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  758. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  759. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  760. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  761. package/js/src/static_dependencies/ethers/index.js +6 -0
  762. package/js/src/static_dependencies/ethers/interface.js +6 -0
  763. package/js/src/static_dependencies/ethers/typed.js +6 -0
  764. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  765. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  766. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  767. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  768. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  769. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  770. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  771. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  772. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  773. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  774. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  775. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  776. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  777. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  778. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  779. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  780. package/js/src/static_dependencies/fflake/browser.js +6 -0
  781. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  782. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  783. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  784. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  785. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  786. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  787. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  788. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  789. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  790. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  791. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  792. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  793. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  794. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  795. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  796. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  797. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  798. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  799. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  800. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  801. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  802. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  803. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  804. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  805. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  806. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  807. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  808. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  809. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  810. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  811. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  812. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  813. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  814. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  815. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  816. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  817. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  818. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  819. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  820. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  821. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  822. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  823. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  824. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  825. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  826. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  827. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  828. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  829. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  830. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  831. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  832. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  833. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  834. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  835. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  836. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  837. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  838. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  839. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  840. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  841. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  842. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  843. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  844. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  845. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  846. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  847. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  848. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  849. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  850. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  851. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  852. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  853. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  854. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  855. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  856. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  857. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  858. package/js/src/static_dependencies/qs/formats.cjs +6 -0
  859. package/js/src/static_dependencies/qs/index.cjs +6 -0
  860. package/js/src/static_dependencies/qs/parse.cjs +6 -0
  861. package/js/src/static_dependencies/qs/stringify.cjs +6 -0
  862. package/js/src/static_dependencies/qs/utils.cjs +6 -0
  863. package/js/src/static_dependencies/scure-base/index.js +6 -0
  864. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  865. package/js/src/static_dependencies/starknet/constants.js +6 -0
  866. package/js/src/static_dependencies/starknet/index.js +6 -0
  867. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  868. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  869. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  870. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  871. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  872. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  873. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  874. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  875. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  876. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  877. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  878. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  879. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  880. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  881. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  882. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  883. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  884. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  885. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  886. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  887. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  888. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  889. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  890. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  891. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  892. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  893. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  894. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  895. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  896. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  897. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  898. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  899. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  900. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  901. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  902. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  903. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  904. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  905. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  906. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  907. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  908. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  909. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  910. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  911. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  912. package/js/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  913. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  914. package/js/src/timex.js +6 -0
  915. package/js/src/tokocrypto.js +6 -0
  916. package/js/src/tradeogre.js +8 -1
  917. package/js/src/upbit.d.ts +34 -4
  918. package/js/src/upbit.js +241 -47
  919. package/js/src/vertex.d.ts +3 -3
  920. package/js/src/vertex.js +6 -0
  921. package/js/src/wavesexchange.js +6 -0
  922. package/js/src/whitebit.js +7 -0
  923. package/js/src/woo.d.ts +4 -4
  924. package/js/src/woo.js +9 -1
  925. package/js/src/woofipro.d.ts +4 -4
  926. package/js/src/woofipro.js +6 -0
  927. package/js/src/xt.d.ts +4 -4
  928. package/js/src/xt.js +15 -0
  929. package/js/src/yobit.js +6 -0
  930. package/js/src/zaif.js +6 -0
  931. package/js/src/zonda.js +6 -0
  932. package/package.json +2 -2
  933. package/js/src/abstract/ace.d.ts +0 -18
  934. package/js/src/abstract/ace.js +0 -5
  935. package/js/src/ace.d.ts +0 -158
  936. package/js/src/ace.js +0 -1175
@@ -0,0 +1,1043 @@
1
+ 'use strict';
2
+
3
+ var apex$1 = require('../apex.js');
4
+ var Cache = require('../base/ws/Cache.js');
5
+ var errors = require('../base/errors.js');
6
+ var sha256 = require('../static_dependencies/noble-hashes/sha256.js');
7
+
8
+ // ----------------------------------------------------------------------------
9
+ // ---------------------------------------------------------------------------
10
+ class apex extends apex$1 {
11
+ describe() {
12
+ return this.deepExtend(super.describe(), {
13
+ 'has': {
14
+ 'ws': true,
15
+ 'watchTicker': true,
16
+ 'watchTickers': true,
17
+ 'watchOrderBook': true,
18
+ 'watchOrders': true,
19
+ 'watchTrades': true,
20
+ 'watchTradesForSymbols': false,
21
+ 'watchPositions': true,
22
+ 'watchMyTrades': true,
23
+ 'watchBalance': false,
24
+ 'watchOHLCV': true,
25
+ },
26
+ 'urls': {
27
+ 'logo': 'https://omni.apex.exchange/assets/logo_content-CY9uyFbz.svg',
28
+ 'api': {
29
+ 'ws': {
30
+ 'public': 'wss://quote.omni.apex.exchange/realtime_public?v=2',
31
+ 'private': 'wss://quote.omni.apex.exchange/realtime_private?v=2',
32
+ },
33
+ },
34
+ 'test': {
35
+ 'ws': {
36
+ 'public': 'wss://qa-quote.omni.apex.exchange/realtime_public?v=2',
37
+ 'private': 'wss://qa-quote.omni.apex.exchange/realtime_private?v=2',
38
+ },
39
+ },
40
+ 'www': 'https://apex.exchange/',
41
+ 'doc': 'https://api-docs.pro.apex.exchange',
42
+ 'fees': 'https://apex-pro.gitbook.io/apex-pro/apex-omni-live-now/trading-perpetual-contracts/trading-fees',
43
+ 'referral': 'https://omni.apex.exchange/trade',
44
+ },
45
+ 'options': {},
46
+ 'streaming': {
47
+ 'ping': this.ping,
48
+ 'keepAlive': 18000,
49
+ },
50
+ });
51
+ }
52
+ /**
53
+ * @method
54
+ * @name apex#watchTrades
55
+ * @description watches information on multiple trades made in a market
56
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
57
+ * @param {string} symbol unified market symbol of the market trades were made in
58
+ * @param {int} [since] the earliest time in ms to fetch trades for
59
+ * @param {int} [limit] the maximum number of trade structures to retrieve
60
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
61
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
62
+ */
63
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
64
+ return await this.watchTradesForSymbols([symbol], since, limit, params);
65
+ }
66
+ /**
67
+ * @method
68
+ * @name apex#watchTradesForSymbols
69
+ * @description get the list of most recent trades for a list of symbols
70
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
71
+ * @param {string[]} symbols unified symbol of the market to fetch trades for
72
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
73
+ * @param {int} [limit] the maximum amount of trades to fetch
74
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
75
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
76
+ */
77
+ async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
78
+ await this.loadMarkets();
79
+ symbols = this.marketSymbols(symbols);
80
+ const symbolsLength = symbols.length;
81
+ if (symbolsLength === 0) {
82
+ throw new errors.ArgumentsRequired(this.id + ' watchTradesForSymbols() requires a non-empty array of symbols');
83
+ }
84
+ const timeStamp = this.milliseconds().toString();
85
+ const url = this.urls['api']['ws']['public'] + '&timestamp=' + timeStamp;
86
+ const topics = [];
87
+ const messageHashes = [];
88
+ for (let i = 0; i < symbols.length; i++) {
89
+ const symbol = symbols[i];
90
+ const market = this.market(symbol);
91
+ const topic = 'recentlyTrade.H.' + market['id2'];
92
+ topics.push(topic);
93
+ const messageHash = 'trade:' + symbol;
94
+ messageHashes.push(messageHash);
95
+ }
96
+ const trades = await this.watchTopics(url, messageHashes, topics, params);
97
+ if (this.newUpdates) {
98
+ const first = this.safeValue(trades, 0);
99
+ const tradeSymbol = this.safeString(first, 'symbol');
100
+ limit = trades.getLimit(tradeSymbol, limit);
101
+ }
102
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
103
+ }
104
+ handleTrades(client, message) {
105
+ //
106
+ // {
107
+ // "topic": "recentlyTrade.H.BTCUSDT",
108
+ // "type": "snapshot",
109
+ // "ts": 1672304486868,
110
+ // "data": [
111
+ // {
112
+ // "T": 1672304486865,
113
+ // "s": "BTCUSDT",
114
+ // "S": "Buy",
115
+ // "v": "0.001",
116
+ // "p": "16578.50",
117
+ // "L": "PlusTick",
118
+ // "i": "20f43950-d8dd-5b31-9112-a178eb6023af",
119
+ // "BT": false
120
+ // }
121
+ // ]
122
+ // }
123
+ //
124
+ const data = this.safeValue(message, 'data', {});
125
+ const topic = this.safeString(message, 'topic');
126
+ const trades = data;
127
+ const parts = topic.split('.');
128
+ const marketId = this.safeString(parts, 2);
129
+ const market = this.safeMarket(marketId, undefined, undefined);
130
+ const symbol = market['symbol'];
131
+ let stored = this.safeValue(this.trades, symbol);
132
+ if (stored === undefined) {
133
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
134
+ stored = new Cache.ArrayCache(limit);
135
+ this.trades[symbol] = stored;
136
+ }
137
+ for (let j = 0; j < trades.length; j++) {
138
+ const parsed = this.parseWsTrade(trades[j], market);
139
+ stored.append(parsed);
140
+ }
141
+ const messageHash = 'trade' + ':' + symbol;
142
+ client.resolve(stored, messageHash);
143
+ }
144
+ parseWsTrade(trade, market = undefined) {
145
+ //
146
+ // public
147
+ // {
148
+ // "T": 1672304486865,
149
+ // "s": "BTCUSDT",
150
+ // "S": "Buy",
151
+ // "v": "0.001",
152
+ // "p": "16578.50",
153
+ // "L": "PlusTick",
154
+ // "i": "20f43950-d8dd-5b31-9112-a178eb6023af",
155
+ // "BT": false
156
+ // }
157
+ //
158
+ const id = this.safeStringN(trade, ['i', 'id', 'v']);
159
+ const marketId = this.safeStringN(trade, ['s', 'symbol']);
160
+ market = this.safeMarket(marketId, market, undefined);
161
+ const symbol = market['symbol'];
162
+ const timestamp = this.safeIntegerN(trade, ['t', 'T', 'createdAt']);
163
+ const side = this.safeStringLowerN(trade, ['S', 'side']);
164
+ const price = this.safeStringN(trade, ['p', 'price']);
165
+ const amount = this.safeStringN(trade, ['q', 'v', 'size']);
166
+ return this.safeTrade({
167
+ 'id': id,
168
+ 'info': trade,
169
+ 'timestamp': timestamp,
170
+ 'datetime': this.iso8601(timestamp),
171
+ 'symbol': symbol,
172
+ 'order': undefined,
173
+ 'type': undefined,
174
+ 'side': side,
175
+ 'takerOrMaker': undefined,
176
+ 'price': price,
177
+ 'amount': amount,
178
+ 'cost': undefined,
179
+ 'fee': undefined,
180
+ }, market);
181
+ }
182
+ /**
183
+ * @method
184
+ * @name apex#watchOrderBook
185
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
186
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
187
+ * @param {string} symbol unified symbol of the market to fetch the order book for
188
+ * @param {int} [limit] the maximum amount of order book entries to return.
189
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
190
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
191
+ */
192
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
193
+ return await this.watchOrderBookForSymbols([symbol], limit, params);
194
+ }
195
+ /**
196
+ * @method
197
+ * @name apex#watchOrderBookForSymbols
198
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
199
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
200
+ * @param {string[]} symbols unified array of symbols
201
+ * @param {int} [limit] the maximum amount of order book entries to return.
202
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
203
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
204
+ */
205
+ async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
206
+ await this.loadMarkets();
207
+ const symbolsLength = symbols.length;
208
+ if (symbolsLength === 0) {
209
+ throw new errors.ArgumentsRequired(this.id + ' watchOrderBookForSymbols() requires a non-empty array of symbols');
210
+ }
211
+ symbols = this.marketSymbols(symbols);
212
+ const timeStamp = this.milliseconds().toString();
213
+ const url = this.urls['api']['ws']['public'] + '&timestamp=' + timeStamp;
214
+ const topics = [];
215
+ const messageHashes = [];
216
+ for (let i = 0; i < symbols.length; i++) {
217
+ const symbol = symbols[i];
218
+ const market = this.market(symbol);
219
+ if (limit === undefined) {
220
+ limit = 25;
221
+ }
222
+ const topic = 'orderBook' + limit.toString() + '.H.' + market['id2'];
223
+ topics.push(topic);
224
+ const messageHash = 'orderbook:' + symbol;
225
+ messageHashes.push(messageHash);
226
+ }
227
+ const orderbook = await this.watchTopics(url, messageHashes, topics, params);
228
+ return orderbook.limit();
229
+ }
230
+ async watchTopics(url, messageHashes, topics, params = {}) {
231
+ const request = {
232
+ 'op': 'subscribe',
233
+ 'args': topics,
234
+ };
235
+ const message = this.extend(request, params);
236
+ return await this.watchMultiple(url, messageHashes, message, messageHashes);
237
+ }
238
+ handleOrderBook(client, message) {
239
+ //
240
+ // {
241
+ // "topic": "orderbook25.H.BTCUSDT",
242
+ // "type": "snapshot",
243
+ // "ts": 1672304484978,
244
+ // "data": {
245
+ // "s": "BTCUSDT",
246
+ // "b": [
247
+ // ...,
248
+ // [
249
+ // "16493.50",
250
+ // "0.006"
251
+ // ],
252
+ // [
253
+ // "16493.00",
254
+ // "0.100"
255
+ // ]
256
+ // ],
257
+ // "a": [
258
+ // [
259
+ // "16611.00",
260
+ // "0.029"
261
+ // ],
262
+ // [
263
+ // "16612.00",
264
+ // "0.213"
265
+ // ],
266
+ // ],
267
+ // "u": 18521288,
268
+ // "seq": 7961638724
269
+ // }
270
+ // }
271
+ //
272
+ const type = this.safeString(message, 'type');
273
+ const isSnapshot = (type === 'snapshot');
274
+ const data = this.safeDict(message, 'data', {});
275
+ const marketId = this.safeString(data, 's');
276
+ const market = this.safeMarket(marketId, undefined, undefined);
277
+ const symbol = market['symbol'];
278
+ const timestamp = this.safeIntegerProduct(message, 'ts', 0.001);
279
+ if (!(symbol in this.orderbooks)) {
280
+ this.orderbooks[symbol] = this.orderBook();
281
+ }
282
+ const orderbook = this.orderbooks[symbol];
283
+ if (isSnapshot) {
284
+ const snapshot = this.parseOrderBook(data, symbol, timestamp, 'b', 'a');
285
+ orderbook.reset(snapshot);
286
+ }
287
+ else {
288
+ const asks = this.safeList(data, 'a', []);
289
+ const bids = this.safeList(data, 'b', []);
290
+ this.handleDeltas(orderbook['asks'], asks);
291
+ this.handleDeltas(orderbook['bids'], bids);
292
+ orderbook['timestamp'] = timestamp;
293
+ orderbook['datetime'] = this.iso8601(timestamp);
294
+ }
295
+ const messageHash = 'orderbook' + ':' + symbol;
296
+ this.orderbooks[symbol] = orderbook;
297
+ client.resolve(orderbook, messageHash);
298
+ }
299
+ handleDelta(bookside, delta) {
300
+ const bidAsk = this.parseBidAsk(delta, 0, 1);
301
+ bookside.storeArray(bidAsk);
302
+ }
303
+ handleDeltas(bookside, deltas) {
304
+ for (let i = 0; i < deltas.length; i++) {
305
+ this.handleDelta(bookside, deltas[i]);
306
+ }
307
+ }
308
+ /**
309
+ * @method
310
+ * @name apex#watchTicker
311
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
312
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
313
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
314
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
315
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
316
+ */
317
+ async watchTicker(symbol, params = {}) {
318
+ await this.loadMarkets();
319
+ const market = this.market(symbol);
320
+ symbol = market['symbol'];
321
+ const timeStamp = this.milliseconds().toString();
322
+ const url = this.urls['api']['ws']['public'] + '&timestamp=' + timeStamp;
323
+ const messageHash = 'ticker:' + symbol;
324
+ const topic = 'instrumentInfo' + '.H.' + market['id2'];
325
+ const topics = [topic];
326
+ return await this.watchTopics(url, [messageHash], topics, params);
327
+ }
328
+ /**
329
+ * @method
330
+ * @name apex#watchTickers
331
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
332
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
333
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
334
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
335
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
336
+ */
337
+ async watchTickers(symbols = undefined, params = {}) {
338
+ await this.loadMarkets();
339
+ symbols = this.marketSymbols(symbols, undefined, false);
340
+ const messageHashes = [];
341
+ const timeStamp = this.milliseconds().toString();
342
+ const url = this.urls['api']['ws']['public'] + '&timestamp=' + timeStamp;
343
+ const topics = [];
344
+ for (let i = 0; i < symbols.length; i++) {
345
+ const symbol = symbols[i];
346
+ const market = this.market(symbol);
347
+ const topic = 'instrumentInfo' + '.H.' + market['id2'];
348
+ topics.push(topic);
349
+ const messageHash = 'ticker:' + symbol;
350
+ messageHashes.push(messageHash);
351
+ }
352
+ const ticker = await this.watchTopics(url, messageHashes, topics, params);
353
+ if (this.newUpdates) {
354
+ const result = {};
355
+ result[ticker['symbol']] = ticker;
356
+ return result;
357
+ }
358
+ return this.filterByArray(this.tickers, 'symbol', symbols);
359
+ }
360
+ handleTicker(client, message) {
361
+ // "topic":"instrumentInfo.H.BTCUSDT",
362
+ // "type":"snapshot",
363
+ // "data":{
364
+ // "symbol":"BTCUSDT",
365
+ // "lastPrice":"21572.5",
366
+ // "price24hPcnt":"-0.0194318181818182",
367
+ // "highPrice24h":"25306.5",
368
+ // "lowPrice24h":"17001.5",
369
+ // "turnover24h":"1334891.4545",
370
+ // "volume24h":"64.896",
371
+ // "nextFundingTime":"2022-08-26T08:00:00Z",
372
+ // "oraclePrice":"21412.060000000002752512",
373
+ // "indexPrice":"21409.82",
374
+ // "openInterest":"49.598",
375
+ // "tradeCount":"0",
376
+ // "fundingRate":"0.0000125",
377
+ // "predictedFundingRate":"0.0000125"
378
+ // },
379
+ // "cs":44939063,
380
+ // "ts":1661500091955487
381
+ // }
382
+ const topic = this.safeString(message, 'topic', '');
383
+ const updateType = this.safeString(message, 'type', '');
384
+ const data = this.safeDict(message, 'data', {});
385
+ let symbol = undefined;
386
+ let parsed = undefined;
387
+ if ((updateType === 'snapshot')) {
388
+ parsed = this.parseTicker(data);
389
+ symbol = parsed['symbol'];
390
+ }
391
+ else if (updateType === 'delta') {
392
+ const topicParts = topic.split('.');
393
+ const topicLength = topicParts.length;
394
+ const marketId = this.safeString(topicParts, topicLength - 1);
395
+ const market = this.safeMarket(marketId, undefined, undefined);
396
+ symbol = market['symbol'];
397
+ const ticker = this.safeDict(this.tickers, symbol, {});
398
+ const rawTicker = this.safeDict(ticker, 'info', {});
399
+ const merged = this.extend(rawTicker, data);
400
+ parsed = this.parseTicker(merged);
401
+ }
402
+ const timestamp = this.safeIntegerProduct(message, 'ts', 0.001);
403
+ parsed['timestamp'] = timestamp;
404
+ parsed['datetime'] = this.iso8601(timestamp);
405
+ this.tickers[symbol] = parsed;
406
+ const messageHash = 'ticker:' + symbol;
407
+ client.resolve(this.tickers[symbol], messageHash);
408
+ }
409
+ /**
410
+ * @method
411
+ * @name apex#watchOHLCV
412
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
413
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
414
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
415
+ * @param {string} timeframe the length of time each candle represents
416
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
417
+ * @param {int} [limit] the maximum amount of candles to fetch
418
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
419
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
420
+ */
421
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
422
+ params['callerMethodName'] = 'watchOHLCV';
423
+ const result = await this.watchOHLCVForSymbols([[symbol, timeframe]], since, limit, params);
424
+ return result[symbol][timeframe];
425
+ }
426
+ /**
427
+ * @method
428
+ * @name apex#watchOHLCVForSymbols
429
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
430
+ * @see https://api-docs.pro.apex.exchange/#websocket-v3-for-omni-websocket-endpoint
431
+ * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
432
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
433
+ * @param {int} [limit] the maximum amount of candles to fetch
434
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
435
+ * @returns {object} A list of candles ordered as timestamp, open, high, low, close, volume
436
+ */
437
+ async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
438
+ await this.loadMarkets();
439
+ const timeStamp = this.milliseconds().toString();
440
+ const url = this.urls['api']['ws']['public'] + '&timestamp=' + timeStamp;
441
+ const rawHashes = [];
442
+ const messageHashes = [];
443
+ for (let i = 0; i < symbolsAndTimeframes.length; i++) {
444
+ const data = symbolsAndTimeframes[i];
445
+ let symbolString = this.safeString(data, 0);
446
+ const market = this.market(symbolString);
447
+ symbolString = market['id2'];
448
+ const unfiedTimeframe = this.safeString(data, 1, '1');
449
+ const timeframeId = this.safeString(this.timeframes, unfiedTimeframe, unfiedTimeframe);
450
+ rawHashes.push('candle.' + timeframeId + '.' + symbolString);
451
+ messageHashes.push('ohlcv::' + symbolString + '::' + unfiedTimeframe);
452
+ }
453
+ const [symbol, timeframe, stored] = await this.watchTopics(url, messageHashes, rawHashes, params);
454
+ if (this.newUpdates) {
455
+ limit = stored.getLimit(symbol, limit);
456
+ }
457
+ const filtered = this.filterBySinceLimit(stored, since, limit, 0, true);
458
+ return this.createOHLCVObject(symbol, timeframe, filtered);
459
+ }
460
+ handleOHLCV(client, message) {
461
+ //
462
+ // {
463
+ // "topic": "candle.5.BTCUSDT",
464
+ // "data": [
465
+ // {
466
+ // "start": 1672324800000,
467
+ // "end": 1672325099999,
468
+ // "interval": "5",
469
+ // "open": "16649.5",
470
+ // "close": "16677",
471
+ // "high": "16677",
472
+ // "low": "16608",
473
+ // "volume": "2.081",
474
+ // "turnover": "34666.4005",
475
+ // "confirm": false,
476
+ // "timestamp": 1672324988882
477
+ // }
478
+ // ],
479
+ // "ts": 1672324988882,
480
+ // "type": "snapshot"
481
+ // }
482
+ //
483
+ const data = this.safeValue(message, 'data', {});
484
+ const topic = this.safeString(message, 'topic');
485
+ const topicParts = topic.split('.');
486
+ const topicLength = topicParts.length;
487
+ const timeframeId = this.safeString(topicParts, 1);
488
+ const timeframe = this.findTimeframe(timeframeId);
489
+ const marketId = this.safeString(topicParts, topicLength - 1);
490
+ const isSpot = client.url.indexOf('spot') > -1;
491
+ const marketType = isSpot ? 'spot' : 'contract';
492
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
493
+ const symbol = market['symbol'];
494
+ const ohlcvsByTimeframe = this.safeValue(this.ohlcvs, symbol);
495
+ if (ohlcvsByTimeframe === undefined) {
496
+ this.ohlcvs[symbol] = {};
497
+ }
498
+ if (this.safeValue(ohlcvsByTimeframe, timeframe) === undefined) {
499
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
500
+ this.ohlcvs[symbol][timeframe] = new Cache.ArrayCacheByTimestamp(limit);
501
+ }
502
+ const stored = this.ohlcvs[symbol][timeframe];
503
+ for (let i = 0; i < data.length; i++) {
504
+ const parsed = this.parseWsOHLCV(data[i]);
505
+ stored.append(parsed);
506
+ }
507
+ const messageHash = 'ohlcv::' + symbol + '::' + timeframe;
508
+ const resolveData = [symbol, timeframe, stored];
509
+ client.resolve(resolveData, messageHash);
510
+ }
511
+ parseWsOHLCV(ohlcv, market = undefined) {
512
+ //
513
+ // {
514
+ // "start": 1670363160000,
515
+ // "end": 1670363219999,
516
+ // "interval": "1",
517
+ // "open": "16987.5",
518
+ // "close": "16987.5",
519
+ // "high": "16988",
520
+ // "low": "16987.5",
521
+ // "volume": "23.511",
522
+ // "turnover": "399396.344",
523
+ // "confirm": false,
524
+ // "timestamp": 1670363219614
525
+ // }
526
+ //
527
+ return [
528
+ this.safeInteger(ohlcv, 'start'),
529
+ this.safeNumber(ohlcv, 'open'),
530
+ this.safeNumber(ohlcv, 'high'),
531
+ this.safeNumber(ohlcv, 'low'),
532
+ this.safeNumber(ohlcv, 'close'),
533
+ this.safeNumber2(ohlcv, 'volume', 'turnover'),
534
+ ];
535
+ }
536
+ /**
537
+ * @method
538
+ * @name apex#watchMyTrades
539
+ * @description watches information on multiple trades made by the user
540
+ * @see https://api-docs.pro.apex.exchange/#private-websocket
541
+ * @param {string} symbol unified market symbol of the market orders were made in
542
+ * @param {int} [since] the earliest time in ms to fetch orders for
543
+ * @param {int} [limit] the maximum number of order structures to retrieve
544
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
545
+ * @param {boolean} [params.unifiedMargin] use unified margin account
546
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
547
+ */
548
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
549
+ let messageHash = 'myTrades';
550
+ await this.loadMarkets();
551
+ if (symbol !== undefined) {
552
+ symbol = this.symbol(symbol);
553
+ messageHash += ':' + symbol;
554
+ }
555
+ const timeStamp = this.milliseconds().toString();
556
+ const url = this.urls['api']['ws']['private'] + '&timestamp=' + timeStamp;
557
+ await this.authenticate(url);
558
+ const trades = await this.watchTopics(url, [messageHash], ['myTrades'], params);
559
+ if (this.newUpdates) {
560
+ limit = trades.getLimit(symbol, limit);
561
+ }
562
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
563
+ }
564
+ /**
565
+ * @method
566
+ * @name apex#watchPositions
567
+ * @see https://api-docs.pro.apex.exchange/#private-websocket
568
+ * @description watch all open positions
569
+ * @param {string[]} [symbols] list of unified market symbols
570
+ * @param {int} [since] the earliest time in ms to fetch positions for
571
+ * @param {int} [limit] the maximum number of positions to retrieve
572
+ * @param {object} params extra parameters specific to the exchange API endpoint
573
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
574
+ */
575
+ async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
576
+ await this.loadMarkets();
577
+ let messageHash = '';
578
+ if (!this.isEmpty(symbols)) {
579
+ symbols = this.marketSymbols(symbols);
580
+ messageHash = '::' + symbols.join(',');
581
+ }
582
+ const timeStamp = this.milliseconds().toString();
583
+ const url = this.urls['api']['ws']['private'] + '&timestamp=' + timeStamp;
584
+ messageHash = 'positions' + messageHash;
585
+ const client = this.client(url);
586
+ await this.authenticate(url);
587
+ this.setPositionsCache(client, symbols);
588
+ const cache = this.positions;
589
+ if (cache === undefined) {
590
+ const snapshot = await client.future('fetchPositionsSnapshot');
591
+ return this.filterBySymbolsSinceLimit(snapshot, symbols, since, limit, true);
592
+ }
593
+ const topics = ['positions'];
594
+ const newPositions = await this.watchTopics(url, [messageHash], topics, params);
595
+ if (this.newUpdates) {
596
+ return newPositions;
597
+ }
598
+ return this.filterBySymbolsSinceLimit(cache, symbols, since, limit, true);
599
+ }
600
+ /**
601
+ * @method
602
+ * @name apex#watchOrders
603
+ * @description watches information on multiple orders made by the user
604
+ * @see https://api-docs.pro.apex.exchange/#private-websocket
605
+ * @param {string} symbol unified market symbol of the market orders were made in
606
+ * @param {int} [since] the earliest time in ms to fetch orders for
607
+ * @param {int} [limit] the maximum number of order structures to retrieve
608
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
609
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
610
+ */
611
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
612
+ await this.loadMarkets();
613
+ let messageHash = 'orders';
614
+ if (symbol !== undefined) {
615
+ symbol = this.symbol(symbol);
616
+ messageHash += ':' + symbol;
617
+ }
618
+ const timeStamp = this.milliseconds().toString();
619
+ const url = this.urls['api']['ws']['private'] + '&timestamp=' + timeStamp;
620
+ await this.authenticate(url);
621
+ const topics = ['orders'];
622
+ const orders = await this.watchTopics(url, [messageHash], topics, params);
623
+ if (this.newUpdates) {
624
+ limit = orders.getLimit(symbol, limit);
625
+ }
626
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
627
+ }
628
+ handleMyTrades(client, lists) {
629
+ // [
630
+ // {
631
+ // "symbol":"ETH-USDT",
632
+ // "side":"BUY",
633
+ // "orderId":"2048046080",
634
+ // "fee":"0.625000",
635
+ // "liquidity":"TAKER",
636
+ // "accountId":"1024000",
637
+ // "createdAt":1652185521361,
638
+ // "isOpen":true,
639
+ // "size":"0.500",
640
+ // "price":"2500.0",
641
+ // "quoteAmount":"1250.0000",
642
+ // "id":"2048000182272",
643
+ // "updatedAt":1652185678345
644
+ // }
645
+ // ]
646
+ if (this.myTrades === undefined) {
647
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
648
+ this.myTrades = new Cache.ArrayCacheBySymbolById(limit);
649
+ }
650
+ const trades = this.myTrades;
651
+ const symbols = {};
652
+ for (let i = 0; i < lists.length; i++) {
653
+ const rawTrade = lists[i];
654
+ let parsed = undefined;
655
+ parsed = this.parseWsTrade(rawTrade);
656
+ const symbol = parsed['symbol'];
657
+ symbols[symbol] = true;
658
+ trades.append(parsed);
659
+ }
660
+ const keys = Object.keys(symbols);
661
+ for (let i = 0; i < keys.length; i++) {
662
+ const currentMessageHash = 'myTrades:' + keys[i];
663
+ client.resolve(trades, currentMessageHash);
664
+ }
665
+ // non-symbol specific
666
+ const messageHash = 'myTrades';
667
+ client.resolve(trades, messageHash);
668
+ }
669
+ handleOrder(client, lists) {
670
+ // [
671
+ // {
672
+ // "symbol":"ETH-USDT",
673
+ // "cumSuccessFillFee":"0.625000",
674
+ // "trailingPercent":"0",
675
+ // "type":"LIMIT",
676
+ // "unfillableAt":1654779600000,
677
+ // "isDeleverage":false,
678
+ // "createdAt":1652185521339,
679
+ // "price":"2500.0",
680
+ // "cumSuccessFillValue":"0",
681
+ // "id":"2048046080",
682
+ // "cancelReason":"",
683
+ // "timeInForce":1,
684
+ // "updatedAt":1652185521392,
685
+ // "limitFee":"0.625000",
686
+ // "side":"BUY",
687
+ // "clientOrderId":"522843990",
688
+ // "triggerPrice":"",
689
+ // "expiresAt":1654779600000,
690
+ // "cumSuccessFillSize":"0",
691
+ // "accountId":"1024000",
692
+ // "size":"0.500",
693
+ // "reduceOnly":false,
694
+ // "isLiquidate":false,
695
+ // "remainingSize":"0.000",
696
+ // "status":"PENDING"
697
+ // }
698
+ // ]
699
+ if (this.orders === undefined) {
700
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
701
+ this.orders = new Cache.ArrayCacheBySymbolById(limit);
702
+ }
703
+ const orders = this.orders;
704
+ const symbols = {};
705
+ for (let i = 0; i < lists.length; i++) {
706
+ let parsed = undefined;
707
+ parsed = this.parseOrder(lists[i]);
708
+ const symbol = parsed['symbol'];
709
+ symbols[symbol] = true;
710
+ orders.append(parsed);
711
+ }
712
+ const symbolsArray = Object.keys(symbols);
713
+ for (let i = 0; i < symbolsArray.length; i++) {
714
+ const currentMessageHash = 'orders:' + symbolsArray[i];
715
+ client.resolve(orders, currentMessageHash);
716
+ }
717
+ const messageHash = 'orders';
718
+ client.resolve(orders, messageHash);
719
+ }
720
+ setPositionsCache(client, symbols = undefined) {
721
+ if (this.positions !== undefined) {
722
+ return;
723
+ }
724
+ const messageHash = 'fetchPositionsSnapshot';
725
+ if (!(messageHash in client.futures)) {
726
+ client.future(messageHash);
727
+ this.spawn(this.loadPositionsSnapshot, client, messageHash);
728
+ }
729
+ }
730
+ async loadPositionsSnapshot(client, messageHash) {
731
+ // as only one ws channel gives positions for all types, for snapshot must load all positions
732
+ const fetchFunctions = [
733
+ this.fetchPositions(undefined),
734
+ ];
735
+ const promises = await Promise.all(fetchFunctions);
736
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
737
+ const cache = this.positions;
738
+ for (let i = 0; i < promises.length; i++) {
739
+ const positions = promises[i];
740
+ for (let ii = 0; ii < positions.length; ii++) {
741
+ const position = positions[ii];
742
+ cache.append(position);
743
+ }
744
+ }
745
+ // don't remove the future from the .futures cache
746
+ const future = client.futures[messageHash];
747
+ future.resolve(cache);
748
+ client.resolve(cache, 'positions');
749
+ }
750
+ handlePositions(client, lists) {
751
+ //
752
+ // [
753
+ // {
754
+ // "symbol":"ETH-USDT",
755
+ // "exitPrice":"0",
756
+ // "side":"LONG",
757
+ // "maxSize":"2820.000",
758
+ // "sumOpen":"1.820",
759
+ // "sumClose":"0.000",
760
+ // "netFunding":"0.000000",
761
+ // "entryPrice":"2500.000000000000000000",
762
+ // "accountId":"1024000",
763
+ // "createdAt":1652179377769,
764
+ // "size":"1.820",
765
+ // "realizedPnl":"0",
766
+ // "closedAt":1652185521392,
767
+ // "updatedAt":1652185521392
768
+ // }
769
+ // ]
770
+ //
771
+ // each account is connected to a different endpoint
772
+ // and has exactly one subscriptionhash which is the account type
773
+ if (this.positions === undefined) {
774
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
775
+ }
776
+ const cache = this.positions;
777
+ const newPositions = [];
778
+ for (let i = 0; i < lists.length; i++) {
779
+ const rawPosition = lists[i];
780
+ const position = this.parsePosition(rawPosition);
781
+ const side = this.safeString(position, 'side');
782
+ // hacky solution to handle closing positions
783
+ // without crashing, we should handle this properly later
784
+ newPositions.push(position);
785
+ if (side === undefined || side === '') {
786
+ // closing update, adding both sides to "reset" both sides
787
+ // since we don't know which side is being closed
788
+ position['side'] = 'long';
789
+ cache.append(position);
790
+ position['side'] = 'short';
791
+ cache.append(position);
792
+ position['side'] = undefined;
793
+ }
794
+ else {
795
+ // regular update
796
+ cache.append(position);
797
+ }
798
+ }
799
+ const messageHashes = this.findMessageHashes(client, 'positions::');
800
+ for (let i = 0; i < messageHashes.length; i++) {
801
+ const messageHash = messageHashes[i];
802
+ const parts = messageHash.split('::');
803
+ const symbolsString = parts[1];
804
+ const symbols = symbolsString.split(',');
805
+ const positions = this.filterByArray(newPositions, 'symbol', symbols, false);
806
+ if (!this.isEmpty(positions)) {
807
+ client.resolve(positions, messageHash);
808
+ }
809
+ }
810
+ client.resolve(newPositions, 'positions');
811
+ }
812
+ async authenticate(url, params = {}) {
813
+ this.checkRequiredCredentials();
814
+ const timestamp = this.milliseconds().toString();
815
+ const request_path = '/ws/accounts';
816
+ const http_method = 'GET';
817
+ const messageString = (timestamp + http_method + request_path);
818
+ const signature = this.hmac(this.encode(messageString), this.encode(this.stringToBase64(this.secret)), sha256.sha256, 'base64');
819
+ const messageHash = 'authenticated';
820
+ const client = this.client(url);
821
+ const future = client.future(messageHash);
822
+ const authenticated = this.safeValue(client.subscriptions, messageHash);
823
+ if (authenticated === undefined) {
824
+ // auth sign
825
+ const request = {
826
+ 'type': 'login',
827
+ 'topics': ['ws_zk_accounts_v3'],
828
+ 'httpMethod': http_method,
829
+ 'requestPath': request_path,
830
+ 'apiKey': this.apiKey,
831
+ 'passphrase': this.password,
832
+ 'timestamp': timestamp,
833
+ 'signature': signature,
834
+ };
835
+ const message = {
836
+ 'op': 'login',
837
+ 'args': [JSON.stringify(request)],
838
+ };
839
+ this.watch(url, messageHash, message, messageHash);
840
+ }
841
+ return await future;
842
+ }
843
+ handleErrorMessage(client, message) {
844
+ //
845
+ // {
846
+ // "success": false,
847
+ // "ret_msg": "error:invalid op",
848
+ // "conn_id": "5e079fdd-9c7f-404d-9dbf-969d650838b5",
849
+ // "request": { op: '', args: null }
850
+ // }
851
+ //
852
+ // auth error
853
+ //
854
+ // {
855
+ // "success": false,
856
+ // "ret_msg": "error:USVC1111",
857
+ // "conn_id": "e73770fb-a0dc-45bd-8028-140e20958090",
858
+ // "request": {
859
+ // "op": "auth",
860
+ // "args": [
861
+ // "9rFT6uR4uz9Imkw4Wx",
862
+ // "1653405853543",
863
+ // "542e71bd85597b4db0290f0ce2d13ed1fd4bb5df3188716c1e9cc69a879f7889"
864
+ // ]
865
+ // }
866
+ //
867
+ // { code: '-10009', desc: "Invalid period!" }
868
+ //
869
+ // {
870
+ // "reqId":"1",
871
+ // "retCode":170131,
872
+ // "retMsg":"Insufficient balance.",
873
+ // "op":"order.create",
874
+ // "data":{
875
+ //
876
+ // },
877
+ // "header":{
878
+ // "X-Bapi-Limit":"20",
879
+ // "X-Bapi-Limit-Status":"19",
880
+ // "X-Bapi-Limit-Reset-Timestamp":"1714236608944",
881
+ // "Traceid":"3d7168a137bf32a947b7e5e6a575ac7f",
882
+ // "Timenow":"1714236608946"
883
+ // },
884
+ // "connId":"cojifin88smerbj9t560-406"
885
+ // }
886
+ //
887
+ const code = this.safeStringN(message, ['code', 'ret_code', 'retCode']);
888
+ try {
889
+ if (code !== undefined && code !== '0') {
890
+ const feedback = this.id + ' ' + this.json(message);
891
+ this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
892
+ const msg = this.safeString2(message, 'retMsg', 'ret_msg');
893
+ this.throwBroadlyMatchedException(this.exceptions['broad'], msg, feedback);
894
+ throw new errors.ExchangeError(feedback);
895
+ }
896
+ const success = this.safeValue(message, 'success');
897
+ if (success !== undefined && !success) {
898
+ const ret_msg = this.safeString(message, 'ret_msg');
899
+ const request = this.safeValue(message, 'request', {});
900
+ const op = this.safeString(request, 'op');
901
+ if (op === 'auth') {
902
+ throw new errors.AuthenticationError('Authentication failed: ' + ret_msg);
903
+ }
904
+ else {
905
+ throw new errors.ExchangeError(this.id + ' ' + ret_msg);
906
+ }
907
+ }
908
+ return false;
909
+ }
910
+ catch (error) {
911
+ if (error instanceof errors.AuthenticationError) {
912
+ const messageHash = 'authenticated';
913
+ client.reject(error, messageHash);
914
+ if (messageHash in client.subscriptions) {
915
+ delete client.subscriptions[messageHash];
916
+ }
917
+ }
918
+ else {
919
+ const messageHash = this.safeString(message, 'reqId');
920
+ client.reject(error, messageHash);
921
+ }
922
+ return true;
923
+ }
924
+ }
925
+ handleMessage(client, message) {
926
+ if (this.handleErrorMessage(client, message)) {
927
+ return;
928
+ }
929
+ const topic = this.safeString2(message, 'topic', 'op', '');
930
+ const methods = {
931
+ 'ws_zk_accounts_v3': this.handleAccount,
932
+ 'orderBook': this.handleOrderBook,
933
+ 'depth': this.handleOrderBook,
934
+ 'candle': this.handleOHLCV,
935
+ 'kline': this.handleOHLCV,
936
+ 'ticker': this.handleTicker,
937
+ 'instrumentInfo': this.handleTicker,
938
+ 'trade': this.handleTrades,
939
+ 'recentlyTrade': this.handleTrades,
940
+ 'pong': this.handlePong,
941
+ 'auth': this.handleAuthenticate,
942
+ };
943
+ const exacMethod = this.safeValue(methods, topic);
944
+ if (exacMethod !== undefined) {
945
+ exacMethod.call(this, client, message);
946
+ return;
947
+ }
948
+ const keys = Object.keys(methods);
949
+ for (let i = 0; i < keys.length; i++) {
950
+ const key = keys[i];
951
+ if (topic.indexOf(keys[i]) >= 0) {
952
+ const method = methods[key];
953
+ method.call(this, client, message);
954
+ return;
955
+ }
956
+ }
957
+ // unified auth acknowledgement
958
+ const type = this.safeString(message, 'type');
959
+ if (type === 'AUTH_RESP') {
960
+ this.handleAuthenticate(client, message);
961
+ }
962
+ }
963
+ ping(client) {
964
+ const timeStamp = this.milliseconds().toString();
965
+ return {
966
+ 'args': [timeStamp],
967
+ 'op': 'ping',
968
+ };
969
+ }
970
+ handlePong(client, message) {
971
+ //
972
+ // {
973
+ // "success": true,
974
+ // "ret_msg": "pong",
975
+ // "conn_id": "db3158a0-8960-44b9-a9de-ac350ee13158",
976
+ // "request": { op: "ping", args: null }
977
+ // }
978
+ //
979
+ // { pong: 1653296711335 }
980
+ //
981
+ client.lastPong = this.safeInteger(message, 'pong');
982
+ return message;
983
+ }
984
+ handleAccount(client, message) {
985
+ const contents = this.safeDict(message, 'contents', {});
986
+ const fills = this.safeList(contents, 'fills', []);
987
+ if (fills !== undefined) {
988
+ this.handleMyTrades(client, fills);
989
+ }
990
+ const positions = this.safeList(contents, 'positions', []);
991
+ if (positions !== undefined) {
992
+ this.handlePositions(client, positions);
993
+ }
994
+ const orders = this.safeList(contents, 'orders', []);
995
+ if (orders !== undefined) {
996
+ this.handleOrder(client, orders);
997
+ }
998
+ }
999
+ handleAuthenticate(client, message) {
1000
+ //
1001
+ // {
1002
+ // "success": true,
1003
+ // "ret_msg": '',
1004
+ // "op": "auth",
1005
+ // "conn_id": "ce3dpomvha7dha97tvp0-2xh"
1006
+ // }
1007
+ //
1008
+ const success = this.safeValue(message, 'success');
1009
+ const code = this.safeInteger(message, 'retCode');
1010
+ const messageHash = 'authenticated';
1011
+ if (success || code === 0) {
1012
+ const future = this.safeValue(client.futures, messageHash);
1013
+ future.resolve(true);
1014
+ }
1015
+ else {
1016
+ const error = new errors.AuthenticationError(this.id + ' ' + this.json(message));
1017
+ client.reject(error, messageHash);
1018
+ if (messageHash in client.subscriptions) {
1019
+ delete client.subscriptions[messageHash];
1020
+ }
1021
+ }
1022
+ return message;
1023
+ }
1024
+ handleSubscriptionStatus(client, message) {
1025
+ //
1026
+ // {
1027
+ // "topic": "kline",
1028
+ // "event": "sub",
1029
+ // "params": {
1030
+ // "symbol": "LTCUSDT",
1031
+ // "binary": "false",
1032
+ // "klineType": "1m",
1033
+ // "symbolName": "LTCUSDT"
1034
+ // },
1035
+ // "code": "0",
1036
+ // "msg": "Success"
1037
+ // }
1038
+ //
1039
+ return message;
1040
+ }
1041
+ }
1042
+
1043
+ module.exports = apex;