ccxt-ir 4.9.32 → 4.11.0

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 (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +7 -1
  4. package/dist/cjs/package.json +1 -1
  5. package/dist/cjs/src/abstract/asretether.js +11 -0
  6. package/dist/cjs/src/abstract/bidarz.js +11 -0
  7. package/dist/cjs/src/asretether.js +325 -0
  8. package/dist/cjs/src/bidarz.js +337 -0
  9. package/dist/cjs/src/bit24.js +4 -3
  10. package/dist/cjs/src/raastin.js +144 -16
  11. package/js/ccxt.d.ts +8 -2
  12. package/js/ccxt.js +6 -2
  13. package/js/src/abstract/asretether.d.ts +8 -0
  14. package/js/src/abstract/asretether.js +11 -0
  15. package/js/src/abstract/bidarz.d.ts +9 -0
  16. package/js/src/abstract/bidarz.js +11 -0
  17. package/js/src/abstract/raastin.d.ts +1 -0
  18. package/js/src/asretether.d.ts +21 -0
  19. package/js/src/asretether.js +324 -0
  20. package/js/src/bidarz.d.ts +22 -0
  21. package/js/src/bidarz.js +336 -0
  22. package/js/src/bit24.js +4 -3
  23. package/js/src/raastin.d.ts +2 -0
  24. package/js/src/raastin.js +144 -16
  25. package/js/src/src/abantether.d.ts +21 -0
  26. package/js/src/src/abantether.js +353 -0
  27. package/js/src/src/abstract/abantether.d.ts +8 -0
  28. package/js/src/src/abstract/abantether.js +11 -0
  29. package/js/src/src/abstract/afratether.d.ts +9 -0
  30. package/js/src/src/abstract/afratether.js +11 -0
  31. package/js/src/src/abstract/alpaca.d.ts +77 -0
  32. package/js/src/src/abstract/alpaca.js +11 -0
  33. package/js/src/src/abstract/apex.d.ts +34 -0
  34. package/js/src/src/abstract/apex.js +11 -0
  35. package/js/src/src/abstract/arzinja.d.ts +8 -0
  36. package/js/src/src/abstract/arzinja.js +11 -0
  37. package/js/src/src/abstract/arzplus.d.ts +11 -0
  38. package/js/src/src/abstract/arzplus.js +11 -0
  39. package/js/src/src/abstract/ascendex.d.ts +80 -0
  40. package/js/src/src/abstract/ascendex.js +11 -0
  41. package/js/src/src/abstract/asretether.d.ts +8 -0
  42. package/js/src/src/abstract/asretether.js +11 -0
  43. package/js/src/src/abstract/bidarz.d.ts +9 -0
  44. package/js/src/src/abstract/bidarz.js +11 -0
  45. package/js/src/src/abstract/bigone.d.ts +48 -0
  46. package/js/src/src/abstract/bigone.js +11 -0
  47. package/js/src/src/abstract/binance.d.ts +773 -0
  48. package/js/src/src/abstract/binance.js +11 -0
  49. package/js/src/src/abstract/bingx.d.ts +165 -0
  50. package/js/src/src/abstract/bingx.js +11 -0
  51. package/js/src/src/abstract/bit24.d.ts +9 -0
  52. package/js/src/src/abstract/bit24.js +11 -0
  53. package/js/src/src/abstract/bit2c.d.ts +30 -0
  54. package/js/src/src/abstract/bit2c.js +11 -0
  55. package/js/src/src/abstract/bitbank.d.ts +35 -0
  56. package/js/src/src/abstract/bitbank.js +11 -0
  57. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  58. package/js/src/src/abstract/bitbarg.js +11 -0
  59. package/js/src/src/abstract/bitbns.d.ts +43 -0
  60. package/js/src/src/abstract/bitbns.js +11 -0
  61. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  62. package/js/src/src/abstract/bitfinex.js +11 -0
  63. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  64. package/js/src/src/abstract/bitflyer.js +11 -0
  65. package/js/src/src/abstract/bitget.d.ts +578 -0
  66. package/js/src/src/abstract/bitget.js +11 -0
  67. package/js/src/src/abstract/bithumb.d.ts +35 -0
  68. package/js/src/src/abstract/bithumb.js +11 -0
  69. package/js/src/src/abstract/bitimen.d.ts +10 -0
  70. package/js/src/src/abstract/bitimen.js +11 -0
  71. package/js/src/src/abstract/bitir.d.ts +10 -0
  72. package/js/src/src/abstract/bitir.js +11 -0
  73. package/js/src/src/abstract/bitmart.d.ts +120 -0
  74. package/js/src/src/abstract/bitmart.js +11 -0
  75. package/js/src/src/abstract/bitmex.d.ts +100 -0
  76. package/js/src/src/abstract/bitmex.js +11 -0
  77. package/js/src/src/abstract/bitopro.d.ts +33 -0
  78. package/js/src/src/abstract/bitopro.js +11 -0
  79. package/js/src/src/abstract/bitpin.d.ts +11 -0
  80. package/js/src/src/abstract/bitpin.js +11 -0
  81. package/js/src/src/abstract/bitrue.d.ts +75 -0
  82. package/js/src/src/abstract/bitrue.js +11 -0
  83. package/js/src/src/abstract/bitso.d.ts +46 -0
  84. package/js/src/src/abstract/bitso.js +11 -0
  85. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  86. package/js/src/src/abstract/bitstamp.js +11 -0
  87. package/js/src/src/abstract/bitteam.d.ts +32 -0
  88. package/js/src/src/abstract/bitteam.js +11 -0
  89. package/js/src/src/abstract/bittrade.d.ts +117 -0
  90. package/js/src/src/abstract/bittrade.js +11 -0
  91. package/js/src/src/abstract/bitunix.d.ts +9 -0
  92. package/js/src/src/abstract/bitunix.js +11 -0
  93. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  94. package/js/src/src/abstract/bitvavo.js +11 -0
  95. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  96. package/js/src/src/abstract/blockchaincom.js +11 -0
  97. package/js/src/src/abstract/blofin.d.ts +70 -0
  98. package/js/src/src/abstract/blofin.js +11 -0
  99. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  100. package/js/src/src/abstract/btcalpha.js +11 -0
  101. package/js/src/src/abstract/btcbox.d.ts +18 -0
  102. package/js/src/src/abstract/btcbox.js +11 -0
  103. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  104. package/js/src/src/abstract/btcmarkets.js +11 -0
  105. package/js/src/src/abstract/btcturk.d.ts +23 -0
  106. package/js/src/src/abstract/btcturk.js +11 -0
  107. package/js/src/src/abstract/bybit.d.ts +316 -0
  108. package/js/src/src/abstract/bybit.js +11 -0
  109. package/js/src/src/abstract/bydfi.d.ts +11 -0
  110. package/js/src/src/abstract/bydfi.js +11 -0
  111. package/js/src/src/abstract/cafearz.d.ts +8 -0
  112. package/js/src/src/abstract/cafearz.js +11 -0
  113. package/js/src/src/abstract/cex.d.ts +35 -0
  114. package/js/src/src/abstract/cex.js +11 -0
  115. package/js/src/src/abstract/coinbase.d.ts +97 -0
  116. package/js/src/src/abstract/coinbase.js +11 -0
  117. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  118. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  119. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  120. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  121. package/js/src/src/abstract/coincatch.d.ts +97 -0
  122. package/js/src/src/abstract/coincatch.js +11 -0
  123. package/js/src/src/abstract/coincheck.d.ts +36 -0
  124. package/js/src/src/abstract/coincheck.js +11 -0
  125. package/js/src/src/abstract/coinex.d.ts +240 -0
  126. package/js/src/src/abstract/coinex.js +11 -0
  127. package/js/src/src/abstract/coinmate.d.ts +65 -0
  128. package/js/src/src/abstract/coinmate.js +11 -0
  129. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  130. package/js/src/src/abstract/coinmetro.js +11 -0
  131. package/js/src/src/abstract/coinone.d.ts +70 -0
  132. package/js/src/src/abstract/coinone.js +11 -0
  133. package/js/src/src/abstract/coinsph.d.ts +57 -0
  134. package/js/src/src/abstract/coinsph.js +11 -0
  135. package/js/src/src/abstract/coinspot.d.ts +31 -0
  136. package/js/src/src/abstract/coinspot.js +11 -0
  137. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  138. package/js/src/src/abstract/cryptocom.js +11 -0
  139. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  140. package/js/src/src/abstract/cryptomus.js +11 -0
  141. package/js/src/src/abstract/defx.d.ts +72 -0
  142. package/js/src/src/abstract/defx.js +11 -0
  143. package/js/src/src/abstract/delta.d.ts +53 -0
  144. package/js/src/src/abstract/delta.js +11 -0
  145. package/js/src/src/abstract/deribit.d.ts +129 -0
  146. package/js/src/src/abstract/deribit.js +11 -0
  147. package/js/src/src/abstract/derive.d.ts +120 -0
  148. package/js/src/src/abstract/derive.js +11 -0
  149. package/js/src/src/abstract/digifinex.d.ts +95 -0
  150. package/js/src/src/abstract/digifinex.js +11 -0
  151. package/js/src/src/abstract/ellipx.d.ts +28 -0
  152. package/js/src/src/abstract/ellipx.js +11 -0
  153. package/js/src/src/abstract/eterex.d.ts +8 -0
  154. package/js/src/src/abstract/eterex.js +11 -0
  155. package/js/src/src/abstract/excoino.d.ts +10 -0
  156. package/js/src/src/abstract/excoino.js +11 -0
  157. package/js/src/src/abstract/exir.d.ts +11 -0
  158. package/js/src/src/abstract/exir.js +11 -0
  159. package/js/src/src/abstract/exmo.d.ts +58 -0
  160. package/js/src/src/abstract/exmo.js +11 -0
  161. package/js/src/src/abstract/exnovin.d.ts +9 -0
  162. package/js/src/src/abstract/exnovin.js +11 -0
  163. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  164. package/js/src/src/abstract/farhadexchange.js +11 -0
  165. package/js/src/src/abstract/foxbit.d.ts +29 -0
  166. package/js/src/src/abstract/foxbit.js +11 -0
  167. package/js/src/src/abstract/gate.d.ts +287 -0
  168. package/js/src/src/abstract/gate.js +11 -0
  169. package/js/src/src/abstract/gemini.d.ts +62 -0
  170. package/js/src/src/abstract/gemini.js +11 -0
  171. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  172. package/js/src/src/abstract/hamtapay.js +11 -0
  173. package/js/src/src/abstract/hashkey.d.ts +70 -0
  174. package/js/src/src/abstract/hashkey.js +11 -0
  175. package/js/src/src/abstract/hibachi.d.ts +29 -0
  176. package/js/src/src/abstract/hibachi.js +11 -0
  177. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  178. package/js/src/src/abstract/hitbtc.js +11 -0
  179. package/js/src/src/abstract/hitobit.d.ts +11 -0
  180. package/js/src/src/abstract/hitobit.js +11 -0
  181. package/js/src/src/abstract/hollaex.d.ts +36 -0
  182. package/js/src/src/abstract/hollaex.js +11 -0
  183. package/js/src/src/abstract/htx.d.ts +551 -0
  184. package/js/src/src/abstract/htx.js +11 -0
  185. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  186. package/js/src/src/abstract/hyperliquid.js +11 -0
  187. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  188. package/js/src/src/abstract/independentreserve.js +11 -0
  189. package/js/src/src/abstract/indodax.d.ts +29 -0
  190. package/js/src/src/abstract/indodax.js +11 -0
  191. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  192. package/js/src/src/abstract/iranexchange.js +11 -0
  193. package/js/src/src/abstract/jibitex.d.ts +10 -0
  194. package/js/src/src/abstract/jibitex.js +11 -0
  195. package/js/src/src/abstract/kcex.d.ts +10 -0
  196. package/js/src/src/abstract/kcex.js +11 -0
  197. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  198. package/js/src/src/abstract/kifpoolme.js +11 -0
  199. package/js/src/src/abstract/kraken.d.ts +61 -0
  200. package/js/src/src/abstract/kraken.js +11 -0
  201. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  202. package/js/src/src/abstract/krakenfutures.js +11 -0
  203. package/js/src/src/abstract/kucoin.d.ts +227 -0
  204. package/js/src/src/abstract/kucoin.js +11 -0
  205. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  206. package/js/src/src/abstract/kucoinfutures.js +11 -0
  207. package/js/src/src/abstract/latoken.d.ts +59 -0
  208. package/js/src/src/abstract/latoken.js +11 -0
  209. package/js/src/src/abstract/lbank.d.ts +65 -0
  210. package/js/src/src/abstract/lbank.js +11 -0
  211. package/js/src/src/abstract/luno.d.ts +41 -0
  212. package/js/src/src/abstract/luno.js +11 -0
  213. package/js/src/src/abstract/mazdax.d.ts +11 -0
  214. package/js/src/src/abstract/mazdax.js +11 -0
  215. package/js/src/src/abstract/mercado.d.ts +28 -0
  216. package/js/src/src/abstract/mercado.js +11 -0
  217. package/js/src/src/abstract/mexc.d.ts +183 -0
  218. package/js/src/src/abstract/mexc.js +11 -0
  219. package/js/src/src/abstract/modetrade.d.ts +122 -0
  220. package/js/src/src/abstract/modetrade.js +11 -0
  221. package/js/src/src/abstract/ndax.d.ts +100 -0
  222. package/js/src/src/abstract/ndax.js +11 -0
  223. package/js/src/src/abstract/nobitex.d.ts +10 -0
  224. package/js/src/src/abstract/nobitex.js +11 -0
  225. package/js/src/src/abstract/novadax.d.ts +32 -0
  226. package/js/src/src/abstract/novadax.js +11 -0
  227. package/js/src/src/abstract/oceanex.d.ts +30 -0
  228. package/js/src/src/abstract/oceanex.js +11 -0
  229. package/js/src/src/abstract/okcoin.d.ts +77 -0
  230. package/js/src/src/abstract/okcoin.js +11 -0
  231. package/js/src/src/abstract/okexchange.d.ts +11 -0
  232. package/js/src/src/abstract/okexchange.js +11 -0
  233. package/js/src/src/abstract/okx.d.ts +352 -0
  234. package/js/src/src/abstract/okx.js +11 -0
  235. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  236. package/js/src/src/abstract/ompfinex.js +11 -0
  237. package/js/src/src/abstract/onetrading.d.ts +26 -0
  238. package/js/src/src/abstract/onetrading.js +11 -0
  239. package/js/src/src/abstract/oxfun.d.ts +37 -0
  240. package/js/src/src/abstract/oxfun.js +11 -0
  241. package/js/src/src/abstract/p2b.d.ts +25 -0
  242. package/js/src/src/abstract/p2b.js +11 -0
  243. package/js/src/src/abstract/paradex.d.ts +66 -0
  244. package/js/src/src/abstract/paradex.js +11 -0
  245. package/js/src/src/abstract/paymium.d.ts +31 -0
  246. package/js/src/src/abstract/paymium.js +11 -0
  247. package/js/src/src/abstract/phemex.d.ts +120 -0
  248. package/js/src/src/abstract/phemex.js +11 -0
  249. package/js/src/src/abstract/pingi.d.ts +9 -0
  250. package/js/src/src/abstract/pingi.js +11 -0
  251. package/js/src/src/abstract/poloniex.d.ts +108 -0
  252. package/js/src/src/abstract/poloniex.js +11 -0
  253. package/js/src/src/abstract/pooleno.d.ts +8 -0
  254. package/js/src/src/abstract/pooleno.js +11 -0
  255. package/js/src/src/abstract/probit.d.ts +26 -0
  256. package/js/src/src/abstract/probit.js +11 -0
  257. package/js/src/src/abstract/raastin.d.ts +11 -0
  258. package/js/src/src/abstract/raastin.js +11 -0
  259. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  260. package/js/src/src/abstract/ramzinex.js +11 -0
  261. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  262. package/js/src/src/abstract/sarmayex.js +11 -0
  263. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  264. package/js/src/src/abstract/sarrafex.js +11 -0
  265. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  266. package/js/src/src/abstract/tabdeal.js +11 -0
  267. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  268. package/js/src/src/abstract/tehran_exchange.js +11 -0
  269. package/js/src/src/abstract/tetherland.d.ts +8 -0
  270. package/js/src/src/abstract/tetherland.js +11 -0
  271. package/js/src/src/abstract/timex.d.ts +65 -0
  272. package/js/src/src/abstract/timex.js +11 -0
  273. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  274. package/js/src/src/abstract/tokocrypto.js +11 -0
  275. package/js/src/src/abstract/toobit.d.ts +10 -0
  276. package/js/src/src/abstract/toobit.js +11 -0
  277. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  278. package/js/src/src/abstract/tradeogre.js +11 -0
  279. package/js/src/src/abstract/twox.d.ts +8 -0
  280. package/js/src/src/abstract/twox.js +11 -0
  281. package/js/src/src/abstract/ubitex.d.ts +10 -0
  282. package/js/src/src/abstract/ubitex.js +11 -0
  283. package/js/src/src/abstract/upbit.d.ts +58 -0
  284. package/js/src/src/abstract/upbit.js +11 -0
  285. package/js/src/src/abstract/vertex.d.ts +22 -0
  286. package/js/src/src/abstract/vertex.js +11 -0
  287. package/js/src/src/abstract/wallex.d.ts +11 -0
  288. package/js/src/src/abstract/wallex.js +11 -0
  289. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  290. package/js/src/src/abstract/wavesexchange.js +11 -0
  291. package/js/src/src/abstract/whitebit.d.ts +117 -0
  292. package/js/src/src/abstract/whitebit.js +11 -0
  293. package/js/src/src/abstract/woo.d.ts +144 -0
  294. package/js/src/src/abstract/woo.js +11 -0
  295. package/js/src/src/abstract/woofipro.d.ts +122 -0
  296. package/js/src/src/abstract/woofipro.js +11 -0
  297. package/js/src/src/abstract/xt.d.ts +160 -0
  298. package/js/src/src/abstract/xt.js +11 -0
  299. package/js/src/src/abstract/yobit.d.ts +19 -0
  300. package/js/src/src/abstract/yobit.js +11 -0
  301. package/js/src/src/abstract/zaif.d.ts +41 -0
  302. package/js/src/src/abstract/zaif.js +11 -0
  303. package/js/src/src/abstract/zonda.d.ts +56 -0
  304. package/js/src/src/abstract/zonda.js +11 -0
  305. package/js/src/src/afratether.d.ts +21 -0
  306. package/js/src/src/afratether.js +356 -0
  307. package/js/src/src/alpaca.d.ts +332 -0
  308. package/js/src/src/alpaca.js +1908 -0
  309. package/js/src/src/apex.d.ts +333 -0
  310. package/js/src/src/apex.js +1942 -0
  311. package/js/src/src/arzinja.d.ts +21 -0
  312. package/js/src/src/arzinja.js +298 -0
  313. package/js/src/src/arzplus.d.ts +26 -0
  314. package/js/src/src/arzplus.js +581 -0
  315. package/js/src/src/ascendex.d.ts +424 -0
  316. package/js/src/src/ascendex.js +3699 -0
  317. package/js/src/src/asretether.d.ts +21 -0
  318. package/js/src/src/asretether.js +324 -0
  319. package/js/src/src/base/Exchange.d.ts +926 -0
  320. package/js/src/src/base/Exchange.js +7399 -0
  321. package/js/src/src/base/Precise.d.ts +42 -0
  322. package/js/src/src/base/Precise.js +275 -0
  323. package/js/src/src/base/errors.d.ts +168 -0
  324. package/js/src/src/base/errors.js +255 -0
  325. package/js/src/src/base/functions/crypto.d.ts +16 -0
  326. package/js/src/src/base/functions/crypto.js +131 -0
  327. package/js/src/src/base/functions/encode.d.ts +4 -0
  328. package/js/src/src/base/functions/encode.js +32 -0
  329. package/js/src/src/base/functions/generic.d.ts +29 -0
  330. package/js/src/src/base/functions/generic.js +203 -0
  331. package/js/src/src/base/functions/misc.d.ts +9 -0
  332. package/js/src/src/base/functions/misc.js +101 -0
  333. package/js/src/src/base/functions/number.d.ts +27 -0
  334. package/js/src/src/base/functions/number.js +313 -0
  335. package/js/src/src/base/functions/platform.d.ts +7 -0
  336. package/js/src/src/base/functions/platform.js +27 -0
  337. package/js/src/src/base/functions/rsa.d.ts +5 -0
  338. package/js/src/src/base/functions/rsa.js +49 -0
  339. package/js/src/src/base/functions/string.d.ts +7 -0
  340. package/js/src/src/base/functions/string.js +44 -0
  341. package/js/src/src/base/functions/throttle.d.ts +6 -0
  342. package/js/src/src/base/functions/throttle.js +67 -0
  343. package/js/src/src/base/functions/time.d.ts +21 -0
  344. package/js/src/src/base/functions/time.js +171 -0
  345. package/js/src/src/base/functions/totp.d.ts +3 -0
  346. package/js/src/src/base/functions/totp.js +25 -0
  347. package/js/src/src/base/functions/type.d.ts +37 -0
  348. package/js/src/src/base/functions/type.js +179 -0
  349. package/js/src/src/base/functions.d.ts +10 -0
  350. package/js/src/src/base/functions.js +18 -0
  351. package/js/src/src/base/types.d.ts +586 -0
  352. package/js/src/src/base/types.js +7 -0
  353. package/js/src/src/base/ws/Cache.d.ts +27 -0
  354. package/js/src/src/base/ws/Cache.js +260 -0
  355. package/js/src/src/base/ws/Client.d.ts +53 -0
  356. package/js/src/src/base/ws/Client.js +307 -0
  357. package/js/src/src/base/ws/Future.d.ts +8 -0
  358. package/js/src/src/base/ws/Future.js +35 -0
  359. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  360. package/js/src/src/base/ws/OrderBook.js +130 -0
  361. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  362. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  363. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  364. package/js/src/src/base/ws/WsClient.js +69 -0
  365. package/js/src/src/bequant.d.ts +4 -0
  366. package/js/src/src/bequant.js +35 -0
  367. package/js/src/src/bidarz.d.ts +16 -0
  368. package/js/src/src/bidarz.js +327 -0
  369. package/js/src/src/bigone.d.ts +296 -0
  370. package/js/src/src/bigone.js +2340 -0
  371. package/js/src/src/binance.d.ts +1667 -0
  372. package/js/src/src/binance.js +14400 -0
  373. package/js/src/src/binancecoinm.d.ts +6 -0
  374. package/js/src/src/binancecoinm.js +51 -0
  375. package/js/src/src/binanceus.d.ts +4 -0
  376. package/js/src/src/binanceus.js +225 -0
  377. package/js/src/src/binanceusdm.d.ts +6 -0
  378. package/js/src/src/binanceusdm.js +63 -0
  379. package/js/src/src/bingx.d.ts +778 -0
  380. package/js/src/src/bingx.js +6705 -0
  381. package/js/src/src/bit24.d.ts +24 -0
  382. package/js/src/src/bit24.js +520 -0
  383. package/js/src/src/bit2c.d.ts +146 -0
  384. package/js/src/src/bit2c.js +1029 -0
  385. package/js/src/src/bitbank.d.ts +181 -0
  386. package/js/src/src/bitbank.js +1146 -0
  387. package/js/src/src/bitbarg.d.ts +21 -0
  388. package/js/src/src/bitbarg.js +312 -0
  389. package/js/src/src/bitbns.d.ts +184 -0
  390. package/js/src/src/bitbns.js +1288 -0
  391. package/js/src/src/bitfinex.d.ts +516 -0
  392. package/js/src/src/bitfinex.js +3951 -0
  393. package/js/src/src/bitflyer.d.ts +229 -0
  394. package/js/src/src/bitflyer.js +1209 -0
  395. package/js/src/src/bitget.d.ts +1109 -0
  396. package/js/src/src/bitget.js +11033 -0
  397. package/js/src/src/bithumb.d.ts +165 -0
  398. package/js/src/src/bithumb.js +1257 -0
  399. package/js/src/src/bitimen.d.ts +23 -0
  400. package/js/src/src/bitimen.js +424 -0
  401. package/js/src/src/bitir.d.ts +23 -0
  402. package/js/src/src/bitir.js +521 -0
  403. package/js/src/src/bitmart.d.ts +736 -0
  404. package/js/src/src/bitmart.js +5639 -0
  405. package/js/src/src/bitmex.d.ts +395 -0
  406. package/js/src/src/bitmex.js +3088 -0
  407. package/js/src/src/bitopro.d.ts +295 -0
  408. package/js/src/src/bitopro.js +1892 -0
  409. package/js/src/src/bitpin.d.ts +23 -0
  410. package/js/src/src/bitpin.js +487 -0
  411. package/js/src/src/bitrue.d.ts +384 -0
  412. package/js/src/src/bitrue.js +3382 -0
  413. package/js/src/src/bitso.d.ts +270 -0
  414. package/js/src/src/bitso.js +1881 -0
  415. package/js/src/src/bitstamp.d.ts +355 -0
  416. package/js/src/src/bitstamp.js +2445 -0
  417. package/js/src/src/bitteam.d.ts +229 -0
  418. package/js/src/src/bitteam.js +2420 -0
  419. package/js/src/src/bittrade.d.ts +298 -0
  420. package/js/src/src/bittrade.js +2050 -0
  421. package/js/src/src/bitunix.d.ts +21 -0
  422. package/js/src/src/bitunix.js +326 -0
  423. package/js/src/src/bitvavo.d.ts +311 -0
  424. package/js/src/src/bitvavo.js +2204 -0
  425. package/js/src/src/blockchaincom.d.ts +256 -0
  426. package/js/src/src/blockchaincom.js +1259 -0
  427. package/js/src/src/blofin.d.ts +439 -0
  428. package/js/src/src/blofin.js +2576 -0
  429. package/js/src/src/btcalpha.d.ts +209 -0
  430. package/js/src/src/btcalpha.js +1056 -0
  431. package/js/src/src/btcbox.d.ts +144 -0
  432. package/js/src/src/btcbox.js +834 -0
  433. package/js/src/src/btcmarkets.d.ts +253 -0
  434. package/js/src/src/btcmarkets.js +1418 -0
  435. package/js/src/src/btcturk.d.ts +161 -0
  436. package/js/src/src/btcturk.js +1058 -0
  437. package/js/src/src/bybit.d.ts +1097 -0
  438. package/js/src/src/bybit.js +9382 -0
  439. package/js/src/src/bydfi.d.ts +23 -0
  440. package/js/src/src/bydfi.js +434 -0
  441. package/js/src/src/cafearz.d.ts +21 -0
  442. package/js/src/src/cafearz.js +346 -0
  443. package/js/src/src/cex.d.ts +286 -0
  444. package/js/src/src/cex.js +1799 -0
  445. package/js/src/src/coinbase.d.ts +623 -0
  446. package/js/src/src/coinbase.js +5220 -0
  447. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  448. package/js/src/src/coinbaseadvanced.js +18 -0
  449. package/js/src/src/coinbaseexchange.d.ts +334 -0
  450. package/js/src/src/coinbaseexchange.js +2127 -0
  451. package/js/src/src/coinbaseinternational.d.ts +443 -0
  452. package/js/src/src/coinbaseinternational.js +2336 -0
  453. package/js/src/src/coincatch.d.ts +786 -0
  454. package/js/src/src/coincatch.js +5492 -0
  455. package/js/src/src/coincheck.d.ts +147 -0
  456. package/js/src/src/coincheck.js +962 -0
  457. package/js/src/src/coinex.d.ts +719 -0
  458. package/js/src/src/coinex.js +6166 -0
  459. package/js/src/src/coinmate.d.ts +202 -0
  460. package/js/src/src/coinmate.js +1215 -0
  461. package/js/src/src/coinmetro.d.ts +244 -0
  462. package/js/src/src/coinmetro.js +2024 -0
  463. package/js/src/src/coinone.d.ts +158 -0
  464. package/js/src/src/coinone.js +1278 -0
  465. package/js/src/src/coinsph.d.ts +310 -0
  466. package/js/src/src/coinsph.js +2203 -0
  467. package/js/src/src/coinspot.d.ts +108 -0
  468. package/js/src/src/coinspot.js +653 -0
  469. package/js/src/src/cryptocom.d.ts +463 -0
  470. package/js/src/src/cryptocom.js +3549 -0
  471. package/js/src/src/cryptomus.d.ts +158 -0
  472. package/js/src/src/cryptomus.js +1169 -0
  473. package/js/src/src/defx.d.ts +348 -0
  474. package/js/src/src/defx.js +2139 -0
  475. package/js/src/src/delta.d.ts +407 -0
  476. package/js/src/src/delta.js +3654 -0
  477. package/js/src/src/deribit.d.ts +516 -0
  478. package/js/src/src/deribit.js +3790 -0
  479. package/js/src/src/derive.d.ts +324 -0
  480. package/js/src/src/derive.js +2655 -0
  481. package/js/src/src/digifinex.d.ts +544 -0
  482. package/js/src/src/digifinex.js +4453 -0
  483. package/js/src/src/ellipx.d.ts +237 -0
  484. package/js/src/src/ellipx.js +2071 -0
  485. package/js/src/src/eterex.d.ts +21 -0
  486. package/js/src/src/eterex.js +299 -0
  487. package/js/src/src/excoino.d.ts +23 -0
  488. package/js/src/src/excoino.js +426 -0
  489. package/js/src/src/exir.d.ts +23 -0
  490. package/js/src/src/exir.js +403 -0
  491. package/js/src/src/exmo.d.ts +426 -0
  492. package/js/src/src/exmo.js +2825 -0
  493. package/js/src/src/exnovin.d.ts +22 -0
  494. package/js/src/src/exnovin.js +378 -0
  495. package/js/src/src/farhadexchange.d.ts +21 -0
  496. package/js/src/src/farhadexchange.js +280 -0
  497. package/js/src/src/fmfwio.d.ts +4 -0
  498. package/js/src/src/fmfwio.js +35 -0
  499. package/js/src/src/foxbit.d.ts +352 -0
  500. package/js/src/src/foxbit.js +2016 -0
  501. package/js/src/src/gate.d.ts +1071 -0
  502. package/js/src/src/gate.js +8282 -0
  503. package/js/src/src/gateio.d.ts +4 -0
  504. package/js/src/src/gateio.js +17 -0
  505. package/js/src/src/gemini.d.ts +257 -0
  506. package/js/src/src/gemini.js +2006 -0
  507. package/js/src/src/hamtapay.d.ts +21 -0
  508. package/js/src/src/hamtapay.js +303 -0
  509. package/js/src/src/hashkey.d.ts +628 -0
  510. package/js/src/src/hashkey.js +4363 -0
  511. package/js/src/src/hibachi.d.ts +346 -0
  512. package/js/src/src/hibachi.js +2137 -0
  513. package/js/src/src/hitbtc.d.ts +558 -0
  514. package/js/src/src/hitbtc.js +3847 -0
  515. package/js/src/src/hitobit.d.ts +23 -0
  516. package/js/src/src/hitobit.js +412 -0
  517. package/js/src/src/hollaex.d.ts +305 -0
  518. package/js/src/src/hollaex.js +2046 -0
  519. package/js/src/src/htx.d.ts +961 -0
  520. package/js/src/src/htx.js +9668 -0
  521. package/js/src/src/huobi.d.ts +4 -0
  522. package/js/src/src/huobi.js +17 -0
  523. package/js/src/src/hyperliquid.d.ts +651 -0
  524. package/js/src/src/hyperliquid.js +3937 -0
  525. package/js/src/src/independentreserve.d.ts +169 -0
  526. package/js/src/src/independentreserve.js +1115 -0
  527. package/js/src/src/indodax.d.ts +217 -0
  528. package/js/src/src/indodax.js +1454 -0
  529. package/js/src/src/iranexchange.d.ts +21 -0
  530. package/js/src/src/iranexchange.js +399 -0
  531. package/js/src/src/jibitex.d.ts +23 -0
  532. package/js/src/src/jibitex.js +416 -0
  533. package/js/src/src/kcex.d.ts +21 -0
  534. package/js/src/src/kcex.js +335 -0
  535. package/js/src/src/kifpoolme.d.ts +23 -0
  536. package/js/src/src/kifpoolme.js +410 -0
  537. package/js/src/src/kraken.d.ts +484 -0
  538. package/js/src/src/kraken.js +3518 -0
  539. package/js/src/src/krakenfutures.d.ts +362 -0
  540. package/js/src/src/krakenfutures.js +2885 -0
  541. package/js/src/src/kucoin.d.ts +759 -0
  542. package/js/src/src/kucoin.js +5153 -0
  543. package/js/src/src/kucoinfutures.d.ts +521 -0
  544. package/js/src/src/kucoinfutures.js +3381 -0
  545. package/js/src/src/latoken.d.ts +274 -0
  546. package/js/src/src/latoken.js +1824 -0
  547. package/js/src/src/lbank.d.ts +350 -0
  548. package/js/src/src/lbank.js +3146 -0
  549. package/js/src/src/luno.d.ts +252 -0
  550. package/js/src/src/luno.js +1479 -0
  551. package/js/src/src/mazdax.d.ts +23 -0
  552. package/js/src/src/mazdax.js +534 -0
  553. package/js/src/src/mercado.d.ts +160 -0
  554. package/js/src/src/mercado.js +1011 -0
  555. package/js/src/src/mexc.d.ts +768 -0
  556. package/js/src/src/mexc.js +6102 -0
  557. package/js/src/src/modetrade.d.ts +496 -0
  558. package/js/src/src/modetrade.js +2936 -0
  559. package/js/src/src/myokx.d.ts +4 -0
  560. package/js/src/src/myokx.js +54 -0
  561. package/js/src/src/ndax.d.ts +285 -0
  562. package/js/src/src/ndax.js +2598 -0
  563. package/js/src/src/nobitex.d.ts +23 -0
  564. package/js/src/src/nobitex.js +454 -0
  565. package/js/src/src/novadax.d.ts +279 -0
  566. package/js/src/src/novadax.js +1676 -0
  567. package/js/src/src/oceanex.d.ts +231 -0
  568. package/js/src/src/oceanex.js +1123 -0
  569. package/js/src/src/okcoin.d.ts +346 -0
  570. package/js/src/src/okcoin.js +3211 -0
  571. package/js/src/src/okexchange.d.ts +23 -0
  572. package/js/src/src/okexchange.js +373 -0
  573. package/js/src/src/okx.d.ts +1125 -0
  574. package/js/src/src/okx.js +9009 -0
  575. package/js/src/src/okxus.d.ts +4 -0
  576. package/js/src/src/okxus.js +54 -0
  577. package/js/src/src/ompfinex.d.ts +23 -0
  578. package/js/src/src/ompfinex.js +510 -0
  579. package/js/src/src/onetrading.d.ts +228 -0
  580. package/js/src/src/onetrading.js +1769 -0
  581. package/js/src/src/oxfun.d.ts +442 -0
  582. package/js/src/src/oxfun.js +2920 -0
  583. package/js/src/src/p2b.d.ts +189 -0
  584. package/js/src/src/p2b.js +1344 -0
  585. package/js/src/src/paradex.d.ts +389 -0
  586. package/js/src/src/paradex.js +2607 -0
  587. package/js/src/src/paymium.d.ts +133 -0
  588. package/js/src/src/paymium.js +644 -0
  589. package/js/src/src/phemex.d.ts +497 -0
  590. package/js/src/src/phemex.js +5333 -0
  591. package/js/src/src/pingi.d.ts +22 -0
  592. package/js/src/src/pingi.js +446 -0
  593. package/js/src/src/poloniex.d.ts +441 -0
  594. package/js/src/src/poloniex.js +3681 -0
  595. package/js/src/src/pooleno.d.ts +21 -0
  596. package/js/src/src/pooleno.js +347 -0
  597. package/js/src/src/pro/alpaca.d.ts +95 -0
  598. package/js/src/src/pro/alpaca.js +724 -0
  599. package/js/src/src/pro/apex.d.ts +160 -0
  600. package/js/src/src/pro/apex.js +1044 -0
  601. package/js/src/src/pro/ascendex.d.ts +99 -0
  602. package/js/src/src/pro/ascendex.js +1012 -0
  603. package/js/src/src/pro/bequant.d.ts +4 -0
  604. package/js/src/src/pro/bequant.js +42 -0
  605. package/js/src/src/pro/binance.d.ts +796 -0
  606. package/js/src/src/pro/binance.js +4373 -0
  607. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  608. package/js/src/src/pro/binancecoinm.js +32 -0
  609. package/js/src/src/pro/binanceus.d.ts +4 -0
  610. package/js/src/src/pro/binanceus.js +52 -0
  611. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  612. package/js/src/src/pro/binanceusdm.js +37 -0
  613. package/js/src/src/pro/bingx.d.ts +151 -0
  614. package/js/src/src/pro/bingx.js +1568 -0
  615. package/js/src/src/pro/bitfinex.d.ts +99 -0
  616. package/js/src/src/pro/bitfinex.js +1165 -0
  617. package/js/src/src/pro/bitget.d.ts +257 -0
  618. package/js/src/src/pro/bitget.js +2327 -0
  619. package/js/src/src/pro/bithumb.d.ts +59 -0
  620. package/js/src/src/pro/bithumb.js +395 -0
  621. package/js/src/src/pro/bitmart.d.ts +168 -0
  622. package/js/src/src/pro/bitmart.js +1686 -0
  623. package/js/src/src/pro/bitmex.d.ts +170 -0
  624. package/js/src/src/pro/bitmex.js +1760 -0
  625. package/js/src/src/pro/bitopro.d.ts +69 -0
  626. package/js/src/src/pro/bitopro.js +477 -0
  627. package/js/src/src/pro/bitrue.d.ts +40 -0
  628. package/js/src/src/pro/bitrue.js +461 -0
  629. package/js/src/src/pro/bitstamp.d.ts +53 -0
  630. package/js/src/src/pro/bitstamp.js +587 -0
  631. package/js/src/src/pro/bittrade.d.ts +66 -0
  632. package/js/src/src/pro/bittrade.js +606 -0
  633. package/js/src/src/pro/bitvavo.d.ts +321 -0
  634. package/js/src/src/pro/bitvavo.js +1451 -0
  635. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  636. package/js/src/src/pro/blockchaincom.js +777 -0
  637. package/js/src/src/pro/blofin.d.ts +174 -0
  638. package/js/src/src/pro/blofin.js +743 -0
  639. package/js/src/src/pro/bybit.d.ts +397 -0
  640. package/js/src/src/pro/bybit.js +2519 -0
  641. package/js/src/src/pro/cex.d.ts +220 -0
  642. package/js/src/src/pro/cex.js +1535 -0
  643. package/js/src/src/pro/coinbase.d.ts +119 -0
  644. package/js/src/src/pro/coinbase.js +736 -0
  645. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  646. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  647. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  648. package/js/src/src/pro/coinbaseexchange.js +969 -0
  649. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  650. package/js/src/src/pro/coinbaseinternational.js +804 -0
  651. package/js/src/src/pro/coincatch.d.ts +207 -0
  652. package/js/src/src/pro/coincatch.js +1562 -0
  653. package/js/src/src/pro/coincheck.d.ts +33 -0
  654. package/js/src/src/pro/coincheck.js +210 -0
  655. package/js/src/src/pro/coinex.d.ts +147 -0
  656. package/js/src/src/pro/coinex.js +1426 -0
  657. package/js/src/src/pro/coinone.d.ts +51 -0
  658. package/js/src/src/pro/coinone.js +413 -0
  659. package/js/src/src/pro/cryptocom.d.ts +300 -0
  660. package/js/src/src/pro/cryptocom.js +1414 -0
  661. package/js/src/src/pro/defx.d.ts +236 -0
  662. package/js/src/src/pro/defx.js +865 -0
  663. package/js/src/src/pro/deribit.d.ts +163 -0
  664. package/js/src/src/pro/deribit.js +1066 -0
  665. package/js/src/src/pro/derive.d.ts +100 -0
  666. package/js/src/src/pro/derive.js +753 -0
  667. package/js/src/src/pro/exmo.d.ts +97 -0
  668. package/js/src/src/pro/exmo.js +903 -0
  669. package/js/src/src/pro/gate.d.ts +360 -0
  670. package/js/src/src/pro/gate.js +2119 -0
  671. package/js/src/src/pro/gateio.d.ts +4 -0
  672. package/js/src/src/pro/gateio.js +17 -0
  673. package/js/src/src/pro/gemini.d.ts +106 -0
  674. package/js/src/src/pro/gemini.js +932 -0
  675. package/js/src/src/pro/hashkey.d.ts +121 -0
  676. package/js/src/src/pro/hashkey.js +843 -0
  677. package/js/src/src/pro/hitbtc.d.ts +235 -0
  678. package/js/src/src/pro/hitbtc.js +1400 -0
  679. package/js/src/src/pro/hollaex.d.ts +77 -0
  680. package/js/src/src/pro/hollaex.js +604 -0
  681. package/js/src/src/pro/htx.d.ts +141 -0
  682. package/js/src/src/pro/htx.js +2415 -0
  683. package/js/src/src/pro/huobi.d.ts +4 -0
  684. package/js/src/src/pro/huobi.js +17 -0
  685. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  686. package/js/src/src/pro/hyperliquid.js +1126 -0
  687. package/js/src/src/pro/independentreserve.d.ts +36 -0
  688. package/js/src/src/pro/independentreserve.js +287 -0
  689. package/js/src/src/pro/kraken.d.ts +233 -0
  690. package/js/src/src/pro/kraken.js +1785 -0
  691. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  692. package/js/src/src/pro/krakenfutures.js +1592 -0
  693. package/js/src/src/pro/kucoin.d.ts +221 -0
  694. package/js/src/src/pro/kucoin.js +1430 -0
  695. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  696. package/js/src/src/pro/kucoinfutures.js +1295 -0
  697. package/js/src/src/pro/lbank.d.ts +134 -0
  698. package/js/src/src/pro/lbank.js +950 -0
  699. package/js/src/src/pro/luno.d.ts +44 -0
  700. package/js/src/src/pro/luno.js +322 -0
  701. package/js/src/src/pro/mexc.d.ts +210 -0
  702. package/js/src/src/pro/mexc.js +2009 -0
  703. package/js/src/src/pro/modetrade.d.ts +155 -0
  704. package/js/src/src/pro/modetrade.js +1335 -0
  705. package/js/src/src/pro/myokx.d.ts +4 -0
  706. package/js/src/src/pro/myokx.js +39 -0
  707. package/js/src/src/pro/ndax.d.ts +60 -0
  708. package/js/src/src/pro/ndax.js +545 -0
  709. package/js/src/src/pro/okcoin.d.ts +91 -0
  710. package/js/src/src/pro/okcoin.js +763 -0
  711. package/js/src/src/pro/okx.d.ts +408 -0
  712. package/js/src/src/pro/okx.js +2479 -0
  713. package/js/src/src/pro/okxus.d.ts +4 -0
  714. package/js/src/src/pro/okxus.js +39 -0
  715. package/js/src/src/pro/onetrading.d.ts +107 -0
  716. package/js/src/src/pro/onetrading.js +1343 -0
  717. package/js/src/src/pro/oxfun.d.ts +234 -0
  718. package/js/src/src/pro/oxfun.js +1112 -0
  719. package/js/src/src/pro/p2b.d.ts +104 -0
  720. package/js/src/src/pro/p2b.js +506 -0
  721. package/js/src/src/pro/paradex.d.ts +54 -0
  722. package/js/src/src/pro/paradex.js +370 -0
  723. package/js/src/src/pro/phemex.d.ts +129 -0
  724. package/js/src/src/pro/phemex.js +1569 -0
  725. package/js/src/src/pro/poloniex.d.ts +214 -0
  726. package/js/src/src/pro/poloniex.js +1318 -0
  727. package/js/src/src/pro/probit.d.ts +91 -0
  728. package/js/src/src/pro/probit.js +593 -0
  729. package/js/src/src/pro/tradeogre.d.ts +49 -0
  730. package/js/src/src/pro/tradeogre.js +284 -0
  731. package/js/src/src/pro/upbit.d.ts +124 -0
  732. package/js/src/src/pro/upbit.js +689 -0
  733. package/js/src/src/pro/vertex.d.ts +104 -0
  734. package/js/src/src/pro/vertex.js +999 -0
  735. package/js/src/src/pro/whitebit.d.ts +123 -0
  736. package/js/src/src/pro/whitebit.js +971 -0
  737. package/js/src/src/pro/woo.d.ts +161 -0
  738. package/js/src/src/pro/woo.js +1351 -0
  739. package/js/src/src/pro/woofipro.d.ts +155 -0
  740. package/js/src/src/pro/woofipro.js +1335 -0
  741. package/js/src/src/pro/xt.d.ts +165 -0
  742. package/js/src/src/pro/xt.js +1230 -0
  743. package/js/src/src/probit.d.ts +283 -0
  744. package/js/src/src/probit.js +1935 -0
  745. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  746. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  747. package/js/src/src/raastin.d.ts +24 -0
  748. package/js/src/src/raastin.js +494 -0
  749. package/js/src/src/ramzinex.d.ts +23 -0
  750. package/js/src/src/ramzinex.js +510 -0
  751. package/js/src/src/sarmayex.d.ts +21 -0
  752. package/js/src/src/sarmayex.js +376 -0
  753. package/js/src/src/sarrafex.d.ts +23 -0
  754. package/js/src/src/sarrafex.js +501 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  756. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  758. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  760. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  762. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  764. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  766. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  768. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  770. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  772. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  774. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  776. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  778. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  780. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  782. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  784. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  786. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  788. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  790. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  792. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  794. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  796. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  797. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  798. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  799. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  800. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  801. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  802. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  806. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  808. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  810. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  812. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  814. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  816. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  818. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  820. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  826. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  828. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  830. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  832. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  833. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  834. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  838. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  860. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  862. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  878. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  880. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  882. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  884. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  890. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  892. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  894. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  896. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  904. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  906. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  910. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  912. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  916. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  917. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  918. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  919. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  920. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  921. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  922. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  923. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  924. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  925. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  926. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  927. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  928. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  930. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  931. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  932. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  933. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  934. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  936. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  938. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  940. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  950. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  952. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  954. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  960. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  994. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  996. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1010. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1012. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1014. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1016. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1017. package/js/src/src/tabdeal.d.ts +23 -0
  1018. package/js/src/src/tabdeal.js +387 -0
  1019. package/js/src/src/tehran_exchange.d.ts +21 -0
  1020. package/js/src/src/tehran_exchange.js +333 -0
  1021. package/js/src/src/tetherland.d.ts +21 -0
  1022. package/js/src/src/tetherland.js +367 -0
  1023. package/js/src/src/timex.d.ts +247 -0
  1024. package/js/src/src/timex.js +1792 -0
  1025. package/js/src/src/tokocrypto.d.ts +261 -0
  1026. package/js/src/src/tokocrypto.js +2641 -0
  1027. package/js/src/src/toobit.d.ts +22 -0
  1028. package/js/src/src/toobit.js +445 -0
  1029. package/js/src/src/tradeogre.d.ts +149 -0
  1030. package/js/src/src/tradeogre.js +878 -0
  1031. package/js/src/src/twox.d.ts +21 -0
  1032. package/js/src/src/twox.js +371 -0
  1033. package/js/src/src/ubitex.d.ts +23 -0
  1034. package/js/src/src/ubitex.js +433 -0
  1035. package/js/src/src/upbit.d.ts +377 -0
  1036. package/js/src/src/upbit.js +2340 -0
  1037. package/js/src/src/vertex.d.ts +346 -0
  1038. package/js/src/src/vertex.js +3146 -0
  1039. package/js/src/src/wallex.d.ts +23 -0
  1040. package/js/src/src/wallex.js +467 -0
  1041. package/js/src/src/wavesexchange.d.ts +244 -0
  1042. package/js/src/src/wavesexchange.js +2747 -0
  1043. package/js/src/src/whitebit.d.ts +571 -0
  1044. package/js/src/src/whitebit.js +3437 -0
  1045. package/js/src/src/woo.d.ts +727 -0
  1046. package/js/src/src/woo.js +4183 -0
  1047. package/js/src/src/woofipro.d.ts +497 -0
  1048. package/js/src/src/woofipro.js +2941 -0
  1049. package/js/src/src/xt.d.ts +568 -0
  1050. package/js/src/src/xt.js +5184 -0
  1051. package/js/src/src/yobit.d.ts +197 -0
  1052. package/js/src/src/yobit.js +1453 -0
  1053. package/js/src/src/zaif.d.ts +136 -0
  1054. package/js/src/src/zaif.js +821 -0
  1055. package/js/src/src/zonda.d.ts +214 -0
  1056. package/js/src/src/zonda.js +1984 -0
  1057. package/js/test.d.ts +1 -1
  1058. package/js/test.js +33 -33
  1059. package/package.json +1 -1
@@ -0,0 +1,2009 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // ---------------------------------------------------------------------------
8
+ import mexcRest from '../mexc.js';
9
+ import { ArgumentsRequired, AuthenticationError, NotSupported } from '../base/errors.js';
10
+ import { ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp } from '../base/ws/Cache.js';
11
+ import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
12
+ // ---------------------------------------------------------------------------
13
+ export default class mexc extends mexcRest {
14
+ describe() {
15
+ return this.deepExtend(super.describe(), {
16
+ 'has': {
17
+ 'ws': true,
18
+ 'cancelAllOrdersWs': false,
19
+ 'cancelOrdersWs': false,
20
+ 'cancelOrderWs': false,
21
+ 'createOrderWs': false,
22
+ 'editOrderWs': false,
23
+ 'fetchBalanceWs': false,
24
+ 'fetchOpenOrdersWs': false,
25
+ 'fetchOrderWs': false,
26
+ 'fetchTradesWs': false,
27
+ 'watchBalance': true,
28
+ 'watchMyTrades': true,
29
+ 'watchOHLCV': true,
30
+ 'watchOrderBook': true,
31
+ 'watchOrders': true,
32
+ 'watchTicker': true,
33
+ 'watchTickers': true,
34
+ 'watchBidsAsks': true,
35
+ 'watchTrades': true,
36
+ 'watchTradesForSymbols': false,
37
+ 'unWatchTicker': true,
38
+ 'unWatchTickers': true,
39
+ 'unWatchBidsAsks': true,
40
+ 'unWatchOHLCV': true,
41
+ 'unWatchOrderBook': true,
42
+ 'unWatchTrades': true,
43
+ },
44
+ 'urls': {
45
+ 'api': {
46
+ 'ws': {
47
+ 'spot': 'wss://wbs-api.mexc.com/ws',
48
+ 'swap': 'wss://contract.mexc.com/edge',
49
+ },
50
+ },
51
+ },
52
+ 'options': {
53
+ 'listenKeyRefreshRate': 1200000,
54
+ 'decompressBinary': false,
55
+ // TODO add reset connection after #16754 is merged
56
+ 'timeframes': {
57
+ '1m': 'Min1',
58
+ '5m': 'Min5',
59
+ '15m': 'Min15',
60
+ '30m': 'Min30',
61
+ '1h': 'Min60',
62
+ '4h': 'Hour4',
63
+ '8h': 'Hour8',
64
+ '1d': 'Day1',
65
+ '1w': 'Week1',
66
+ '1M': 'Month1',
67
+ },
68
+ 'watchOrderBook': {
69
+ 'snapshotDelay': 25,
70
+ 'snapshotMaxRetries': 3,
71
+ },
72
+ 'listenKey': undefined,
73
+ },
74
+ 'streaming': {
75
+ 'ping': this.ping,
76
+ 'keepAlive': 8000,
77
+ },
78
+ 'exceptions': {},
79
+ });
80
+ }
81
+ /**
82
+ * @method
83
+ * @name mexc#watchTicker
84
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
85
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#individual-symbol-book-ticker-streams
86
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
87
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#miniticker
88
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
89
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
90
+ * @param {boolean} [params.miniTicker] set to true for using the miniTicker endpoint
91
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
92
+ */
93
+ async watchTicker(symbol, params = {}) {
94
+ await this.loadMarkets();
95
+ const market = this.market(symbol);
96
+ const messageHash = 'ticker:' + market['symbol'];
97
+ if (market['spot']) {
98
+ const channel = 'spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id'];
99
+ return await this.watchSpotPublic(channel, messageHash, params);
100
+ }
101
+ else {
102
+ const channel = 'sub.ticker';
103
+ const requestParams = {
104
+ 'symbol': market['id'],
105
+ };
106
+ return await this.watchSwapPublic(channel, messageHash, requestParams, params);
107
+ }
108
+ }
109
+ handleTicker(client, message) {
110
+ //
111
+ // swap
112
+ //
113
+ // {
114
+ // "symbol": "BTC_USDT",
115
+ // "data": {
116
+ // "symbol": "BTC_USDT",
117
+ // "lastPrice": 76376.2,
118
+ // "riseFallRate": -0.0006,
119
+ // "fairPrice": 76374.4,
120
+ // "indexPrice": 76385.8,
121
+ // "volume24": 962062810,
122
+ // "amount24": 7344207079.96768,
123
+ // "maxBidPrice": 84024.3,
124
+ // "minAskPrice": 68747.2,
125
+ // "lower24Price": 75620.2,
126
+ // "high24Price": 77210,
127
+ // "timestamp": 1731137509138,
128
+ // "bid1": 76376.2,
129
+ // "ask1": 76376.3,
130
+ // "holdVol": 95479623,
131
+ // "riseFallValue": -46.5,
132
+ // "fundingRate": 0.0001,
133
+ // "zone": "UTC+8",
134
+ // "riseFallRates": [ -0.0006, 0.1008, 0.2262, 0.2628, 0.2439, 1.0564 ],
135
+ // "riseFallRatesOfTimezone": [ 0.0065, -0.0013, -0.0006 ]
136
+ // },
137
+ // "channel": "push.ticker",
138
+ // "ts": 1731137509138
139
+ // }
140
+ //
141
+ // spot
142
+ //
143
+ // {
144
+ // "c": "spot@public.bookTicker.v3.api@BTCUSDT",
145
+ // "d": {
146
+ // "A": "4.70432",
147
+ // "B": "6.714863",
148
+ // "a": "20744.54",
149
+ // "b": "20744.17"
150
+ // },
151
+ // "s": "BTCUSDT",
152
+ // "t": 1678643605721
153
+ // }
154
+ //
155
+ // spot miniTicker
156
+ //
157
+ // {
158
+ // "d": {
159
+ // "s": "BTCUSDT",
160
+ // "p": "76522",
161
+ // "r": "0.0012",
162
+ // "tr": "0.0012",
163
+ // "h": "77196.3",
164
+ // "l": "75630.77",
165
+ // "v": "584664223.92",
166
+ // "q": "7666.720258",
167
+ // "lastRT": "-1",
168
+ // "MT": "0",
169
+ // "NV": "--",
170
+ // "t": "1731135533126"
171
+ // },
172
+ // "c": "spot@public.miniTicker.v3.api@BTCUSDT@UTC+8",
173
+ // "t": 1731135533126,
174
+ // "s": "BTCUSDT"
175
+ // }
176
+ //
177
+ this.handleBidAsk(client, message);
178
+ const rawTicker = this.safeDictN(message, ['d', 'data', 'publicAggreBookTicker']);
179
+ const marketId = this.safeString2(message, 's', 'symbol');
180
+ const timestamp = this.safeInteger2(message, 't', 'sendtime');
181
+ const market = this.safeMarket(marketId);
182
+ const symbol = market['symbol'];
183
+ let ticker = undefined;
184
+ if (market['spot']) {
185
+ ticker = this.parseWsTicker(rawTicker, market);
186
+ ticker['timestamp'] = timestamp;
187
+ ticker['datetime'] = this.iso8601(timestamp);
188
+ }
189
+ else {
190
+ ticker = this.parseTicker(rawTicker, market);
191
+ }
192
+ this.tickers[symbol] = ticker;
193
+ const messageHash = 'ticker:' + symbol;
194
+ client.resolve(ticker, messageHash);
195
+ }
196
+ /**
197
+ * @method
198
+ * @name mexc#watchTickers
199
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
200
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#individual-symbol-book-ticker-streams
201
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
202
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#minitickers
203
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
204
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
205
+ * @param {boolean} [params.miniTicker] set to true for using the miniTicker endpoint
206
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
207
+ */
208
+ async watchTickers(symbols = undefined, params = {}) {
209
+ await this.loadMarkets();
210
+ symbols = this.marketSymbols(symbols, undefined);
211
+ const messageHashes = [];
212
+ const firstSymbol = this.safeString(symbols, 0);
213
+ let market = undefined;
214
+ if (firstSymbol !== undefined) {
215
+ market = this.market(firstSymbol);
216
+ }
217
+ let type = undefined;
218
+ [type, params] = this.handleMarketTypeAndParams('watchTickers', market, params);
219
+ const isSpot = (type === 'spot');
220
+ const url = (isSpot) ? this.urls['api']['ws']['spot'] : this.urls['api']['ws']['swap'];
221
+ const request = {};
222
+ if (isSpot) {
223
+ throw new NotSupported(this.id + ' watchTickers does not support spot markets');
224
+ // let miniTicker = false;
225
+ // [ miniTicker, params ] = this.handleOptionAndParams (params, 'watchTickers', 'miniTicker');
226
+ // const topics = [];
227
+ // if (!miniTicker) {
228
+ // if (symbols === undefined) {
229
+ // throw new ArgumentsRequired (this.id + ' watchTickers required symbols argument for the bookTicker channel');
230
+ // }
231
+ // const marketIds = this.marketIds (symbols);
232
+ // for (let i = 0; i < marketIds.length; i++) {
233
+ // const marketId = marketIds[i];
234
+ // messageHashes.push ('ticker:' + symbols[i]);
235
+ // const channel = 'spot@public.bookTicker.v3.api@' + marketId;
236
+ // topics.push (channel);
237
+ // }
238
+ // } else {
239
+ // topics.push ('spot@public.miniTickers.v3.api@UTC+8');
240
+ // if (symbols === undefined) {
241
+ // messageHashes.push ('spot:ticker');
242
+ // } else {
243
+ // for (let i = 0; i < symbols.length; i++) {
244
+ // messageHashes.push ('ticker:' + symbols[i]);
245
+ // }
246
+ // }
247
+ // }
248
+ // request['method'] = 'SUBSCRIPTION';
249
+ // request['params'] = topics;
250
+ }
251
+ else {
252
+ request['method'] = 'sub.tickers';
253
+ request['params'] = {};
254
+ messageHashes.push('ticker');
255
+ }
256
+ const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
257
+ if (isSpot && this.newUpdates) {
258
+ const result = {};
259
+ result[ticker['symbol']] = ticker;
260
+ return result;
261
+ }
262
+ return this.filterByArray(this.tickers, 'symbol', symbols);
263
+ }
264
+ handleTickers(client, message) {
265
+ //
266
+ // swap
267
+ //
268
+ // {
269
+ // "channel": "push.tickers",
270
+ // "data": [
271
+ // {
272
+ // "symbol": "ETH_USDT",
273
+ // "lastPrice": 2324.5,
274
+ // "riseFallRate": 0.0356,
275
+ // "fairPrice": 2324.32,
276
+ // "indexPrice": 2325.44,
277
+ // "volume24": 25868309,
278
+ // "amount24": 591752573.9792,
279
+ // "maxBidPrice": 2557.98,
280
+ // "minAskPrice": 2092.89,
281
+ // "lower24Price": 2239.39,
282
+ // "high24Price": 2332.59,
283
+ // "timestamp": 1725872514111
284
+ // }
285
+ // ],
286
+ // "ts": 1725872514111
287
+ // }
288
+ //
289
+ // spot
290
+ //
291
+ // {
292
+ // "c": "spot@public.bookTicker.v3.api@BTCUSDT",
293
+ // "d": {
294
+ // "A": "4.70432",
295
+ // "B": "6.714863",
296
+ // "a": "20744.54",
297
+ // "b": "20744.17"
298
+ // },
299
+ // "s": "BTCUSDT",
300
+ // "t": 1678643605721
301
+ // }
302
+ //
303
+ // spot miniTicker
304
+ //
305
+ // {
306
+ // "d": {
307
+ // "s": "BTCUSDT",
308
+ // "p": "76522",
309
+ // "r": "0.0012",
310
+ // "tr": "0.0012",
311
+ // "h": "77196.3",
312
+ // "l": "75630.77",
313
+ // "v": "584664223.92",
314
+ // "q": "7666.720258",
315
+ // "lastRT": "-1",
316
+ // "MT": "0",
317
+ // "NV": "--",
318
+ // "t": "1731135533126"
319
+ // },
320
+ // "c": "spot@public.miniTicker.v3.api@BTCUSDT@UTC+8",
321
+ // "t": 1731135533126,
322
+ // "s": "BTCUSDT"
323
+ // }
324
+ //
325
+ const data = this.safeList2(message, 'data', 'd');
326
+ const channel = this.safeString(message, 'c', '');
327
+ const marketId = this.safeString(message, 's');
328
+ const market = this.safeMarket(marketId);
329
+ const channelStartsWithSpot = channel.startsWith('spot');
330
+ const marketIdIsUndefined = marketId === undefined;
331
+ const isSpot = marketIdIsUndefined ? channelStartsWithSpot : market['spot'];
332
+ const spotPrefix = 'spot:';
333
+ const messageHashPrefix = isSpot ? spotPrefix : '';
334
+ const topic = messageHashPrefix + 'ticker';
335
+ const result = [];
336
+ for (let i = 0; i < data.length; i++) {
337
+ const entry = data[i];
338
+ let ticker = undefined;
339
+ if (isSpot) {
340
+ ticker = this.parseWsTicker(entry, market);
341
+ }
342
+ else {
343
+ ticker = this.parseTicker(entry);
344
+ }
345
+ const symbol = ticker['symbol'];
346
+ this.tickers[symbol] = ticker;
347
+ result.push(ticker);
348
+ const messageHash = 'ticker:' + symbol;
349
+ client.resolve(ticker, messageHash);
350
+ }
351
+ client.resolve(result, topic);
352
+ }
353
+ parseWsTicker(ticker, market = undefined) {
354
+ // protobuf ticker
355
+ // "bidprice": "93387.28", // Best bid price
356
+ // "bidquantity": "3.73485", // Best bid quantity
357
+ // "askprice": "93387.29", // Best ask price
358
+ // "askquantity": "7.669875" // Best ask quantity
359
+ //
360
+ // spot
361
+ //
362
+ // {
363
+ // "A": "4.70432",
364
+ // "B": "6.714863",
365
+ // "a": "20744.54",
366
+ // "b": "20744.17"
367
+ // }
368
+ //
369
+ // spot miniTicker
370
+ //
371
+ // {
372
+ // "s": "BTCUSDT",
373
+ // "p": "76521",
374
+ // "r": "0.0012",
375
+ // "tr": "0.0012",
376
+ // "h": "77196.3",
377
+ // "l": "75630.77",
378
+ // "v": "584664223.92",
379
+ // "q": "7666.720258",
380
+ // "lastRT": "-1",
381
+ // "MT": "0",
382
+ // "NV": "--",
383
+ // "t": "1731135533126"
384
+ // }
385
+ //
386
+ const marketId = this.safeString(ticker, 's');
387
+ const timestamp = this.safeInteger(ticker, 't');
388
+ const price = this.safeString(ticker, 'p');
389
+ return this.safeTicker({
390
+ 'info': ticker,
391
+ 'symbol': this.safeSymbol(marketId, market),
392
+ 'timestamp': timestamp,
393
+ 'datetime': this.iso8601(timestamp),
394
+ 'open': undefined,
395
+ 'high': this.safeNumber(ticker, 'h'),
396
+ 'low': this.safeNumber(ticker, 'l'),
397
+ 'close': price,
398
+ 'last': price,
399
+ 'bid': this.safeNumber2(ticker, 'b', 'bidPrice'),
400
+ 'bidVolume': this.safeNumber2(ticker, 'B', 'bidQuantity'),
401
+ 'ask': this.safeNumber2(ticker, 'a', 'askPrice'),
402
+ 'askVolume': this.safeNumber2(ticker, 'A', 'askQuantity'),
403
+ 'vwap': undefined,
404
+ 'previousClose': undefined,
405
+ 'change': undefined,
406
+ 'percentage': this.safeNumber(ticker, 'tr'),
407
+ 'average': undefined,
408
+ 'baseVolume': this.safeNumber(ticker, 'v'),
409
+ 'quoteVolume': this.safeNumber(ticker, 'q'),
410
+ }, market);
411
+ }
412
+ /**
413
+ * @method
414
+ * @name mexc#watchBidsAsks
415
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#individual-symbol-book-ticker-streams
416
+ * @description watches best bid & ask for symbols
417
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
418
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
419
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
420
+ */
421
+ async watchBidsAsks(symbols = undefined, params = {}) {
422
+ await this.loadMarkets();
423
+ symbols = this.marketSymbols(symbols, undefined, true, false, true);
424
+ let marketType = undefined;
425
+ if (symbols === undefined) {
426
+ throw new ArgumentsRequired(this.id + ' watchBidsAsks required symbols argument');
427
+ }
428
+ const markets = this.marketsForSymbols(symbols);
429
+ [marketType, params] = this.handleMarketTypeAndParams('watchBidsAsks', markets[0], params);
430
+ const isSpot = marketType === 'spot';
431
+ if (!isSpot) {
432
+ throw new NotSupported(this.id + ' watchBidsAsks only support spot market');
433
+ }
434
+ const messageHashes = [];
435
+ const topics = [];
436
+ for (let i = 0; i < symbols.length; i++) {
437
+ if (isSpot) {
438
+ const market = this.market(symbols[i]);
439
+ topics.push('spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id']);
440
+ }
441
+ messageHashes.push('bidask:' + symbols[i]);
442
+ }
443
+ const url = this.urls['api']['ws']['spot'];
444
+ const request = {
445
+ 'method': 'SUBSCRIPTION',
446
+ 'params': topics,
447
+ };
448
+ const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
449
+ if (this.newUpdates) {
450
+ const tickers = {};
451
+ tickers[ticker['symbol']] = ticker;
452
+ return tickers;
453
+ }
454
+ return this.filterByArray(this.bidsasks, 'symbol', symbols);
455
+ }
456
+ handleBidAsk(client, message) {
457
+ //
458
+ // {
459
+ // "c": "spot@public.bookTicker.v3.api@BTCUSDT",
460
+ // "d": {
461
+ // "A": "4.70432",
462
+ // "B": "6.714863",
463
+ // "a": "20744.54",
464
+ // "b": "20744.17"
465
+ // },
466
+ // "s": "BTCUSDT",
467
+ // "t": 1678643605721
468
+ // }
469
+ //
470
+ const parsedTicker = this.parseWsBidAsk(message);
471
+ const symbol = this.safeString(parsedTicker, 'symbol');
472
+ if (symbol === undefined) {
473
+ return;
474
+ }
475
+ this.bidsasks[symbol] = parsedTicker;
476
+ const messageHash = 'bidask:' + symbol;
477
+ client.resolve(parsedTicker, messageHash);
478
+ }
479
+ parseWsBidAsk(ticker, market = undefined) {
480
+ const data = this.safeDict(ticker, 'd');
481
+ const marketId = this.safeString(ticker, 's');
482
+ market = this.safeMarket(marketId, market);
483
+ const symbol = this.safeString(market, 'symbol');
484
+ const timestamp = this.safeInteger(ticker, 't');
485
+ return this.safeTicker({
486
+ 'symbol': symbol,
487
+ 'timestamp': timestamp,
488
+ 'datetime': this.iso8601(timestamp),
489
+ 'ask': this.safeNumber(data, 'a'),
490
+ 'askVolume': this.safeNumber(data, 'A'),
491
+ 'bid': this.safeNumber(data, 'b'),
492
+ 'bidVolume': this.safeNumber(data, 'B'),
493
+ 'info': ticker,
494
+ }, market);
495
+ }
496
+ async watchSpotPublic(channel, messageHash, params = {}) {
497
+ const unsubscribed = this.safeBool(params, 'unsubscribed', false);
498
+ params = this.omit(params, ['unsubscribed']);
499
+ const url = this.urls['api']['ws']['spot'];
500
+ const method = (unsubscribed) ? 'UNSUBSCRIPTION' : 'SUBSCRIPTION';
501
+ const request = {
502
+ 'method': method,
503
+ 'params': [channel],
504
+ };
505
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
506
+ }
507
+ async watchSpotPrivate(channel, messageHash, params = {}) {
508
+ this.checkRequiredCredentials();
509
+ const listenKey = await this.authenticate(channel);
510
+ const url = this.urls['api']['ws']['spot'] + '?listenKey=' + listenKey;
511
+ const request = {
512
+ 'method': 'SUBSCRIPTION',
513
+ 'params': [channel],
514
+ };
515
+ return await this.watch(url, messageHash, this.extend(request, params), channel);
516
+ }
517
+ async watchSwapPublic(channel, messageHash, requestParams, params = {}) {
518
+ const url = this.urls['api']['ws']['swap'];
519
+ const request = {
520
+ 'method': channel,
521
+ 'param': requestParams,
522
+ };
523
+ const message = this.extend(request, params);
524
+ return await this.watch(url, messageHash, message, messageHash);
525
+ }
526
+ async watchSwapPrivate(messageHash, params = {}) {
527
+ this.checkRequiredCredentials();
528
+ const channel = 'login';
529
+ const url = this.urls['api']['ws']['swap'];
530
+ const timestamp = this.milliseconds().toString();
531
+ const payload = this.apiKey + timestamp;
532
+ const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256);
533
+ const request = {
534
+ 'method': channel,
535
+ 'param': {
536
+ 'apiKey': this.apiKey,
537
+ 'signature': signature,
538
+ 'reqTime': timestamp,
539
+ },
540
+ };
541
+ const message = this.extend(request, params);
542
+ return await this.watch(url, messageHash, message, channel);
543
+ }
544
+ /**
545
+ * @method
546
+ * @name mexc#watchOHLCV
547
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
548
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
549
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
550
+ * @param {string} timeframe the length of time each candle represents
551
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
552
+ * @param {int} [limit] the maximum amount of candles to fetch
553
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
554
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
555
+ */
556
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
557
+ await this.loadMarkets();
558
+ const market = this.market(symbol);
559
+ symbol = market['symbol'];
560
+ const timeframes = this.safeValue(this.options, 'timeframes', {});
561
+ const timeframeId = this.safeString(timeframes, timeframe);
562
+ const messageHash = 'candles:' + symbol + ':' + timeframe;
563
+ let ohlcv = undefined;
564
+ if (market['spot']) {
565
+ const channel = 'spot@public.kline.v3.api.pb@' + market['id'] + '@' + timeframeId;
566
+ ohlcv = await this.watchSpotPublic(channel, messageHash, params);
567
+ }
568
+ else {
569
+ const channel = 'sub.kline';
570
+ const requestParams = {
571
+ 'symbol': market['id'],
572
+ 'interval': timeframeId,
573
+ };
574
+ ohlcv = await this.watchSwapPublic(channel, messageHash, requestParams, params);
575
+ }
576
+ if (this.newUpdates) {
577
+ limit = ohlcv.getLimit(symbol, limit);
578
+ }
579
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
580
+ }
581
+ handleOHLCV(client, message) {
582
+ //
583
+ // spot
584
+ //
585
+ // {
586
+ // "d": {
587
+ // "e": "spot@public.kline.v3.api",
588
+ // "k": {
589
+ // "t": 1678642261,
590
+ // "o": 20626.94,
591
+ // "c": 20599.69,
592
+ // "h": 20626.94,
593
+ // "l": 20597.06,
594
+ // "v": 27.678686,
595
+ // "a": 570332.77,
596
+ // "T": 1678642320,
597
+ // "i": "Min1"
598
+ // }
599
+ // },
600
+ // "c": "spot@public.kline.v3.api@BTCUSDT@Min1",
601
+ // "t": 1678642276459,
602
+ // "s": "BTCUSDT"
603
+ // }
604
+ //
605
+ // swap
606
+ //
607
+ // {
608
+ // "channel": "push.kline",
609
+ // "data": {
610
+ // "a": 325653.3287,
611
+ // "c": 38839,
612
+ // "h": 38909.5,
613
+ // "interval": "Min1",
614
+ // "l": 38833,
615
+ // "o": 38901.5,
616
+ // "q": 83808,
617
+ // "rc": 38839,
618
+ // "rh": 38909.5,
619
+ // "rl": 38833,
620
+ // "ro": 38909.5,
621
+ // "symbol": "BTC_USDT",
622
+ // "t": 1651230660
623
+ // },
624
+ // "symbol": "BTC_USDT",
625
+ // "ts": 1651230713067
626
+ // }
627
+ // protobuf
628
+ // {
629
+ // "channel":"spot@public.kline.v3.api.pb@BTCUSDT@Min1",
630
+ // "symbol":"BTCUSDT",
631
+ // "symbolId":"2fb942154ef44a4ab2ef98c8afb6a4a7",
632
+ // "createTime":"1754737941062",
633
+ // "publicSpotKline":{
634
+ // "interval":"Min1",
635
+ // "windowStart":"1754737920",
636
+ // "openingPrice":"117317.31",
637
+ // "closingPrice":"117325.26",
638
+ // "highestPrice":"117341",
639
+ // "lowestPrice":"117317.3",
640
+ // "volume":"3.12599854",
641
+ // "amount":"366804.43",
642
+ // "windowEnd":"1754737980"
643
+ // }
644
+ // }
645
+ //
646
+ let parsed = undefined;
647
+ let symbol = undefined;
648
+ let timeframe = undefined;
649
+ if ('publicSpotKline' in message) {
650
+ symbol = this.symbol(this.safeString(message, 'symbol'));
651
+ const data = this.safeDict(message, 'publicSpotKline', {});
652
+ const timeframeId = this.safeString(data, 'interval');
653
+ timeframe = this.findTimeframe(timeframeId, this.options['timeframes']);
654
+ parsed = this.parseWsOHLCV(data, this.safeMarket(symbol));
655
+ }
656
+ else {
657
+ const d = this.safeValue2(message, 'd', 'data', {});
658
+ const rawOhlcv = this.safeValue(d, 'k', d);
659
+ const timeframeId = this.safeString2(rawOhlcv, 'i', 'interval');
660
+ const timeframes = this.safeValue(this.options, 'timeframes', {});
661
+ timeframe = this.findTimeframe(timeframeId, timeframes);
662
+ const marketId = this.safeString2(message, 's', 'symbol');
663
+ const market = this.safeMarket(marketId);
664
+ symbol = market['symbol'];
665
+ parsed = this.parseWsOHLCV(rawOhlcv, market);
666
+ }
667
+ const messageHash = 'candles:' + symbol + ':' + timeframe;
668
+ this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
669
+ let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
670
+ if (stored === undefined) {
671
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
672
+ stored = new ArrayCacheByTimestamp(limit);
673
+ this.ohlcvs[symbol][timeframe] = stored;
674
+ }
675
+ stored.append(parsed);
676
+ client.resolve(stored, messageHash);
677
+ }
678
+ parseWsOHLCV(ohlcv, market = undefined) {
679
+ //
680
+ // spot
681
+ //
682
+ // {
683
+ // "t": 1678642260,
684
+ // "o": 20626.94,
685
+ // "c": 20599.69,
686
+ // "h": 20626.94,
687
+ // "l": 20597.06,
688
+ // "v": 27.678686,
689
+ // "a": 570332.77,
690
+ // "T": 1678642320,
691
+ // "i": "Min1"
692
+ // }
693
+ //
694
+ // swap
695
+ // {
696
+ // "symbol": "BTC_USDT",
697
+ // "interval": "Min1",
698
+ // "t": 1680055080,
699
+ // "o": 27301.9,
700
+ // "c": 27301.8,
701
+ // "h": 27301.9,
702
+ // "l": 27301.8,
703
+ // "a": 8.19054,
704
+ // "q": 3,
705
+ // "ro": 27301.8,
706
+ // "rc": 27301.8,
707
+ // "rh": 27301.8,
708
+ // "rl": 27301.8
709
+ // }
710
+ // protobuf
711
+ //
712
+ // "interval":"Min1",
713
+ // "windowStart":"1754737920",
714
+ // "openingPrice":"117317.31",
715
+ // "closingPrice":"117325.26",
716
+ // "highestPrice":"117341",
717
+ // "lowestPrice":"117317.3",
718
+ // "volume":"3.12599854",
719
+ // "amount":"366804.43",
720
+ // "windowEnd":"1754737980"
721
+ //
722
+ return [
723
+ this.safeTimestamp2(ohlcv, 't', 'windowStart'),
724
+ this.safeNumber2(ohlcv, 'o', 'openingPrice'),
725
+ this.safeNumber2(ohlcv, 'h', 'highestPrice'),
726
+ this.safeNumber2(ohlcv, 'l', 'lowestPrice'),
727
+ this.safeNumber2(ohlcv, 'c', 'closingPrice'),
728
+ this.safeNumber2(ohlcv, 'v', 'volume'),
729
+ ];
730
+ }
731
+ /**
732
+ * @method
733
+ * @name mexc#watchOrderBook
734
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
735
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
736
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
737
+ * @param {string} symbol unified symbol of the market to fetch the order book for
738
+ * @param {int} [limit] the maximum amount of order book entries to return
739
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
740
+ * @param {string} [params.frequency] the frequency of the order book updates, default is '10ms', can be '100ms' or '10ms
741
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
742
+ */
743
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
744
+ await this.loadMarkets();
745
+ const market = this.market(symbol);
746
+ symbol = market['symbol'];
747
+ const messageHash = 'orderbook:' + symbol;
748
+ let orderbook = undefined;
749
+ if (market['spot']) {
750
+ let frequency = undefined;
751
+ [frequency, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'frequency', '100ms');
752
+ const channel = 'spot@public.aggre.depth.v3.api.pb@' + frequency + '@' + market['id'];
753
+ orderbook = await this.watchSpotPublic(channel, messageHash, params);
754
+ }
755
+ else {
756
+ const channel = 'sub.depth';
757
+ const requestParams = {
758
+ 'symbol': market['id'],
759
+ };
760
+ orderbook = await this.watchSwapPublic(channel, messageHash, requestParams, params);
761
+ }
762
+ return orderbook.limit();
763
+ }
764
+ handleOrderBookSubscription(client, message) {
765
+ // spot
766
+ // { id: 0, code: 0, msg: "spot@public.increase.depth.v3.api@BTCUSDT" }
767
+ //
768
+ const msg = this.safeString(message, 'msg');
769
+ const parts = msg.split('@');
770
+ const marketId = this.safeString(parts, 2);
771
+ const symbol = this.safeSymbol(marketId);
772
+ this.orderbooks[symbol] = this.orderBook({});
773
+ }
774
+ getCacheIndex(orderbook, cache) {
775
+ // return the first index of the cache that can be applied to the orderbook or -1 if not possible
776
+ const nonce = this.safeInteger(orderbook, 'nonce');
777
+ const firstDelta = this.safeValue(cache, 0);
778
+ const firstDeltaNonce = this.safeIntegerN(firstDelta, ['r', 'version', 'fromVersion']);
779
+ if (nonce < firstDeltaNonce - 1) {
780
+ return -1;
781
+ }
782
+ for (let i = 0; i < cache.length; i++) {
783
+ const delta = cache[i];
784
+ const deltaNonce = this.safeIntegerN(delta, ['r', 'version', 'fromVersion']);
785
+ if (deltaNonce >= nonce) {
786
+ return i;
787
+ }
788
+ }
789
+ return cache.length;
790
+ }
791
+ handleOrderBook(client, message) {
792
+ //
793
+ // spot
794
+ // {
795
+ // "c": "spot@public.increase.depth.v3.api@BTCUSDT",
796
+ // "d": {
797
+ // "asks": [{
798
+ // "p": "20290.89",
799
+ // "v": "0.000000"
800
+ // }],
801
+ // "e": "spot@public.increase.depth.v3.api",
802
+ // "r": "3407459756"
803
+ // },
804
+ // "s": "BTCUSDT",
805
+ // "t": 1661932660144
806
+ // }
807
+ //
808
+ //
809
+ //
810
+ // swap
811
+ // {
812
+ // "channel":"push.depth",
813
+ // "data":{
814
+ // "asks":[
815
+ // [
816
+ // 39146.5,
817
+ // 11264,
818
+ // 1
819
+ // ]
820
+ // ],
821
+ // "bids":[
822
+ // [
823
+ // 39144,
824
+ // 35460,
825
+ // 1
826
+ // ]
827
+ // ],
828
+ // "end":4895965272,
829
+ // "begin":4895965271
830
+ // },
831
+ // "symbol":"BTC_USDT",
832
+ // "ts":1651239652372
833
+ // }
834
+ // protofbuf
835
+ // {
836
+ // "channel":"spot@public.aggre.depth.v3.api.pb@100ms@BTCUSDT",
837
+ // "symbol":"BTCUSDT",
838
+ // "sendTime":"1754741322152",
839
+ // "publicAggreDepths":{
840
+ // "asks":[
841
+ // {
842
+ // "price":"117145.49",
843
+ // "quantity":"0"
844
+ // }
845
+ // ],
846
+ // "bids":[
847
+ // {
848
+ // "price":"117053.41",
849
+ // "quantity":"1.86837271"
850
+ // }
851
+ // ],
852
+ // "eventType":"spot@public.aggre.depth.v3.api.pb@100ms",
853
+ // "fromVersion":"43296363236",
854
+ // "toVersion":"43296363255"
855
+ // }
856
+ // }
857
+ //
858
+ const data = this.safeDictN(message, ['d', 'data', 'publicAggreDepths']);
859
+ const marketId = this.safeString2(message, 's', 'symbol');
860
+ const symbol = this.safeSymbol(marketId);
861
+ const messageHash = 'orderbook:' + symbol;
862
+ const subscription = this.safeValue(client.subscriptions, messageHash);
863
+ const limit = this.safeInteger(subscription, 'limit');
864
+ if (!(symbol in this.orderbooks)) {
865
+ this.orderbooks[symbol] = this.orderBook();
866
+ }
867
+ const storedOrderBook = this.orderbooks[symbol];
868
+ const nonce = this.safeInteger(storedOrderBook, 'nonce');
869
+ if (nonce === undefined) {
870
+ const cacheLength = storedOrderBook.cache.length;
871
+ const snapshotDelay = this.handleOption('watchOrderBook', 'snapshotDelay', 25);
872
+ if (cacheLength === snapshotDelay) {
873
+ this.spawn(this.loadOrderBook, client, messageHash, symbol, limit, {});
874
+ }
875
+ storedOrderBook.cache.push(data);
876
+ return;
877
+ }
878
+ try {
879
+ this.handleDelta(storedOrderBook, data);
880
+ const timestamp = this.safeIntegerN(message, ['t', 'ts', 'sendTime']);
881
+ storedOrderBook['timestamp'] = timestamp;
882
+ storedOrderBook['datetime'] = this.iso8601(timestamp);
883
+ }
884
+ catch (e) {
885
+ delete client.subscriptions[messageHash];
886
+ client.reject(e, messageHash);
887
+ }
888
+ client.resolve(storedOrderBook, messageHash);
889
+ }
890
+ handleBooksideDelta(bookside, bidasks) {
891
+ //
892
+ // [{
893
+ // "p": "20290.89",
894
+ // "v": "0.000000"
895
+ // }]
896
+ //
897
+ for (let i = 0; i < bidasks.length; i++) {
898
+ const bidask = bidasks[i];
899
+ if (Array.isArray(bidask)) {
900
+ bookside.storeArray(bidask);
901
+ }
902
+ else {
903
+ const price = this.safeFloat2(bidask, 'p', 'price');
904
+ const amount = this.safeFloat2(bidask, 'v', 'quantity');
905
+ bookside.store(price, amount);
906
+ }
907
+ }
908
+ }
909
+ handleDelta(orderbook, delta) {
910
+ const existingNonce = this.safeInteger(orderbook, 'nonce');
911
+ const deltaNonce = this.safeIntegerN(delta, ['r', 'version', 'fromVersion']);
912
+ if (deltaNonce < existingNonce) {
913
+ // even when doing < comparison, this happens: https://app.travis-ci.com/github/ccxt/ccxt/builds/269234741#L1809
914
+ // so, we just skip old updates
915
+ return;
916
+ }
917
+ orderbook['nonce'] = deltaNonce;
918
+ const asks = this.safeList(delta, 'asks', []);
919
+ const bids = this.safeList(delta, 'bids', []);
920
+ const asksOrderSide = orderbook['asks'];
921
+ const bidsOrderSide = orderbook['bids'];
922
+ this.handleBooksideDelta(asksOrderSide, asks);
923
+ this.handleBooksideDelta(bidsOrderSide, bids);
924
+ }
925
+ /**
926
+ * @method
927
+ * @name mexc#watchTrades
928
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-market-streams#trade-streams
929
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#public-channels
930
+ * @description get the list of most recent trades for a particular symbol
931
+ * @param {string} symbol unified symbol of the market to fetch trades for
932
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
933
+ * @param {int} [limit] the maximum amount of trades to fetch
934
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
935
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
936
+ */
937
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
938
+ await this.loadMarkets();
939
+ const market = this.market(symbol);
940
+ symbol = market['symbol'];
941
+ const messageHash = 'trades:' + symbol;
942
+ let trades = undefined;
943
+ if (market['spot']) {
944
+ const channel = 'spot@public.aggre.deals.v3.api.pb@100ms@' + market['id'];
945
+ trades = await this.watchSpotPublic(channel, messageHash, params);
946
+ }
947
+ else {
948
+ const channel = 'sub.deal';
949
+ const requestParams = {
950
+ 'symbol': market['id'],
951
+ };
952
+ trades = await this.watchSwapPublic(channel, messageHash, requestParams, params);
953
+ }
954
+ if (this.newUpdates) {
955
+ limit = trades.getLimit(symbol, limit);
956
+ }
957
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
958
+ }
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
+ // }
977
+ //
978
+ // {
979
+ // "c": "spot@public.deals.v3.api@BTCUSDT",
980
+ // "d": {
981
+ // "deals": [{
982
+ // "p": "20382.70",
983
+ // "v": "0.043800",
984
+ // "S": 1,
985
+ // "t": 1678593222456,
986
+ // }, ],
987
+ // "e": "spot@public.deals.v3.api",
988
+ // },
989
+ // "s": "BTCUSDT",
990
+ // "t": 1678593222460,
991
+ // }
992
+ //
993
+ // swap
994
+ // {
995
+ // "symbol": "BTC_USDT",
996
+ // "data": {
997
+ // "p": 27307.3,
998
+ // "v": 5,
999
+ // "T": 2,
1000
+ // "O": 3,
1001
+ // "M": 1,
1002
+ // "t": 1680055941870
1003
+ // },
1004
+ // "channel": "push.deal",
1005
+ // "ts": 1680055941870
1006
+ // }
1007
+ //
1008
+ const marketId = this.safeString2(message, 's', 'symbol');
1009
+ const market = this.safeMarket(marketId);
1010
+ const symbol = market['symbol'];
1011
+ const messageHash = 'trades:' + symbol;
1012
+ let stored = this.safeValue(this.trades, symbol);
1013
+ if (stored === undefined) {
1014
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
1015
+ stored = new ArrayCache(limit);
1016
+ this.trades[symbol] = stored;
1017
+ }
1018
+ const d = this.safeDictN(message, ['d', 'data', 'publicAggreDeals']);
1019
+ const trades = this.safeList2(d, 'deals', 'dealsList', [d]);
1020
+ for (let j = 0; j < trades.length; j++) {
1021
+ let parsedTrade = undefined;
1022
+ if (market['spot']) {
1023
+ parsedTrade = this.parseWsTrade(trades[j], market);
1024
+ }
1025
+ else {
1026
+ parsedTrade = this.parseTrade(trades[j], market);
1027
+ }
1028
+ stored.append(parsedTrade);
1029
+ }
1030
+ client.resolve(stored, messageHash);
1031
+ }
1032
+ /**
1033
+ * @method
1034
+ * @name mexc#watchMyTrades
1035
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-deals
1036
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#private-channels
1037
+ * @description watches information on multiple trades made by the user
1038
+ * @param {string} symbol unified market symbol of the market trades were made in
1039
+ * @param {int} [since] the earliest time in ms to fetch trades for
1040
+ * @param {int} [limit] the maximum number of trade structures to retrieve
1041
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1042
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1043
+ */
1044
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1045
+ await this.loadMarkets();
1046
+ let messageHash = 'myTrades';
1047
+ let market = undefined;
1048
+ if (symbol !== undefined) {
1049
+ market = this.market(symbol);
1050
+ symbol = market['symbol'];
1051
+ messageHash = messageHash + ':' + symbol;
1052
+ }
1053
+ let type = undefined;
1054
+ [type, params] = this.handleMarketTypeAndParams('watchMyTrades', market, params);
1055
+ let trades = undefined;
1056
+ if (type === 'spot') {
1057
+ const channel = 'spot@private.deals.v3.api.pb';
1058
+ trades = await this.watchSpotPrivate(channel, messageHash, params);
1059
+ }
1060
+ else {
1061
+ trades = await this.watchSwapPrivate(messageHash, params);
1062
+ }
1063
+ if (this.newUpdates) {
1064
+ limit = trades.getLimit(symbol, limit);
1065
+ }
1066
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
1067
+ }
1068
+ handleMyTrade(client, message, subscription = undefined) {
1069
+ //
1070
+ // {
1071
+ // "c": "spot@private.deals.v3.api",
1072
+ // "d": {
1073
+ // "p": "22339.99",
1074
+ // "v": "0.000235",
1075
+ // "S": 1,
1076
+ // "T": 1678670940695,
1077
+ // "t": "9f6a47fb926442e496c5c4c104076ae3",
1078
+ // "c": '',
1079
+ // "i": "e2b9835d1b6745f8a10ab74a81a16d50",
1080
+ // "m": 0,
1081
+ // "st": 0
1082
+ // },
1083
+ // "s": "BTCUSDT",
1084
+ // "t": 1678670940700
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
+ // }
1102
+ //
1103
+ const messageHash = 'myTrades';
1104
+ const data = this.safeDictN(message, ['d', 'data', 'privateDeals']);
1105
+ const futuresMarketId = this.safeString(data, 'symbol');
1106
+ const marketId = this.safeString2(message, 's', 'symbol', futuresMarketId);
1107
+ const market = this.safeMarket(marketId);
1108
+ const symbol = market['symbol'];
1109
+ let trade = undefined;
1110
+ if (market['spot']) {
1111
+ trade = this.parseWsTrade(data, market);
1112
+ }
1113
+ else {
1114
+ trade = this.parseTrade(data, market);
1115
+ }
1116
+ let trades = this.myTrades;
1117
+ if (trades === undefined) {
1118
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
1119
+ trades = new ArrayCacheBySymbolById(limit);
1120
+ this.myTrades = trades;
1121
+ }
1122
+ trades.append(trade);
1123
+ client.resolve(trades, messageHash);
1124
+ const symbolSpecificMessageHash = messageHash + ':' + symbol;
1125
+ client.resolve(trades, symbolSpecificMessageHash);
1126
+ }
1127
+ parseWsTrade(trade, market = undefined) {
1128
+ //
1129
+ // public trade (protobuf)
1130
+ // {
1131
+ // "p": "20382.70",
1132
+ // "v": "0.043800",
1133
+ // "S": 1,
1134
+ // "t": 1678593222456,
1135
+ // }
1136
+ // private trade
1137
+ // {
1138
+ // "S": 1,
1139
+ // "T": 1661938980268,
1140
+ // "c": "",
1141
+ // "i": "c079b0fcb80a46e8b128b281ce4e4f38",
1142
+ // "m": 1,
1143
+ // "p": "1.008",
1144
+ // "st": 0,
1145
+ // "t": "4079b1522a0b40e7919f609e1ea38d44",
1146
+ // "v": "5"
1147
+ // }
1148
+ //
1149
+ // d: {
1150
+ // p: '1.0005',
1151
+ // v: '5.71',
1152
+ // a: '5.712855',
1153
+ // S: 1,
1154
+ // T: 1714325698237,
1155
+ // t: 'edafcd9fdc2f426e82443d114691f724',
1156
+ // c: '',
1157
+ // i: 'C02__413321238354677760043',
1158
+ // m: 0,
1159
+ // st: 0,
1160
+ // n: '0.005712855',
1161
+ // N: 'USDT'
1162
+ // }
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');
1179
+ if (timestamp === undefined) {
1180
+ timestamp = this.safeInteger(trade, 't');
1181
+ tradeId = undefined;
1182
+ }
1183
+ const priceString = this.safeString2(trade, 'p', 'price');
1184
+ const amountString = this.safeString2(trade, 'v', 'quantity');
1185
+ const rawSide = this.safeString2(trade, 'S', 'tradeType');
1186
+ const side = (rawSide === '1') ? 'buy' : 'sell';
1187
+ const isMaker = this.safeInteger(trade, 'm');
1188
+ const feeAmount = this.safeString2(trade, 'n', 'feeAmount');
1189
+ const feeCurrencyId = this.safeString2(trade, 'N', 'feeCurrency');
1190
+ return this.safeTrade({
1191
+ 'info': trade,
1192
+ 'id': tradeId,
1193
+ 'order': this.safeString2(trade, 'i', 'orderId'),
1194
+ 'timestamp': timestamp,
1195
+ 'datetime': this.iso8601(timestamp),
1196
+ 'symbol': this.safeSymbol(undefined, market),
1197
+ 'type': undefined,
1198
+ 'side': side,
1199
+ 'takerOrMaker': (isMaker) ? 'maker' : 'taker',
1200
+ 'price': priceString,
1201
+ 'amount': amountString,
1202
+ 'cost': this.safeString(trade, 'amount'),
1203
+ 'fee': {
1204
+ 'cost': feeAmount,
1205
+ 'currency': this.safeCurrencyCode(feeCurrencyId),
1206
+ },
1207
+ }, market);
1208
+ }
1209
+ /**
1210
+ * @method
1211
+ * @name mexc#watchOrders
1212
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-orders
1213
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#margin-account-orders
1214
+ * @description watches information on multiple orders made by the user
1215
+ * @param {string} symbol unified market symbol of the market orders were made in
1216
+ * @param {int} [since] the earliest time in ms to fetch orders for
1217
+ * @param {int} [limit] the maximum number of order structures to retrieve
1218
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1219
+ * @param {string|undefined} params.type the type of orders to retrieve, can be 'spot' or 'margin'
1220
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1221
+ */
1222
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1223
+ await this.loadMarkets();
1224
+ let messageHash = 'orders';
1225
+ let market = undefined;
1226
+ if (symbol !== undefined) {
1227
+ market = this.market(symbol);
1228
+ symbol = market['symbol'];
1229
+ messageHash = messageHash + ':' + symbol;
1230
+ }
1231
+ let type = undefined;
1232
+ [type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
1233
+ let orders = undefined;
1234
+ if (type === 'spot') {
1235
+ const channel = 'spot@private.orders.v3.api.pb';
1236
+ orders = await this.watchSpotPrivate(channel, messageHash, params);
1237
+ }
1238
+ else {
1239
+ orders = await this.watchSwapPrivate(messageHash, params);
1240
+ }
1241
+ if (this.newUpdates) {
1242
+ limit = orders.getLimit(symbol, limit);
1243
+ }
1244
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
1245
+ }
1246
+ handleOrder(client, message) {
1247
+ //
1248
+ // spot
1249
+ // {
1250
+ // "c": "spot@private.orders.v3.api",
1251
+ // "d": {
1252
+ // "A":8.0,
1253
+ // "O":1661938138000,
1254
+ // "S":1,
1255
+ // "V":10,
1256
+ // "a":8,
1257
+ // "c":"",
1258
+ // "i":"e03a5c7441e44ed899466a7140b71391",
1259
+ // "m":0,
1260
+ // "o":1,
1261
+ // "p":0.8,
1262
+ // "s":1,
1263
+ // "v":10,
1264
+ // "ap":0,
1265
+ // "cv":0,
1266
+ // "ca":0
1267
+ // },
1268
+ // "s": "MXUSDT",
1269
+ // "t": 1661938138193
1270
+ // }
1271
+ // spot - stop
1272
+ // {
1273
+ // "c": "spot@private.orders.v3.api",
1274
+ // "d": {
1275
+ // "N":"USDT",
1276
+ // "O":1661938853715,
1277
+ // "P":0.9,
1278
+ // "S":1,
1279
+ // "T":"LE",
1280
+ // "i":"f6d82e5f41d745f59fe9d3cafffd80b5",
1281
+ // "o":100,
1282
+ // "p":1.01,
1283
+ // "s":"NEW",
1284
+ // "v":6
1285
+ // },
1286
+ // "s": "MXUSDT",
1287
+ // "t": 1661938853727
1288
+ // }
1289
+ // margin
1290
+ // {
1291
+ // "c": "margin@private.orders.v3.api",
1292
+ // "d":{
1293
+ // "O":1661938138000,
1294
+ // "p":"0.8",
1295
+ // "a":"8",
1296
+ // "v":"10",
1297
+ // "da":"0",
1298
+ // "dv":"0",
1299
+ // "A":"8.0",
1300
+ // "V":"10",
1301
+ // "n": "0",
1302
+ // "N": "USDT",
1303
+ // "S":1,
1304
+ // "o":1,
1305
+ // "s":1,
1306
+ // "i":"e03a5c7441e44ed899466a7140b71391",
1307
+ // },
1308
+ // "s": "MXUSDT",
1309
+ // "t":1661938138193
1310
+ // }
1311
+ // protobuf
1312
+ // {
1313
+ // channel: "spot@private.orders.v3.api.pb",
1314
+ // symbol: "MXUSDT",
1315
+ // sendTime: 1736417034281,
1316
+ // privateOrders {}
1317
+ // }
1318
+ //
1319
+ const messageHash = 'orders';
1320
+ const data = this.safeDictN(message, ['d', 'data', 'privateOrders']);
1321
+ const futuresMarketId = this.safeString(data, 'symbol');
1322
+ const marketId = this.safeString2(message, 's', 'symbol', futuresMarketId);
1323
+ const market = this.safeMarket(marketId);
1324
+ const symbol = market['symbol'];
1325
+ let parsed = undefined;
1326
+ if (market['spot']) {
1327
+ parsed = this.parseWsOrder(data, market);
1328
+ }
1329
+ else {
1330
+ parsed = this.parseOrder(data, market);
1331
+ }
1332
+ let orders = this.orders;
1333
+ if (orders === undefined) {
1334
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
1335
+ orders = new ArrayCacheBySymbolById(limit);
1336
+ this.orders = orders;
1337
+ }
1338
+ orders.append(parsed);
1339
+ client.resolve(orders, messageHash);
1340
+ const symbolSpecificMessageHash = messageHash + ':' + symbol;
1341
+ client.resolve(orders, symbolSpecificMessageHash);
1342
+ }
1343
+ parseWsOrder(order, market = undefined) {
1344
+ //
1345
+ // spot
1346
+ // {
1347
+ // "A":8.0,
1348
+ // "O":1661938138000,
1349
+ // "S":1,
1350
+ // "V":10,
1351
+ // "a":8,
1352
+ // "c":"",
1353
+ // "i":"e03a5c7441e44ed899466a7140b71391",
1354
+ // "m":0,
1355
+ // "o":1,
1356
+ // "p":0.8,
1357
+ // "s":1,
1358
+ // "v":10,
1359
+ // "ap":0,
1360
+ // "cv":0,
1361
+ // "ca":0
1362
+ // }
1363
+ // spot - stop
1364
+ // {
1365
+ // "N":"USDT",
1366
+ // "O":1661938853715,
1367
+ // "P":0.9,
1368
+ // "S":1,
1369
+ // "T":"LE",
1370
+ // "i":"f6d82e5f41d745f59fe9d3cafffd80b5",
1371
+ // "o":100,
1372
+ // "p":1.01,
1373
+ // "s":"NEW",
1374
+ // "v":6
1375
+ // }
1376
+ // margin
1377
+ // {
1378
+ // "O":1661938138000,
1379
+ // "p":"0.8",
1380
+ // "a":"8",
1381
+ // "v":"10",
1382
+ // "da":"0",
1383
+ // "dv":"0",
1384
+ // "A":"8.0",
1385
+ // "V":"10",
1386
+ // "n": "0",
1387
+ // "N": "USDT",
1388
+ // "S":1,
1389
+ // "o":1,
1390
+ // "s":1,
1391
+ // "i":"e03a5c7441e44ed899466a7140b71391",
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
+ // }
1410
+ //
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');
1415
+ let fee = undefined;
1416
+ const feeCurrency = this.safeString(order, 'N');
1417
+ if (feeCurrency !== undefined) {
1418
+ fee = {
1419
+ 'currency': feeCurrency,
1420
+ 'cost': undefined,
1421
+ };
1422
+ }
1423
+ return this.safeOrder({
1424
+ 'id': this.safeString(order, 'id'),
1425
+ 'clientOrderId': this.safeString(order, 'clientId'),
1426
+ 'timestamp': timestamp,
1427
+ 'datetime': this.iso8601(timestamp),
1428
+ 'lastTradeTimestamp': undefined,
1429
+ 'status': this.parseWsOrderStatus(status, market),
1430
+ 'symbol': this.safeSymbol(undefined, market),
1431
+ 'type': this.parseWsOrderType(type),
1432
+ 'timeInForce': this.parseWsTimeInForce(type),
1433
+ 'side': (side === '1') ? 'buy' : 'sell',
1434
+ 'price': this.safeString(order, 'price'),
1435
+ 'stopPrice': undefined,
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'),
1442
+ 'fee': fee,
1443
+ 'trades': undefined,
1444
+ 'info': order,
1445
+ }, market);
1446
+ }
1447
+ parseWsOrderStatus(status, market = undefined) {
1448
+ const statuses = {
1449
+ '1': 'open',
1450
+ '2': 'closed',
1451
+ '3': 'open',
1452
+ '4': 'canceled',
1453
+ '5': 'closed',
1454
+ 'NEW': 'open',
1455
+ 'CANCELED': 'canceled',
1456
+ 'EXECUTED': 'closed',
1457
+ 'FAILED': 'rejected',
1458
+ };
1459
+ return this.safeString(statuses, status, status);
1460
+ }
1461
+ parseWsOrderType(type) {
1462
+ const types = {
1463
+ '1': 'limit',
1464
+ '2': 'limit',
1465
+ '3': undefined,
1466
+ '4': undefined,
1467
+ '5': 'market',
1468
+ '100': 'limit', // STOP_LIMIT
1469
+ };
1470
+ return this.safeString(types, type);
1471
+ }
1472
+ parseWsTimeInForce(timeInForce) {
1473
+ const timeInForceIds = {
1474
+ '1': 'GTC',
1475
+ '2': 'PO',
1476
+ '3': 'IOC',
1477
+ '4': 'FOK',
1478
+ '5': 'GTC',
1479
+ '100': 'GTC', // STOP_LIMIT
1480
+ };
1481
+ return this.safeString(timeInForceIds, timeInForce);
1482
+ }
1483
+ /**
1484
+ * @method
1485
+ * @name mexc#watchBalance
1486
+ * @see https://www.mexc.com/api-docs/spot-v3/websocket-user-data-streams#spot-account-update
1487
+ * @description watch balance and get the amount of funds available for trading or funds locked in orders
1488
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1489
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1490
+ */
1491
+ async watchBalance(params = {}) {
1492
+ await this.loadMarkets();
1493
+ let type = undefined;
1494
+ [type, params] = this.handleMarketTypeAndParams('watchBalance', undefined, params);
1495
+ const messageHash = 'balance:' + type;
1496
+ if (type === 'spot') {
1497
+ const channel = 'spot@private.account.v3.api.pb';
1498
+ return await this.watchSpotPrivate(channel, messageHash, params);
1499
+ }
1500
+ else {
1501
+ return await this.watchSwapPrivate(messageHash, params);
1502
+ }
1503
+ }
1504
+ handleBalance(client, message) {
1505
+ //
1506
+ // spot
1507
+ // {
1508
+ // "c": "spot@private.account.v3.api",
1509
+ // "d": {
1510
+ // "a": "USDT",
1511
+ // "c": 1678185928428,
1512
+ // "f": "302.185113007893322435",
1513
+ // "fd": "-4.990689704",
1514
+ // "l": "4.990689704",
1515
+ // "ld": "4.990689704",
1516
+ // "o": "ENTRUST_PLACE"
1517
+ // },
1518
+ // "t": 1678185928435
1519
+ // }
1520
+ //
1521
+ //
1522
+ // swap balance
1523
+ //
1524
+ // {
1525
+ // "channel": "push.personal.asset",
1526
+ // "data": {
1527
+ // "availableBalance": 67.2426683348,
1528
+ // "bonus": 0,
1529
+ // "currency": "USDT",
1530
+ // "frozenBalance": 0,
1531
+ // "positionMargin": 1.36945756
1532
+ // },
1533
+ // "ts": 1680059188190
1534
+ // }
1535
+ //
1536
+ const c = this.safeString2(message, 'c', 'channel');
1537
+ const type = (c === undefined) ? 'swap' : 'spot';
1538
+ const messageHash = 'balance:' + type;
1539
+ const data = this.safeDictN(message, ['d', 'data', 'privateAccount']);
1540
+ const futuresTimestamp = this.safeInteger(message, 'ts');
1541
+ const timestamp = this.safeInteger2(data, 'c', 'time', futuresTimestamp);
1542
+ if (!(type in this.balance)) {
1543
+ this.balance[type] = {};
1544
+ }
1545
+ this.balance[type]['info'] = data;
1546
+ this.balance[type]['timestamp'] = timestamp;
1547
+ this.balance[type]['datetime'] = this.iso8601(timestamp);
1548
+ const currencyId = this.safeStringN(data, ['a', 'currency', 'vcoinName']);
1549
+ const code = this.safeCurrencyCode(currencyId);
1550
+ const account = this.account();
1551
+ account['total'] = this.safeStringN(data, ['f', 'availableBalance', 'balanceAmount']);
1552
+ account['used'] = this.safeStringN(data, ['l', 'frozenBalance', 'frozenAmount']);
1553
+ this.balance[type][code] = account;
1554
+ this.balance[type] = this.safeBalance(this.balance[type]);
1555
+ client.resolve(this.balance[type], messageHash);
1556
+ }
1557
+ /**
1558
+ * @method
1559
+ * @name mexc#unWatchTicker
1560
+ * @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
1561
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
1562
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1563
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1564
+ */
1565
+ async unWatchTicker(symbol, params = {}) {
1566
+ await this.loadMarkets();
1567
+ const market = this.market(symbol);
1568
+ const messageHash = 'unsubscribe:ticker:' + market['symbol'];
1569
+ let url = undefined;
1570
+ let channel = undefined;
1571
+ if (market['spot']) {
1572
+ channel = 'spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id'];
1573
+ url = this.urls['api']['ws']['spot'];
1574
+ params['unsubscribed'] = true;
1575
+ this.watchSpotPublic(channel, messageHash, params);
1576
+ }
1577
+ else {
1578
+ channel = 'unsub.ticker';
1579
+ const requestParams = {
1580
+ 'symbol': market['id'],
1581
+ };
1582
+ url = this.urls['api']['ws']['swap'];
1583
+ this.watchSwapPublic(channel, messageHash, requestParams, params);
1584
+ }
1585
+ const client = this.client(url);
1586
+ this.handleUnsubscriptions(client, [messageHash]);
1587
+ return undefined;
1588
+ }
1589
+ /**
1590
+ * @method
1591
+ * @name mexc#unWatchTickers
1592
+ * @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
1593
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
1594
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1595
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1596
+ */
1597
+ async unWatchTickers(symbols = undefined, params = {}) {
1598
+ await this.loadMarkets();
1599
+ symbols = this.marketSymbols(symbols, undefined);
1600
+ const messageHashes = [];
1601
+ const firstSymbol = this.safeString(symbols, 0);
1602
+ let market = undefined;
1603
+ if (firstSymbol !== undefined) {
1604
+ market = this.market(firstSymbol);
1605
+ }
1606
+ let type = undefined;
1607
+ [type, params] = this.handleMarketTypeAndParams('watchTickers', market, params);
1608
+ const isSpot = (type === 'spot');
1609
+ const url = (isSpot) ? this.urls['api']['ws']['spot'] : this.urls['api']['ws']['swap'];
1610
+ const request = {};
1611
+ if (isSpot) {
1612
+ throw new 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;
1639
+ }
1640
+ else {
1641
+ request['method'] = 'unsub.tickers';
1642
+ request['params'] = {};
1643
+ messageHashes.push('unsubscribe:ticker');
1644
+ }
1645
+ const client = this.client(url);
1646
+ this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
1647
+ this.handleUnsubscriptions(client, messageHashes);
1648
+ return undefined;
1649
+ }
1650
+ /**
1651
+ * @method
1652
+ * @name mexc#unWatchBidsAsks
1653
+ * @description unWatches best bid & ask for symbols
1654
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
1655
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1656
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1657
+ */
1658
+ async unWatchBidsAsks(symbols = undefined, params = {}) {
1659
+ await this.loadMarkets();
1660
+ symbols = this.marketSymbols(symbols, undefined, true, false, true);
1661
+ let marketType = undefined;
1662
+ if (symbols === undefined) {
1663
+ throw new ArgumentsRequired(this.id + ' watchBidsAsks required symbols argument');
1664
+ }
1665
+ const markets = this.marketsForSymbols(symbols);
1666
+ [marketType, params] = this.handleMarketTypeAndParams('watchBidsAsks', markets[0], params);
1667
+ const isSpot = marketType === 'spot';
1668
+ if (!isSpot) {
1669
+ throw new NotSupported(this.id + ' watchBidsAsks only support spot market');
1670
+ }
1671
+ const messageHashes = [];
1672
+ const topics = [];
1673
+ for (let i = 0; i < symbols.length; i++) {
1674
+ if (isSpot) {
1675
+ const market = this.market(symbols[i]);
1676
+ topics.push('spot@public.aggre.bookTicker.v3.api.pb@100ms@' + market['id']);
1677
+ }
1678
+ messageHashes.push('unsubscribe:bidask:' + symbols[i]);
1679
+ }
1680
+ const url = this.urls['api']['ws']['spot'];
1681
+ const request = {
1682
+ 'method': 'UNSUBSCRIPTION',
1683
+ 'params': topics,
1684
+ };
1685
+ const client = this.client(url);
1686
+ this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
1687
+ this.handleUnsubscriptions(client, messageHashes);
1688
+ return undefined;
1689
+ }
1690
+ /**
1691
+ * @method
1692
+ * @name mexc#unWatchOHLCV
1693
+ * @description unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1694
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1695
+ * @param {string} timeframe the length of time each candle represents
1696
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1697
+ * @param {object} [params.timezone] if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
1698
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1699
+ */
1700
+ async unWatchOHLCV(symbol, timeframe = '1m', params = {}) {
1701
+ await this.loadMarkets();
1702
+ const market = this.market(symbol);
1703
+ symbol = market['symbol'];
1704
+ const timeframes = this.safeValue(this.options, 'timeframes', {});
1705
+ const timeframeId = this.safeString(timeframes, timeframe);
1706
+ const messageHash = 'unsubscribe:candles:' + symbol + ':' + timeframe;
1707
+ let url = undefined;
1708
+ if (market['spot']) {
1709
+ url = this.urls['api']['ws']['spot'];
1710
+ const channel = 'spot@public.kline.v3.api.pb@' + market['id'] + '@' + timeframeId;
1711
+ params['unsubscribed'] = true;
1712
+ this.watchSpotPublic(channel, messageHash, params);
1713
+ }
1714
+ else {
1715
+ url = this.urls['api']['ws']['swap'];
1716
+ const channel = 'unsub.kline';
1717
+ const requestParams = {
1718
+ 'symbol': market['id'],
1719
+ 'interval': timeframeId,
1720
+ };
1721
+ this.watchSwapPublic(channel, messageHash, requestParams, params);
1722
+ }
1723
+ const client = this.client(url);
1724
+ this.handleUnsubscriptions(client, [messageHash]);
1725
+ return undefined;
1726
+ }
1727
+ /**
1728
+ * @method
1729
+ * @name mexc#unWatchOrderBook
1730
+ * @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
1731
+ * @param {string} symbol unified array of symbols
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
1734
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
1735
+ */
1736
+ async unWatchOrderBook(symbol, params = {}) {
1737
+ await this.loadMarkets();
1738
+ const market = this.market(symbol);
1739
+ symbol = market['symbol'];
1740
+ const messageHash = 'unsubscribe:orderbook:' + symbol;
1741
+ let url = undefined;
1742
+ if (market['spot']) {
1743
+ url = this.urls['api']['ws']['spot'];
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'];
1747
+ params['unsubscribed'] = true;
1748
+ this.watchSpotPublic(channel, messageHash, params);
1749
+ }
1750
+ else {
1751
+ url = this.urls['api']['ws']['swap'];
1752
+ const channel = 'unsub.depth';
1753
+ const requestParams = {
1754
+ 'symbol': market['id'],
1755
+ };
1756
+ this.watchSwapPublic(channel, messageHash, requestParams, params);
1757
+ }
1758
+ const client = this.client(url);
1759
+ this.handleUnsubscriptions(client, [messageHash]);
1760
+ return undefined;
1761
+ }
1762
+ /**
1763
+ * @method
1764
+ * @name mexc#unWatchTrades
1765
+ * @description unsubscribes from the trades channel
1766
+ * @param {string} symbol unified symbol of the market to fetch trades for
1767
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1768
+ * @param {string} [params.name] the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
1769
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1770
+ */
1771
+ async unWatchTrades(symbol, params = {}) {
1772
+ await this.loadMarkets();
1773
+ const market = this.market(symbol);
1774
+ symbol = market['symbol'];
1775
+ const messageHash = 'unsubscribe:trades:' + symbol;
1776
+ let url = undefined;
1777
+ if (market['spot']) {
1778
+ url = this.urls['api']['ws']['spot'];
1779
+ const channel = 'spot@public.aggre.deals.v3.api.pb@100ms@' + market['id'];
1780
+ params['unsubscribed'] = true;
1781
+ this.watchSpotPublic(channel, messageHash, params);
1782
+ }
1783
+ else {
1784
+ url = this.urls['api']['ws']['swap'];
1785
+ const channel = 'unsub.deal';
1786
+ const requestParams = {
1787
+ 'symbol': market['id'],
1788
+ };
1789
+ this.watchSwapPublic(channel, messageHash, requestParams, params);
1790
+ }
1791
+ const client = this.client(url);
1792
+ this.handleUnsubscriptions(client, [messageHash]);
1793
+ return undefined;
1794
+ }
1795
+ handleUnsubscriptions(client, messageHashes) {
1796
+ for (let i = 0; i < messageHashes.length; i++) {
1797
+ const messageHash = messageHashes[i];
1798
+ const subMessageHash = messageHash.replace('unsubscribe:', '');
1799
+ this.cleanUnsubscription(client, subMessageHash, messageHash);
1800
+ if (messageHash.indexOf('ticker') >= 0) {
1801
+ const symbol = messageHash.replace('unsubscribe:ticker:', '');
1802
+ if (symbol.indexOf('unsubscribe') >= 0) {
1803
+ // unWatchTickers
1804
+ const symbols = Object.keys(this.tickers);
1805
+ for (let j = 0; j < symbols.length; j++) {
1806
+ delete this.tickers[symbols[j]];
1807
+ }
1808
+ }
1809
+ else if (symbol in this.tickers) {
1810
+ delete this.tickers[symbol];
1811
+ }
1812
+ }
1813
+ else if (messageHash.indexOf('bidask') >= 0) {
1814
+ const symbol = messageHash.replace('unsubscribe:bidask:', '');
1815
+ if (symbol in this.bidsasks) {
1816
+ delete this.bidsasks[symbol];
1817
+ }
1818
+ }
1819
+ else if (messageHash.indexOf('candles') >= 0) {
1820
+ const splitHashes = messageHash.split(':');
1821
+ let symbol = this.safeString(splitHashes, 2);
1822
+ if (splitHashes.length > 4) {
1823
+ symbol += ':' + this.safeString(splitHashes, 3);
1824
+ }
1825
+ if (symbol in this.ohlcvs) {
1826
+ delete this.ohlcvs[symbol];
1827
+ }
1828
+ }
1829
+ else if (messageHash.indexOf('orderbook') >= 0) {
1830
+ const symbol = messageHash.replace('unsubscribe:orderbook:', '');
1831
+ if (symbol in this.orderbooks) {
1832
+ delete this.orderbooks[symbol];
1833
+ }
1834
+ }
1835
+ else if (messageHash.indexOf('trades') >= 0) {
1836
+ const symbol = messageHash.replace('unsubscribe:trades:', '');
1837
+ if (symbol in this.trades) {
1838
+ delete this.trades[symbol];
1839
+ }
1840
+ }
1841
+ }
1842
+ }
1843
+ async authenticate(subscriptionHash, params = {}) {
1844
+ // we only need one listenKey since ccxt shares connections
1845
+ let listenKey = this.safeString(this.options, 'listenKey');
1846
+ if (listenKey !== undefined) {
1847
+ return listenKey;
1848
+ }
1849
+ const response = await this.spotPrivatePostUserDataStream(params);
1850
+ //
1851
+ // {
1852
+ // "listenKey": "pqia91ma19a5s61cv6a81va65sdf19v8a65a1a5s61cv6a81va65sdf19v8a65a1"
1853
+ // }
1854
+ //
1855
+ listenKey = this.safeString(response, 'listenKey');
1856
+ this.options['listenKey'] = listenKey;
1857
+ const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 1200000);
1858
+ this.delay(listenKeyRefreshRate, this.keepAliveListenKey, listenKey, params);
1859
+ return listenKey;
1860
+ }
1861
+ async keepAliveListenKey(listenKey, params = {}) {
1862
+ if (listenKey === undefined) {
1863
+ return;
1864
+ }
1865
+ const request = {
1866
+ 'listenKey': listenKey,
1867
+ };
1868
+ try {
1869
+ await this.spotPrivatePutUserDataStream(this.extend(request, params));
1870
+ const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 1200000);
1871
+ this.delay(listenKeyRefreshRate, this.keepAliveListenKey, listenKey, params);
1872
+ }
1873
+ catch (error) {
1874
+ const url = this.urls['api']['ws']['spot'] + '?listenKey=' + listenKey;
1875
+ const client = this.client(url);
1876
+ this.options['listenKey'] = undefined;
1877
+ client.reject(error);
1878
+ delete this.clients[url];
1879
+ }
1880
+ }
1881
+ handlePong(client, message) {
1882
+ client.lastPong = this.milliseconds();
1883
+ return message;
1884
+ }
1885
+ handleSubscriptionStatus(client, message) {
1886
+ //
1887
+ // {
1888
+ // "id": 0,
1889
+ // "code": 0,
1890
+ // "msg": "spot@public.increase.depth.v3.api@BTCUSDT"
1891
+ // }
1892
+ // Set the default to an empty string if the message is empty during the test.
1893
+ const msg = this.safeString(message, 'msg', '');
1894
+ if (msg === 'PONG') {
1895
+ this.handlePong(client, message);
1896
+ }
1897
+ else if (msg.indexOf('@') > -1) {
1898
+ const parts = msg.split('@');
1899
+ const channel = this.safeString(parts, 1);
1900
+ const methods = {
1901
+ 'public.increase.depth.v3.api': this.handleOrderBookSubscription,
1902
+ 'public.aggre.depth.v3.api.pb': this.handleOrderBookSubscription,
1903
+ };
1904
+ const method = this.safeValue(methods, channel);
1905
+ if (method !== undefined) {
1906
+ method.call(this, client, message);
1907
+ }
1908
+ }
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
+ }
1955
+ handleMessage(client, message) {
1956
+ if (typeof message === 'string') {
1957
+ if (message === 'Invalid listen key') {
1958
+ const error = new AuthenticationError(this.id + ' invalid listen key');
1959
+ client.reject(error);
1960
+ return;
1961
+ }
1962
+ }
1963
+ if (this.isBinaryMessage(message)) {
1964
+ message = this.decodeProtoMsg(message);
1965
+ this.handleProtobufMessage(client, message);
1966
+ return;
1967
+ }
1968
+ if ('msg' in message) {
1969
+ this.handleSubscriptionStatus(client, message);
1970
+ return;
1971
+ }
1972
+ const c = this.safeString(message, 'c');
1973
+ let channel = undefined;
1974
+ if (c === undefined) {
1975
+ channel = this.safeString(message, 'channel');
1976
+ }
1977
+ else {
1978
+ const parts = c.split('@');
1979
+ channel = this.safeString(parts, 1);
1980
+ }
1981
+ const methods = {
1982
+ 'public.deals.v3.api': this.handleTrades,
1983
+ 'push.deal': this.handleTrades,
1984
+ 'public.kline.v3.api': this.handleOHLCV,
1985
+ 'push.kline': this.handleOHLCV,
1986
+ 'public.bookTicker.v3.api': this.handleTicker,
1987
+ 'public.miniTicker.v3.api': this.handleTicker,
1988
+ 'public.miniTickers.v3.api': this.handleTickers,
1989
+ 'push.ticker': this.handleTicker,
1990
+ 'push.tickers': this.handleTickers,
1991
+ 'public.increase.depth.v3.api': this.handleOrderBook,
1992
+ 'push.depth': this.handleOrderBook,
1993
+ 'private.orders.v3.api': this.handleOrder,
1994
+ 'push.personal.order': this.handleOrder,
1995
+ 'private.account.v3.api': this.handleBalance,
1996
+ 'push.personal.asset': this.handleBalance,
1997
+ 'private.deals.v3.api': this.handleMyTrade,
1998
+ 'push.personal.order.deal': this.handleMyTrade,
1999
+ 'pong': this.handlePong,
2000
+ };
2001
+ if (channel in methods) {
2002
+ const method = methods[channel];
2003
+ method.call(this, client, message);
2004
+ }
2005
+ }
2006
+ ping(client) {
2007
+ return { 'method': 'ping' };
2008
+ }
2009
+ }