ccxt 4.4.99 → 4.4.100

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 (426) hide show
  1. package/README.md +4 -4
  2. package/dist/373.ccxt.browser.js +7630 -0
  3. package/dist/373.ccxt.browser.min.js +1 -0
  4. package/dist/ccxt.browser.min.js +8 -8
  5. package/dist/cjs/ccxt.js +288 -288
  6. package/dist/cjs/src/abstract/alpaca.js +3 -1
  7. package/dist/cjs/src/abstract/apex.js +3 -1
  8. package/dist/cjs/src/abstract/ascendex.js +3 -1
  9. package/dist/cjs/src/abstract/bigone.js +3 -1
  10. package/dist/cjs/src/abstract/binance.js +3 -1
  11. package/dist/cjs/src/abstract/bingx.js +3 -1
  12. package/dist/cjs/src/abstract/bit2c.js +3 -1
  13. package/dist/cjs/src/abstract/bitbank.js +3 -1
  14. package/dist/cjs/src/abstract/bitbns.js +3 -1
  15. package/dist/cjs/src/abstract/bitfinex.js +3 -1
  16. package/dist/cjs/src/abstract/bitflyer.js +3 -1
  17. package/dist/cjs/src/abstract/bitget.js +3 -1
  18. package/dist/cjs/src/abstract/bithumb.js +3 -1
  19. package/dist/cjs/src/abstract/bitmart.js +3 -1
  20. package/dist/cjs/src/abstract/bitmex.js +3 -1
  21. package/dist/cjs/src/abstract/bitopro.js +3 -1
  22. package/dist/cjs/src/abstract/bitrue.js +3 -1
  23. package/dist/cjs/src/abstract/bitso.js +3 -1
  24. package/dist/cjs/src/abstract/bitstamp.js +3 -1
  25. package/dist/cjs/src/abstract/bitteam.js +3 -1
  26. package/dist/cjs/src/abstract/bittrade.js +3 -1
  27. package/dist/cjs/src/abstract/bitvavo.js +3 -1
  28. package/dist/cjs/src/abstract/blockchaincom.js +3 -1
  29. package/dist/cjs/src/abstract/blofin.js +3 -1
  30. package/dist/cjs/src/abstract/btcalpha.js +3 -1
  31. package/dist/cjs/src/abstract/btcbox.js +3 -1
  32. package/dist/cjs/src/abstract/btcmarkets.js +3 -1
  33. package/dist/cjs/src/abstract/btcturk.js +3 -1
  34. package/dist/cjs/src/abstract/bybit.js +3 -1
  35. package/dist/cjs/src/abstract/cex.js +3 -1
  36. package/dist/cjs/src/abstract/coinbase.js +3 -1
  37. package/dist/cjs/src/abstract/coinbaseexchange.js +3 -1
  38. package/dist/cjs/src/abstract/coinbaseinternational.js +3 -1
  39. package/dist/cjs/src/abstract/coincatch.js +3 -1
  40. package/dist/cjs/src/abstract/coincheck.js +3 -1
  41. package/dist/cjs/src/abstract/coinex.js +3 -1
  42. package/dist/cjs/src/abstract/coinmate.js +3 -1
  43. package/dist/cjs/src/abstract/coinmetro.js +3 -1
  44. package/dist/cjs/src/abstract/coinone.js +3 -1
  45. package/dist/cjs/src/abstract/coinsph.js +3 -1
  46. package/dist/cjs/src/abstract/coinspot.js +3 -1
  47. package/dist/cjs/src/abstract/cryptocom.js +3 -1
  48. package/dist/cjs/src/abstract/cryptomus.js +3 -1
  49. package/dist/cjs/src/abstract/defx.js +3 -1
  50. package/dist/cjs/src/abstract/delta.js +3 -1
  51. package/dist/cjs/src/abstract/deribit.js +3 -1
  52. package/dist/cjs/src/abstract/derive.js +3 -1
  53. package/dist/cjs/src/abstract/digifinex.js +3 -1
  54. package/dist/cjs/src/abstract/ellipx.js +3 -1
  55. package/dist/cjs/src/abstract/exmo.js +3 -1
  56. package/dist/cjs/src/abstract/foxbit.js +3 -1
  57. package/dist/cjs/src/abstract/gate.js +3 -1
  58. package/dist/cjs/src/abstract/gemini.js +3 -1
  59. package/dist/cjs/src/abstract/hashkey.js +3 -1
  60. package/dist/cjs/src/abstract/hibachi.js +3 -1
  61. package/dist/cjs/src/abstract/hitbtc.js +3 -1
  62. package/dist/cjs/src/abstract/hollaex.js +3 -1
  63. package/dist/cjs/src/abstract/htx.js +3 -1
  64. package/dist/cjs/src/abstract/hyperliquid.js +3 -1
  65. package/dist/cjs/src/abstract/independentreserve.js +3 -1
  66. package/dist/cjs/src/abstract/indodax.js +3 -1
  67. package/dist/cjs/src/abstract/kraken.js +3 -1
  68. package/dist/cjs/src/abstract/krakenfutures.js +3 -1
  69. package/dist/cjs/src/abstract/kucoin.js +3 -1
  70. package/dist/cjs/src/abstract/kucoinfutures.js +4 -2
  71. package/dist/cjs/src/abstract/latoken.js +3 -1
  72. package/dist/cjs/src/abstract/lbank.js +3 -1
  73. package/dist/cjs/src/abstract/luno.js +3 -1
  74. package/dist/cjs/src/abstract/mercado.js +3 -1
  75. package/dist/cjs/src/abstract/mexc.js +3 -1
  76. package/dist/cjs/src/abstract/modetrade.js +3 -1
  77. package/dist/cjs/src/abstract/ndax.js +3 -1
  78. package/dist/cjs/src/abstract/novadax.js +3 -1
  79. package/dist/cjs/src/abstract/oceanex.js +3 -1
  80. package/dist/cjs/src/abstract/okcoin.js +3 -1
  81. package/dist/cjs/src/abstract/okx.js +3 -1
  82. package/dist/cjs/src/abstract/onetrading.js +3 -1
  83. package/dist/cjs/src/abstract/oxfun.js +3 -1
  84. package/dist/cjs/src/abstract/p2b.js +3 -1
  85. package/dist/cjs/src/abstract/paradex.js +3 -1
  86. package/dist/cjs/src/abstract/paymium.js +3 -1
  87. package/dist/cjs/src/abstract/phemex.js +3 -1
  88. package/dist/cjs/src/abstract/poloniex.js +3 -1
  89. package/dist/cjs/src/abstract/probit.js +3 -1
  90. package/dist/cjs/src/abstract/timex.js +3 -1
  91. package/dist/cjs/src/abstract/tokocrypto.js +3 -1
  92. package/dist/cjs/src/abstract/tradeogre.js +3 -1
  93. package/dist/cjs/src/abstract/upbit.js +3 -1
  94. package/dist/cjs/src/abstract/vertex.js +3 -1
  95. package/dist/cjs/src/abstract/wavesexchange.js +3 -1
  96. package/dist/cjs/src/abstract/whitebit.js +3 -1
  97. package/dist/cjs/src/abstract/woo.js +3 -1
  98. package/dist/cjs/src/abstract/woofipro.js +3 -1
  99. package/dist/cjs/src/abstract/xt.js +3 -1
  100. package/dist/cjs/src/abstract/yobit.js +3 -1
  101. package/dist/cjs/src/abstract/zaif.js +3 -1
  102. package/dist/cjs/src/abstract/zonda.js +3 -1
  103. package/dist/cjs/src/alpaca.js +4 -2
  104. package/dist/cjs/src/apex.js +4 -2
  105. package/dist/cjs/src/ascendex.js +4 -2
  106. package/dist/cjs/src/base/Exchange.js +51 -11
  107. package/dist/cjs/src/base/functions/encode.js +2 -2
  108. package/dist/cjs/src/base/ws/Client.js +8 -2
  109. package/dist/cjs/src/base/ws/WsClient.js +4 -2
  110. package/dist/cjs/src/bequant.js +4 -2
  111. package/dist/cjs/src/bigone.js +4 -2
  112. package/dist/cjs/src/binance.js +5 -2
  113. package/dist/cjs/src/binancecoinm.js +4 -2
  114. package/dist/cjs/src/binanceus.js +4 -2
  115. package/dist/cjs/src/binanceusdm.js +4 -2
  116. package/dist/cjs/src/bingx.js +36 -4
  117. package/dist/cjs/src/bit2c.js +4 -2
  118. package/dist/cjs/src/bitbank.js +4 -2
  119. package/dist/cjs/src/bitbns.js +4 -2
  120. package/dist/cjs/src/bitfinex.js +7 -2
  121. package/dist/cjs/src/bitflyer.js +4 -2
  122. package/dist/cjs/src/bitget.js +42 -16
  123. package/dist/cjs/src/bithumb.js +4 -2
  124. package/dist/cjs/src/bitmart.js +4 -2
  125. package/dist/cjs/src/bitmex.js +5 -2
  126. package/dist/cjs/src/bitopro.js +4 -2
  127. package/dist/cjs/src/bitrue.js +4 -2
  128. package/dist/cjs/src/bitso.js +4 -2
  129. package/dist/cjs/src/bitstamp.js +4 -2
  130. package/dist/cjs/src/bitteam.js +4 -2
  131. package/dist/cjs/src/bittrade.js +4 -2
  132. package/dist/cjs/src/bitvavo.js +4 -2
  133. package/dist/cjs/src/blockchaincom.js +4 -2
  134. package/dist/cjs/src/blofin.js +4 -2
  135. package/dist/cjs/src/btcalpha.js +4 -2
  136. package/dist/cjs/src/btcbox.js +4 -2
  137. package/dist/cjs/src/btcmarkets.js +4 -2
  138. package/dist/cjs/src/btcturk.js +4 -2
  139. package/dist/cjs/src/bybit.js +4 -2
  140. package/dist/cjs/src/cex.js +4 -2
  141. package/dist/cjs/src/coinbase.js +4 -2
  142. package/dist/cjs/src/coinbaseadvanced.js +4 -2
  143. package/dist/cjs/src/coinbaseexchange.js +4 -2
  144. package/dist/cjs/src/coinbaseinternational.js +4 -2
  145. package/dist/cjs/src/coincatch.js +4 -2
  146. package/dist/cjs/src/coincheck.js +4 -2
  147. package/dist/cjs/src/coinex.js +5 -3
  148. package/dist/cjs/src/coinmate.js +4 -2
  149. package/dist/cjs/src/coinmetro.js +4 -2
  150. package/dist/cjs/src/coinone.js +4 -2
  151. package/dist/cjs/src/coinsph.js +4 -2
  152. package/dist/cjs/src/coinspot.js +4 -2
  153. package/dist/cjs/src/cryptocom.js +4 -2
  154. package/dist/cjs/src/cryptomus.js +4 -2
  155. package/dist/cjs/src/defx.js +4 -2
  156. package/dist/cjs/src/delta.js +4 -2
  157. package/dist/cjs/src/deribit.js +4 -2
  158. package/dist/cjs/src/derive.js +4 -2
  159. package/dist/cjs/src/digifinex.js +4 -2
  160. package/dist/cjs/src/ellipx.js +4 -2
  161. package/dist/cjs/src/exmo.js +4 -2
  162. package/dist/cjs/src/fmfwio.js +4 -2
  163. package/dist/cjs/src/foxbit.js +7 -6
  164. package/dist/cjs/src/gate.js +25 -2
  165. package/dist/cjs/src/gateio.js +4 -2
  166. package/dist/cjs/src/gemini.js +4 -2
  167. package/dist/cjs/src/hashkey.js +4 -2
  168. package/dist/cjs/src/hibachi.js +4 -2
  169. package/dist/cjs/src/hitbtc.js +4 -2
  170. package/dist/cjs/src/hollaex.js +4 -2
  171. package/dist/cjs/src/htx.js +5 -2
  172. package/dist/cjs/src/huobi.js +4 -2
  173. package/dist/cjs/src/hyperliquid.js +83 -30
  174. package/dist/cjs/src/independentreserve.js +4 -2
  175. package/dist/cjs/src/indodax.js +4 -2
  176. package/dist/cjs/src/kraken.js +4 -2
  177. package/dist/cjs/src/krakenfutures.js +5 -2
  178. package/dist/cjs/src/kucoin.js +4 -2
  179. package/dist/cjs/src/kucoinfutures.js +5 -2
  180. package/dist/cjs/src/latoken.js +4 -2
  181. package/dist/cjs/src/lbank.js +5 -3
  182. package/dist/cjs/src/luno.js +4 -2
  183. package/dist/cjs/src/mercado.js +4 -2
  184. package/dist/cjs/src/mexc.js +11 -2
  185. package/dist/cjs/src/modetrade.js +100 -2
  186. package/dist/cjs/src/myokx.js +4 -2
  187. package/dist/cjs/src/ndax.js +4 -2
  188. package/dist/cjs/src/novadax.js +4 -2
  189. package/dist/cjs/src/oceanex.js +4 -2
  190. package/dist/cjs/src/okcoin.js +4 -2
  191. package/dist/cjs/src/okx.js +4 -2
  192. package/dist/cjs/src/okxus.js +4 -2
  193. package/dist/cjs/src/onetrading.js +37 -2
  194. package/dist/cjs/src/oxfun.js +4 -2
  195. package/dist/cjs/src/p2b.js +36 -2
  196. package/dist/cjs/src/paradex.js +5 -2
  197. package/dist/cjs/src/paymium.js +4 -2
  198. package/dist/cjs/src/phemex.js +4 -2
  199. package/dist/cjs/src/poloniex.js +4 -2
  200. package/dist/cjs/src/pro/alpaca.js +4 -2
  201. package/dist/cjs/src/pro/apex.js +4 -2
  202. package/dist/cjs/src/pro/ascendex.js +4 -2
  203. package/dist/cjs/src/pro/bequant.js +5 -3
  204. package/dist/cjs/src/pro/binance.js +6 -3
  205. package/dist/cjs/src/pro/binancecoinm.js +5 -3
  206. package/dist/cjs/src/pro/binanceus.js +5 -3
  207. package/dist/cjs/src/pro/binanceusdm.js +4 -2
  208. package/dist/cjs/src/pro/bingx.js +4 -2
  209. package/dist/cjs/src/pro/bitfinex.js +4 -2
  210. package/dist/cjs/src/pro/bitget.js +4 -2
  211. package/dist/cjs/src/pro/bithumb.js +4 -2
  212. package/dist/cjs/src/pro/bitmart.js +4 -2
  213. package/dist/cjs/src/pro/bitmex.js +4 -2
  214. package/dist/cjs/src/pro/bitopro.js +4 -2
  215. package/dist/cjs/src/pro/bitrue.js +4 -2
  216. package/dist/cjs/src/pro/bitstamp.js +4 -2
  217. package/dist/cjs/src/pro/bittrade.js +4 -2
  218. package/dist/cjs/src/pro/bitvavo.js +5 -3
  219. package/dist/cjs/src/pro/blockchaincom.js +4 -2
  220. package/dist/cjs/src/pro/blofin.js +4 -2
  221. package/dist/cjs/src/pro/bybit.js +5 -2
  222. package/dist/cjs/src/pro/cex.js +4 -2
  223. package/dist/cjs/src/pro/coinbase.js +4 -2
  224. package/dist/cjs/src/pro/coinbaseadvanced.js +4 -2
  225. package/dist/cjs/src/pro/coinbaseexchange.js +4 -2
  226. package/dist/cjs/src/pro/coinbaseinternational.js +4 -2
  227. package/dist/cjs/src/pro/coincatch.js +4 -2
  228. package/dist/cjs/src/pro/coincheck.js +4 -2
  229. package/dist/cjs/src/pro/coinex.js +5 -3
  230. package/dist/cjs/src/pro/coinone.js +4 -2
  231. package/dist/cjs/src/pro/cryptocom.js +4 -2
  232. package/dist/cjs/src/pro/defx.js +4 -2
  233. package/dist/cjs/src/pro/deribit.js +4 -2
  234. package/dist/cjs/src/pro/derive.js +4 -2
  235. package/dist/cjs/src/pro/exmo.js +4 -2
  236. package/dist/cjs/src/pro/gate.js +4 -2
  237. package/dist/cjs/src/pro/gateio.js +4 -2
  238. package/dist/cjs/src/pro/gemini.js +4 -2
  239. package/dist/cjs/src/pro/hashkey.js +4 -2
  240. package/dist/cjs/src/pro/hitbtc.js +4 -2
  241. package/dist/cjs/src/pro/hollaex.js +4 -2
  242. package/dist/cjs/src/pro/htx.js +4 -2
  243. package/dist/cjs/src/pro/huobi.js +4 -2
  244. package/dist/cjs/src/pro/hyperliquid.js +107 -14
  245. package/dist/cjs/src/pro/independentreserve.js +4 -2
  246. package/dist/cjs/src/pro/kraken.js +4 -2
  247. package/dist/cjs/src/pro/krakenfutures.js +4 -2
  248. package/dist/cjs/src/pro/kucoin.js +5 -3
  249. package/dist/cjs/src/pro/kucoinfutures.js +5 -3
  250. package/dist/cjs/src/pro/lbank.js +4 -2
  251. package/dist/cjs/src/pro/luno.js +4 -2
  252. package/dist/cjs/src/pro/mexc.js +342 -159
  253. package/dist/cjs/src/pro/modetrade.js +4 -2
  254. package/dist/cjs/src/pro/myokx.js +4 -2
  255. package/dist/cjs/src/pro/ndax.js +4 -2
  256. package/dist/cjs/src/pro/okcoin.js +4 -2
  257. package/dist/cjs/src/pro/okx.js +6 -3
  258. package/dist/cjs/src/pro/okxus.js +4 -2
  259. package/dist/cjs/src/pro/onetrading.js +4 -2
  260. package/dist/cjs/src/pro/oxfun.js +5 -3
  261. package/dist/cjs/src/pro/p2b.js +4 -2
  262. package/dist/cjs/src/pro/paradex.js +4 -2
  263. package/dist/cjs/src/pro/phemex.js +4 -2
  264. package/dist/cjs/src/pro/poloniex.js +4 -2
  265. package/dist/cjs/src/pro/probit.js +4 -2
  266. package/dist/cjs/src/pro/tradeogre.js +4 -2
  267. package/dist/cjs/src/pro/upbit.js +4 -2
  268. package/dist/cjs/src/pro/vertex.js +4 -2
  269. package/dist/cjs/src/pro/whitebit.js +4 -2
  270. package/dist/cjs/src/pro/woo.js +4 -2
  271. package/dist/cjs/src/pro/woofipro.js +4 -2
  272. package/dist/cjs/src/pro/xt.js +4 -2
  273. package/dist/cjs/src/probit.js +39 -2
  274. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +7180 -0
  275. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -1
  276. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +2 -2
  277. package/dist/cjs/src/static_dependencies/ethers/fragments.js +2 -2
  278. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +2 -2
  279. package/dist/cjs/src/static_dependencies/ethers/interface.js +2 -2
  280. package/dist/cjs/src/static_dependencies/ethers/typed.js +2 -2
  281. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +2 -2
  282. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +2 -2
  283. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -7
  284. package/dist/cjs/src/static_dependencies/node-fetch/response.js +3 -1
  285. package/dist/cjs/src/static_dependencies/qs/index.cjs.js +3 -1
  286. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +3 -1
  287. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +3 -1
  288. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +7 -7
  289. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +4 -2
  290. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -1
  291. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +4 -2
  292. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +3 -1
  293. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +28 -26
  294. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +2 -2
  295. package/dist/cjs/src/timex.js +4 -2
  296. package/dist/cjs/src/tokocrypto.js +4 -2
  297. package/dist/cjs/src/tradeogre.js +4 -2
  298. package/dist/cjs/src/upbit.js +4 -2
  299. package/dist/cjs/src/vertex.js +4 -2
  300. package/dist/cjs/src/wavesexchange.js +4 -2
  301. package/dist/cjs/src/whitebit.js +4 -2
  302. package/dist/cjs/src/woo.js +4 -2
  303. package/dist/cjs/src/woofipro.js +100 -2
  304. package/dist/cjs/src/xt.js +4 -2
  305. package/dist/cjs/src/yobit.js +4 -2
  306. package/dist/cjs/src/zaif.js +4 -2
  307. package/dist/cjs/src/zonda.js +4 -2
  308. package/js/ccxt.d.ts +1 -1
  309. package/js/ccxt.js +1 -1
  310. package/js/src/abstract/bingx.d.ts +1 -0
  311. package/js/src/alpaca.d.ts +1 -1
  312. package/js/src/apex.d.ts +1 -1
  313. package/js/src/ascendex.d.ts +1 -1
  314. package/js/src/base/Exchange.d.ts +9 -7
  315. package/js/src/base/Exchange.js +50 -10
  316. package/js/src/base/types.d.ts +2 -1
  317. package/js/src/base/ws/Client.d.ts +1 -0
  318. package/js/src/base/ws/Client.js +5 -1
  319. package/js/src/bigone.d.ts +1 -1
  320. package/js/src/binance.d.ts +2 -2
  321. package/js/src/binance.js +1 -0
  322. package/js/src/bingx.d.ts +3 -2
  323. package/js/src/bingx.js +32 -2
  324. package/js/src/bitbank.d.ts +1 -1
  325. package/js/src/bitfinex.d.ts +1 -1
  326. package/js/src/bitfinex.js +3 -0
  327. package/js/src/bitflyer.d.ts +1 -1
  328. package/js/src/bitget.d.ts +4 -2
  329. package/js/src/bitget.js +38 -14
  330. package/js/src/bithumb.d.ts +1 -1
  331. package/js/src/bitmart.d.ts +2 -2
  332. package/js/src/bitmex.d.ts +2 -2
  333. package/js/src/bitmex.js +1 -0
  334. package/js/src/bitopro.d.ts +1 -1
  335. package/js/src/bitrue.d.ts +2 -2
  336. package/js/src/bitso.d.ts +1 -1
  337. package/js/src/bitstamp.d.ts +1 -1
  338. package/js/src/bittrade.d.ts +1 -1
  339. package/js/src/bitvavo.d.ts +1 -1
  340. package/js/src/blockchaincom.d.ts +1 -1
  341. package/js/src/blofin.d.ts +1 -1
  342. package/js/src/btcmarkets.d.ts +1 -1
  343. package/js/src/bybit.d.ts +2 -2
  344. package/js/src/coinbase.d.ts +1 -1
  345. package/js/src/coinbaseexchange.d.ts +1 -1
  346. package/js/src/coinbaseinternational.d.ts +1 -1
  347. package/js/src/coincatch.d.ts +2 -2
  348. package/js/src/coinex.d.ts +3 -3
  349. package/js/src/coinex.js +1 -1
  350. package/js/src/coinmate.d.ts +1 -1
  351. package/js/src/coinsph.d.ts +1 -1
  352. package/js/src/cryptocom.d.ts +1 -1
  353. package/js/src/defx.d.ts +2 -2
  354. package/js/src/delta.d.ts +1 -1
  355. package/js/src/deribit.d.ts +1 -1
  356. package/js/src/digifinex.d.ts +2 -2
  357. package/js/src/ellipx.d.ts +1 -1
  358. package/js/src/exmo.d.ts +1 -1
  359. package/js/src/foxbit.d.ts +1 -1
  360. package/js/src/foxbit.js +3 -3
  361. package/js/src/gate.d.ts +2 -2
  362. package/js/src/gate.js +21 -0
  363. package/js/src/gemini.d.ts +1 -1
  364. package/js/src/hashkey.d.ts +3 -3
  365. package/js/src/hibachi.d.ts +1 -1
  366. package/js/src/hitbtc.d.ts +2 -2
  367. package/js/src/hollaex.d.ts +1 -1
  368. package/js/src/htx.d.ts +3 -3
  369. package/js/src/htx.js +1 -0
  370. package/js/src/hyperliquid.d.ts +12 -2
  371. package/js/src/hyperliquid.js +79 -28
  372. package/js/src/independentreserve.d.ts +1 -1
  373. package/js/src/indodax.d.ts +1 -1
  374. package/js/src/kraken.d.ts +1 -1
  375. package/js/src/krakenfutures.d.ts +1 -1
  376. package/js/src/krakenfutures.js +1 -0
  377. package/js/src/kucoin.d.ts +2 -2
  378. package/js/src/kucoinfutures.d.ts +3 -2
  379. package/js/src/kucoinfutures.js +1 -0
  380. package/js/src/lbank.d.ts +1 -1
  381. package/js/src/lbank.js +1 -1
  382. package/js/src/mercado.d.ts +1 -1
  383. package/js/src/mexc.d.ts +2 -2
  384. package/js/src/mexc.js +7 -0
  385. package/js/src/modetrade.d.ts +26 -3
  386. package/js/src/modetrade.js +96 -0
  387. package/js/src/ndax.d.ts +1 -1
  388. package/js/src/novadax.d.ts +1 -1
  389. package/js/src/okcoin.d.ts +1 -1
  390. package/js/src/okx.d.ts +2 -2
  391. package/js/src/onetrading.js +33 -0
  392. package/js/src/oxfun.d.ts +1 -1
  393. package/js/src/p2b.js +32 -0
  394. package/js/src/paradex.d.ts +1 -1
  395. package/js/src/paradex.js +1 -0
  396. package/js/src/phemex.d.ts +2 -2
  397. package/js/src/poloniex.d.ts +2 -2
  398. package/js/src/pro/binance.js +2 -1
  399. package/js/src/pro/bitvavo.js +1 -1
  400. package/js/src/pro/bybit.js +1 -0
  401. package/js/src/pro/coinex.js +1 -1
  402. package/js/src/pro/hyperliquid.d.ts +26 -0
  403. package/js/src/pro/hyperliquid.js +103 -12
  404. package/js/src/pro/kucoin.js +1 -1
  405. package/js/src/pro/kucoinfutures.js +1 -1
  406. package/js/src/pro/mexc.d.ts +9 -6
  407. package/js/src/pro/mexc.js +338 -157
  408. package/js/src/pro/okx.js +2 -1
  409. package/js/src/pro/oxfun.js +1 -1
  410. package/js/src/probit.d.ts +1 -1
  411. package/js/src/probit.js +35 -0
  412. package/js/src/protobuf/mexc/compiled.cjs +7180 -0
  413. package/js/src/protobuf/mexc/compiled.d.cts +2 -0
  414. package/js/src/tokocrypto.d.ts +1 -1
  415. package/js/src/upbit.d.ts +1 -1
  416. package/js/src/vertex.d.ts +1 -1
  417. package/js/src/wavesexchange.d.ts +1 -1
  418. package/js/src/whitebit.d.ts +2 -2
  419. package/js/src/woo.d.ts +4 -4
  420. package/js/src/woofipro.d.ts +26 -3
  421. package/js/src/woofipro.js +96 -0
  422. package/js/src/xt.d.ts +3 -3
  423. package/js/src/yobit.d.ts +1 -1
  424. package/js/src/zaif.d.ts +1 -1
  425. package/js/src/zonda.d.ts +1 -1
  426. package/package.json +4 -3
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var mexc$1 = require('../mexc.js');
4
6
  var errors = require('../base/errors.js');
5
7
  var Cache = require('../base/ws/Cache.js');
@@ -7,7 +9,7 @@ var sha256 = require('../static_dependencies/noble-hashes/sha256.js');
7
9
 
8
10
  // ---------------------------------------------------------------------------
9
11
  // ---------------------------------------------------------------------------
10
- class mexc extends mexc$1 {
12
+ class mexc extends mexc$1["default"] {
11
13
  describe() {
12
14
  return this.deepExtend(super.describe(), {
13
15
  'has': {
@@ -41,13 +43,14 @@ class mexc extends mexc$1 {
41
43
  'urls': {
42
44
  'api': {
43
45
  'ws': {
44
- 'spot': 'wss://wbs.mexc.com/ws',
46
+ 'spot': 'wss://wbs-api.mexc.com/ws',
45
47
  'swap': 'wss://contract.mexc.com/edge',
46
48
  },
47
49
  },
48
50
  },
49
51
  'options': {
50
52
  'listenKeyRefreshRate': 1200000,
53
+ 'decompressBinary': false,
51
54
  // TODO add reset connection after #16754 is merged
52
55
  'timeframes': {
53
56
  '1m': 'Min1',
@@ -91,15 +94,7 @@ class mexc extends mexc$1 {
91
94
  const market = this.market(symbol);
92
95
  const messageHash = 'ticker:' + market['symbol'];
93
96
  if (market['spot']) {
94
- let miniTicker = false;
95
- [miniTicker, params] = this.handleOptionAndParams(params, 'watchTicker', 'miniTicker');
96
- let channel = undefined;
97
- if (miniTicker) {
98
- channel = 'spot@public.miniTicker.v3.api@' + market['id'] + '@UTC+8';
99
- }
100
- else {
101
- channel = 'spot@public.bookTicker.v3.api@' + market['id'];
102
- }
97
+ const channel = 'spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id'];
103
98
  return await this.watchSpotPublic(channel, messageHash, params);
104
99
  }
105
100
  else {
@@ -179,9 +174,9 @@ class mexc extends mexc$1 {
179
174
  // }
180
175
  //
181
176
  this.handleBidAsk(client, message);
182
- const rawTicker = this.safeDict2(message, 'd', 'data');
177
+ const rawTicker = this.safeDictN(message, ['d', 'data', 'publicAggreBookTicker']);
183
178
  const marketId = this.safeString2(message, 's', 'symbol');
184
- const timestamp = this.safeInteger(message, 't');
179
+ const timestamp = this.safeInteger2(message, 't', 'sendtime');
185
180
  const market = this.safeMarket(marketId);
186
181
  const symbol = market['symbol'];
187
182
  let ticker = undefined;
@@ -224,34 +219,33 @@ class mexc extends mexc$1 {
224
219
  const url = (isSpot) ? this.urls['api']['ws']['spot'] : this.urls['api']['ws']['swap'];
225
220
  const request = {};
226
221
  if (isSpot) {
227
- let miniTicker = false;
228
- [miniTicker, params] = this.handleOptionAndParams(params, 'watchTickers', 'miniTicker');
229
- const topics = [];
230
- if (!miniTicker) {
231
- if (symbols === undefined) {
232
- throw new errors.ArgumentsRequired(this.id + ' watchTickers required symbols argument for the bookTicker channel');
233
- }
234
- const marketIds = this.marketIds(symbols);
235
- for (let i = 0; i < marketIds.length; i++) {
236
- const marketId = marketIds[i];
237
- messageHashes.push('ticker:' + symbols[i]);
238
- const channel = 'spot@public.bookTicker.v3.api@' + marketId;
239
- topics.push(channel);
240
- }
241
- }
242
- else {
243
- topics.push('spot@public.miniTickers.v3.api@UTC+8');
244
- if (symbols === undefined) {
245
- messageHashes.push('spot:ticker');
246
- }
247
- else {
248
- for (let i = 0; i < symbols.length; i++) {
249
- messageHashes.push('ticker:' + symbols[i]);
250
- }
251
- }
252
- }
253
- request['method'] = 'SUBSCRIPTION';
254
- request['params'] = topics;
222
+ throw new errors.NotSupported(this.id + ' watchTickers does not support spot markets');
223
+ // let miniTicker = false;
224
+ // [ miniTicker, params ] = this.handleOptionAndParams (params, 'watchTickers', 'miniTicker');
225
+ // const topics = [];
226
+ // if (!miniTicker) {
227
+ // if (symbols === undefined) {
228
+ // throw new ArgumentsRequired (this.id + ' watchTickers required symbols argument for the bookTicker channel');
229
+ // }
230
+ // const marketIds = this.marketIds (symbols);
231
+ // for (let i = 0; i < marketIds.length; i++) {
232
+ // const marketId = marketIds[i];
233
+ // messageHashes.push ('ticker:' + symbols[i]);
234
+ // const channel = 'spot@public.bookTicker.v3.api@' + marketId;
235
+ // topics.push (channel);
236
+ // }
237
+ // } else {
238
+ // topics.push ('spot@public.miniTickers.v3.api@UTC+8');
239
+ // if (symbols === undefined) {
240
+ // messageHashes.push ('spot:ticker');
241
+ // } else {
242
+ // for (let i = 0; i < symbols.length; i++) {
243
+ // messageHashes.push ('ticker:' + symbols[i]);
244
+ // }
245
+ // }
246
+ // }
247
+ // request['method'] = 'SUBSCRIPTION';
248
+ // request['params'] = topics;
255
249
  }
256
250
  else {
257
251
  request['method'] = 'sub.tickers';
@@ -356,6 +350,11 @@ class mexc extends mexc$1 {
356
350
  client.resolve(result, topic);
357
351
  }
358
352
  parseWsTicker(ticker, market = undefined) {
353
+ // protobuf ticker
354
+ // "bidprice": "93387.28", // Best bid price
355
+ // "bidquantity": "3.73485", // Best bid quantity
356
+ // "askprice": "93387.29", // Best ask price
357
+ // "askquantity": "7.669875" // Best ask quantity
359
358
  //
360
359
  // spot
361
360
  //
@@ -370,7 +369,7 @@ class mexc extends mexc$1 {
370
369
  //
371
370
  // {
372
371
  // "s": "BTCUSDT",
373
- // "p": "76522",
372
+ // "p": "76521",
374
373
  // "r": "0.0012",
375
374
  // "tr": "0.0012",
376
375
  // "h": "77196.3",
@@ -396,10 +395,10 @@ class mexc extends mexc$1 {
396
395
  'low': this.safeNumber(ticker, 'l'),
397
396
  'close': price,
398
397
  'last': price,
399
- 'bid': this.safeNumber(ticker, 'b'),
400
- 'bidVolume': this.safeNumber(ticker, 'B'),
401
- 'ask': this.safeNumber(ticker, 'a'),
402
- 'askVolume': this.safeNumber(ticker, 'A'),
398
+ 'bid': this.safeNumber2(ticker, 'b', 'bidPrice'),
399
+ 'bidVolume': this.safeNumber2(ticker, 'B', 'bidQuantity'),
400
+ 'ask': this.safeNumber2(ticker, 'a', 'askPrice'),
401
+ 'askVolume': this.safeNumber2(ticker, 'A', 'askQuantity'),
403
402
  'vwap': undefined,
404
403
  'previousClose': undefined,
405
404
  'change': undefined,
@@ -436,7 +435,7 @@ class mexc extends mexc$1 {
436
435
  for (let i = 0; i < symbols.length; i++) {
437
436
  if (isSpot) {
438
437
  const market = this.market(symbols[i]);
439
- topics.push('spot@public.bookTicker.v3.api@' + market['id']);
438
+ topics.push('spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id']);
440
439
  }
441
440
  messageHashes.push('bidask:' + symbols[i]);
442
441
  }
@@ -544,7 +543,7 @@ class mexc extends mexc$1 {
544
543
  /**
545
544
  * @method
546
545
  * @name mexc#watchOHLCV
547
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#kline-streams
546
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
548
547
  * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
549
548
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
550
549
  * @param {string} timeframe the length of time each candle represents
@@ -562,7 +561,7 @@ class mexc extends mexc$1 {
562
561
  const messageHash = 'candles:' + symbol + ':' + timeframe;
563
562
  let ohlcv = undefined;
564
563
  if (market['spot']) {
565
- const channel = 'spot@public.kline.v3.api@' + market['id'] + '@' + timeframeId;
564
+ const channel = 'spot@public.kline.v3.api.pb@' + market['id'] + '@' + timeframeId;
566
565
  ohlcv = await this.watchSpotPublic(channel, messageHash, params);
567
566
  }
568
567
  else {
@@ -624,17 +623,47 @@ class mexc extends mexc$1 {
624
623
  // "symbol": "BTC_USDT",
625
624
  // "ts": 1651230713067
626
625
  // }
626
+ // protobuf
627
+ // {
628
+ // "channel":"spot@public.kline.v3.api.pb@BTCUSDT@Min1",
629
+ // "symbol":"BTCUSDT",
630
+ // "symbolId":"2fb942154ef44a4ab2ef98c8afb6a4a7",
631
+ // "createTime":"1754737941062",
632
+ // "publicSpotKline":{
633
+ // "interval":"Min1",
634
+ // "windowStart":"1754737920",
635
+ // "openingPrice":"117317.31",
636
+ // "closingPrice":"117325.26",
637
+ // "highestPrice":"117341",
638
+ // "lowestPrice":"117317.3",
639
+ // "volume":"3.12599854",
640
+ // "amount":"366804.43",
641
+ // "windowEnd":"1754737980"
642
+ // }
643
+ // }
627
644
  //
628
- const d = this.safeValue2(message, 'd', 'data', {});
629
- const rawOhlcv = this.safeValue(d, 'k', d);
630
- const timeframeId = this.safeString2(rawOhlcv, 'i', 'interval');
631
- const timeframes = this.safeValue(this.options, 'timeframes', {});
632
- const timeframe = this.findTimeframe(timeframeId, timeframes);
633
- const marketId = this.safeString2(message, 's', 'symbol');
634
- const market = this.safeMarket(marketId);
635
- const symbol = market['symbol'];
645
+ let parsed = undefined;
646
+ let symbol = undefined;
647
+ let timeframe = undefined;
648
+ if ('publicSpotKline' in message) {
649
+ symbol = this.symbol(this.safeString(message, 'symbol'));
650
+ const data = this.safeDict(message, 'publicSpotKline', {});
651
+ const timeframeId = this.safeString(data, 'interval');
652
+ timeframe = this.findTimeframe(timeframeId, this.options['timeframes']);
653
+ parsed = this.parseWsOHLCV(data, this.safeMarket(symbol));
654
+ }
655
+ else {
656
+ const d = this.safeValue2(message, 'd', 'data', {});
657
+ const rawOhlcv = this.safeValue(d, 'k', d);
658
+ const timeframeId = this.safeString2(rawOhlcv, 'i', 'interval');
659
+ const timeframes = this.safeValue(this.options, 'timeframes', {});
660
+ timeframe = this.findTimeframe(timeframeId, timeframes);
661
+ const marketId = this.safeString2(message, 's', 'symbol');
662
+ const market = this.safeMarket(marketId);
663
+ symbol = market['symbol'];
664
+ parsed = this.parseWsOHLCV(rawOhlcv, market);
665
+ }
636
666
  const messageHash = 'candles:' + symbol + ':' + timeframe;
637
- const parsed = this.parseWsOHLCV(rawOhlcv, market);
638
667
  this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
639
668
  let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
640
669
  if (stored === undefined) {
@@ -677,25 +706,37 @@ class mexc extends mexc$1 {
677
706
  // "rh": 27301.8,
678
707
  // "rl": 27301.8
679
708
  // }
709
+ // protobuf
710
+ //
711
+ // "interval":"Min1",
712
+ // "windowStart":"1754737920",
713
+ // "openingPrice":"117317.31",
714
+ // "closingPrice":"117325.26",
715
+ // "highestPrice":"117341",
716
+ // "lowestPrice":"117317.3",
717
+ // "volume":"3.12599854",
718
+ // "amount":"366804.43",
719
+ // "windowEnd":"1754737980"
680
720
  //
681
721
  return [
682
- this.safeTimestamp(ohlcv, 't'),
683
- this.safeNumber(ohlcv, 'o'),
684
- this.safeNumber(ohlcv, 'h'),
685
- this.safeNumber(ohlcv, 'l'),
686
- this.safeNumber(ohlcv, 'c'),
687
- this.safeNumber2(ohlcv, 'v', 'q'),
722
+ this.safeTimestamp2(ohlcv, 't', 'windowStart'),
723
+ this.safeNumber2(ohlcv, 'o', 'openingPrice'),
724
+ this.safeNumber2(ohlcv, 'h', 'highestPrice'),
725
+ this.safeNumber2(ohlcv, 'l', 'lowestPrice'),
726
+ this.safeNumber2(ohlcv, 'c', 'closingPrice'),
727
+ this.safeNumber2(ohlcv, 'v', 'volume'),
688
728
  ];
689
729
  }
690
730
  /**
691
731
  * @method
692
732
  * @name mexc#watchOrderBook
693
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#diff-depth-stream
733
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
694
734
  * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
695
735
  * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
696
736
  * @param {string} symbol unified symbol of the market to fetch the order book for
697
737
  * @param {int} [limit] the maximum amount of order book entries to return
698
738
  * @param {object} [params] extra parameters specific to the exchange API endpoint
739
+ * @param {string} [params.frequency] the frequency of the order book updates, default is '10ms', can be '100ms' or '10ms
699
740
  * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
700
741
  */
701
742
  async watchOrderBook(symbol, limit = undefined, params = {}) {
@@ -705,7 +746,9 @@ class mexc extends mexc$1 {
705
746
  const messageHash = 'orderbook:' + symbol;
706
747
  let orderbook = undefined;
707
748
  if (market['spot']) {
708
- const channel = 'spot@public.increase.depth.v3.api@' + market['id'];
749
+ let frequency = undefined;
750
+ [frequency, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'frequency', '100ms');
751
+ const channel = 'spot@public.aggre.depth.v3.api.pb@' + frequency + '@' + market['id'];
709
752
  orderbook = await this.watchSpotPublic(channel, messageHash, params);
710
753
  }
711
754
  else {
@@ -731,13 +774,13 @@ class mexc extends mexc$1 {
731
774
  // return the first index of the cache that can be applied to the orderbook or -1 if not possible
732
775
  const nonce = this.safeInteger(orderbook, 'nonce');
733
776
  const firstDelta = this.safeValue(cache, 0);
734
- const firstDeltaNonce = this.safeInteger2(firstDelta, 'r', 'version');
777
+ const firstDeltaNonce = this.safeIntegerN(firstDelta, ['r', 'version', 'fromVersion']);
735
778
  if (nonce < firstDeltaNonce - 1) {
736
779
  return -1;
737
780
  }
738
781
  for (let i = 0; i < cache.length; i++) {
739
782
  const delta = cache[i];
740
- const deltaNonce = this.safeInteger2(delta, 'r', 'version');
783
+ const deltaNonce = this.safeIntegerN(delta, ['r', 'version', 'fromVersion']);
741
784
  if (deltaNonce >= nonce) {
742
785
  return i;
743
786
  }
@@ -787,8 +830,31 @@ class mexc extends mexc$1 {
787
830
  // "symbol":"BTC_USDT",
788
831
  // "ts":1651239652372
789
832
  // }
833
+ // protofbuf
834
+ // {
835
+ // "channel":"spot@public.aggre.depth.v3.api.pb@100ms@BTCUSDT",
836
+ // "symbol":"BTCUSDT",
837
+ // "sendTime":"1754741322152",
838
+ // "publicAggreDepths":{
839
+ // "asks":[
840
+ // {
841
+ // "price":"117145.49",
842
+ // "quantity":"0"
843
+ // }
844
+ // ],
845
+ // "bids":[
846
+ // {
847
+ // "price":"117053.41",
848
+ // "quantity":"1.86837271"
849
+ // }
850
+ // ],
851
+ // "eventType":"spot@public.aggre.depth.v3.api.pb@100ms",
852
+ // "fromVersion":"43296363236",
853
+ // "toVersion":"43296363255"
854
+ // }
855
+ // }
790
856
  //
791
- const data = this.safeValue2(message, 'd', 'data');
857
+ const data = this.safeDictN(message, ['d', 'data', 'publicAggreDepths']);
792
858
  const marketId = this.safeString2(message, 's', 'symbol');
793
859
  const symbol = this.safeSymbol(marketId);
794
860
  const messageHash = 'orderbook:' + symbol;
@@ -810,9 +876,10 @@ class mexc extends mexc$1 {
810
876
  }
811
877
  try {
812
878
  this.handleDelta(storedOrderBook, data);
813
- const timestamp = this.safeInteger2(message, 't', 'ts');
879
+ const timestamp = this.safeIntegerN(message, ['t', 'ts', 'sendTime']);
814
880
  storedOrderBook['timestamp'] = timestamp;
815
881
  storedOrderBook['datetime'] = this.iso8601(timestamp);
882
+ storedOrderBook['nonce'] = this.safeInteger(data, 'fromVersion');
816
883
  }
817
884
  catch (e) {
818
885
  delete client.subscriptions[messageHash];
@@ -833,15 +900,15 @@ class mexc extends mexc$1 {
833
900
  bookside.storeArray(bidask);
834
901
  }
835
902
  else {
836
- const price = this.safeFloat(bidask, 'p');
837
- const amount = this.safeFloat(bidask, 'v');
903
+ const price = this.safeFloat2(bidask, 'p', 'price');
904
+ const amount = this.safeFloat2(bidask, 'v', 'quantity');
838
905
  bookside.store(price, amount);
839
906
  }
840
907
  }
841
908
  }
842
909
  handleDelta(orderbook, delta) {
843
910
  const existingNonce = this.safeInteger(orderbook, 'nonce');
844
- const deltaNonce = this.safeInteger2(delta, 'r', 'version');
911
+ const deltaNonce = this.safeIntegerN(delta, ['r', 'version', 'fromVersion']);
845
912
  if (deltaNonce < existingNonce) {
846
913
  // even when doing < comparison, this happens: https://app.travis-ci.com/github/ccxt/ccxt/builds/269234741#L1809
847
914
  // so, we just skip old updates
@@ -858,7 +925,7 @@ class mexc extends mexc$1 {
858
925
  /**
859
926
  * @method
860
927
  * @name mexc#watchTrades
861
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#trade-streams
928
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
862
929
  * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
863
930
  * @description get the list of most recent trades for a particular symbol
864
931
  * @param {string} symbol unified symbol of the market to fetch trades for
@@ -874,7 +941,7 @@ class mexc extends mexc$1 {
874
941
  const messageHash = 'trades:' + symbol;
875
942
  let trades = undefined;
876
943
  if (market['spot']) {
877
- const channel = 'spot@public.deals.v3.api@' + market['id'];
944
+ const channel = 'spot@public.aggre.deals.v3.api.pb@100ms@' + market['id'];
878
945
  trades = await this.watchSpotPublic(channel, messageHash, params);
879
946
  }
880
947
  else {
@@ -890,6 +957,23 @@ class mexc extends mexc$1 {
890
957
  return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
891
958
  }
892
959
  handleTrades(client, message) {
960
+ // protobuf
961
+ // {
962
+ // "channel": "spot@public.aggre.deals.v3.api.pb@100ms@BTCUSDT",
963
+ // "publicdeals": {
964
+ // "dealsList": [
965
+ // {
966
+ // "price": "93220.00", // Trade price
967
+ // "quantity": "0.04438243", // Trade quantity
968
+ // "tradetype": 2, // Trade type (1: Buy, 2: Sell)
969
+ // "time": 1736409765051 // Trade time
970
+ // }
971
+ // ],
972
+ // "eventtype": "spot@public.aggre.deals.v3.api.pb@100ms" // Event type
973
+ // },
974
+ // "symbol": "BTCUSDT", // Trading pair
975
+ // "sendtime": 1736409765052 // Event time
976
+ // }
893
977
  //
894
978
  // {
895
979
  // "c": "spot@public.deals.v3.api@BTCUSDT",
@@ -931,8 +1015,8 @@ class mexc extends mexc$1 {
931
1015
  stored = new Cache.ArrayCache(limit);
932
1016
  this.trades[symbol] = stored;
933
1017
  }
934
- const d = this.safeValue2(message, 'd', 'data');
935
- const trades = this.safeValue(d, 'deals', [d]);
1018
+ const d = this.safeDictN(message, ['d', 'data', 'publicAggreDeals']);
1019
+ const trades = this.safeList2(d, 'deals', 'dealsList', [d]);
936
1020
  for (let j = 0; j < trades.length; j++) {
937
1021
  let parsedTrade = undefined;
938
1022
  if (market['spot']) {
@@ -948,7 +1032,7 @@ class mexc extends mexc$1 {
948
1032
  /**
949
1033
  * @method
950
1034
  * @name mexc#watchMyTrades
951
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#spot-account-deals
1035
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-deals
952
1036
  * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#private-channels
953
1037
  * @description watches information on multiple trades made by the user
954
1038
  * @param {string} symbol unified market symbol of the market trades were made in
@@ -970,7 +1054,7 @@ class mexc extends mexc$1 {
970
1054
  [type, params] = this.handleMarketTypeAndParams('watchMyTrades', market, params);
971
1055
  let trades = undefined;
972
1056
  if (type === 'spot') {
973
- const channel = 'spot@private.deals.v3.api';
1057
+ const channel = 'spot@private.deals.v3.api.pb';
974
1058
  trades = await this.watchSpotPrivate(channel, messageHash, params);
975
1059
  }
976
1060
  else {
@@ -999,11 +1083,27 @@ class mexc extends mexc$1 {
999
1083
  // "s": "BTCUSDT",
1000
1084
  // "t": 1678670940700
1001
1085
  // }
1086
+ // {
1087
+ // channel: "spot@private.deals.v3.api.pb",
1088
+ // symbol: "MXUSDT",
1089
+ // sendTime: 1736417034332,
1090
+ // privateDeals {
1091
+ // price: "3.6962",
1092
+ // quantity: "1",
1093
+ // amount: "3.6962",
1094
+ // tradeType: 2,
1095
+ // tradeId: "505979017439002624X1",
1096
+ // orderId: "C02__505979017439002624115",
1097
+ // feeAmount: "0.0003998377369698171",
1098
+ // feeCurrency: "MX",
1099
+ // time: 1736417034280
1100
+ // }
1101
+ // }
1002
1102
  //
1003
1103
  const messageHash = 'myTrades';
1004
- const data = this.safeValue2(message, 'd', 'data');
1104
+ const data = this.safeDictN(message, ['d', 'data', 'privateDeals']);
1005
1105
  const futuresMarketId = this.safeString(data, 'symbol');
1006
- const marketId = this.safeString(message, 's', futuresMarketId);
1106
+ const marketId = this.safeString2(message, 's', 'symbol', futuresMarketId);
1007
1107
  const market = this.safeMarket(marketId);
1008
1108
  const symbol = market['symbol'];
1009
1109
  let trade = undefined;
@@ -1026,7 +1126,7 @@ class mexc extends mexc$1 {
1026
1126
  }
1027
1127
  parseWsTrade(trade, market = undefined) {
1028
1128
  //
1029
- // public trade
1129
+ // public trade (protobuf)
1030
1130
  // {
1031
1131
  // "p": "20382.70",
1032
1132
  // "v": "0.043800",
@@ -1046,7 +1146,6 @@ class mexc extends mexc$1 {
1046
1146
  // "v": "5"
1047
1147
  // }
1048
1148
  //
1049
- //
1050
1149
  // d: {
1051
1150
  // p: '1.0005',
1052
1151
  // v: '5.71',
@@ -1061,23 +1160,37 @@ class mexc extends mexc$1 {
1061
1160
  // n: '0.005712855',
1062
1161
  // N: 'USDT'
1063
1162
  // }
1064
- let timestamp = this.safeInteger(trade, 'T');
1065
- let tradeId = this.safeString(trade, 't');
1163
+ // protobuf
1164
+ //
1165
+ // {
1166
+ // price: "3.6962",
1167
+ // quantity: "1",
1168
+ // amount: "3.6962",
1169
+ // tradeType: 2,
1170
+ // tradeId: "505979017439002624X1",
1171
+ // orderId: "C02__505979017439002624115",
1172
+ // feeAmount: "0.0003998377369698171",
1173
+ // feeCurrency: "MX",
1174
+ // time: 1736417034280
1175
+ // }
1176
+ //
1177
+ let timestamp = this.safeInteger2(trade, 'T', 'time');
1178
+ let tradeId = this.safeString2(trade, 't', 'tradeId');
1066
1179
  if (timestamp === undefined) {
1067
1180
  timestamp = this.safeInteger(trade, 't');
1068
1181
  tradeId = undefined;
1069
1182
  }
1070
- const priceString = this.safeString(trade, 'p');
1071
- const amountString = this.safeString(trade, 'v');
1072
- const rawSide = this.safeString(trade, 'S');
1183
+ const priceString = this.safeString2(trade, 'p', 'price');
1184
+ const amountString = this.safeString2(trade, 'v', 'quantity');
1185
+ const rawSide = this.safeString2(trade, 'S', 'tradeType');
1073
1186
  const side = (rawSide === '1') ? 'buy' : 'sell';
1074
1187
  const isMaker = this.safeInteger(trade, 'm');
1075
- const feeAmount = this.safeNumber(trade, 'n');
1076
- const feeCurrencyId = this.safeString(trade, 'N');
1188
+ const feeAmount = this.safeString2(trade, 'n', 'feeAmount');
1189
+ const feeCurrencyId = this.safeString2(trade, 'N', 'feeCurrency');
1077
1190
  return this.safeTrade({
1078
1191
  'info': trade,
1079
1192
  'id': tradeId,
1080
- 'order': this.safeString(trade, 'i'),
1193
+ 'order': this.safeString2(trade, 'i', 'orderId'),
1081
1194
  'timestamp': timestamp,
1082
1195
  'datetime': this.iso8601(timestamp),
1083
1196
  'symbol': this.safeSymbol(undefined, market),
@@ -1086,7 +1199,7 @@ class mexc extends mexc$1 {
1086
1199
  'takerOrMaker': (isMaker) ? 'maker' : 'taker',
1087
1200
  'price': priceString,
1088
1201
  'amount': amountString,
1089
- 'cost': undefined,
1202
+ 'cost': this.safeString(trade, 'amount'),
1090
1203
  'fee': {
1091
1204
  'cost': feeAmount,
1092
1205
  'currency': this.safeCurrencyCode(feeCurrencyId),
@@ -1096,7 +1209,7 @@ class mexc extends mexc$1 {
1096
1209
  /**
1097
1210
  * @method
1098
1211
  * @name mexc#watchOrders
1099
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#spot-account-orders
1212
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-orders
1100
1213
  * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#margin-account-orders
1101
1214
  * @description watches information on multiple orders made by the user
1102
1215
  * @param {string} symbol unified market symbol of the market orders were made in
@@ -1119,7 +1232,7 @@ class mexc extends mexc$1 {
1119
1232
  [type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
1120
1233
  let orders = undefined;
1121
1234
  if (type === 'spot') {
1122
- const channel = type + '@private.orders.v3.api';
1235
+ const channel = 'spot@private.orders.v3.api.pb';
1123
1236
  orders = await this.watchSpotPrivate(channel, messageHash, params);
1124
1237
  }
1125
1238
  else {
@@ -1195,11 +1308,18 @@ class mexc extends mexc$1 {
1195
1308
  // "s": "MXUSDT",
1196
1309
  // "t":1661938138193
1197
1310
  // }
1311
+ // protobuf
1312
+ // {
1313
+ // channel: "spot@private.orders.v3.api.pb",
1314
+ // symbol: "MXUSDT",
1315
+ // sendTime: 1736417034281,
1316
+ // privateOrders {}
1317
+ // }
1198
1318
  //
1199
1319
  const messageHash = 'orders';
1200
- const data = this.safeValue2(message, 'd', 'data');
1320
+ const data = this.safeDictN(message, ['d', 'data', 'privateOrders']);
1201
1321
  const futuresMarketId = this.safeString(data, 'symbol');
1202
- const marketId = this.safeString(message, 's', futuresMarketId);
1322
+ const marketId = this.safeString2(message, 's', 'symbol', futuresMarketId);
1203
1323
  const market = this.safeMarket(marketId);
1204
1324
  const symbol = market['symbol'];
1205
1325
  let parsed = undefined;
@@ -1270,11 +1390,28 @@ class mexc extends mexc$1 {
1270
1390
  // "s":1,
1271
1391
  // "i":"e03a5c7441e44ed899466a7140b71391",
1272
1392
  // }
1393
+ // protofbuf spot order
1394
+ // {
1395
+ // "id":"C02__583905164440776704043",
1396
+ // "price":"0.001053",
1397
+ // "quantity":"2000",
1398
+ // "amount":"0",
1399
+ // "avgPrice":"0.001007",
1400
+ // "orderType":5,
1401
+ // "tradeType":1,
1402
+ // "remainAmount":"0.092",
1403
+ // "remainQuantity":"0",
1404
+ // "lastDealQuantity":"2000",
1405
+ // "cumulativeQuantity":"2000",
1406
+ // "cumulativeAmount":"2.014",
1407
+ // "status":2,
1408
+ // "createTime":"1754996075502"
1409
+ // }
1273
1410
  //
1274
- const timestamp = this.safeInteger(order, 'O');
1275
- const side = this.safeString(order, 'S');
1276
- const status = this.safeString(order, 's');
1277
- const type = this.safeString(order, 'o');
1411
+ const timestamp = this.safeInteger(order, 'createTime');
1412
+ const side = this.safeString(order, 'tradeType');
1413
+ const status = this.safeString(order, 'status');
1414
+ const type = this.safeString(order, 'orderType');
1278
1415
  let fee = undefined;
1279
1416
  const feeCurrency = this.safeString(order, 'N');
1280
1417
  if (feeCurrency !== undefined) {
@@ -1284,8 +1421,8 @@ class mexc extends mexc$1 {
1284
1421
  };
1285
1422
  }
1286
1423
  return this.safeOrder({
1287
- 'id': this.safeString(order, 'i'),
1288
- 'clientOrderId': this.safeString(order, 'c'),
1424
+ 'id': this.safeString(order, 'id'),
1425
+ 'clientOrderId': this.safeString(order, 'clientOrderId'),
1289
1426
  'timestamp': timestamp,
1290
1427
  'datetime': this.iso8601(timestamp),
1291
1428
  'lastTradeTimestamp': undefined,
@@ -1294,14 +1431,14 @@ class mexc extends mexc$1 {
1294
1431
  'type': this.parseWsOrderType(type),
1295
1432
  'timeInForce': this.parseWsTimeInForce(type),
1296
1433
  'side': (side === '1') ? 'buy' : 'sell',
1297
- 'price': this.safeString(order, 'p'),
1434
+ 'price': this.safeString(order, 'price'),
1298
1435
  'stopPrice': undefined,
1299
- 'triggerPrice': this.safeNumber(order, 'P'),
1300
- 'average': this.safeString(order, 'ap'),
1301
- 'amount': this.safeString(order, 'v'),
1302
- 'cost': this.safeString(order, 'a'),
1303
- 'filled': this.safeString(order, 'cv'),
1304
- 'remaining': this.safeString(order, 'V'),
1436
+ 'triggerPrice': undefined,
1437
+ 'average': this.safeString(order, 'avgPrice'),
1438
+ 'amount': this.safeString(order, 'quantity'),
1439
+ 'cost': this.safeString(order, 'amount'),
1440
+ 'filled': this.safeString(order, 'cumulativeQuantity'),
1441
+ 'remaining': this.safeString(order, 'remainQuantity'),
1305
1442
  'fee': fee,
1306
1443
  'trades': undefined,
1307
1444
  'info': order,
@@ -1324,7 +1461,7 @@ class mexc extends mexc$1 {
1324
1461
  parseWsOrderType(type) {
1325
1462
  const types = {
1326
1463
  '1': 'limit',
1327
- '2': undefined,
1464
+ '2': 'limit',
1328
1465
  '3': undefined,
1329
1466
  '4': undefined,
1330
1467
  '5': 'market',
@@ -1346,7 +1483,7 @@ class mexc extends mexc$1 {
1346
1483
  /**
1347
1484
  * @method
1348
1485
  * @name mexc#watchBalance
1349
- * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#spot-account-upadte
1486
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-update
1350
1487
  * @description watch balance and get the amount of funds available for trading or funds locked in orders
1351
1488
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1352
1489
  * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
@@ -1357,7 +1494,7 @@ class mexc extends mexc$1 {
1357
1494
  [type, params] = this.handleMarketTypeAndParams('watchBalance', undefined, params);
1358
1495
  const messageHash = 'balance:' + type;
1359
1496
  if (type === 'spot') {
1360
- const channel = 'spot@private.account.v3.api';
1497
+ const channel = 'spot@private.account.v3.api.pb';
1361
1498
  return await this.watchSpotPrivate(channel, messageHash, params);
1362
1499
  }
1363
1500
  else {
@@ -1396,23 +1533,23 @@ class mexc extends mexc$1 {
1396
1533
  // "ts": 1680059188190
1397
1534
  // }
1398
1535
  //
1399
- const c = this.safeString(message, 'c');
1536
+ const c = this.safeString2(message, 'c', 'channel');
1400
1537
  const type = (c === undefined) ? 'swap' : 'spot';
1401
1538
  const messageHash = 'balance:' + type;
1402
- const data = this.safeValue2(message, 'd', 'data');
1539
+ const data = this.safeDictN(message, ['d', 'data', 'privateAccount']);
1403
1540
  const futuresTimestamp = this.safeInteger(message, 'ts');
1404
- const timestamp = this.safeInteger(data, 'c', futuresTimestamp);
1541
+ const timestamp = this.safeInteger2(data, 'c', 'time', futuresTimestamp);
1405
1542
  if (!(type in this.balance)) {
1406
1543
  this.balance[type] = {};
1407
1544
  }
1408
1545
  this.balance[type]['info'] = data;
1409
1546
  this.balance[type]['timestamp'] = timestamp;
1410
1547
  this.balance[type]['datetime'] = this.iso8601(timestamp);
1411
- const currencyId = this.safeString2(data, 'a', 'currency');
1548
+ const currencyId = this.safeStringN(data, ['a', 'currency', 'vcoinName']);
1412
1549
  const code = this.safeCurrencyCode(currencyId);
1413
1550
  const account = this.account();
1414
- account['free'] = this.safeString2(data, 'f', 'availableBalance');
1415
- account['used'] = this.safeString2(data, 'l', 'frozenBalance');
1551
+ account['total'] = this.safeStringN(data, ['f', 'availableBalance', 'balanceAmount']);
1552
+ account['used'] = this.safeStringN(data, ['l', 'frozenBalance', 'frozenAmount']);
1416
1553
  this.balance[type][code] = account;
1417
1554
  this.balance[type] = this.safeBalance(this.balance[type]);
1418
1555
  client.resolve(this.balance[type], messageHash);
@@ -1432,14 +1569,7 @@ class mexc extends mexc$1 {
1432
1569
  let url = undefined;
1433
1570
  let channel = undefined;
1434
1571
  if (market['spot']) {
1435
- let miniTicker = false;
1436
- [miniTicker, params] = this.handleOptionAndParams(params, 'watchTicker', 'miniTicker');
1437
- if (miniTicker) {
1438
- channel = 'spot@public.miniTicker.v3.api@' + market['id'] + '@UTC+8';
1439
- }
1440
- else {
1441
- channel = 'spot@public.bookTicker.v3.api@' + market['id'];
1442
- }
1572
+ channel = 'spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id'];
1443
1573
  url = this.urls['api']['ws']['spot'];
1444
1574
  params['unsubscribed'] = true;
1445
1575
  await this.watchSpotPublic(channel, messageHash, params);
@@ -1479,34 +1609,33 @@ class mexc extends mexc$1 {
1479
1609
  const url = (isSpot) ? this.urls['api']['ws']['spot'] : this.urls['api']['ws']['swap'];
1480
1610
  const request = {};
1481
1611
  if (isSpot) {
1482
- let miniTicker = false;
1483
- [miniTicker, params] = this.handleOptionAndParams(params, 'watchTickers', 'miniTicker');
1484
- const topics = [];
1485
- if (!miniTicker) {
1486
- if (symbols === undefined) {
1487
- throw new errors.ArgumentsRequired(this.id + ' watchTickers required symbols argument for the bookTicker channel');
1488
- }
1489
- const marketIds = this.marketIds(symbols);
1490
- for (let i = 0; i < marketIds.length; i++) {
1491
- const marketId = marketIds[i];
1492
- messageHashes.push('unsubscribe:ticker:' + symbols[i]);
1493
- const channel = 'spot@public.bookTicker.v3.api@' + marketId;
1494
- topics.push(channel);
1495
- }
1496
- }
1497
- else {
1498
- topics.push('spot@public.miniTickers.v3.api@UTC+8');
1499
- if (symbols === undefined) {
1500
- messageHashes.push('unsubscribe:spot:ticker');
1501
- }
1502
- else {
1503
- for (let i = 0; i < symbols.length; i++) {
1504
- messageHashes.push('unsubscribe:ticker:' + symbols[i]);
1505
- }
1506
- }
1507
- }
1508
- request['method'] = 'UNSUBSCRIPTION';
1509
- request['params'] = topics;
1612
+ throw new errors.NotSupported(this.id + ' watchTickers does not support spot markets');
1613
+ // let miniTicker = false;
1614
+ // [ miniTicker, params ] = this.handleOptionAndParams (params, 'watchTickers', 'miniTicker');
1615
+ // const topics = [];
1616
+ // if (!miniTicker) {
1617
+ // if (symbols === undefined) {
1618
+ // throw new ArgumentsRequired (this.id + ' watchTickers required symbols argument for the bookTicker channel');
1619
+ // }
1620
+ // const marketIds = this.marketIds (symbols);
1621
+ // for (let i = 0; i < marketIds.length; i++) {
1622
+ // const marketId = marketIds[i];
1623
+ // messageHashes.push ('unsubscribe:ticker:' + symbols[i]);
1624
+ // const channel = 'spot@public.bookTicker.v3.api@' + marketId;
1625
+ // topics.push (channel);
1626
+ // }
1627
+ // } else {
1628
+ // topics.push ('spot@public.miniTickers.v3.api@UTC+8');
1629
+ // if (symbols === undefined) {
1630
+ // messageHashes.push ('unsubscribe:spot:ticker');
1631
+ // } else {
1632
+ // for (let i = 0; i < symbols.length; i++) {
1633
+ // messageHashes.push ('unsubscribe:ticker:' + symbols[i]);
1634
+ // }
1635
+ // }
1636
+ // }
1637
+ // request['method'] = 'UNSUBSCRIPTION';
1638
+ // request['params'] = topics;
1510
1639
  }
1511
1640
  else {
1512
1641
  request['method'] = 'unsub.tickers';
@@ -1544,7 +1673,7 @@ class mexc extends mexc$1 {
1544
1673
  for (let i = 0; i < symbols.length; i++) {
1545
1674
  if (isSpot) {
1546
1675
  const market = this.market(symbols[i]);
1547
- topics.push('spot@public.bookTicker.v3.api@' + market['id']);
1676
+ topics.push('spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id']);
1548
1677
  }
1549
1678
  messageHashes.push('unsubscribe:bidask:' + symbols[i]);
1550
1679
  }
@@ -1578,7 +1707,7 @@ class mexc extends mexc$1 {
1578
1707
  let url = undefined;
1579
1708
  if (market['spot']) {
1580
1709
  url = this.urls['api']['ws']['spot'];
1581
- const channel = 'spot@public.kline.v3.api@' + market['id'] + '@' + timeframeId;
1710
+ const channel = 'spot@public.kline.v3.api.pb@' + market['id'] + '@' + timeframeId;
1582
1711
  params['unsubscribed'] = true;
1583
1712
  await this.watchSpotPublic(channel, messageHash, params);
1584
1713
  }
@@ -1601,6 +1730,7 @@ class mexc extends mexc$1 {
1601
1730
  * @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
1602
1731
  * @param {string} symbol unified array of symbols
1603
1732
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1733
+ * @param {string} [params.frequency] the frequency of the order book updates, default is '10ms', can be '100ms' or '10ms
1604
1734
  * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
1605
1735
  */
1606
1736
  async unWatchOrderBook(symbol, params = {}) {
@@ -1611,7 +1741,9 @@ class mexc extends mexc$1 {
1611
1741
  let url = undefined;
1612
1742
  if (market['spot']) {
1613
1743
  url = this.urls['api']['ws']['spot'];
1614
- const channel = 'spot@public.increase.depth.v3.api@' + market['id'];
1744
+ let frequency = undefined;
1745
+ [frequency, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'frequency', '100ms');
1746
+ const channel = 'spot@public.aggre.depth.v3.api.pb@' + frequency + '@' + market['id'];
1615
1747
  params['unsubscribed'] = true;
1616
1748
  await this.watchSpotPublic(channel, messageHash, params);
1617
1749
  }
@@ -1644,7 +1776,7 @@ class mexc extends mexc$1 {
1644
1776
  let url = undefined;
1645
1777
  if (market['spot']) {
1646
1778
  url = this.urls['api']['ws']['spot'];
1647
- const channel = 'spot@public.deals.v3.api@' + market['id'];
1779
+ const channel = 'spot@public.aggre.deals.v3.api.pb@100ms@' + market['id'];
1648
1780
  params['unsubscribed'] = true;
1649
1781
  await this.watchSpotPublic(channel, messageHash, params);
1650
1782
  }
@@ -1767,6 +1899,7 @@ class mexc extends mexc$1 {
1767
1899
  const channel = this.safeString(parts, 1);
1768
1900
  const methods = {
1769
1901
  'public.increase.depth.v3.api': this.handleOrderBookSubscription,
1902
+ 'public.aggre.depth.v3.api.pb': this.handleOrderBookSubscription,
1770
1903
  };
1771
1904
  const method = this.safeValue(methods, channel);
1772
1905
  if (method !== undefined) {
@@ -1774,12 +1907,62 @@ class mexc extends mexc$1 {
1774
1907
  }
1775
1908
  }
1776
1909
  }
1910
+ handleProtobufMessage(client, message) {
1911
+ // protobuf message decoded
1912
+ // {
1913
+ // "channel":"spot@public.kline.v3.api.pb@BTCUSDT@Min1",
1914
+ // "symbol":"BTCUSDT",
1915
+ // "symbolId":"2fb942154ef44a4ab2ef98c8afb6a4a7",
1916
+ // "createTime":"1754737941062",
1917
+ // "publicSpotKline":{
1918
+ // "interval":"Min1",
1919
+ // "windowStart":"1754737920",
1920
+ // "openingPrice":"117317.31",
1921
+ // "closingPrice":"117325.26",
1922
+ // "highestPrice":"117341",
1923
+ // "lowestPrice":"117317.3",
1924
+ // "volume":"3.12599854",
1925
+ // "amount":"366804.43",
1926
+ // "windowEnd":"1754737980"
1927
+ // }
1928
+ // }
1929
+ const channel = this.safeString(message, 'channel');
1930
+ const channelParts = channel.split('@');
1931
+ const channelId = this.safeString(channelParts, 1);
1932
+ if (channelId === 'public.kline.v3.api.pb') {
1933
+ this.handleOHLCV(client, message);
1934
+ }
1935
+ else if (channelId === 'public.aggre.deals.v3.api.pb') {
1936
+ this.handleTrades(client, message);
1937
+ }
1938
+ else if (channelId === 'public.aggre.bookTicker.v3.api.pb') {
1939
+ this.handleTicker(client, message);
1940
+ }
1941
+ else if (channelId === 'public.aggre.depth.v3.api.pb') {
1942
+ this.handleOrderBook(client, message);
1943
+ }
1944
+ else if (channelId === 'private.account.v3.api.pb') {
1945
+ this.handleBalance(client, message);
1946
+ }
1947
+ else if (channelId === 'private.deals.v3.api.pb') {
1948
+ this.handleMyTrade(client, message);
1949
+ }
1950
+ else if (channelId === 'private.orders.v3.api.pb') {
1951
+ this.handleOrder(client, message);
1952
+ }
1953
+ return true;
1954
+ }
1777
1955
  handleMessage(client, message) {
1778
1956
  if (typeof message === 'string') {
1779
1957
  if (message === 'Invalid listen key') {
1780
1958
  const error = new errors.AuthenticationError(this.id + ' invalid listen key');
1781
1959
  client.reject(error);
1960
+ return;
1782
1961
  }
1962
+ }
1963
+ if (this.isBinaryMessage(message)) {
1964
+ message = this.decodeProtoMsg(message);
1965
+ this.handleProtobufMessage(client, message);
1783
1966
  return;
1784
1967
  }
1785
1968
  if ('msg' in message) {
@@ -1825,4 +2008,4 @@ class mexc extends mexc$1 {
1825
2008
  }
1826
2009
  }
1827
2010
 
1828
- module.exports = mexc;
2011
+ exports["default"] = mexc;