ccxt 4.5.31 → 4.5.33

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 (992) hide show
  1. package/README.md +6 -5
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/alpaca.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +1 -1
  6. package/dist/cjs/src/abstract/arkham.js +1 -1
  7. package/dist/cjs/src/abstract/ascendex.js +1 -1
  8. package/dist/cjs/src/abstract/aster.js +11 -0
  9. package/dist/cjs/src/abstract/backpack.js +1 -1
  10. package/dist/cjs/src/abstract/bigone.js +1 -1
  11. package/dist/cjs/src/abstract/binance.js +1 -1
  12. package/dist/cjs/src/abstract/bingx.js +1 -1
  13. package/dist/cjs/src/abstract/bit2c.js +1 -1
  14. package/dist/cjs/src/abstract/bitbank.js +1 -1
  15. package/dist/cjs/src/abstract/bitbns.js +1 -1
  16. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  17. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  18. package/dist/cjs/src/abstract/bitget.js +1 -1
  19. package/dist/cjs/src/abstract/bithumb.js +1 -1
  20. package/dist/cjs/src/abstract/bitmart.js +1 -1
  21. package/dist/cjs/src/abstract/bitmex.js +1 -1
  22. package/dist/cjs/src/abstract/bitopro.js +1 -1
  23. package/dist/cjs/src/abstract/bitrue.js +1 -1
  24. package/dist/cjs/src/abstract/bitso.js +1 -1
  25. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  26. package/dist/cjs/src/abstract/bitteam.js +1 -1
  27. package/dist/cjs/src/abstract/bittrade.js +1 -1
  28. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  29. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  30. package/dist/cjs/src/abstract/blofin.js +1 -1
  31. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  32. package/dist/cjs/src/abstract/btcbox.js +1 -1
  33. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  34. package/dist/cjs/src/abstract/btcturk.js +1 -1
  35. package/dist/cjs/src/abstract/bullish.js +1 -1
  36. package/dist/cjs/src/abstract/bybit.js +1 -1
  37. package/dist/cjs/src/abstract/bydfi.js +1 -1
  38. package/dist/cjs/src/abstract/cex.js +1 -1
  39. package/dist/cjs/src/abstract/coinbase.js +1 -1
  40. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  41. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  42. package/dist/cjs/src/abstract/coincatch.js +1 -1
  43. package/dist/cjs/src/abstract/coincheck.js +1 -1
  44. package/dist/cjs/src/abstract/coinex.js +1 -1
  45. package/dist/cjs/src/abstract/coinmate.js +1 -1
  46. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  47. package/dist/cjs/src/abstract/coinone.js +1 -1
  48. package/dist/cjs/src/abstract/coinsph.js +1 -1
  49. package/dist/cjs/src/abstract/coinspot.js +1 -1
  50. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  51. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  52. package/dist/cjs/src/abstract/deepcoin.js +1 -1
  53. package/dist/cjs/src/abstract/defx.js +1 -1
  54. package/dist/cjs/src/abstract/delta.js +1 -1
  55. package/dist/cjs/src/abstract/deribit.js +1 -1
  56. package/dist/cjs/src/abstract/derive.js +1 -1
  57. package/dist/cjs/src/abstract/digifinex.js +1 -1
  58. package/dist/cjs/src/abstract/dydx.js +1 -1
  59. package/dist/cjs/src/abstract/exmo.js +1 -1
  60. package/dist/cjs/src/abstract/foxbit.js +1 -1
  61. package/dist/cjs/src/abstract/gate.js +1 -1
  62. package/dist/cjs/src/abstract/gemini.js +1 -1
  63. package/dist/cjs/src/abstract/hashkey.js +1 -1
  64. package/dist/cjs/src/abstract/hibachi.js +1 -1
  65. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  66. package/dist/cjs/src/abstract/hollaex.js +1 -1
  67. package/dist/cjs/src/abstract/htx.js +1 -1
  68. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  69. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  70. package/dist/cjs/src/abstract/indodax.js +1 -1
  71. package/dist/cjs/src/abstract/kraken.js +1 -1
  72. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  73. package/dist/cjs/src/abstract/kucoin.js +1 -1
  74. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  75. package/dist/cjs/src/abstract/latoken.js +1 -1
  76. package/dist/cjs/src/abstract/lbank.js +1 -1
  77. package/dist/cjs/src/abstract/luno.js +1 -1
  78. package/dist/cjs/src/abstract/mercado.js +1 -1
  79. package/dist/cjs/src/abstract/mexc.js +1 -1
  80. package/dist/cjs/src/abstract/modetrade.js +1 -1
  81. package/dist/cjs/src/abstract/ndax.js +1 -1
  82. package/dist/cjs/src/abstract/novadax.js +1 -1
  83. package/dist/cjs/src/abstract/okx.js +1 -1
  84. package/dist/cjs/src/abstract/onetrading.js +1 -1
  85. package/dist/cjs/src/abstract/oxfun.js +1 -1
  86. package/dist/cjs/src/abstract/p2b.js +1 -1
  87. package/dist/cjs/src/abstract/paradex.js +1 -1
  88. package/dist/cjs/src/abstract/paymium.js +1 -1
  89. package/dist/cjs/src/abstract/phemex.js +1 -1
  90. package/dist/cjs/src/abstract/poloniex.js +1 -1
  91. package/dist/cjs/src/abstract/probit.js +1 -1
  92. package/dist/cjs/src/abstract/timex.js +1 -1
  93. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  94. package/dist/cjs/src/abstract/toobit.js +1 -1
  95. package/dist/cjs/src/abstract/upbit.js +1 -1
  96. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  97. package/dist/cjs/src/abstract/whitebit.js +1 -1
  98. package/dist/cjs/src/abstract/woo.js +1 -1
  99. package/dist/cjs/src/abstract/woofipro.js +1 -1
  100. package/dist/cjs/src/abstract/xt.js +1 -1
  101. package/dist/cjs/src/abstract/yobit.js +1 -1
  102. package/dist/cjs/src/abstract/zaif.js +1 -1
  103. package/dist/cjs/src/abstract/zebpay.js +1 -1
  104. package/dist/cjs/src/abstract/zonda.js +1 -1
  105. package/dist/cjs/src/alpaca.js +1 -1
  106. package/dist/cjs/src/apex.js +1 -1
  107. package/dist/cjs/src/arkham.js +1 -1
  108. package/dist/cjs/src/ascendex.js +1 -1
  109. package/dist/cjs/src/aster.js +3803 -0
  110. package/dist/cjs/src/backpack.js +2 -2
  111. package/dist/cjs/src/base/Exchange.js +19 -1
  112. package/dist/cjs/src/base/Precise.js +0 -6
  113. package/dist/cjs/src/base/errors.js +0 -6
  114. package/dist/cjs/src/base/functions/crypto.js +1 -1
  115. package/dist/cjs/src/base/functions/encode.js +1 -1
  116. package/dist/cjs/src/base/functions/misc.js +0 -1
  117. package/dist/cjs/src/base/functions/number.js +0 -6
  118. package/dist/cjs/src/base/functions/platform.js +0 -6
  119. package/dist/cjs/src/base/functions/rsa.js +0 -1
  120. package/dist/cjs/src/base/functions/string.js +0 -6
  121. package/dist/cjs/src/base/functions/throttle.js +1 -1
  122. package/dist/cjs/src/base/functions/time.js +0 -6
  123. package/dist/cjs/src/base/functions/totp.js +0 -1
  124. package/dist/cjs/src/base/functions/type.js +0 -6
  125. package/dist/cjs/src/base/functions.js +1 -1
  126. package/dist/cjs/src/base/ws/Cache.js +0 -6
  127. package/dist/cjs/src/base/ws/Client.js +0 -1
  128. package/dist/cjs/src/base/ws/Future.js +1 -1
  129. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  130. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  131. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  132. package/dist/cjs/src/bequant.js +1 -1
  133. package/dist/cjs/src/bigone.js +2 -2
  134. package/dist/cjs/src/binance.js +4 -1
  135. package/dist/cjs/src/binancecoinm.js +1 -1
  136. package/dist/cjs/src/binanceus.js +1 -1
  137. package/dist/cjs/src/binanceusdm.js +1 -1
  138. package/dist/cjs/src/bingx.js +74 -1
  139. package/dist/cjs/src/bit2c.js +1 -1
  140. package/dist/cjs/src/bitbank.js +1 -1
  141. package/dist/cjs/src/bitbns.js +1 -1
  142. package/dist/cjs/src/bitfinex.js +1 -1
  143. package/dist/cjs/src/bitflyer.js +1 -1
  144. package/dist/cjs/src/bitget.js +4 -2
  145. package/dist/cjs/src/bithumb.js +1 -1
  146. package/dist/cjs/src/bitmart.js +1 -1
  147. package/dist/cjs/src/bitmex.js +1 -1
  148. package/dist/cjs/src/bitopro.js +1 -1
  149. package/dist/cjs/src/bitrue.js +1 -1
  150. package/dist/cjs/src/bitso.js +1 -1
  151. package/dist/cjs/src/bitstamp.js +1 -1
  152. package/dist/cjs/src/bitteam.js +1 -1
  153. package/dist/cjs/src/bittrade.js +1 -1
  154. package/dist/cjs/src/blockchaincom.js +1 -1
  155. package/dist/cjs/src/blofin.js +1 -1
  156. package/dist/cjs/src/btcalpha.js +1 -1
  157. package/dist/cjs/src/btcbox.js +1 -1
  158. package/dist/cjs/src/btcmarkets.js +1 -1
  159. package/dist/cjs/src/btcturk.js +1 -1
  160. package/dist/cjs/src/bullish.js +1 -1
  161. package/dist/cjs/src/bybit.js +10 -4
  162. package/dist/cjs/src/bydfi.js +1 -1
  163. package/dist/cjs/src/cex.js +1 -1
  164. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  165. package/dist/cjs/src/coincatch.js +1 -1
  166. package/dist/cjs/src/coincheck.js +1 -1
  167. package/dist/cjs/src/coinex.js +1 -1
  168. package/dist/cjs/src/coinmate.js +1 -1
  169. package/dist/cjs/src/coinmetro.js +1 -1
  170. package/dist/cjs/src/coinone.js +1 -1
  171. package/dist/cjs/src/coinsph.js +0 -1
  172. package/dist/cjs/src/coinspot.js +1 -1
  173. package/dist/cjs/src/cryptocom.js +1 -1
  174. package/dist/cjs/src/cryptomus.js +2 -2
  175. package/dist/cjs/src/deepcoin.js +1 -1
  176. package/dist/cjs/src/defx.js +1 -1
  177. package/dist/cjs/src/delta.js +1 -1
  178. package/dist/cjs/src/deribit.js +1 -1
  179. package/dist/cjs/src/derive.js +1 -1
  180. package/dist/cjs/src/digifinex.js +1 -1
  181. package/dist/cjs/src/dydx.js +1 -1
  182. package/dist/cjs/src/exmo.js +1 -1
  183. package/dist/cjs/src/fmfwio.js +1 -1
  184. package/dist/cjs/src/foxbit.js +1 -1
  185. package/dist/cjs/src/gate.js +5 -2
  186. package/dist/cjs/src/gateio.js +1 -1
  187. package/dist/cjs/src/gemini.js +1 -1
  188. package/dist/cjs/src/hashkey.js +1 -1
  189. package/dist/cjs/src/hibachi.js +1 -1
  190. package/dist/cjs/src/hitbtc.js +0 -1
  191. package/dist/cjs/src/hollaex.js +1 -1
  192. package/dist/cjs/src/htx.js +2 -2
  193. package/dist/cjs/src/huobi.js +1 -1
  194. package/dist/cjs/src/hyperliquid.js +1 -1
  195. package/dist/cjs/src/independentreserve.js +1 -1
  196. package/dist/cjs/src/indodax.js +1 -1
  197. package/dist/cjs/src/kraken.js +1 -1
  198. package/dist/cjs/src/krakenfutures.js +54 -10
  199. package/dist/cjs/src/kucoin.js +1 -1
  200. package/dist/cjs/src/kucoinfutures.js +1 -1
  201. package/dist/cjs/src/latoken.js +1 -1
  202. package/dist/cjs/src/lbank.js +1 -1
  203. package/dist/cjs/src/luno.js +1 -1
  204. package/dist/cjs/src/mercado.js +1 -1
  205. package/dist/cjs/src/mexc.js +1 -1
  206. package/dist/cjs/src/modetrade.js +1 -1
  207. package/dist/cjs/src/myokx.js +1 -1
  208. package/dist/cjs/src/ndax.js +1 -1
  209. package/dist/cjs/src/novadax.js +1 -1
  210. package/dist/cjs/src/okx.js +15 -6
  211. package/dist/cjs/src/okxus.js +1 -1
  212. package/dist/cjs/src/onetrading.js +1 -1
  213. package/dist/cjs/src/oxfun.js +1 -1
  214. package/dist/cjs/src/p2b.js +1 -1
  215. package/dist/cjs/src/paradex.js +1 -1
  216. package/dist/cjs/src/paymium.js +1 -1
  217. package/dist/cjs/src/poloniex.js +1 -1
  218. package/dist/cjs/src/pro/alpaca.js +1 -1
  219. package/dist/cjs/src/pro/apex.js +1 -1
  220. package/dist/cjs/src/pro/arkham.js +1 -1
  221. package/dist/cjs/src/pro/ascendex.js +1 -1
  222. package/dist/cjs/src/pro/aster.js +1046 -0
  223. package/dist/cjs/src/pro/backpack.js +3 -2
  224. package/dist/cjs/src/pro/bequant.js +1 -1
  225. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  226. package/dist/cjs/src/pro/binanceus.js +1 -1
  227. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  228. package/dist/cjs/src/pro/bingx.js +1 -1
  229. package/dist/cjs/src/pro/bitfinex.js +1 -1
  230. package/dist/cjs/src/pro/bitget.js +6 -6
  231. package/dist/cjs/src/pro/bithumb.js +1 -1
  232. package/dist/cjs/src/pro/bitmart.js +1 -1
  233. package/dist/cjs/src/pro/bitmex.js +1 -1
  234. package/dist/cjs/src/pro/bitrue.js +1 -1
  235. package/dist/cjs/src/pro/bitstamp.js +1 -1
  236. package/dist/cjs/src/pro/bitvavo.js +1 -1
  237. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  238. package/dist/cjs/src/pro/blofin.js +1 -1
  239. package/dist/cjs/src/pro/bullish.js +1 -1
  240. package/dist/cjs/src/pro/bybit.js +1 -1
  241. package/dist/cjs/src/pro/bydfi.js +1 -1
  242. package/dist/cjs/src/pro/cex.js +1 -1
  243. package/dist/cjs/src/pro/coinbase.js +1 -1
  244. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  245. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  246. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  247. package/dist/cjs/src/pro/coincatch.js +1 -1
  248. package/dist/cjs/src/pro/coincheck.js +1 -1
  249. package/dist/cjs/src/pro/coinex.js +1 -1
  250. package/dist/cjs/src/pro/coinone.js +1 -1
  251. package/dist/cjs/src/pro/cryptocom.js +1 -1
  252. package/dist/cjs/src/pro/deepcoin.js +1 -1
  253. package/dist/cjs/src/pro/defx.js +1 -1
  254. package/dist/cjs/src/pro/deribit.js +1 -1
  255. package/dist/cjs/src/pro/dydx.js +2 -2
  256. package/dist/cjs/src/pro/exmo.js +1 -1
  257. package/dist/cjs/src/pro/gate.js +1 -1
  258. package/dist/cjs/src/pro/gateio.js +1 -1
  259. package/dist/cjs/src/pro/gemini.js +1 -1
  260. package/dist/cjs/src/pro/hashkey.js +1 -1
  261. package/dist/cjs/src/pro/hitbtc.js +1 -1
  262. package/dist/cjs/src/pro/hollaex.js +1 -1
  263. package/dist/cjs/src/pro/htx.js +1 -1
  264. package/dist/cjs/src/pro/huobi.js +1 -1
  265. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  266. package/dist/cjs/src/pro/independentreserve.js +1 -1
  267. package/dist/cjs/src/pro/kraken.js +1 -1
  268. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  269. package/dist/cjs/src/pro/kucoin.js +1 -1
  270. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  271. package/dist/cjs/src/pro/lbank.js +0 -1
  272. package/dist/cjs/src/pro/luno.js +1 -1
  273. package/dist/cjs/src/pro/mexc.js +1 -1
  274. package/dist/cjs/src/pro/myokx.js +1 -1
  275. package/dist/cjs/src/pro/ndax.js +1 -1
  276. package/dist/cjs/src/pro/okx.js +2 -2
  277. package/dist/cjs/src/pro/okxus.js +1 -1
  278. package/dist/cjs/src/pro/onetrading.js +1 -1
  279. package/dist/cjs/src/pro/oxfun.js +1 -1
  280. package/dist/cjs/src/pro/p2b.js +1 -1
  281. package/dist/cjs/src/pro/paradex.js +143 -3
  282. package/dist/cjs/src/pro/phemex.js +1 -1
  283. package/dist/cjs/src/pro/poloniex.js +1 -1
  284. package/dist/cjs/src/pro/probit.js +1 -1
  285. package/dist/cjs/src/pro/toobit.js +1 -1
  286. package/dist/cjs/src/pro/upbit.js +1 -1
  287. package/dist/cjs/src/pro/whitebit.js +1 -1
  288. package/dist/cjs/src/pro/xt.js +1 -1
  289. package/dist/cjs/src/probit.js +1 -1
  290. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
  291. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -1
  292. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -1
  293. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -1
  294. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -1
  295. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -1
  296. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -1
  297. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -1
  298. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -1
  299. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -1
  300. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -1
  301. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -1
  302. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -1
  303. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -1
  304. package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -1
  305. package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
  306. package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +0 -1
  307. package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +0 -1
  308. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
  309. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  310. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  311. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  312. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  313. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  314. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  315. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  316. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  317. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  318. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  319. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  320. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  321. package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
  322. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  323. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  324. package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
  325. package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
  326. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  327. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  328. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  329. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
  330. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  331. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  332. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  333. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  334. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  335. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  336. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  337. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  338. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  339. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  340. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  341. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  342. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  343. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  344. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  345. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  346. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  347. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  348. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  349. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  350. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  351. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  352. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  353. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  354. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  355. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  356. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  357. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  358. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  359. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  360. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  361. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  362. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  363. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  364. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  365. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  366. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  367. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  368. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  369. package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +0 -1
  370. package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +0 -1
  371. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  372. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  373. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  374. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  375. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  376. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  377. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  378. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  379. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  380. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  381. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
  382. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  383. package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
  384. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  385. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  386. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  387. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  388. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  389. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  390. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  391. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  392. package/dist/cjs/src/static_dependencies/qs/formats.js +0 -6
  393. package/dist/cjs/src/static_dependencies/qs/index.js +0 -1
  394. package/dist/cjs/src/static_dependencies/qs/parse.js +0 -1
  395. package/dist/cjs/src/static_dependencies/qs/stringify.js +0 -1
  396. package/dist/cjs/src/static_dependencies/qs/utils.js +0 -6
  397. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  398. package/dist/cjs/src/static_dependencies/scure-bip32/index.js +19 -1
  399. package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
  400. package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
  401. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  402. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  403. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  404. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  405. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  406. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  407. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  408. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
  409. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  410. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  411. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  412. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  413. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  414. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  415. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  416. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  417. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
  418. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  419. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  420. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  421. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  422. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
  423. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
  424. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
  425. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  426. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
  427. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  428. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  429. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  430. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  431. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  432. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  433. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  434. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  435. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  436. package/dist/cjs/src/timex.js +0 -1
  437. package/dist/cjs/src/tokocrypto.js +1 -1
  438. package/dist/cjs/src/toobit.js +1 -1
  439. package/dist/cjs/src/upbit.js +1 -1
  440. package/dist/cjs/src/wavesexchange.js +1 -1
  441. package/dist/cjs/src/whitebit.js +3 -3
  442. package/dist/cjs/src/woo.js +1 -1
  443. package/dist/cjs/src/woofipro.js +1 -1
  444. package/dist/cjs/src/xt.js +1 -1
  445. package/dist/cjs/src/yobit.js +1 -1
  446. package/dist/cjs/src/zaif.js +1 -1
  447. package/dist/cjs/src/zebpay.js +1 -1
  448. package/dist/cjs/src/zonda.js +1 -1
  449. package/js/ccxt.d.ts +8 -2
  450. package/js/ccxt.js +6 -8
  451. package/js/src/abstract/alpaca.js +0 -6
  452. package/js/src/abstract/apex.js +0 -6
  453. package/js/src/abstract/arkham.js +0 -6
  454. package/js/src/abstract/ascendex.js +0 -6
  455. package/js/src/abstract/aster.d.ts +88 -0
  456. package/js/src/abstract/aster.js +5 -0
  457. package/js/src/abstract/backpack.js +0 -6
  458. package/js/src/abstract/bequant.js +0 -6
  459. package/js/src/abstract/bigone.js +0 -6
  460. package/js/src/abstract/binance.d.ts +3 -0
  461. package/js/src/abstract/binance.js +0 -6
  462. package/js/src/abstract/binancecoinm.d.ts +3 -0
  463. package/js/src/abstract/binancecoinm.js +0 -6
  464. package/js/src/abstract/binanceus.d.ts +3 -0
  465. package/js/src/abstract/binanceus.js +0 -6
  466. package/js/src/abstract/binanceusdm.d.ts +3 -0
  467. package/js/src/abstract/binanceusdm.js +0 -6
  468. package/js/src/abstract/bingx.js +0 -6
  469. package/js/src/abstract/bit2c.js +0 -6
  470. package/js/src/abstract/bitbank.js +0 -6
  471. package/js/src/abstract/bitbns.js +0 -6
  472. package/js/src/abstract/bitfinex.js +0 -6
  473. package/js/src/abstract/bitflyer.js +0 -6
  474. package/js/src/abstract/bitget.js +0 -6
  475. package/js/src/abstract/bithumb.js +0 -6
  476. package/js/src/abstract/bitmart.js +0 -6
  477. package/js/src/abstract/bitmex.js +0 -6
  478. package/js/src/abstract/bitopro.js +0 -6
  479. package/js/src/abstract/bitrue.js +0 -6
  480. package/js/src/abstract/bitso.js +0 -6
  481. package/js/src/abstract/bitstamp.js +0 -6
  482. package/js/src/abstract/bitteam.js +0 -6
  483. package/js/src/abstract/bittrade.js +0 -6
  484. package/js/src/abstract/bitvavo.js +0 -6
  485. package/js/src/abstract/blockchaincom.js +0 -6
  486. package/js/src/abstract/blofin.js +0 -6
  487. package/js/src/abstract/btcalpha.js +0 -6
  488. package/js/src/abstract/btcbox.js +0 -6
  489. package/js/src/abstract/btcmarkets.js +0 -6
  490. package/js/src/abstract/btcturk.js +0 -6
  491. package/js/src/abstract/bullish.js +0 -6
  492. package/js/src/abstract/bybit.js +0 -6
  493. package/js/src/abstract/bydfi.js +0 -6
  494. package/js/src/abstract/cex.js +0 -6
  495. package/js/src/abstract/coinbase.js +0 -6
  496. package/js/src/abstract/coinbaseadvanced.js +0 -6
  497. package/js/src/abstract/coinbaseexchange.js +0 -6
  498. package/js/src/abstract/coinbaseinternational.js +0 -6
  499. package/js/src/abstract/coincatch.js +0 -6
  500. package/js/src/abstract/coincheck.js +0 -6
  501. package/js/src/abstract/coinex.js +0 -6
  502. package/js/src/abstract/coinmate.js +0 -6
  503. package/js/src/abstract/coinmetro.js +0 -6
  504. package/js/src/abstract/coinone.js +0 -6
  505. package/js/src/abstract/coinsph.js +0 -6
  506. package/js/src/abstract/coinspot.js +0 -6
  507. package/js/src/abstract/cryptocom.js +0 -6
  508. package/js/src/abstract/cryptomus.js +0 -6
  509. package/js/src/abstract/deepcoin.js +0 -6
  510. package/js/src/abstract/defx.js +0 -6
  511. package/js/src/abstract/delta.js +0 -6
  512. package/js/src/abstract/deribit.js +0 -6
  513. package/js/src/abstract/derive.js +0 -6
  514. package/js/src/abstract/digifinex.js +0 -6
  515. package/js/src/abstract/dydx.js +0 -6
  516. package/js/src/abstract/exmo.js +0 -6
  517. package/js/src/abstract/fmfwio.js +0 -6
  518. package/js/src/abstract/foxbit.js +0 -6
  519. package/js/src/abstract/gate.js +0 -6
  520. package/js/src/abstract/gateio.js +0 -6
  521. package/js/src/abstract/gemini.js +0 -6
  522. package/js/src/abstract/hashkey.js +0 -6
  523. package/js/src/abstract/hibachi.js +0 -6
  524. package/js/src/abstract/hitbtc.js +0 -6
  525. package/js/src/abstract/hollaex.js +0 -6
  526. package/js/src/abstract/htx.js +0 -6
  527. package/js/src/abstract/huobi.js +0 -6
  528. package/js/src/abstract/hyperliquid.js +0 -6
  529. package/js/src/abstract/independentreserve.js +0 -6
  530. package/js/src/abstract/indodax.js +0 -6
  531. package/js/src/abstract/kraken.js +0 -6
  532. package/js/src/abstract/krakenfutures.d.ts +1 -0
  533. package/js/src/abstract/krakenfutures.js +0 -6
  534. package/js/src/abstract/kucoin.js +0 -6
  535. package/js/src/abstract/kucoinfutures.js +0 -6
  536. package/js/src/abstract/latoken.js +0 -6
  537. package/js/src/abstract/lbank.js +0 -6
  538. package/js/src/abstract/luno.js +0 -6
  539. package/js/src/abstract/mercado.js +0 -6
  540. package/js/src/abstract/mexc.js +0 -6
  541. package/js/src/abstract/modetrade.js +0 -6
  542. package/js/src/abstract/myokx.js +0 -6
  543. package/js/src/abstract/ndax.js +0 -6
  544. package/js/src/abstract/novadax.js +0 -6
  545. package/js/src/abstract/okx.js +0 -6
  546. package/js/src/abstract/okxus.js +0 -6
  547. package/js/src/abstract/onetrading.js +0 -6
  548. package/js/src/abstract/oxfun.js +0 -6
  549. package/js/src/abstract/p2b.js +0 -6
  550. package/js/src/abstract/paradex.js +0 -6
  551. package/js/src/abstract/paymium.js +0 -6
  552. package/js/src/abstract/phemex.js +0 -6
  553. package/js/src/abstract/poloniex.js +0 -6
  554. package/js/src/abstract/probit.js +0 -6
  555. package/js/src/abstract/timex.js +0 -6
  556. package/js/src/abstract/tokocrypto.js +0 -6
  557. package/js/src/abstract/toobit.js +0 -6
  558. package/js/src/abstract/upbit.js +0 -6
  559. package/js/src/abstract/wavesexchange.js +0 -6
  560. package/js/src/abstract/whitebit.js +0 -6
  561. package/js/src/abstract/woo.js +0 -6
  562. package/js/src/abstract/woofipro.js +0 -6
  563. package/js/src/abstract/xt.js +0 -6
  564. package/js/src/abstract/yobit.js +0 -6
  565. package/js/src/abstract/zaif.js +0 -6
  566. package/js/src/abstract/zebpay.js +0 -6
  567. package/js/src/abstract/zonda.js +0 -6
  568. package/js/src/alpaca.js +0 -6
  569. package/js/src/apex.js +0 -6
  570. package/js/src/arkham.js +0 -6
  571. package/js/src/ascendex.js +0 -6
  572. package/js/src/aster.d.ts +563 -0
  573. package/js/src/aster.js +3796 -0
  574. package/js/src/backpack.js +1 -7
  575. package/js/src/base/Exchange.d.ts +1 -0
  576. package/js/src/base/Exchange.js +19 -6
  577. package/js/src/base/Precise.js +0 -6
  578. package/js/src/base/errorHierarchy.js +0 -6
  579. package/js/src/base/errors.js +0 -6
  580. package/js/src/base/functions/crypto.js +0 -6
  581. package/js/src/base/functions/encode.js +0 -6
  582. package/js/src/base/functions/generic.js +0 -6
  583. package/js/src/base/functions/misc.js +0 -6
  584. package/js/src/base/functions/number.js +0 -6
  585. package/js/src/base/functions/platform.js +0 -6
  586. package/js/src/base/functions/rsa.js +0 -6
  587. package/js/src/base/functions/string.js +0 -6
  588. package/js/src/base/functions/throttle.js +0 -6
  589. package/js/src/base/functions/time.js +0 -6
  590. package/js/src/base/functions/totp.js +0 -6
  591. package/js/src/base/functions/type.js +0 -6
  592. package/js/src/base/functions.js +0 -6
  593. package/js/src/base/types.js +0 -6
  594. package/js/src/base/ws/Cache.js +0 -6
  595. package/js/src/base/ws/Client.js +0 -6
  596. package/js/src/base/ws/Future.js +0 -6
  597. package/js/src/base/ws/OrderBook.js +0 -6
  598. package/js/src/base/ws/OrderBookSide.js +0 -6
  599. package/js/src/base/ws/WsClient.js +0 -6
  600. package/js/src/base/ws/functions.js +0 -6
  601. package/js/src/bequant.js +0 -6
  602. package/js/src/bigone.js +1 -7
  603. package/js/src/binance.js +3 -6
  604. package/js/src/binancecoinm.js +0 -6
  605. package/js/src/binanceus.js +0 -6
  606. package/js/src/binanceusdm.js +0 -6
  607. package/js/src/bingx.d.ts +12 -1
  608. package/js/src/bingx.js +73 -6
  609. package/js/src/bit2c.js +0 -6
  610. package/js/src/bitbank.js +0 -6
  611. package/js/src/bitbns.js +0 -6
  612. package/js/src/bitfinex.js +0 -6
  613. package/js/src/bitflyer.js +0 -6
  614. package/js/src/bitget.js +3 -7
  615. package/js/src/bithumb.js +0 -6
  616. package/js/src/bitmart.js +0 -6
  617. package/js/src/bitmex.js +0 -6
  618. package/js/src/bitopro.js +0 -6
  619. package/js/src/bitrue.js +0 -6
  620. package/js/src/bitso.js +0 -6
  621. package/js/src/bitstamp.js +0 -6
  622. package/js/src/bitteam.js +0 -6
  623. package/js/src/bittrade.js +0 -6
  624. package/js/src/bitvavo.js +0 -6
  625. package/js/src/blockchaincom.js +0 -6
  626. package/js/src/blofin.js +0 -6
  627. package/js/src/btcalpha.js +0 -6
  628. package/js/src/btcbox.js +0 -6
  629. package/js/src/btcmarkets.js +0 -6
  630. package/js/src/btcturk.js +0 -6
  631. package/js/src/bullish.js +0 -6
  632. package/js/src/bybit.js +9 -9
  633. package/js/src/bydfi.js +0 -6
  634. package/js/src/cex.js +0 -6
  635. package/js/src/coinbase.js +0 -6
  636. package/js/src/coinbaseadvanced.js +0 -6
  637. package/js/src/coinbaseexchange.js +0 -6
  638. package/js/src/coinbaseinternational.js +0 -6
  639. package/js/src/coincatch.js +0 -6
  640. package/js/src/coincheck.js +0 -6
  641. package/js/src/coinex.js +0 -6
  642. package/js/src/coinmate.js +0 -6
  643. package/js/src/coinmetro.js +0 -6
  644. package/js/src/coinone.js +0 -6
  645. package/js/src/coinsph.js +0 -6
  646. package/js/src/coinspot.js +0 -6
  647. package/js/src/cryptocom.js +0 -6
  648. package/js/src/cryptomus.js +1 -7
  649. package/js/src/deepcoin.js +0 -6
  650. package/js/src/defx.js +0 -6
  651. package/js/src/delta.js +0 -6
  652. package/js/src/deribit.js +0 -6
  653. package/js/src/derive.js +0 -6
  654. package/js/src/digifinex.js +0 -6
  655. package/js/src/dydx.js +0 -6
  656. package/js/src/exmo.js +0 -6
  657. package/js/src/fmfwio.js +0 -6
  658. package/js/src/foxbit.js +0 -6
  659. package/js/src/gate.js +4 -7
  660. package/js/src/gateio.js +0 -6
  661. package/js/src/gemini.js +0 -6
  662. package/js/src/hashkey.js +0 -6
  663. package/js/src/hibachi.js +0 -6
  664. package/js/src/hitbtc.js +0 -6
  665. package/js/src/hollaex.js +0 -6
  666. package/js/src/htx.js +1 -7
  667. package/js/src/huobi.js +0 -6
  668. package/js/src/hyperliquid.js +0 -6
  669. package/js/src/independentreserve.js +0 -6
  670. package/js/src/indodax.js +0 -6
  671. package/js/src/kraken.js +0 -6
  672. package/js/src/krakenfutures.d.ts +23 -0
  673. package/js/src/krakenfutures.js +53 -15
  674. package/js/src/kucoin.js +0 -6
  675. package/js/src/kucoinfutures.js +0 -6
  676. package/js/src/latoken.js +0 -6
  677. package/js/src/lbank.js +0 -6
  678. package/js/src/luno.js +0 -6
  679. package/js/src/mercado.js +0 -6
  680. package/js/src/mexc.js +0 -6
  681. package/js/src/modetrade.js +0 -6
  682. package/js/src/myokx.js +0 -6
  683. package/js/src/ndax.js +0 -6
  684. package/js/src/novadax.js +0 -6
  685. package/js/src/okx.js +14 -11
  686. package/js/src/okxus.js +0 -6
  687. package/js/src/onetrading.js +0 -6
  688. package/js/src/oxfun.js +0 -6
  689. package/js/src/p2b.js +0 -6
  690. package/js/src/paradex.js +0 -6
  691. package/js/src/paymium.js +0 -6
  692. package/js/src/phemex.js +0 -6
  693. package/js/src/poloniex.js +0 -6
  694. package/js/src/pro/alpaca.js +0 -6
  695. package/js/src/pro/apex.js +0 -6
  696. package/js/src/pro/arkham.js +0 -6
  697. package/js/src/pro/ascendex.js +0 -6
  698. package/js/src/pro/aster.d.ts +273 -0
  699. package/js/src/pro/aster.js +1039 -0
  700. package/js/src/pro/backpack.js +2 -7
  701. package/js/src/pro/bequant.js +0 -6
  702. package/js/src/pro/binance.js +0 -6
  703. package/js/src/pro/binancecoinm.js +0 -6
  704. package/js/src/pro/binanceus.js +0 -6
  705. package/js/src/pro/binanceusdm.js +0 -6
  706. package/js/src/pro/bingx.js +0 -6
  707. package/js/src/pro/bitfinex.js +0 -6
  708. package/js/src/pro/bitget.js +5 -11
  709. package/js/src/pro/bithumb.js +0 -6
  710. package/js/src/pro/bitmart.js +0 -6
  711. package/js/src/pro/bitmex.js +0 -6
  712. package/js/src/pro/bitopro.js +0 -6
  713. package/js/src/pro/bitrue.js +0 -6
  714. package/js/src/pro/bitstamp.js +0 -6
  715. package/js/src/pro/bittrade.js +0 -6
  716. package/js/src/pro/bitvavo.js +0 -6
  717. package/js/src/pro/blockchaincom.js +0 -6
  718. package/js/src/pro/blofin.js +0 -6
  719. package/js/src/pro/bullish.js +0 -6
  720. package/js/src/pro/bybit.js +0 -6
  721. package/js/src/pro/bydfi.js +0 -6
  722. package/js/src/pro/cex.js +0 -6
  723. package/js/src/pro/coinbase.js +0 -6
  724. package/js/src/pro/coinbaseadvanced.js +0 -6
  725. package/js/src/pro/coinbaseexchange.js +0 -6
  726. package/js/src/pro/coinbaseinternational.js +0 -6
  727. package/js/src/pro/coincatch.js +0 -6
  728. package/js/src/pro/coincheck.js +0 -6
  729. package/js/src/pro/coinex.js +0 -6
  730. package/js/src/pro/coinone.js +0 -6
  731. package/js/src/pro/cryptocom.js +0 -6
  732. package/js/src/pro/deepcoin.js +0 -6
  733. package/js/src/pro/defx.js +0 -6
  734. package/js/src/pro/deribit.js +0 -6
  735. package/js/src/pro/derive.js +0 -6
  736. package/js/src/pro/dydx.js +1 -7
  737. package/js/src/pro/exmo.js +0 -6
  738. package/js/src/pro/gate.js +0 -6
  739. package/js/src/pro/gateio.js +0 -6
  740. package/js/src/pro/gemini.js +0 -6
  741. package/js/src/pro/hashkey.js +0 -6
  742. package/js/src/pro/hitbtc.js +0 -6
  743. package/js/src/pro/hollaex.js +0 -6
  744. package/js/src/pro/htx.js +0 -6
  745. package/js/src/pro/huobi.js +0 -6
  746. package/js/src/pro/hyperliquid.js +0 -6
  747. package/js/src/pro/independentreserve.js +0 -6
  748. package/js/src/pro/kraken.js +0 -6
  749. package/js/src/pro/krakenfutures.js +0 -6
  750. package/js/src/pro/kucoin.js +0 -6
  751. package/js/src/pro/kucoinfutures.js +0 -6
  752. package/js/src/pro/lbank.js +0 -6
  753. package/js/src/pro/luno.js +0 -6
  754. package/js/src/pro/mexc.js +0 -6
  755. package/js/src/pro/modetrade.js +0 -6
  756. package/js/src/pro/myokx.js +0 -6
  757. package/js/src/pro/ndax.js +0 -6
  758. package/js/src/pro/okx.js +1 -7
  759. package/js/src/pro/okxus.js +0 -6
  760. package/js/src/pro/onetrading.js +0 -6
  761. package/js/src/pro/oxfun.js +0 -6
  762. package/js/src/pro/p2b.js +0 -6
  763. package/js/src/pro/paradex.d.ts +17 -1
  764. package/js/src/pro/paradex.js +143 -9
  765. package/js/src/pro/phemex.js +0 -6
  766. package/js/src/pro/poloniex.js +0 -6
  767. package/js/src/pro/probit.js +0 -6
  768. package/js/src/pro/toobit.js +0 -6
  769. package/js/src/pro/upbit.js +0 -6
  770. package/js/src/pro/whitebit.js +0 -6
  771. package/js/src/pro/woo.js +0 -6
  772. package/js/src/pro/woofipro.js +0 -6
  773. package/js/src/pro/xt.js +0 -6
  774. package/js/src/probit.js +0 -6
  775. package/js/src/protobuf/mexc/compiled.cjs +0 -6
  776. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -6
  777. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +0 -6
  778. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -6
  779. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -6
  780. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -6
  781. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -6
  782. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -6
  783. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +0 -6
  784. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -6
  785. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +0 -6
  786. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +0 -6
  787. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +0 -6
  788. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +0 -6
  789. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +0 -6
  790. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -6
  791. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -6
  792. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -6
  793. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -6
  794. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -6
  795. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +0 -6
  796. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +0 -6
  797. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -6
  798. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -6
  799. package/js/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
  800. package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +0 -6
  801. package/js/src/static_dependencies/dydx-v4-client/onboarding.js +0 -6
  802. package/js/src/static_dependencies/dydx-v4-client/registry.js +0 -6
  803. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  804. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  805. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  806. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  807. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  808. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  809. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  810. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  811. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  812. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  813. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  814. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  815. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  816. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  817. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  818. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  819. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  820. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  821. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  822. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  823. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  824. package/js/src/static_dependencies/ethers/index.js +0 -6
  825. package/js/src/static_dependencies/ethers/interface.js +0 -6
  826. package/js/src/static_dependencies/ethers/typed.js +0 -6
  827. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  828. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  829. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  830. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  831. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  832. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  833. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  834. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  835. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  836. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  837. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  838. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  839. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  840. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  841. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  842. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  843. package/js/src/static_dependencies/fflake/browser.js +0 -6
  844. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  845. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  846. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  847. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  848. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  849. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  850. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  851. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  852. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  853. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  854. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  855. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  856. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  857. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  858. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  859. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  860. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  861. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  862. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  863. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  864. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  865. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  866. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  867. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  868. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  869. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  870. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  871. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  872. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  873. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  874. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  875. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  876. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  877. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  878. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  879. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  880. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  881. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  882. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  883. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  884. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  885. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  886. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  887. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  888. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  889. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  890. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  891. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  892. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  893. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  894. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  895. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  896. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  897. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  898. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  899. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  900. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  901. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  902. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  903. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  904. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  905. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  906. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  907. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  908. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  909. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  910. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  911. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  912. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  913. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  914. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  915. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  916. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  917. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  918. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  919. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  920. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  921. package/js/src/static_dependencies/qs/formats.js +0 -6
  922. package/js/src/static_dependencies/qs/index.js +0 -6
  923. package/js/src/static_dependencies/qs/parse.js +0 -6
  924. package/js/src/static_dependencies/qs/stringify.js +0 -6
  925. package/js/src/static_dependencies/qs/utils.js +0 -6
  926. package/js/src/static_dependencies/scure-base/index.js +0 -6
  927. package/js/src/static_dependencies/scure-bip32/index.js +0 -6
  928. package/js/src/static_dependencies/scure-bip39/index.js +0 -6
  929. package/js/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
  930. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  931. package/js/src/static_dependencies/starknet/constants.js +0 -6
  932. package/js/src/static_dependencies/starknet/index.js +0 -6
  933. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  934. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  935. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  936. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  937. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  938. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  939. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  940. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  941. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  942. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  943. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  944. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  945. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  946. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  947. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  948. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  949. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  950. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  951. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  952. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  953. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  954. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  955. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  956. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  957. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  958. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  959. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  960. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  961. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  962. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  963. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  964. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  965. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  966. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  967. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  968. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  969. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  970. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  971. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  972. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  973. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  974. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  975. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  976. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  977. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  978. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  979. package/js/src/timex.js +0 -6
  980. package/js/src/tokocrypto.js +0 -6
  981. package/js/src/toobit.js +0 -6
  982. package/js/src/upbit.js +0 -6
  983. package/js/src/wavesexchange.js +0 -6
  984. package/js/src/whitebit.js +2 -8
  985. package/js/src/woo.js +0 -6
  986. package/js/src/woofipro.js +0 -6
  987. package/js/src/xt.js +0 -6
  988. package/js/src/yobit.js +0 -6
  989. package/js/src/zaif.js +0 -6
  990. package/js/src/zebpay.js +0 -6
  991. package/js/src/zonda.js +0 -6
  992. package/package.json +1 -1
@@ -0,0 +1,1039 @@
1
+ // ---------------------------------------------------------------------------
2
+ import asterRest from '../aster.js';
3
+ import { ArgumentsRequired } from '../base/errors.js';
4
+ import { ArrayCache, ArrayCacheByTimestamp } from '../base/ws/Cache.js';
5
+ // ---------------------------------------------------------------------------
6
+ export default class aster extends asterRest {
7
+ describe() {
8
+ return this.deepExtend(super.describe(), {
9
+ 'has': {
10
+ 'ws': true,
11
+ 'watchBalance': false,
12
+ 'watchBidsAsks': true,
13
+ 'watchTicker': true,
14
+ 'watchTickers': true,
15
+ 'watchMarkPrice': true,
16
+ 'watchMarkPrices': true,
17
+ 'watchTrades': true,
18
+ 'watchTradesForSymbols': true,
19
+ 'watchOrderBook': true,
20
+ 'watchOrderBookForSymbols': true,
21
+ 'watchOHLCV': true,
22
+ 'watchOHLCVForSymbols': true,
23
+ 'unWatchTicker': true,
24
+ 'unWatchTickers': true,
25
+ 'unWatchMarkPrice': true,
26
+ 'unWatchMarkPrices': true,
27
+ 'unWatchBidsAsks': true,
28
+ 'unWatchTrades': true,
29
+ 'unWatchTradesForSymbols': true,
30
+ 'unWatchOrderBook': true,
31
+ 'unWatchOrderBookForSymbols': true,
32
+ 'unWatchOHLCV': true,
33
+ 'unWatchOHLCVForSymbols': true,
34
+ },
35
+ 'urls': {
36
+ 'api': {
37
+ 'ws': {
38
+ 'spot': 'wss://sstream.asterdex.com/stream',
39
+ 'swap': 'wss://fstream.asterdex.com/stream',
40
+ },
41
+ },
42
+ },
43
+ 'options': {},
44
+ 'streaming': {},
45
+ 'exceptions': {},
46
+ });
47
+ }
48
+ getAccountTypeFromSubscriptions(subscriptions) {
49
+ let accountType = '';
50
+ for (let i = 0; i < subscriptions.length; i++) {
51
+ const subscription = subscriptions[i];
52
+ if ((subscription === 'spot') || (subscription === 'swap')) {
53
+ accountType = subscription;
54
+ break;
55
+ }
56
+ }
57
+ return accountType;
58
+ }
59
+ /**
60
+ * @method
61
+ * @name aster#watchTicker
62
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
63
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#full-ticker-per-symbol
64
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-ticker-streams
65
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
66
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
67
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
68
+ */
69
+ async watchTicker(symbol, params = {}) {
70
+ params['callerMethodName'] = 'watchTicker';
71
+ await this.loadMarkets();
72
+ symbol = this.safeSymbol(symbol);
73
+ const tickers = await this.watchTickers([symbol], params);
74
+ return tickers[symbol];
75
+ }
76
+ /**
77
+ * @method
78
+ * @name aster#unWatchTicker
79
+ * @description unWatches a price ticker
80
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#full-ticker-per-symbol
81
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-ticker-streams
82
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
83
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
84
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
85
+ */
86
+ async unWatchTicker(symbol, params = {}) {
87
+ params['callerMethodName'] = 'unWatchTicker';
88
+ return await this.unWatchTickers([symbol], params);
89
+ }
90
+ /**
91
+ * @method
92
+ * @name aster#watchTickers
93
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
94
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#full-ticker-per-symbol
95
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-ticker-streams
96
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
97
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
98
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
99
+ */
100
+ async watchTickers(symbols = undefined, params = {}) {
101
+ await this.loadMarkets();
102
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
103
+ const firstMarket = this.getMarketFromSymbols(symbols);
104
+ const type = this.safeString(firstMarket, 'type', 'swap');
105
+ const symbolsLength = symbols.length;
106
+ let methodName = undefined;
107
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'watchTickers');
108
+ params = this.omit(params, 'callerMethodName');
109
+ if (symbolsLength === 0) {
110
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
111
+ }
112
+ const url = this.urls['api']['ws'][type];
113
+ const subscriptionArgs = [];
114
+ const messageHashes = [];
115
+ const request = {
116
+ 'method': 'SUBSCRIBE',
117
+ 'params': subscriptionArgs,
118
+ };
119
+ for (let i = 0; i < symbols.length; i++) {
120
+ const symbol = symbols[i];
121
+ const market = this.market(symbol);
122
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@ticker');
123
+ messageHashes.push('ticker:' + market['symbol']);
124
+ }
125
+ const newTicker = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
126
+ if (this.newUpdates) {
127
+ const result = {};
128
+ result[newTicker['symbol']] = newTicker;
129
+ return result;
130
+ }
131
+ return this.filterByArray(this.tickers, 'symbol', symbols);
132
+ }
133
+ /**
134
+ * @method
135
+ * @name aster#unWatchTickers
136
+ * @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
137
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#full-ticker-per-symbol
138
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-ticker-streams
139
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
140
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
141
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
142
+ */
143
+ async unWatchTickers(symbols = undefined, params = {}) {
144
+ await this.loadMarkets();
145
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
146
+ const firstMarket = this.getMarketFromSymbols(symbols);
147
+ const type = this.safeString(firstMarket, 'type', 'swap');
148
+ const symbolsLength = symbols.length;
149
+ let methodName = undefined;
150
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'unWatchTickers');
151
+ params = this.omit(params, 'callerMethodName');
152
+ if (symbolsLength === 0) {
153
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
154
+ }
155
+ const url = this.urls['api']['ws'][type];
156
+ const subscriptionArgs = [];
157
+ const messageHashes = [];
158
+ const request = {
159
+ 'method': 'UNSUBSCRIBE',
160
+ 'params': subscriptionArgs,
161
+ };
162
+ for (let i = 0; i < symbols.length; i++) {
163
+ const symbol = symbols[i];
164
+ const market = this.market(symbol);
165
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@ticker');
166
+ messageHashes.push('unsubscribe:ticker:' + market['symbol']);
167
+ }
168
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
169
+ }
170
+ /**
171
+ * @method
172
+ * @name aster#watchMarkPrice
173
+ * @description watches a mark price for a specific market
174
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#mark-price-stream
175
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
176
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
177
+ * @param {boolean} [params.use1sFreq] *default is true* if set to true, the mark price will be updated every second, otherwise every 3 seconds
178
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
179
+ */
180
+ async watchMarkPrice(symbol, params = {}) {
181
+ params['callerMethodName'] = 'watchMarkPrice';
182
+ await this.loadMarkets();
183
+ symbol = this.safeSymbol(symbol);
184
+ const tickers = await this.watchMarkPrices([symbol], params);
185
+ return tickers[symbol];
186
+ }
187
+ /**
188
+ * @method
189
+ * @name aster#unWatchMarkPrice
190
+ * @description unWatches a mark price for a specific market
191
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#mark-price-stream
192
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
193
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
194
+ * @param {boolean} [params.use1sFreq] *default is true* if set to true, the mark price will be updated every second, otherwise every 3 seconds
195
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
196
+ */
197
+ async unWatchMarkPrice(symbol, params = {}) {
198
+ params['callerMethodName'] = 'unWatchMarkPrice';
199
+ return await this.unWatchMarkPrices([symbol], params);
200
+ }
201
+ /**
202
+ * @method
203
+ * @name aster#watchMarkPrices
204
+ * @description watches the mark price for all markets
205
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#mark-price-stream
206
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
207
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
208
+ * @param {boolean} [params.use1sFreq] *default is true* if set to true, the mark price will be updated every second, otherwise every 3 seconds
209
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
210
+ */
211
+ async watchMarkPrices(symbols = undefined, params = {}) {
212
+ await this.loadMarkets();
213
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
214
+ const firstMarket = this.getMarketFromSymbols(symbols);
215
+ const type = this.safeString(firstMarket, 'type', 'swap');
216
+ const symbolsLength = symbols.length;
217
+ let methodName = undefined;
218
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'watchMarkPrices');
219
+ params = this.omit(params, 'callerMethodName');
220
+ if (symbolsLength === 0) {
221
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
222
+ }
223
+ const url = this.urls['api']['ws'][type];
224
+ const subscriptionArgs = [];
225
+ const messageHashes = [];
226
+ const request = {
227
+ 'method': 'SUBSCRIBE',
228
+ 'params': subscriptionArgs,
229
+ };
230
+ const use1sFreq = this.safeBool(params, 'use1sFreq', true);
231
+ for (let i = 0; i < symbols.length; i++) {
232
+ const symbol = symbols[i];
233
+ const market = this.market(symbol);
234
+ const suffix = (use1sFreq) ? '@1s' : '';
235
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@markPrice' + suffix);
236
+ messageHashes.push('ticker:' + market['symbol']);
237
+ }
238
+ const newTicker = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
239
+ if (this.newUpdates) {
240
+ const result = {};
241
+ result[newTicker['symbol']] = newTicker;
242
+ return result;
243
+ }
244
+ return this.filterByArray(this.tickers, 'symbol', symbols);
245
+ }
246
+ /**
247
+ * @method
248
+ * @name aster#unWatchMarkPrices
249
+ * @description watches the mark price for all markets
250
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#mark-price-stream
251
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
252
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
253
+ * @param {boolean} [params.use1sFreq] *default is true* if set to true, the mark price will be updated every second, otherwise every 3 seconds
254
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
255
+ */
256
+ async unWatchMarkPrices(symbols = undefined, params = {}) {
257
+ await this.loadMarkets();
258
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
259
+ const firstMarket = this.getMarketFromSymbols(symbols);
260
+ const type = this.safeString(firstMarket, 'type', 'swap');
261
+ const symbolsLength = symbols.length;
262
+ let methodName = undefined;
263
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'unWatchMarkPrices');
264
+ params = this.omit(params, 'callerMethodName');
265
+ if (symbolsLength === 0) {
266
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
267
+ }
268
+ const url = this.urls['api']['ws'][type];
269
+ const subscriptionArgs = [];
270
+ const messageHashes = [];
271
+ const request = {
272
+ 'method': 'UNSUBSCRIBE',
273
+ 'params': subscriptionArgs,
274
+ };
275
+ const use1sFreq = this.safeBool(params, 'use1sFreq', true);
276
+ for (let i = 0; i < symbols.length; i++) {
277
+ const symbol = symbols[i];
278
+ const market = this.market(symbol);
279
+ const suffix = (use1sFreq) ? '@1s' : '';
280
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@markPrice' + suffix);
281
+ messageHashes.push('unsubscribe:ticker:' + market['symbol']);
282
+ }
283
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
284
+ }
285
+ handleTicker(client, message) {
286
+ //
287
+ // {
288
+ // "stream": "trumpusdt@ticker",
289
+ // "data": {
290
+ // "e": "24hrTicker",
291
+ // "E": 1754451187277,
292
+ // "s": "CAKEUSDT",
293
+ // "p": "-0.08800",
294
+ // "P": "-3.361",
295
+ // "w": "2.58095",
296
+ // "c": "2.53000",
297
+ // "Q": "5",
298
+ // "o": "2.61800",
299
+ // "h": "2.64700",
300
+ // "l": "2.52400",
301
+ // "v": "15775",
302
+ // "q": "40714.46000",
303
+ // "O": 1754364780000,
304
+ // "C": 1754451187274,
305
+ // "F": 6571389,
306
+ // "L": 6574507,
307
+ // "n": 3119
308
+ // }
309
+ // }
310
+ // {
311
+ // "stream": "btcusdt@markPrice",
312
+ // "data": {
313
+ // "e": "markPriceUpdate",
314
+ // "E": 1754660466000,
315
+ // "s": "BTCUSDT",
316
+ // "p": "116809.60000000",
317
+ // "P": "116595.54012838",
318
+ // "i": "116836.93534884",
319
+ // "r": "0.00010000",
320
+ // "T": 1754668800000
321
+ // }
322
+ // }
323
+ //
324
+ const subscriptions = client.subscriptions;
325
+ const subscriptionsKeys = Object.keys(subscriptions);
326
+ const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
327
+ const ticker = this.safeDict(message, 'data');
328
+ const parsed = this.parseWsTicker(ticker, marketType);
329
+ const symbol = parsed['symbol'];
330
+ const messageHash = 'ticker:' + symbol;
331
+ this.tickers[symbol] = parsed;
332
+ client.resolve(this.tickers[symbol], messageHash);
333
+ }
334
+ parseWsTicker(message, marketType) {
335
+ const event = this.safeString(message, 'e');
336
+ const part = event.split('@');
337
+ const channel = this.safeString(part, 1);
338
+ const marketId = this.safeString(message, 's');
339
+ const timestamp = this.safeInteger(message, 'E');
340
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
341
+ const last = this.safeString(message, 'c');
342
+ if (channel === 'markPriceUpdate') {
343
+ return this.safeTicker({
344
+ 'symbol': market['symbol'],
345
+ 'timestamp': timestamp,
346
+ 'datetime': this.iso8601(timestamp),
347
+ 'info': message,
348
+ 'markPrice': this.safeString(message, 'p'),
349
+ 'indexPrice': this.safeString(message, 'i'),
350
+ });
351
+ }
352
+ return this.safeTicker({
353
+ 'symbol': market['symbol'],
354
+ 'timestamp': timestamp,
355
+ 'datetime': this.iso8601(timestamp),
356
+ 'high': this.safeString(message, 'h'),
357
+ 'low': this.safeString(message, 'l'),
358
+ 'bid': undefined,
359
+ 'bidVolume': undefined,
360
+ 'ask': undefined,
361
+ 'askVolume': undefined,
362
+ 'vwap': this.safeString(message, 'w'),
363
+ 'open': this.safeString(message, 'o'),
364
+ 'close': last,
365
+ 'last': last,
366
+ 'previousClose': undefined,
367
+ 'change': this.safeString(message, 'p'),
368
+ 'percentage': this.safeString(message, 'P'),
369
+ 'average': undefined,
370
+ 'baseVolume': this.safeString(message, 'v'),
371
+ 'quoteVolume': this.safeString(message, 'q'),
372
+ 'info': message,
373
+ }, market);
374
+ }
375
+ /**
376
+ * @method
377
+ * @name aster#watchBidsAsks
378
+ * @description watches best bid & ask for symbols
379
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#best-order-book-information-by-symbol
380
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-book-ticker-streams
381
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
382
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
383
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
384
+ */
385
+ async watchBidsAsks(symbols = undefined, params = {}) {
386
+ await this.loadMarkets();
387
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
388
+ const firstMarket = this.getMarketFromSymbols(symbols);
389
+ const type = this.safeString(firstMarket, 'type', 'swap');
390
+ const symbolsLength = symbols.length;
391
+ if (symbolsLength === 0) {
392
+ throw new ArgumentsRequired(this.id + ' watchBidsAsks() requires a non-empty array of symbols');
393
+ }
394
+ const url = this.urls['api']['ws'][type];
395
+ const subscriptionArgs = [];
396
+ const messageHashes = [];
397
+ const request = {
398
+ 'method': 'SUBSCRIBE',
399
+ 'params': subscriptionArgs,
400
+ };
401
+ for (let i = 0; i < symbols.length; i++) {
402
+ const symbol = symbols[i];
403
+ const market = this.market(symbol);
404
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@bookTicker');
405
+ messageHashes.push('bidask:' + market['symbol']);
406
+ }
407
+ const newTicker = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
408
+ if (this.newUpdates) {
409
+ const result = {};
410
+ result[newTicker['symbol']] = newTicker;
411
+ return result;
412
+ }
413
+ return this.filterByArray(this.bidsasks, 'symbol', symbols);
414
+ }
415
+ /**
416
+ * @method
417
+ * @name aster#unWatchBidsAsks
418
+ * @description unWatches best bid & ask for symbols
419
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#best-order-book-information-by-symbol
420
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#individual-symbol-book-ticker-streams
421
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
422
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
423
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
424
+ */
425
+ async unWatchBidsAsks(symbols = undefined, params = {}) {
426
+ await this.loadMarkets();
427
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
428
+ const firstMarket = this.getMarketFromSymbols(symbols);
429
+ const type = this.safeString(firstMarket, 'type', 'swap');
430
+ const symbolsLength = symbols.length;
431
+ if (symbolsLength === 0) {
432
+ throw new ArgumentsRequired(this.id + ' unWatchBidsAsks() requires a non-empty array of symbols');
433
+ }
434
+ const url = this.urls['api']['ws'][type];
435
+ const subscriptionArgs = [];
436
+ const messageHashes = [];
437
+ const request = {
438
+ 'method': 'UNSUBSCRIBE',
439
+ 'params': subscriptionArgs,
440
+ };
441
+ for (let i = 0; i < symbols.length; i++) {
442
+ const symbol = symbols[i];
443
+ const market = this.market(symbol);
444
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@bookTicker');
445
+ messageHashes.push('unsubscribe:bidask:' + market['symbol']);
446
+ }
447
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
448
+ }
449
+ handleBidAsk(client, message) {
450
+ //
451
+ // {
452
+ // "stream": "btcusdt@bookTicker",
453
+ // "data": {
454
+ // "e": "bookTicker",
455
+ // "u": 157240846459,
456
+ // "s": "BTCUSDT",
457
+ // "b": "122046.7",
458
+ // "B": "1.084",
459
+ // "a": "122046.8",
460
+ // "A": "0.001",
461
+ // "T": 1754896692922,
462
+ // "E": 1754896692926
463
+ // }
464
+ // }
465
+ //
466
+ const subscriptions = client.subscriptions;
467
+ const subscriptionsKeys = Object.keys(subscriptions);
468
+ const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
469
+ const data = this.safeDict(message, 'data', {});
470
+ const marketId = this.safeString(data, 's');
471
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
472
+ const ticker = this.parseWsBidAsk(data, market);
473
+ const symbol = ticker['symbol'];
474
+ this.bidsasks[symbol] = ticker;
475
+ const messageHash = 'bidask:' + symbol;
476
+ client.resolve(ticker, messageHash);
477
+ }
478
+ parseWsBidAsk(message, market = undefined) {
479
+ const timestamp = this.safeInteger(message, 'T');
480
+ return this.safeTicker({
481
+ 'symbol': market['symbol'],
482
+ 'timestamp': timestamp,
483
+ 'datetime': this.iso8601(timestamp),
484
+ 'ask': this.safeString(message, 'a'),
485
+ 'askVolume': this.safeString(message, 'A'),
486
+ 'bid': this.safeString(message, 'b'),
487
+ 'bidVolume': this.safeString(message, 'B'),
488
+ 'info': message,
489
+ }, market);
490
+ }
491
+ /**
492
+ * @method
493
+ * @name aster#watchTrades
494
+ * @description watches information on multiple trades made in a market
495
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#collection-transaction-flow
496
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#aggregate-trade-streams
497
+ * @param {string} symbol unified market symbol of the market trades were made in
498
+ * @param {int} [since] the earliest time in ms to fetch trades for
499
+ * @param {int} [limit] the maximum number of trade structures to retrieve
500
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
501
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
502
+ */
503
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
504
+ params['callerMethodName'] = 'watchTrades';
505
+ return await this.watchTradesForSymbols([symbol], since, limit, params);
506
+ }
507
+ /**
508
+ * @method
509
+ * @name aster#unWatchTrades
510
+ * @description unsubscribe from the trades channel
511
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#collection-transaction-flow
512
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#aggregate-trade-streams
513
+ * @param {string} symbol unified market symbol of the market trades were made in
514
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
515
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
516
+ */
517
+ async unWatchTrades(symbol, params = {}) {
518
+ params['callerMethodName'] = 'unWatchTrades';
519
+ return await this.unWatchTradesForSymbols([symbol], params);
520
+ }
521
+ /**
522
+ * @method
523
+ * @name aster#watchTradesForSymbols
524
+ * @description get the list of most recent trades for a list of symbols
525
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#collection-transaction-flow
526
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#aggregate-trade-streams
527
+ * @param {string[]} symbols unified symbol of the market to fetch trades for
528
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
529
+ * @param {int} [limit] the maximum amount of trades to fetch
530
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
531
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
532
+ */
533
+ async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
534
+ await this.loadMarkets();
535
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
536
+ const firstMarket = this.getMarketFromSymbols(symbols);
537
+ const type = this.safeString(firstMarket, 'type', 'swap');
538
+ const symbolsLength = symbols.length;
539
+ let methodName = undefined;
540
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'watchTradesForSymbols');
541
+ params = this.omit(params, 'callerMethodName');
542
+ if (symbolsLength === 0) {
543
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
544
+ }
545
+ const url = this.urls['api']['ws'][type];
546
+ const subscriptionArgs = [];
547
+ const messageHashes = [];
548
+ const request = {
549
+ 'method': 'SUBSCRIBE',
550
+ 'params': subscriptionArgs,
551
+ };
552
+ for (let i = 0; i < symbols.length; i++) {
553
+ const symbol = symbols[i];
554
+ const market = this.market(symbol);
555
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@aggTrade');
556
+ messageHashes.push('trade:' + market['symbol']);
557
+ }
558
+ const trades = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
559
+ if (this.newUpdates) {
560
+ const first = this.safeValue(trades, 0);
561
+ const tradeSymbol = this.safeString(first, 'symbol');
562
+ limit = trades.getLimit(tradeSymbol, limit);
563
+ }
564
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
565
+ }
566
+ /**
567
+ * @method
568
+ * @name aster#unWatchTradesForSymbols
569
+ * @description unsubscribe from the trades channel
570
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#collection-transaction-flow
571
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#aggregate-trade-streams
572
+ * @param {string[]} symbols unified symbol of the market to fetch trades for
573
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
574
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
575
+ */
576
+ async unWatchTradesForSymbols(symbols, params = {}) {
577
+ await this.loadMarkets();
578
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
579
+ const firstMarket = this.getMarketFromSymbols(symbols);
580
+ const type = this.safeString(firstMarket, 'type', 'swap');
581
+ const symbolsLength = symbols.length;
582
+ let methodName = undefined;
583
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'unWatchTradesForSymbols');
584
+ params = this.omit(params, 'callerMethodName');
585
+ if (symbolsLength === 0) {
586
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
587
+ }
588
+ const url = this.urls['api']['ws'][type];
589
+ const subscriptionArgs = [];
590
+ const messageHashes = [];
591
+ const request = {
592
+ 'method': 'UNSUBSCRIBE',
593
+ 'params': subscriptionArgs,
594
+ };
595
+ for (let i = 0; i < symbols.length; i++) {
596
+ const symbol = symbols[i];
597
+ const market = this.market(symbol);
598
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@aggTrade');
599
+ messageHashes.push('unsubscribe:trade:' + market['symbol']);
600
+ }
601
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
602
+ }
603
+ handleTrade(client, message) {
604
+ //
605
+ // {
606
+ // "stream": "btcusdt@aggTrade",
607
+ // "data": {
608
+ // "e": "aggTrade",
609
+ // "E": 1754551358681,
610
+ // "a": 20505890,
611
+ // "s": "BTCUSDT",
612
+ // "p": "114783.7",
613
+ // "q": "0.020",
614
+ // "f": 26024678,
615
+ // "l": 26024682,
616
+ // "T": 1754551358528,
617
+ // "m": false
618
+ // }
619
+ // }
620
+ //
621
+ const subscriptions = client.subscriptions;
622
+ const subscriptionsKeys = Object.keys(subscriptions);
623
+ const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
624
+ const trade = this.safeDict(message, 'data');
625
+ const marketId = this.safeString(trade, 's');
626
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
627
+ const parsed = this.parseWsTrade(trade, market);
628
+ const symbol = parsed['symbol'];
629
+ let stored = this.safeValue(this.trades, symbol);
630
+ if (stored === undefined) {
631
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
632
+ stored = new ArrayCache(limit);
633
+ this.trades[symbol] = stored;
634
+ }
635
+ stored.append(parsed);
636
+ const messageHash = 'trade' + ':' + symbol;
637
+ client.resolve(stored, messageHash);
638
+ }
639
+ parseWsTrade(trade, market = undefined) {
640
+ const timestamp = this.safeInteger(trade, 'T');
641
+ const symbol = market['symbol'];
642
+ const amountString = this.safeString(trade, 'q');
643
+ const priceString = this.safeString(trade, 'p');
644
+ const isMaker = this.safeBool(trade, 'm');
645
+ let takerOrMaker = undefined;
646
+ if (isMaker !== undefined) {
647
+ takerOrMaker = isMaker ? 'maker' : 'taker';
648
+ }
649
+ return this.safeTrade({
650
+ 'id': this.safeString(trade, 'a'),
651
+ 'info': trade,
652
+ 'timestamp': timestamp,
653
+ 'datetime': this.iso8601(timestamp),
654
+ 'symbol': symbol,
655
+ 'order': undefined,
656
+ 'type': undefined,
657
+ 'side': undefined,
658
+ 'takerOrMaker': takerOrMaker,
659
+ 'price': priceString,
660
+ 'amount': amountString,
661
+ 'cost': undefined,
662
+ 'fee': undefined,
663
+ }, market);
664
+ }
665
+ /**
666
+ * @method
667
+ * @name aster#watchOrderBook
668
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
669
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#limited-depth-information
670
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#partial-book-depth-streams
671
+ * @param {string} symbol unified symbol of the market to fetch the order book for
672
+ * @param {int} [limit] the maximum amount of order book entries to return.
673
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
674
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
675
+ */
676
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
677
+ params['callerMethodName'] = 'watchOrderBook';
678
+ return await this.watchOrderBookForSymbols([symbol], limit, params);
679
+ }
680
+ /**
681
+ * @method
682
+ * @name aster#unWatchOrderBook
683
+ * @description unsubscribe from the orderbook channel
684
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#limited-depth-information
685
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#partial-book-depth-streams
686
+ * @param {string} symbol symbol of the market to unwatch the trades for
687
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
688
+ * @param {int} [params.limit] orderbook limit, default is undefined
689
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
690
+ */
691
+ async unWatchOrderBook(symbol, params = {}) {
692
+ params['callerMethodName'] = 'unWatchOrderBook';
693
+ return await this.unWatchOrderBookForSymbols([symbol], params);
694
+ }
695
+ /**
696
+ * @method
697
+ * @name aster#watchOrderBookForSymbols
698
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
699
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#limited-depth-information
700
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#partial-book-depth-streams
701
+ * @param {string[]} symbols unified array of symbols
702
+ * @param {int} [limit] the maximum amount of order book entries to return.
703
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
704
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
705
+ */
706
+ async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
707
+ await this.loadMarkets();
708
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
709
+ const firstMarket = this.getMarketFromSymbols(symbols);
710
+ const type = this.safeString(firstMarket, 'type', 'swap');
711
+ const symbolsLength = symbols.length;
712
+ let methodName = undefined;
713
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'watchOrderBookForSymbols');
714
+ params = this.omit(params, 'callerMethodName');
715
+ if (symbolsLength === 0) {
716
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
717
+ }
718
+ const url = this.urls['api']['ws'][type];
719
+ const subscriptionArgs = [];
720
+ const messageHashes = [];
721
+ const request = {
722
+ 'method': 'SUBSCRIBE',
723
+ 'params': subscriptionArgs,
724
+ };
725
+ if (limit === undefined || (limit !== 5 && limit !== 10 && limit !== 20)) {
726
+ limit = 20;
727
+ }
728
+ for (let i = 0; i < symbols.length; i++) {
729
+ const symbol = symbols[i];
730
+ const market = this.market(symbol);
731
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@depth' + limit.toString());
732
+ messageHashes.push('orderbook:' + market['symbol']);
733
+ }
734
+ const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
735
+ return orderbook.limit();
736
+ }
737
+ /**
738
+ * @method
739
+ * @name aster#unWatchOrderBookForSymbols
740
+ * @description unsubscribe from the orderbook channel
741
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#limited-depth-information
742
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#partial-book-depth-streams
743
+ * @param {string[]} symbols unified symbol of the market to unwatch the trades for
744
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
745
+ * @param {int} [params.limit] orderbook limit, default is undefined
746
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
747
+ */
748
+ async unWatchOrderBookForSymbols(symbols, params = {}) {
749
+ await this.loadMarkets();
750
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
751
+ const firstMarket = this.getMarketFromSymbols(symbols);
752
+ const type = this.safeString(firstMarket, 'type', 'swap');
753
+ const symbolsLength = symbols.length;
754
+ let methodName = undefined;
755
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'unWatchOrderBookForSymbols');
756
+ params = this.omit(params, 'callerMethodName');
757
+ if (symbolsLength === 0) {
758
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
759
+ }
760
+ const url = this.urls['api']['ws'][type];
761
+ const subscriptionArgs = [];
762
+ const messageHashes = [];
763
+ const request = {
764
+ 'method': 'UNSUBSCRIBE',
765
+ 'params': subscriptionArgs,
766
+ };
767
+ let limit = this.safeNumber(params, 'limit');
768
+ params = this.omit(params, 'limit');
769
+ if (limit === undefined || (limit !== 5 && limit !== 10 && limit !== 20)) {
770
+ limit = 20;
771
+ }
772
+ for (let i = 0; i < symbols.length; i++) {
773
+ const symbol = symbols[i];
774
+ const market = this.market(symbol);
775
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@depth' + limit);
776
+ messageHashes.push('unsubscribe:orderbook:' + market['symbol']);
777
+ }
778
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
779
+ }
780
+ handleOrderBook(client, message) {
781
+ //
782
+ // {
783
+ // "stream": "btcusdt@depth20",
784
+ // "data": {
785
+ // "e": "depthUpdate",
786
+ // "E": 1754556878284,
787
+ // "T": 1754556878031,
788
+ // "s": "BTCUSDT",
789
+ // "U": 156391349814,
790
+ // "u": 156391349814,
791
+ // "pu": 156391348236,
792
+ // "b": [
793
+ // [
794
+ // "114988.3",
795
+ // "0.147"
796
+ // ]
797
+ // ],
798
+ // "a": [
799
+ // [
800
+ // "114988.4",
801
+ // "1.060"
802
+ // ]
803
+ // ]
804
+ // }
805
+ // }
806
+ //
807
+ const subscriptions = client.subscriptions;
808
+ const subscriptionsKeys = Object.keys(subscriptions);
809
+ const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
810
+ const data = this.safeDict(message, 'data');
811
+ const marketId = this.safeString(data, 's');
812
+ const timestamp = this.safeInteger(data, 'T');
813
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
814
+ const symbol = market['symbol'];
815
+ if (!(symbol in this.orderbooks)) {
816
+ this.orderbooks[symbol] = this.orderBook();
817
+ }
818
+ const orderbook = this.orderbooks[symbol];
819
+ const snapshot = this.parseOrderBook(data, symbol, timestamp, 'b', 'a');
820
+ orderbook.reset(snapshot);
821
+ const messageHash = 'orderbook' + ':' + symbol;
822
+ this.orderbooks[symbol] = orderbook;
823
+ client.resolve(orderbook, messageHash);
824
+ }
825
+ /**
826
+ * @method
827
+ * @name aster#watchOHLCV
828
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
829
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#k-line-streams
830
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#klinecandlestick-streams
831
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
832
+ * @param {string} timeframe the length of time each candle represents
833
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
834
+ * @param {int} [limit] the maximum amount of candles to fetch
835
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
836
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
837
+ */
838
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
839
+ params['callerMethodName'] = 'watchOHLCV';
840
+ await this.loadMarkets();
841
+ symbol = this.safeSymbol(symbol);
842
+ const result = await this.watchOHLCVForSymbols([[symbol, timeframe]], since, limit, params);
843
+ return result[symbol][timeframe];
844
+ }
845
+ /**
846
+ * @method
847
+ * @name aster#unWatchOHLCV
848
+ * @description unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
849
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#k-line-streams
850
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#klinecandlestick-streams
851
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
852
+ * @param {string} timeframe the length of time each candle represents
853
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
854
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
855
+ */
856
+ async unWatchOHLCV(symbol, timeframe = '1m', params = {}) {
857
+ params['callerMethodName'] = 'unWatchOHLCV';
858
+ return await this.unWatchOHLCVForSymbols([[symbol, timeframe]], params);
859
+ }
860
+ /**
861
+ * @method
862
+ * @name aster#watchOHLCVForSymbols
863
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
864
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#k-line-streams
865
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#klinecandlestick-streams
866
+ * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
867
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
868
+ * @param {int} [limit] the maximum amount of candles to fetch
869
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
870
+ * @returns {object} A list of candles ordered as timestamp, open, high, low, close, volume
871
+ */
872
+ async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
873
+ await this.loadMarkets();
874
+ const symbolsLength = symbolsAndTimeframes.length;
875
+ let methodName = undefined;
876
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'watchOHLCVForSymbols');
877
+ params = this.omit(params, 'callerMethodName');
878
+ if (symbolsLength === 0) {
879
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
880
+ }
881
+ const symbols = this.getListFromObjectValues(symbolsAndTimeframes, 0);
882
+ const marketSymbols = this.marketSymbols(symbols, undefined, false, true, true);
883
+ const firstMarket = this.market(marketSymbols[0]);
884
+ const type = this.safeString(firstMarket, 'type', 'swap');
885
+ const url = this.urls['api']['ws'][type];
886
+ const subscriptionArgs = [];
887
+ const messageHashes = [];
888
+ const request = {
889
+ 'method': 'SUBSCRIBE',
890
+ 'params': subscriptionArgs,
891
+ };
892
+ for (let i = 0; i < symbolsAndTimeframes.length; i++) {
893
+ const data = symbolsAndTimeframes[i];
894
+ let symbolString = this.safeString(data, 0);
895
+ const market = this.market(symbolString);
896
+ symbolString = market['symbol'];
897
+ const unfiedTimeframe = this.safeString(data, 1);
898
+ const timeframeId = this.safeString(this.timeframes, unfiedTimeframe, unfiedTimeframe);
899
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@kline_' + timeframeId);
900
+ messageHashes.push('ohlcv:' + market['symbol'] + ':' + unfiedTimeframe);
901
+ }
902
+ const [symbol, timeframe, stored] = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
903
+ if (this.newUpdates) {
904
+ limit = stored.getLimit(symbol, limit);
905
+ }
906
+ const filtered = this.filterBySinceLimit(stored, since, limit, 0, true);
907
+ return this.createOHLCVObject(symbol, timeframe, filtered);
908
+ }
909
+ /**
910
+ * @method
911
+ * @name aster#unWatchOHLCVForSymbols
912
+ * @description unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
913
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#k-line-streams
914
+ * @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#klinecandlestick-streams
915
+ * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
916
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
917
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
918
+ */
919
+ async unWatchOHLCVForSymbols(symbolsAndTimeframes, params = {}) {
920
+ await this.loadMarkets();
921
+ const symbolsLength = symbolsAndTimeframes.length;
922
+ let methodName = undefined;
923
+ [methodName, params] = this.handleParamString(params, 'callerMethodName', 'unWatchOHLCVForSymbols');
924
+ params = this.omit(params, 'callerMethodName');
925
+ if (symbolsLength === 0) {
926
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
927
+ }
928
+ const symbols = this.getListFromObjectValues(symbolsAndTimeframes, 0);
929
+ const marketSymbols = this.marketSymbols(symbols, undefined, false, true, true);
930
+ const firstMarket = this.market(marketSymbols[0]);
931
+ const type = this.safeString(firstMarket, 'type', 'swap');
932
+ const url = this.urls['api']['ws'][type];
933
+ const subscriptionArgs = [];
934
+ const messageHashes = [];
935
+ const request = {
936
+ 'method': 'UNSUBSCRIBE',
937
+ 'params': subscriptionArgs,
938
+ };
939
+ for (let i = 0; i < symbolsAndTimeframes.length; i++) {
940
+ const data = symbolsAndTimeframes[i];
941
+ let symbolString = this.safeString(data, 0);
942
+ const market = this.market(symbolString);
943
+ symbolString = market['symbol'];
944
+ const unfiedTimeframe = this.safeString(data, 1);
945
+ const timeframeId = this.safeString(this.timeframes, unfiedTimeframe, unfiedTimeframe);
946
+ subscriptionArgs.push(this.safeStringLower(market, 'id') + '@kline_' + timeframeId);
947
+ messageHashes.push('unsubscribe:ohlcv:' + market['symbol'] + ':' + unfiedTimeframe);
948
+ }
949
+ return await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
950
+ }
951
+ handleOHLCV(client, message) {
952
+ //
953
+ // {
954
+ // "stream": "btcusdt@kline_1m",
955
+ // "data": {
956
+ // "e": "kline",
957
+ // "E": 1754655777119,
958
+ // "s": "BTCUSDT",
959
+ // "k": {
960
+ // "t": 1754655720000,
961
+ // "T": 1754655779999,
962
+ // "s": "BTCUSDT",
963
+ // "i": "1m",
964
+ // "f": 26032629,
965
+ // "L": 26032629,
966
+ // "o": "116546.9",
967
+ // "c": "116546.9",
968
+ // "h": "116546.9",
969
+ // "l": "116546.9",
970
+ // "v": "0.011",
971
+ // "n": 1,
972
+ // "x": false,
973
+ // "q": "1282.0159",
974
+ // "V": "0.000",
975
+ // "Q": "0.0000",
976
+ // "B": "0"
977
+ // }
978
+ // }
979
+ // }
980
+ //
981
+ const subscriptions = client.subscriptions;
982
+ const subscriptionsKeys = Object.keys(subscriptions);
983
+ const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
984
+ const data = this.safeDict(message, 'data');
985
+ const marketId = this.safeString(data, 's');
986
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
987
+ const symbol = market['symbol'];
988
+ const kline = this.safeDict(data, 'k');
989
+ const timeframeId = this.safeString(kline, 'i');
990
+ const timeframe = this.findTimeframe(timeframeId);
991
+ const ohlcvsByTimeframe = this.safeValue(this.ohlcvs, symbol);
992
+ if (ohlcvsByTimeframe === undefined) {
993
+ this.ohlcvs[symbol] = {};
994
+ }
995
+ if (this.safeValue(ohlcvsByTimeframe, timeframe) === undefined) {
996
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
997
+ this.ohlcvs[symbol][timeframe] = new ArrayCacheByTimestamp(limit);
998
+ }
999
+ const stored = this.ohlcvs[symbol][timeframe];
1000
+ const parsed = this.parseWsOHLCV(kline);
1001
+ stored.append(parsed);
1002
+ const messageHash = 'ohlcv:' + symbol + ':' + timeframe;
1003
+ const resolveData = [symbol, timeframe, stored];
1004
+ client.resolve(resolveData, messageHash);
1005
+ }
1006
+ parseWsOHLCV(ohlcv, market = undefined) {
1007
+ return [
1008
+ this.safeInteger(ohlcv, 't'),
1009
+ this.safeNumber(ohlcv, 'o'),
1010
+ this.safeNumber(ohlcv, 'h'),
1011
+ this.safeNumber(ohlcv, 'l'),
1012
+ this.safeNumber(ohlcv, 'c'),
1013
+ this.safeNumber(ohlcv, 'v'),
1014
+ ];
1015
+ }
1016
+ handleMessage(client, message) {
1017
+ const stream = this.safeString(message, 'stream');
1018
+ if (stream !== undefined) {
1019
+ const part = stream.split('@');
1020
+ let topic = this.safeString(part, 1, '');
1021
+ const part2 = topic.split('_');
1022
+ topic = this.safeString(part2, 0, '');
1023
+ const methods = {
1024
+ 'ticker': this.handleTicker,
1025
+ 'aggTrade': this.handleTrade,
1026
+ 'depth5': this.handleOrderBook,
1027
+ 'depth10': this.handleOrderBook,
1028
+ 'depth20': this.handleOrderBook,
1029
+ 'kline': this.handleOHLCV,
1030
+ 'markPrice': this.handleTicker,
1031
+ 'bookTicker': this.handleBidAsk,
1032
+ };
1033
+ const method = this.safeValue(methods, topic);
1034
+ if (method !== undefined) {
1035
+ method.call(this, client, message);
1036
+ }
1037
+ }
1038
+ }
1039
+ }