ccxt-ir 4.10.0 → 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 (1047) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/js/ccxt.d.ts +5 -2
  8. package/js/ccxt.js +4 -2
  9. package/js/src/abstract/bidarz.d.ts +9 -0
  10. package/js/src/abstract/bidarz.js +11 -0
  11. package/js/src/bidarz.d.ts +22 -0
  12. package/js/src/bidarz.js +336 -0
  13. package/js/src/bit24.js +4 -3
  14. package/js/src/src/abantether.d.ts +21 -0
  15. package/js/src/src/abantether.js +353 -0
  16. package/js/src/src/abstract/abantether.d.ts +8 -0
  17. package/js/src/src/abstract/abantether.js +11 -0
  18. package/js/src/src/abstract/afratether.d.ts +9 -0
  19. package/js/src/src/abstract/afratether.js +11 -0
  20. package/js/src/src/abstract/alpaca.d.ts +77 -0
  21. package/js/src/src/abstract/alpaca.js +11 -0
  22. package/js/src/src/abstract/apex.d.ts +34 -0
  23. package/js/src/src/abstract/apex.js +11 -0
  24. package/js/src/src/abstract/arzinja.d.ts +8 -0
  25. package/js/src/src/abstract/arzinja.js +11 -0
  26. package/js/src/src/abstract/arzplus.d.ts +11 -0
  27. package/js/src/src/abstract/arzplus.js +11 -0
  28. package/js/src/src/abstract/ascendex.d.ts +80 -0
  29. package/js/src/src/abstract/ascendex.js +11 -0
  30. package/js/src/src/abstract/asretether.d.ts +8 -0
  31. package/js/src/src/abstract/asretether.js +11 -0
  32. package/js/src/src/abstract/bidarz.d.ts +9 -0
  33. package/js/src/src/abstract/bidarz.js +11 -0
  34. package/js/src/src/abstract/bigone.d.ts +48 -0
  35. package/js/src/src/abstract/bigone.js +11 -0
  36. package/js/src/src/abstract/binance.d.ts +773 -0
  37. package/js/src/src/abstract/binance.js +11 -0
  38. package/js/src/src/abstract/bingx.d.ts +165 -0
  39. package/js/src/src/abstract/bingx.js +11 -0
  40. package/js/src/src/abstract/bit24.d.ts +9 -0
  41. package/js/src/src/abstract/bit24.js +11 -0
  42. package/js/src/src/abstract/bit2c.d.ts +30 -0
  43. package/js/src/src/abstract/bit2c.js +11 -0
  44. package/js/src/src/abstract/bitbank.d.ts +35 -0
  45. package/js/src/src/abstract/bitbank.js +11 -0
  46. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  47. package/js/src/src/abstract/bitbarg.js +11 -0
  48. package/js/src/src/abstract/bitbns.d.ts +43 -0
  49. package/js/src/src/abstract/bitbns.js +11 -0
  50. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  51. package/js/src/src/abstract/bitfinex.js +11 -0
  52. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  53. package/js/src/src/abstract/bitflyer.js +11 -0
  54. package/js/src/src/abstract/bitget.d.ts +578 -0
  55. package/js/src/src/abstract/bitget.js +11 -0
  56. package/js/src/src/abstract/bithumb.d.ts +35 -0
  57. package/js/src/src/abstract/bithumb.js +11 -0
  58. package/js/src/src/abstract/bitimen.d.ts +10 -0
  59. package/js/src/src/abstract/bitimen.js +11 -0
  60. package/js/src/src/abstract/bitir.d.ts +10 -0
  61. package/js/src/src/abstract/bitir.js +11 -0
  62. package/js/src/src/abstract/bitmart.d.ts +120 -0
  63. package/js/src/src/abstract/bitmart.js +11 -0
  64. package/js/src/src/abstract/bitmex.d.ts +100 -0
  65. package/js/src/src/abstract/bitmex.js +11 -0
  66. package/js/src/src/abstract/bitopro.d.ts +33 -0
  67. package/js/src/src/abstract/bitopro.js +11 -0
  68. package/js/src/src/abstract/bitpin.d.ts +11 -0
  69. package/js/src/src/abstract/bitpin.js +11 -0
  70. package/js/src/src/abstract/bitrue.d.ts +75 -0
  71. package/js/src/src/abstract/bitrue.js +11 -0
  72. package/js/src/src/abstract/bitso.d.ts +46 -0
  73. package/js/src/src/abstract/bitso.js +11 -0
  74. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  75. package/js/src/src/abstract/bitstamp.js +11 -0
  76. package/js/src/src/abstract/bitteam.d.ts +32 -0
  77. package/js/src/src/abstract/bitteam.js +11 -0
  78. package/js/src/src/abstract/bittrade.d.ts +117 -0
  79. package/js/src/src/abstract/bittrade.js +11 -0
  80. package/js/src/src/abstract/bitunix.d.ts +9 -0
  81. package/js/src/src/abstract/bitunix.js +11 -0
  82. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  83. package/js/src/src/abstract/bitvavo.js +11 -0
  84. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  85. package/js/src/src/abstract/blockchaincom.js +11 -0
  86. package/js/src/src/abstract/blofin.d.ts +70 -0
  87. package/js/src/src/abstract/blofin.js +11 -0
  88. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  89. package/js/src/src/abstract/btcalpha.js +11 -0
  90. package/js/src/src/abstract/btcbox.d.ts +18 -0
  91. package/js/src/src/abstract/btcbox.js +11 -0
  92. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  93. package/js/src/src/abstract/btcmarkets.js +11 -0
  94. package/js/src/src/abstract/btcturk.d.ts +23 -0
  95. package/js/src/src/abstract/btcturk.js +11 -0
  96. package/js/src/src/abstract/bybit.d.ts +316 -0
  97. package/js/src/src/abstract/bybit.js +11 -0
  98. package/js/src/src/abstract/bydfi.d.ts +11 -0
  99. package/js/src/src/abstract/bydfi.js +11 -0
  100. package/js/src/src/abstract/cafearz.d.ts +8 -0
  101. package/js/src/src/abstract/cafearz.js +11 -0
  102. package/js/src/src/abstract/cex.d.ts +35 -0
  103. package/js/src/src/abstract/cex.js +11 -0
  104. package/js/src/src/abstract/coinbase.d.ts +97 -0
  105. package/js/src/src/abstract/coinbase.js +11 -0
  106. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  107. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  108. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  109. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  110. package/js/src/src/abstract/coincatch.d.ts +97 -0
  111. package/js/src/src/abstract/coincatch.js +11 -0
  112. package/js/src/src/abstract/coincheck.d.ts +36 -0
  113. package/js/src/src/abstract/coincheck.js +11 -0
  114. package/js/src/src/abstract/coinex.d.ts +240 -0
  115. package/js/src/src/abstract/coinex.js +11 -0
  116. package/js/src/src/abstract/coinmate.d.ts +65 -0
  117. package/js/src/src/abstract/coinmate.js +11 -0
  118. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  119. package/js/src/src/abstract/coinmetro.js +11 -0
  120. package/js/src/src/abstract/coinone.d.ts +70 -0
  121. package/js/src/src/abstract/coinone.js +11 -0
  122. package/js/src/src/abstract/coinsph.d.ts +57 -0
  123. package/js/src/src/abstract/coinsph.js +11 -0
  124. package/js/src/src/abstract/coinspot.d.ts +31 -0
  125. package/js/src/src/abstract/coinspot.js +11 -0
  126. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  127. package/js/src/src/abstract/cryptocom.js +11 -0
  128. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  129. package/js/src/src/abstract/cryptomus.js +11 -0
  130. package/js/src/src/abstract/defx.d.ts +72 -0
  131. package/js/src/src/abstract/defx.js +11 -0
  132. package/js/src/src/abstract/delta.d.ts +53 -0
  133. package/js/src/src/abstract/delta.js +11 -0
  134. package/js/src/src/abstract/deribit.d.ts +129 -0
  135. package/js/src/src/abstract/deribit.js +11 -0
  136. package/js/src/src/abstract/derive.d.ts +120 -0
  137. package/js/src/src/abstract/derive.js +11 -0
  138. package/js/src/src/abstract/digifinex.d.ts +95 -0
  139. package/js/src/src/abstract/digifinex.js +11 -0
  140. package/js/src/src/abstract/ellipx.d.ts +28 -0
  141. package/js/src/src/abstract/ellipx.js +11 -0
  142. package/js/src/src/abstract/eterex.d.ts +8 -0
  143. package/js/src/src/abstract/eterex.js +11 -0
  144. package/js/src/src/abstract/excoino.d.ts +10 -0
  145. package/js/src/src/abstract/excoino.js +11 -0
  146. package/js/src/src/abstract/exir.d.ts +11 -0
  147. package/js/src/src/abstract/exir.js +11 -0
  148. package/js/src/src/abstract/exmo.d.ts +58 -0
  149. package/js/src/src/abstract/exmo.js +11 -0
  150. package/js/src/src/abstract/exnovin.d.ts +9 -0
  151. package/js/src/src/abstract/exnovin.js +11 -0
  152. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  153. package/js/src/src/abstract/farhadexchange.js +11 -0
  154. package/js/src/src/abstract/foxbit.d.ts +29 -0
  155. package/js/src/src/abstract/foxbit.js +11 -0
  156. package/js/src/src/abstract/gate.d.ts +287 -0
  157. package/js/src/src/abstract/gate.js +11 -0
  158. package/js/src/src/abstract/gemini.d.ts +62 -0
  159. package/js/src/src/abstract/gemini.js +11 -0
  160. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  161. package/js/src/src/abstract/hamtapay.js +11 -0
  162. package/js/src/src/abstract/hashkey.d.ts +70 -0
  163. package/js/src/src/abstract/hashkey.js +11 -0
  164. package/js/src/src/abstract/hibachi.d.ts +29 -0
  165. package/js/src/src/abstract/hibachi.js +11 -0
  166. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  167. package/js/src/src/abstract/hitbtc.js +11 -0
  168. package/js/src/src/abstract/hitobit.d.ts +11 -0
  169. package/js/src/src/abstract/hitobit.js +11 -0
  170. package/js/src/src/abstract/hollaex.d.ts +36 -0
  171. package/js/src/src/abstract/hollaex.js +11 -0
  172. package/js/src/src/abstract/htx.d.ts +551 -0
  173. package/js/src/src/abstract/htx.js +11 -0
  174. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  175. package/js/src/src/abstract/hyperliquid.js +11 -0
  176. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  177. package/js/src/src/abstract/independentreserve.js +11 -0
  178. package/js/src/src/abstract/indodax.d.ts +29 -0
  179. package/js/src/src/abstract/indodax.js +11 -0
  180. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  181. package/js/src/src/abstract/iranexchange.js +11 -0
  182. package/js/src/src/abstract/jibitex.d.ts +10 -0
  183. package/js/src/src/abstract/jibitex.js +11 -0
  184. package/js/src/src/abstract/kcex.d.ts +10 -0
  185. package/js/src/src/abstract/kcex.js +11 -0
  186. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  187. package/js/src/src/abstract/kifpoolme.js +11 -0
  188. package/js/src/src/abstract/kraken.d.ts +61 -0
  189. package/js/src/src/abstract/kraken.js +11 -0
  190. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  191. package/js/src/src/abstract/krakenfutures.js +11 -0
  192. package/js/src/src/abstract/kucoin.d.ts +227 -0
  193. package/js/src/src/abstract/kucoin.js +11 -0
  194. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  195. package/js/src/src/abstract/kucoinfutures.js +11 -0
  196. package/js/src/src/abstract/latoken.d.ts +59 -0
  197. package/js/src/src/abstract/latoken.js +11 -0
  198. package/js/src/src/abstract/lbank.d.ts +65 -0
  199. package/js/src/src/abstract/lbank.js +11 -0
  200. package/js/src/src/abstract/luno.d.ts +41 -0
  201. package/js/src/src/abstract/luno.js +11 -0
  202. package/js/src/src/abstract/mazdax.d.ts +11 -0
  203. package/js/src/src/abstract/mazdax.js +11 -0
  204. package/js/src/src/abstract/mercado.d.ts +28 -0
  205. package/js/src/src/abstract/mercado.js +11 -0
  206. package/js/src/src/abstract/mexc.d.ts +183 -0
  207. package/js/src/src/abstract/mexc.js +11 -0
  208. package/js/src/src/abstract/modetrade.d.ts +122 -0
  209. package/js/src/src/abstract/modetrade.js +11 -0
  210. package/js/src/src/abstract/ndax.d.ts +100 -0
  211. package/js/src/src/abstract/ndax.js +11 -0
  212. package/js/src/src/abstract/nobitex.d.ts +10 -0
  213. package/js/src/src/abstract/nobitex.js +11 -0
  214. package/js/src/src/abstract/novadax.d.ts +32 -0
  215. package/js/src/src/abstract/novadax.js +11 -0
  216. package/js/src/src/abstract/oceanex.d.ts +30 -0
  217. package/js/src/src/abstract/oceanex.js +11 -0
  218. package/js/src/src/abstract/okcoin.d.ts +77 -0
  219. package/js/src/src/abstract/okcoin.js +11 -0
  220. package/js/src/src/abstract/okexchange.d.ts +11 -0
  221. package/js/src/src/abstract/okexchange.js +11 -0
  222. package/js/src/src/abstract/okx.d.ts +352 -0
  223. package/js/src/src/abstract/okx.js +11 -0
  224. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  225. package/js/src/src/abstract/ompfinex.js +11 -0
  226. package/js/src/src/abstract/onetrading.d.ts +26 -0
  227. package/js/src/src/abstract/onetrading.js +11 -0
  228. package/js/src/src/abstract/oxfun.d.ts +37 -0
  229. package/js/src/src/abstract/oxfun.js +11 -0
  230. package/js/src/src/abstract/p2b.d.ts +25 -0
  231. package/js/src/src/abstract/p2b.js +11 -0
  232. package/js/src/src/abstract/paradex.d.ts +66 -0
  233. package/js/src/src/abstract/paradex.js +11 -0
  234. package/js/src/src/abstract/paymium.d.ts +31 -0
  235. package/js/src/src/abstract/paymium.js +11 -0
  236. package/js/src/src/abstract/phemex.d.ts +120 -0
  237. package/js/src/src/abstract/phemex.js +11 -0
  238. package/js/src/src/abstract/pingi.d.ts +9 -0
  239. package/js/src/src/abstract/pingi.js +11 -0
  240. package/js/src/src/abstract/poloniex.d.ts +108 -0
  241. package/js/src/src/abstract/poloniex.js +11 -0
  242. package/js/src/src/abstract/pooleno.d.ts +8 -0
  243. package/js/src/src/abstract/pooleno.js +11 -0
  244. package/js/src/src/abstract/probit.d.ts +26 -0
  245. package/js/src/src/abstract/probit.js +11 -0
  246. package/js/src/src/abstract/raastin.d.ts +11 -0
  247. package/js/src/src/abstract/raastin.js +11 -0
  248. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  249. package/js/src/src/abstract/ramzinex.js +11 -0
  250. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  251. package/js/src/src/abstract/sarmayex.js +11 -0
  252. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  253. package/js/src/src/abstract/sarrafex.js +11 -0
  254. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  255. package/js/src/src/abstract/tabdeal.js +11 -0
  256. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  257. package/js/src/src/abstract/tehran_exchange.js +11 -0
  258. package/js/src/src/abstract/tetherland.d.ts +8 -0
  259. package/js/src/src/abstract/tetherland.js +11 -0
  260. package/js/src/src/abstract/timex.d.ts +65 -0
  261. package/js/src/src/abstract/timex.js +11 -0
  262. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  263. package/js/src/src/abstract/tokocrypto.js +11 -0
  264. package/js/src/src/abstract/toobit.d.ts +10 -0
  265. package/js/src/src/abstract/toobit.js +11 -0
  266. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  267. package/js/src/src/abstract/tradeogre.js +11 -0
  268. package/js/src/src/abstract/twox.d.ts +8 -0
  269. package/js/src/src/abstract/twox.js +11 -0
  270. package/js/src/src/abstract/ubitex.d.ts +10 -0
  271. package/js/src/src/abstract/ubitex.js +11 -0
  272. package/js/src/src/abstract/upbit.d.ts +58 -0
  273. package/js/src/src/abstract/upbit.js +11 -0
  274. package/js/src/src/abstract/vertex.d.ts +22 -0
  275. package/js/src/src/abstract/vertex.js +11 -0
  276. package/js/src/src/abstract/wallex.d.ts +11 -0
  277. package/js/src/src/abstract/wallex.js +11 -0
  278. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  279. package/js/src/src/abstract/wavesexchange.js +11 -0
  280. package/js/src/src/abstract/whitebit.d.ts +117 -0
  281. package/js/src/src/abstract/whitebit.js +11 -0
  282. package/js/src/src/abstract/woo.d.ts +144 -0
  283. package/js/src/src/abstract/woo.js +11 -0
  284. package/js/src/src/abstract/woofipro.d.ts +122 -0
  285. package/js/src/src/abstract/woofipro.js +11 -0
  286. package/js/src/src/abstract/xt.d.ts +160 -0
  287. package/js/src/src/abstract/xt.js +11 -0
  288. package/js/src/src/abstract/yobit.d.ts +19 -0
  289. package/js/src/src/abstract/yobit.js +11 -0
  290. package/js/src/src/abstract/zaif.d.ts +41 -0
  291. package/js/src/src/abstract/zaif.js +11 -0
  292. package/js/src/src/abstract/zonda.d.ts +56 -0
  293. package/js/src/src/abstract/zonda.js +11 -0
  294. package/js/src/src/afratether.d.ts +21 -0
  295. package/js/src/src/afratether.js +356 -0
  296. package/js/src/src/alpaca.d.ts +332 -0
  297. package/js/src/src/alpaca.js +1908 -0
  298. package/js/src/src/apex.d.ts +333 -0
  299. package/js/src/src/apex.js +1942 -0
  300. package/js/src/src/arzinja.d.ts +21 -0
  301. package/js/src/src/arzinja.js +298 -0
  302. package/js/src/src/arzplus.d.ts +26 -0
  303. package/js/src/src/arzplus.js +581 -0
  304. package/js/src/src/ascendex.d.ts +424 -0
  305. package/js/src/src/ascendex.js +3699 -0
  306. package/js/src/src/asretether.d.ts +21 -0
  307. package/js/src/src/asretether.js +324 -0
  308. package/js/src/src/base/Exchange.d.ts +926 -0
  309. package/js/src/src/base/Exchange.js +7399 -0
  310. package/js/src/src/base/Precise.d.ts +42 -0
  311. package/js/src/src/base/Precise.js +275 -0
  312. package/js/src/src/base/errors.d.ts +168 -0
  313. package/js/src/src/base/errors.js +255 -0
  314. package/js/src/src/base/functions/crypto.d.ts +16 -0
  315. package/js/src/src/base/functions/crypto.js +131 -0
  316. package/js/src/src/base/functions/encode.d.ts +4 -0
  317. package/js/src/src/base/functions/encode.js +32 -0
  318. package/js/src/src/base/functions/generic.d.ts +29 -0
  319. package/js/src/src/base/functions/generic.js +203 -0
  320. package/js/src/src/base/functions/misc.d.ts +9 -0
  321. package/js/src/src/base/functions/misc.js +101 -0
  322. package/js/src/src/base/functions/number.d.ts +27 -0
  323. package/js/src/src/base/functions/number.js +313 -0
  324. package/js/src/src/base/functions/platform.d.ts +7 -0
  325. package/js/src/src/base/functions/platform.js +27 -0
  326. package/js/src/src/base/functions/rsa.d.ts +5 -0
  327. package/js/src/src/base/functions/rsa.js +49 -0
  328. package/js/src/src/base/functions/string.d.ts +7 -0
  329. package/js/src/src/base/functions/string.js +44 -0
  330. package/js/src/src/base/functions/throttle.d.ts +6 -0
  331. package/js/src/src/base/functions/throttle.js +67 -0
  332. package/js/src/src/base/functions/time.d.ts +21 -0
  333. package/js/src/src/base/functions/time.js +171 -0
  334. package/js/src/src/base/functions/totp.d.ts +3 -0
  335. package/js/src/src/base/functions/totp.js +25 -0
  336. package/js/src/src/base/functions/type.d.ts +37 -0
  337. package/js/src/src/base/functions/type.js +179 -0
  338. package/js/src/src/base/functions.d.ts +10 -0
  339. package/js/src/src/base/functions.js +18 -0
  340. package/js/src/src/base/types.d.ts +586 -0
  341. package/js/src/src/base/types.js +7 -0
  342. package/js/src/src/base/ws/Cache.d.ts +27 -0
  343. package/js/src/src/base/ws/Cache.js +260 -0
  344. package/js/src/src/base/ws/Client.d.ts +53 -0
  345. package/js/src/src/base/ws/Client.js +307 -0
  346. package/js/src/src/base/ws/Future.d.ts +8 -0
  347. package/js/src/src/base/ws/Future.js +35 -0
  348. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  349. package/js/src/src/base/ws/OrderBook.js +130 -0
  350. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  351. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  352. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  353. package/js/src/src/base/ws/WsClient.js +69 -0
  354. package/js/src/src/bequant.d.ts +4 -0
  355. package/js/src/src/bequant.js +35 -0
  356. package/js/src/src/bidarz.d.ts +16 -0
  357. package/js/src/src/bidarz.js +327 -0
  358. package/js/src/src/bigone.d.ts +296 -0
  359. package/js/src/src/bigone.js +2340 -0
  360. package/js/src/src/binance.d.ts +1667 -0
  361. package/js/src/src/binance.js +14400 -0
  362. package/js/src/src/binancecoinm.d.ts +6 -0
  363. package/js/src/src/binancecoinm.js +51 -0
  364. package/js/src/src/binanceus.d.ts +4 -0
  365. package/js/src/src/binanceus.js +225 -0
  366. package/js/src/src/binanceusdm.d.ts +6 -0
  367. package/js/src/src/binanceusdm.js +63 -0
  368. package/js/src/src/bingx.d.ts +778 -0
  369. package/js/src/src/bingx.js +6705 -0
  370. package/js/src/src/bit24.d.ts +24 -0
  371. package/js/src/src/bit24.js +520 -0
  372. package/js/src/src/bit2c.d.ts +146 -0
  373. package/js/src/src/bit2c.js +1029 -0
  374. package/js/src/src/bitbank.d.ts +181 -0
  375. package/js/src/src/bitbank.js +1146 -0
  376. package/js/src/src/bitbarg.d.ts +21 -0
  377. package/js/src/src/bitbarg.js +312 -0
  378. package/js/src/src/bitbns.d.ts +184 -0
  379. package/js/src/src/bitbns.js +1288 -0
  380. package/js/src/src/bitfinex.d.ts +516 -0
  381. package/js/src/src/bitfinex.js +3951 -0
  382. package/js/src/src/bitflyer.d.ts +229 -0
  383. package/js/src/src/bitflyer.js +1209 -0
  384. package/js/src/src/bitget.d.ts +1109 -0
  385. package/js/src/src/bitget.js +11033 -0
  386. package/js/src/src/bithumb.d.ts +165 -0
  387. package/js/src/src/bithumb.js +1257 -0
  388. package/js/src/src/bitimen.d.ts +23 -0
  389. package/js/src/src/bitimen.js +424 -0
  390. package/js/src/src/bitir.d.ts +23 -0
  391. package/js/src/src/bitir.js +521 -0
  392. package/js/src/src/bitmart.d.ts +736 -0
  393. package/js/src/src/bitmart.js +5639 -0
  394. package/js/src/src/bitmex.d.ts +395 -0
  395. package/js/src/src/bitmex.js +3088 -0
  396. package/js/src/src/bitopro.d.ts +295 -0
  397. package/js/src/src/bitopro.js +1892 -0
  398. package/js/src/src/bitpin.d.ts +23 -0
  399. package/js/src/src/bitpin.js +487 -0
  400. package/js/src/src/bitrue.d.ts +384 -0
  401. package/js/src/src/bitrue.js +3382 -0
  402. package/js/src/src/bitso.d.ts +270 -0
  403. package/js/src/src/bitso.js +1881 -0
  404. package/js/src/src/bitstamp.d.ts +355 -0
  405. package/js/src/src/bitstamp.js +2445 -0
  406. package/js/src/src/bitteam.d.ts +229 -0
  407. package/js/src/src/bitteam.js +2420 -0
  408. package/js/src/src/bittrade.d.ts +298 -0
  409. package/js/src/src/bittrade.js +2050 -0
  410. package/js/src/src/bitunix.d.ts +21 -0
  411. package/js/src/src/bitunix.js +326 -0
  412. package/js/src/src/bitvavo.d.ts +311 -0
  413. package/js/src/src/bitvavo.js +2204 -0
  414. package/js/src/src/blockchaincom.d.ts +256 -0
  415. package/js/src/src/blockchaincom.js +1259 -0
  416. package/js/src/src/blofin.d.ts +439 -0
  417. package/js/src/src/blofin.js +2576 -0
  418. package/js/src/src/btcalpha.d.ts +209 -0
  419. package/js/src/src/btcalpha.js +1056 -0
  420. package/js/src/src/btcbox.d.ts +144 -0
  421. package/js/src/src/btcbox.js +834 -0
  422. package/js/src/src/btcmarkets.d.ts +253 -0
  423. package/js/src/src/btcmarkets.js +1418 -0
  424. package/js/src/src/btcturk.d.ts +161 -0
  425. package/js/src/src/btcturk.js +1058 -0
  426. package/js/src/src/bybit.d.ts +1097 -0
  427. package/js/src/src/bybit.js +9382 -0
  428. package/js/src/src/bydfi.d.ts +23 -0
  429. package/js/src/src/bydfi.js +434 -0
  430. package/js/src/src/cafearz.d.ts +21 -0
  431. package/js/src/src/cafearz.js +346 -0
  432. package/js/src/src/cex.d.ts +286 -0
  433. package/js/src/src/cex.js +1799 -0
  434. package/js/src/src/coinbase.d.ts +623 -0
  435. package/js/src/src/coinbase.js +5220 -0
  436. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  437. package/js/src/src/coinbaseadvanced.js +18 -0
  438. package/js/src/src/coinbaseexchange.d.ts +334 -0
  439. package/js/src/src/coinbaseexchange.js +2127 -0
  440. package/js/src/src/coinbaseinternational.d.ts +443 -0
  441. package/js/src/src/coinbaseinternational.js +2336 -0
  442. package/js/src/src/coincatch.d.ts +786 -0
  443. package/js/src/src/coincatch.js +5492 -0
  444. package/js/src/src/coincheck.d.ts +147 -0
  445. package/js/src/src/coincheck.js +962 -0
  446. package/js/src/src/coinex.d.ts +719 -0
  447. package/js/src/src/coinex.js +6166 -0
  448. package/js/src/src/coinmate.d.ts +202 -0
  449. package/js/src/src/coinmate.js +1215 -0
  450. package/js/src/src/coinmetro.d.ts +244 -0
  451. package/js/src/src/coinmetro.js +2024 -0
  452. package/js/src/src/coinone.d.ts +158 -0
  453. package/js/src/src/coinone.js +1278 -0
  454. package/js/src/src/coinsph.d.ts +310 -0
  455. package/js/src/src/coinsph.js +2203 -0
  456. package/js/src/src/coinspot.d.ts +108 -0
  457. package/js/src/src/coinspot.js +653 -0
  458. package/js/src/src/cryptocom.d.ts +463 -0
  459. package/js/src/src/cryptocom.js +3549 -0
  460. package/js/src/src/cryptomus.d.ts +158 -0
  461. package/js/src/src/cryptomus.js +1169 -0
  462. package/js/src/src/defx.d.ts +348 -0
  463. package/js/src/src/defx.js +2139 -0
  464. package/js/src/src/delta.d.ts +407 -0
  465. package/js/src/src/delta.js +3654 -0
  466. package/js/src/src/deribit.d.ts +516 -0
  467. package/js/src/src/deribit.js +3790 -0
  468. package/js/src/src/derive.d.ts +324 -0
  469. package/js/src/src/derive.js +2655 -0
  470. package/js/src/src/digifinex.d.ts +544 -0
  471. package/js/src/src/digifinex.js +4453 -0
  472. package/js/src/src/ellipx.d.ts +237 -0
  473. package/js/src/src/ellipx.js +2071 -0
  474. package/js/src/src/eterex.d.ts +21 -0
  475. package/js/src/src/eterex.js +299 -0
  476. package/js/src/src/excoino.d.ts +23 -0
  477. package/js/src/src/excoino.js +426 -0
  478. package/js/src/src/exir.d.ts +23 -0
  479. package/js/src/src/exir.js +403 -0
  480. package/js/src/src/exmo.d.ts +426 -0
  481. package/js/src/src/exmo.js +2825 -0
  482. package/js/src/src/exnovin.d.ts +22 -0
  483. package/js/src/src/exnovin.js +378 -0
  484. package/js/src/src/farhadexchange.d.ts +21 -0
  485. package/js/src/src/farhadexchange.js +280 -0
  486. package/js/src/src/fmfwio.d.ts +4 -0
  487. package/js/src/src/fmfwio.js +35 -0
  488. package/js/src/src/foxbit.d.ts +352 -0
  489. package/js/src/src/foxbit.js +2016 -0
  490. package/js/src/src/gate.d.ts +1071 -0
  491. package/js/src/src/gate.js +8282 -0
  492. package/js/src/src/gateio.d.ts +4 -0
  493. package/js/src/src/gateio.js +17 -0
  494. package/js/src/src/gemini.d.ts +257 -0
  495. package/js/src/src/gemini.js +2006 -0
  496. package/js/src/src/hamtapay.d.ts +21 -0
  497. package/js/src/src/hamtapay.js +303 -0
  498. package/js/src/src/hashkey.d.ts +628 -0
  499. package/js/src/src/hashkey.js +4363 -0
  500. package/js/src/src/hibachi.d.ts +346 -0
  501. package/js/src/src/hibachi.js +2137 -0
  502. package/js/src/src/hitbtc.d.ts +558 -0
  503. package/js/src/src/hitbtc.js +3847 -0
  504. package/js/src/src/hitobit.d.ts +23 -0
  505. package/js/src/src/hitobit.js +412 -0
  506. package/js/src/src/hollaex.d.ts +305 -0
  507. package/js/src/src/hollaex.js +2046 -0
  508. package/js/src/src/htx.d.ts +961 -0
  509. package/js/src/src/htx.js +9668 -0
  510. package/js/src/src/huobi.d.ts +4 -0
  511. package/js/src/src/huobi.js +17 -0
  512. package/js/src/src/hyperliquid.d.ts +651 -0
  513. package/js/src/src/hyperliquid.js +3937 -0
  514. package/js/src/src/independentreserve.d.ts +169 -0
  515. package/js/src/src/independentreserve.js +1115 -0
  516. package/js/src/src/indodax.d.ts +217 -0
  517. package/js/src/src/indodax.js +1454 -0
  518. package/js/src/src/iranexchange.d.ts +21 -0
  519. package/js/src/src/iranexchange.js +399 -0
  520. package/js/src/src/jibitex.d.ts +23 -0
  521. package/js/src/src/jibitex.js +416 -0
  522. package/js/src/src/kcex.d.ts +21 -0
  523. package/js/src/src/kcex.js +335 -0
  524. package/js/src/src/kifpoolme.d.ts +23 -0
  525. package/js/src/src/kifpoolme.js +410 -0
  526. package/js/src/src/kraken.d.ts +484 -0
  527. package/js/src/src/kraken.js +3518 -0
  528. package/js/src/src/krakenfutures.d.ts +362 -0
  529. package/js/src/src/krakenfutures.js +2885 -0
  530. package/js/src/src/kucoin.d.ts +759 -0
  531. package/js/src/src/kucoin.js +5153 -0
  532. package/js/src/src/kucoinfutures.d.ts +521 -0
  533. package/js/src/src/kucoinfutures.js +3381 -0
  534. package/js/src/src/latoken.d.ts +274 -0
  535. package/js/src/src/latoken.js +1824 -0
  536. package/js/src/src/lbank.d.ts +350 -0
  537. package/js/src/src/lbank.js +3146 -0
  538. package/js/src/src/luno.d.ts +252 -0
  539. package/js/src/src/luno.js +1479 -0
  540. package/js/src/src/mazdax.d.ts +23 -0
  541. package/js/src/src/mazdax.js +534 -0
  542. package/js/src/src/mercado.d.ts +160 -0
  543. package/js/src/src/mercado.js +1011 -0
  544. package/js/src/src/mexc.d.ts +768 -0
  545. package/js/src/src/mexc.js +6102 -0
  546. package/js/src/src/modetrade.d.ts +496 -0
  547. package/js/src/src/modetrade.js +2936 -0
  548. package/js/src/src/myokx.d.ts +4 -0
  549. package/js/src/src/myokx.js +54 -0
  550. package/js/src/src/ndax.d.ts +285 -0
  551. package/js/src/src/ndax.js +2598 -0
  552. package/js/src/src/nobitex.d.ts +23 -0
  553. package/js/src/src/nobitex.js +454 -0
  554. package/js/src/src/novadax.d.ts +279 -0
  555. package/js/src/src/novadax.js +1676 -0
  556. package/js/src/src/oceanex.d.ts +231 -0
  557. package/js/src/src/oceanex.js +1123 -0
  558. package/js/src/src/okcoin.d.ts +346 -0
  559. package/js/src/src/okcoin.js +3211 -0
  560. package/js/src/src/okexchange.d.ts +23 -0
  561. package/js/src/src/okexchange.js +373 -0
  562. package/js/src/src/okx.d.ts +1125 -0
  563. package/js/src/src/okx.js +9009 -0
  564. package/js/src/src/okxus.d.ts +4 -0
  565. package/js/src/src/okxus.js +54 -0
  566. package/js/src/src/ompfinex.d.ts +23 -0
  567. package/js/src/src/ompfinex.js +510 -0
  568. package/js/src/src/onetrading.d.ts +228 -0
  569. package/js/src/src/onetrading.js +1769 -0
  570. package/js/src/src/oxfun.d.ts +442 -0
  571. package/js/src/src/oxfun.js +2920 -0
  572. package/js/src/src/p2b.d.ts +189 -0
  573. package/js/src/src/p2b.js +1344 -0
  574. package/js/src/src/paradex.d.ts +389 -0
  575. package/js/src/src/paradex.js +2607 -0
  576. package/js/src/src/paymium.d.ts +133 -0
  577. package/js/src/src/paymium.js +644 -0
  578. package/js/src/src/phemex.d.ts +497 -0
  579. package/js/src/src/phemex.js +5333 -0
  580. package/js/src/src/pingi.d.ts +22 -0
  581. package/js/src/src/pingi.js +446 -0
  582. package/js/src/src/poloniex.d.ts +441 -0
  583. package/js/src/src/poloniex.js +3681 -0
  584. package/js/src/src/pooleno.d.ts +21 -0
  585. package/js/src/src/pooleno.js +347 -0
  586. package/js/src/src/pro/alpaca.d.ts +95 -0
  587. package/js/src/src/pro/alpaca.js +724 -0
  588. package/js/src/src/pro/apex.d.ts +160 -0
  589. package/js/src/src/pro/apex.js +1044 -0
  590. package/js/src/src/pro/ascendex.d.ts +99 -0
  591. package/js/src/src/pro/ascendex.js +1012 -0
  592. package/js/src/src/pro/bequant.d.ts +4 -0
  593. package/js/src/src/pro/bequant.js +42 -0
  594. package/js/src/src/pro/binance.d.ts +796 -0
  595. package/js/src/src/pro/binance.js +4373 -0
  596. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  597. package/js/src/src/pro/binancecoinm.js +32 -0
  598. package/js/src/src/pro/binanceus.d.ts +4 -0
  599. package/js/src/src/pro/binanceus.js +52 -0
  600. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  601. package/js/src/src/pro/binanceusdm.js +37 -0
  602. package/js/src/src/pro/bingx.d.ts +151 -0
  603. package/js/src/src/pro/bingx.js +1568 -0
  604. package/js/src/src/pro/bitfinex.d.ts +99 -0
  605. package/js/src/src/pro/bitfinex.js +1165 -0
  606. package/js/src/src/pro/bitget.d.ts +257 -0
  607. package/js/src/src/pro/bitget.js +2327 -0
  608. package/js/src/src/pro/bithumb.d.ts +59 -0
  609. package/js/src/src/pro/bithumb.js +395 -0
  610. package/js/src/src/pro/bitmart.d.ts +168 -0
  611. package/js/src/src/pro/bitmart.js +1686 -0
  612. package/js/src/src/pro/bitmex.d.ts +170 -0
  613. package/js/src/src/pro/bitmex.js +1760 -0
  614. package/js/src/src/pro/bitopro.d.ts +69 -0
  615. package/js/src/src/pro/bitopro.js +477 -0
  616. package/js/src/src/pro/bitrue.d.ts +40 -0
  617. package/js/src/src/pro/bitrue.js +461 -0
  618. package/js/src/src/pro/bitstamp.d.ts +53 -0
  619. package/js/src/src/pro/bitstamp.js +587 -0
  620. package/js/src/src/pro/bittrade.d.ts +66 -0
  621. package/js/src/src/pro/bittrade.js +606 -0
  622. package/js/src/src/pro/bitvavo.d.ts +321 -0
  623. package/js/src/src/pro/bitvavo.js +1451 -0
  624. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  625. package/js/src/src/pro/blockchaincom.js +777 -0
  626. package/js/src/src/pro/blofin.d.ts +174 -0
  627. package/js/src/src/pro/blofin.js +743 -0
  628. package/js/src/src/pro/bybit.d.ts +397 -0
  629. package/js/src/src/pro/bybit.js +2519 -0
  630. package/js/src/src/pro/cex.d.ts +220 -0
  631. package/js/src/src/pro/cex.js +1535 -0
  632. package/js/src/src/pro/coinbase.d.ts +119 -0
  633. package/js/src/src/pro/coinbase.js +736 -0
  634. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  635. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  636. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  637. package/js/src/src/pro/coinbaseexchange.js +969 -0
  638. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  639. package/js/src/src/pro/coinbaseinternational.js +804 -0
  640. package/js/src/src/pro/coincatch.d.ts +207 -0
  641. package/js/src/src/pro/coincatch.js +1562 -0
  642. package/js/src/src/pro/coincheck.d.ts +33 -0
  643. package/js/src/src/pro/coincheck.js +210 -0
  644. package/js/src/src/pro/coinex.d.ts +147 -0
  645. package/js/src/src/pro/coinex.js +1426 -0
  646. package/js/src/src/pro/coinone.d.ts +51 -0
  647. package/js/src/src/pro/coinone.js +413 -0
  648. package/js/src/src/pro/cryptocom.d.ts +300 -0
  649. package/js/src/src/pro/cryptocom.js +1414 -0
  650. package/js/src/src/pro/defx.d.ts +236 -0
  651. package/js/src/src/pro/defx.js +865 -0
  652. package/js/src/src/pro/deribit.d.ts +163 -0
  653. package/js/src/src/pro/deribit.js +1066 -0
  654. package/js/src/src/pro/derive.d.ts +100 -0
  655. package/js/src/src/pro/derive.js +753 -0
  656. package/js/src/src/pro/exmo.d.ts +97 -0
  657. package/js/src/src/pro/exmo.js +903 -0
  658. package/js/src/src/pro/gate.d.ts +360 -0
  659. package/js/src/src/pro/gate.js +2119 -0
  660. package/js/src/src/pro/gateio.d.ts +4 -0
  661. package/js/src/src/pro/gateio.js +17 -0
  662. package/js/src/src/pro/gemini.d.ts +106 -0
  663. package/js/src/src/pro/gemini.js +932 -0
  664. package/js/src/src/pro/hashkey.d.ts +121 -0
  665. package/js/src/src/pro/hashkey.js +843 -0
  666. package/js/src/src/pro/hitbtc.d.ts +235 -0
  667. package/js/src/src/pro/hitbtc.js +1400 -0
  668. package/js/src/src/pro/hollaex.d.ts +77 -0
  669. package/js/src/src/pro/hollaex.js +604 -0
  670. package/js/src/src/pro/htx.d.ts +141 -0
  671. package/js/src/src/pro/htx.js +2415 -0
  672. package/js/src/src/pro/huobi.d.ts +4 -0
  673. package/js/src/src/pro/huobi.js +17 -0
  674. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  675. package/js/src/src/pro/hyperliquid.js +1126 -0
  676. package/js/src/src/pro/independentreserve.d.ts +36 -0
  677. package/js/src/src/pro/independentreserve.js +287 -0
  678. package/js/src/src/pro/kraken.d.ts +233 -0
  679. package/js/src/src/pro/kraken.js +1785 -0
  680. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  681. package/js/src/src/pro/krakenfutures.js +1592 -0
  682. package/js/src/src/pro/kucoin.d.ts +221 -0
  683. package/js/src/src/pro/kucoin.js +1430 -0
  684. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  685. package/js/src/src/pro/kucoinfutures.js +1295 -0
  686. package/js/src/src/pro/lbank.d.ts +134 -0
  687. package/js/src/src/pro/lbank.js +950 -0
  688. package/js/src/src/pro/luno.d.ts +44 -0
  689. package/js/src/src/pro/luno.js +322 -0
  690. package/js/src/src/pro/mexc.d.ts +210 -0
  691. package/js/src/src/pro/mexc.js +2009 -0
  692. package/js/src/src/pro/modetrade.d.ts +155 -0
  693. package/js/src/src/pro/modetrade.js +1335 -0
  694. package/js/src/src/pro/myokx.d.ts +4 -0
  695. package/js/src/src/pro/myokx.js +39 -0
  696. package/js/src/src/pro/ndax.d.ts +60 -0
  697. package/js/src/src/pro/ndax.js +545 -0
  698. package/js/src/src/pro/okcoin.d.ts +91 -0
  699. package/js/src/src/pro/okcoin.js +763 -0
  700. package/js/src/src/pro/okx.d.ts +408 -0
  701. package/js/src/src/pro/okx.js +2479 -0
  702. package/js/src/src/pro/okxus.d.ts +4 -0
  703. package/js/src/src/pro/okxus.js +39 -0
  704. package/js/src/src/pro/onetrading.d.ts +107 -0
  705. package/js/src/src/pro/onetrading.js +1343 -0
  706. package/js/src/src/pro/oxfun.d.ts +234 -0
  707. package/js/src/src/pro/oxfun.js +1112 -0
  708. package/js/src/src/pro/p2b.d.ts +104 -0
  709. package/js/src/src/pro/p2b.js +506 -0
  710. package/js/src/src/pro/paradex.d.ts +54 -0
  711. package/js/src/src/pro/paradex.js +370 -0
  712. package/js/src/src/pro/phemex.d.ts +129 -0
  713. package/js/src/src/pro/phemex.js +1569 -0
  714. package/js/src/src/pro/poloniex.d.ts +214 -0
  715. package/js/src/src/pro/poloniex.js +1318 -0
  716. package/js/src/src/pro/probit.d.ts +91 -0
  717. package/js/src/src/pro/probit.js +593 -0
  718. package/js/src/src/pro/tradeogre.d.ts +49 -0
  719. package/js/src/src/pro/tradeogre.js +284 -0
  720. package/js/src/src/pro/upbit.d.ts +124 -0
  721. package/js/src/src/pro/upbit.js +689 -0
  722. package/js/src/src/pro/vertex.d.ts +104 -0
  723. package/js/src/src/pro/vertex.js +999 -0
  724. package/js/src/src/pro/whitebit.d.ts +123 -0
  725. package/js/src/src/pro/whitebit.js +971 -0
  726. package/js/src/src/pro/woo.d.ts +161 -0
  727. package/js/src/src/pro/woo.js +1351 -0
  728. package/js/src/src/pro/woofipro.d.ts +155 -0
  729. package/js/src/src/pro/woofipro.js +1335 -0
  730. package/js/src/src/pro/xt.d.ts +165 -0
  731. package/js/src/src/pro/xt.js +1230 -0
  732. package/js/src/src/probit.d.ts +283 -0
  733. package/js/src/src/probit.js +1935 -0
  734. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  735. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  736. package/js/src/src/raastin.d.ts +24 -0
  737. package/js/src/src/raastin.js +494 -0
  738. package/js/src/src/ramzinex.d.ts +23 -0
  739. package/js/src/src/ramzinex.js +510 -0
  740. package/js/src/src/sarmayex.d.ts +21 -0
  741. package/js/src/src/sarmayex.js +376 -0
  742. package/js/src/src/sarrafex.d.ts +23 -0
  743. package/js/src/src/sarrafex.js +501 -0
  744. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  745. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  746. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  747. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  748. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  749. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  750. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  751. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  752. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  753. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  754. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  755. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  756. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  757. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  758. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  759. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  760. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  761. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  762. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  763. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  764. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  765. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  766. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  767. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  768. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  769. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  770. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  771. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  772. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  773. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  774. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  777. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  778. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  779. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  780. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  781. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  782. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  783. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  784. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  785. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  786. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  787. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  788. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  789. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  790. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  791. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  792. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  793. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  794. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  795. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  796. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  797. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  798. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  799. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  800. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  801. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  802. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  803. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  804. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  805. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  806. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  807. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  808. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  809. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  810. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  811. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  812. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  813. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  814. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  815. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  816. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  817. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  818. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  819. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  820. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  821. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  822. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  823. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  824. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  825. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  826. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  827. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  828. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  829. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  830. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  831. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  832. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  833. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  834. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  835. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  836. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  837. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  850. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  851. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  852. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  853. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  854. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  855. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  856. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  857. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  858. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  859. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  860. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  861. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  868. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  869. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  870. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  871. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  872. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  873. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  874. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  875. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  876. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  877. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  878. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  879. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  880. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  881. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  882. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  883. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  884. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  885. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  886. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  887. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  888. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  889. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  890. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  891. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  892. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  893. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  894. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  895. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  896. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  897. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  898. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  899. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  900. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  901. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  902. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  903. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  904. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  905. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  906. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  907. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  908. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  909. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  910. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  911. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  912. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  913. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  914. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  915. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  916. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  917. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  918. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  919. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  920. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  921. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  922. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  923. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  924. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  925. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  926. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  927. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  928. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  929. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  930. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  931. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  932. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  933. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  934. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  935. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  937. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  938. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  939. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  940. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  941. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  942. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  943. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  944. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  945. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  946. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  947. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  948. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  949. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  950. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  951. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  952. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  953. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  954. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  955. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  956. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  957. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  958. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  959. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  984. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  985. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  986. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  987. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  988. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  989. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  990. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  991. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  992. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  993. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  994. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  995. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  996. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  998. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  999. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1000. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1001. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1002. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1003. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1004. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1005. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1006. package/js/src/src/tabdeal.d.ts +23 -0
  1007. package/js/src/src/tabdeal.js +387 -0
  1008. package/js/src/src/tehran_exchange.d.ts +21 -0
  1009. package/js/src/src/tehran_exchange.js +333 -0
  1010. package/js/src/src/tetherland.d.ts +21 -0
  1011. package/js/src/src/tetherland.js +367 -0
  1012. package/js/src/src/timex.d.ts +247 -0
  1013. package/js/src/src/timex.js +1792 -0
  1014. package/js/src/src/tokocrypto.d.ts +261 -0
  1015. package/js/src/src/tokocrypto.js +2641 -0
  1016. package/js/src/src/toobit.d.ts +22 -0
  1017. package/js/src/src/toobit.js +445 -0
  1018. package/js/src/src/tradeogre.d.ts +149 -0
  1019. package/js/src/src/tradeogre.js +878 -0
  1020. package/js/src/src/twox.d.ts +21 -0
  1021. package/js/src/src/twox.js +371 -0
  1022. package/js/src/src/ubitex.d.ts +23 -0
  1023. package/js/src/src/ubitex.js +433 -0
  1024. package/js/src/src/upbit.d.ts +377 -0
  1025. package/js/src/src/upbit.js +2340 -0
  1026. package/js/src/src/vertex.d.ts +346 -0
  1027. package/js/src/src/vertex.js +3146 -0
  1028. package/js/src/src/wallex.d.ts +23 -0
  1029. package/js/src/src/wallex.js +467 -0
  1030. package/js/src/src/wavesexchange.d.ts +244 -0
  1031. package/js/src/src/wavesexchange.js +2747 -0
  1032. package/js/src/src/whitebit.d.ts +571 -0
  1033. package/js/src/src/whitebit.js +3437 -0
  1034. package/js/src/src/woo.d.ts +727 -0
  1035. package/js/src/src/woo.js +4183 -0
  1036. package/js/src/src/woofipro.d.ts +497 -0
  1037. package/js/src/src/woofipro.js +2941 -0
  1038. package/js/src/src/xt.d.ts +568 -0
  1039. package/js/src/src/xt.js +5184 -0
  1040. package/js/src/src/yobit.d.ts +197 -0
  1041. package/js/src/src/yobit.js +1453 -0
  1042. package/js/src/src/zaif.d.ts +136 -0
  1043. package/js/src/src/zaif.js +821 -0
  1044. package/js/src/src/zonda.d.ts +214 -0
  1045. package/js/src/src/zonda.js +1984 -0
  1046. package/js/test.js +3 -3
  1047. package/package.json +1 -1
@@ -0,0 +1,1785 @@
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 krakenRest from '../kraken.js';
9
+ import { ExchangeError, BadSymbol, PermissionDenied, AccountSuspended, BadRequest, InsufficientFunds, InvalidOrder, OrderNotFound, NotSupported, RateLimitExceeded, ExchangeNotAvailable, ChecksumError, AuthenticationError, ArgumentsRequired } from '../base/errors.js';
10
+ import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById } from '../base/ws/Cache.js';
11
+ import { Precise } from '../base/Precise.js';
12
+ // ---------------------------------------------------------------------------
13
+ export default class kraken extends krakenRest {
14
+ describe() {
15
+ return this.deepExtend(super.describe(), {
16
+ 'has': {
17
+ 'ws': true,
18
+ 'watchBalance': true,
19
+ 'watchMyTrades': true,
20
+ 'watchOHLCV': true,
21
+ 'watchOrderBook': true,
22
+ 'watchOrderBookForSymbols': true,
23
+ 'watchOrders': true,
24
+ 'watchTicker': true,
25
+ 'watchTickers': true,
26
+ 'watchBidsAsks': true,
27
+ 'watchTrades': true,
28
+ 'watchTradesForSymbols': true,
29
+ 'createOrderWs': true,
30
+ 'editOrderWs': true,
31
+ 'cancelOrderWs': true,
32
+ 'cancelOrdersWs': true,
33
+ 'cancelAllOrdersWs': true,
34
+ // 'watchHeartbeat': true,
35
+ // 'watchStatus': true,
36
+ },
37
+ 'urls': {
38
+ 'api': {
39
+ 'ws': {
40
+ 'public': 'wss://ws.kraken.com',
41
+ 'private': 'wss://ws-auth.kraken.com',
42
+ 'privateV2': 'wss://ws-auth.kraken.com/v2',
43
+ 'publicV2': 'wss://ws.kraken.com/v2',
44
+ 'beta': 'wss://beta-ws.kraken.com',
45
+ 'beta-private': 'wss://beta-ws-auth.kraken.com',
46
+ },
47
+ },
48
+ },
49
+ // 'versions': {
50
+ // 'ws': '0.2.0',
51
+ // },
52
+ 'options': {
53
+ 'tradesLimit': 1000,
54
+ 'OHLCVLimit': 1000,
55
+ 'ordersLimit': 1000,
56
+ 'symbolsByOrderId': {},
57
+ 'watchOrderBook': {
58
+ 'checksum': false,
59
+ },
60
+ },
61
+ 'streaming': {
62
+ 'ping': this.ping,
63
+ 'keepAlive': 6000,
64
+ },
65
+ 'exceptions': {
66
+ 'ws': {
67
+ 'exact': {
68
+ 'Event(s) not found': BadRequest,
69
+ },
70
+ 'broad': {
71
+ 'Already subscribed': BadRequest,
72
+ 'Currency pair not in ISO 4217-A3 format': BadSymbol,
73
+ 'Currency pair not supported': BadSymbol,
74
+ 'Malformed request': BadRequest,
75
+ 'Pair field must be an array': BadRequest,
76
+ 'Pair field unsupported for this subscription type': BadRequest,
77
+ 'Pair(s) not found': BadSymbol,
78
+ 'Subscription book depth must be an integer': BadRequest,
79
+ 'Subscription depth not supported': BadRequest,
80
+ 'Subscription field must be an object': BadRequest,
81
+ 'Subscription name invalid': BadRequest,
82
+ 'Subscription object unsupported field': BadRequest,
83
+ 'Subscription ohlc interval must be an integer': BadRequest,
84
+ 'Subscription ohlc interval not supported': BadRequest,
85
+ 'Subscription ohlc requires interval': BadRequest,
86
+ 'EAccount:Invalid permissions': PermissionDenied,
87
+ 'EAuth:Account temporary disabled': AccountSuspended,
88
+ 'EAuth:Account unconfirmed': AuthenticationError,
89
+ 'EAuth:Rate limit exceeded': RateLimitExceeded,
90
+ 'EAuth:Too many requests': RateLimitExceeded,
91
+ 'EDatabase: Internal error (to be deprecated)': ExchangeError,
92
+ 'EGeneral:Internal error[:<code>]': ExchangeError,
93
+ 'EGeneral:Invalid arguments': BadRequest,
94
+ 'EOrder:Cannot open opposing position': InvalidOrder,
95
+ 'EOrder:Cannot open position': InvalidOrder,
96
+ 'EOrder:Insufficient funds (insufficient user funds)': InsufficientFunds,
97
+ 'EOrder:Insufficient margin (exchange does not have sufficient funds to allow margin trading)': InsufficientFunds,
98
+ 'EOrder:Invalid price': InvalidOrder,
99
+ 'EOrder:Margin allowance exceeded': InvalidOrder,
100
+ 'EOrder:Margin level too low': InvalidOrder,
101
+ 'EOrder:Margin position size exceeded (client would exceed the maximum position size for this pair)': InvalidOrder,
102
+ 'EOrder:Order minimum not met (volume too low)': InvalidOrder,
103
+ 'EOrder:Orders limit exceeded': InvalidOrder,
104
+ 'EOrder:Positions limit exceeded': InvalidOrder,
105
+ 'EOrder:Rate limit exceeded': RateLimitExceeded,
106
+ 'EOrder:Scheduled orders limit exceeded': InvalidOrder,
107
+ 'EOrder:Unknown position': OrderNotFound,
108
+ 'EOrder:Unknown order': OrderNotFound,
109
+ 'EOrder:Invalid order': InvalidOrder,
110
+ 'EService:Deadline elapsed': ExchangeNotAvailable,
111
+ 'EService:Market in cancel_only mode': NotSupported,
112
+ 'EService:Market in limit_only mode': NotSupported,
113
+ 'EService:Market in post_only mode': NotSupported,
114
+ 'EService:Unavailable': ExchangeNotAvailable,
115
+ 'ETrade:Invalid request': BadRequest,
116
+ 'ESession:Invalid session': AuthenticationError,
117
+ },
118
+ },
119
+ },
120
+ });
121
+ }
122
+ orderRequestWs(method, symbol, type, request, amount, price = undefined, params = {}) {
123
+ const isLimitOrder = type.endsWith('limit'); // supporting limit, stop-loss-limit, take-profit-limit, etc
124
+ if (isLimitOrder) {
125
+ if (price === undefined) {
126
+ throw new ArgumentsRequired(this.id + ' limit orders require a price argument');
127
+ }
128
+ request['params']['limit_price'] = this.parseToNumeric(this.priceToPrecision(symbol, price));
129
+ }
130
+ const isMarket = (type === 'market');
131
+ let postOnly = undefined;
132
+ [postOnly, params] = this.handlePostOnly(isMarket, false, params);
133
+ if (postOnly) {
134
+ request['params']['post_only'] = true;
135
+ }
136
+ const clientOrderId = this.safeString(params, 'clientOrderId');
137
+ if (clientOrderId !== undefined) {
138
+ request['params']['cl_ord_id'] = clientOrderId;
139
+ }
140
+ const cost = this.safeString(params, 'cost');
141
+ if (cost !== undefined) {
142
+ request['params']['order_qty'] = this.parseToNumeric(this.costToPrecision(symbol, cost));
143
+ }
144
+ const stopLoss = this.safeDict(params, 'stopLoss', {});
145
+ const takeProfit = this.safeDict(params, 'takeProfit', {});
146
+ const presetStopLoss = this.safeString(stopLoss, 'triggerPrice');
147
+ const presetTakeProfit = this.safeString(takeProfit, 'triggerPrice');
148
+ const presetStopLossLimit = this.safeString(stopLoss, 'price');
149
+ const presetTakeProfitLimit = this.safeString(takeProfit, 'price');
150
+ const isPresetStopLoss = presetStopLoss !== undefined;
151
+ const isPresetTakeProfit = presetTakeProfit !== undefined;
152
+ const stopLossPrice = this.safeString(params, 'stopLossPrice');
153
+ const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
154
+ const isStopLossPriceOrder = stopLossPrice !== undefined;
155
+ const isTakeProfitPriceOrder = takeProfitPrice !== undefined;
156
+ const trailingAmount = this.safeString(params, 'trailingAmount');
157
+ const trailingPercent = this.safeString(params, 'trailingPercent');
158
+ const trailingLimitAmount = this.safeString(params, 'trailingLimitAmount');
159
+ const trailingLimitPercent = this.safeString(params, 'trailingLimitPercent');
160
+ const isTrailingAmountOrder = trailingAmount !== undefined;
161
+ const isTrailingPercentOrder = trailingPercent !== undefined;
162
+ const isTrailingLimitAmountOrder = trailingLimitAmount !== undefined;
163
+ const isTrailingLimitPercentOrder = trailingLimitPercent !== undefined;
164
+ const offset = this.safeString(params, 'offset', ''); // can set this to - for minus
165
+ const trailingAmountString = (trailingAmount !== undefined) ? offset + this.numberToString(trailingAmount) : undefined;
166
+ const trailingPercentString = (trailingPercent !== undefined) ? offset + this.numberToString(trailingPercent) : undefined;
167
+ const trailingLimitAmountString = (trailingLimitAmount !== undefined) ? offset + this.numberToString(trailingLimitAmount) : undefined;
168
+ const trailingLimitPercentString = (trailingLimitPercent !== undefined) ? offset + this.numberToString(trailingLimitPercent) : undefined;
169
+ const priceType = (isTrailingPercentOrder || isTrailingLimitPercentOrder) ? 'pct' : 'quote';
170
+ if (method === 'createOrderWs') {
171
+ const reduceOnly = this.safeBool(params, 'reduceOnly');
172
+ if (reduceOnly) {
173
+ request['params']['reduce_only'] = true;
174
+ }
175
+ const timeInForce = this.safeStringLower(params, 'timeInForce');
176
+ if (timeInForce !== undefined) {
177
+ request['params']['time_in_force'] = timeInForce;
178
+ }
179
+ params = this.omit(params, ['reduceOnly', 'timeInForce']);
180
+ if (isStopLossPriceOrder || isTakeProfitPriceOrder || isTrailingAmountOrder || isTrailingPercentOrder || isTrailingLimitAmountOrder || isTrailingLimitPercentOrder) {
181
+ request['params']['triggers'] = {};
182
+ }
183
+ if (isPresetStopLoss || isPresetTakeProfit) {
184
+ request['params']['conditional'] = {};
185
+ if (isPresetStopLoss) {
186
+ request['params']['conditional']['order_type'] = 'stop-loss';
187
+ request['params']['conditional']['trigger_price'] = this.parseToNumeric(this.priceToPrecision(symbol, presetStopLoss));
188
+ }
189
+ else if (isPresetTakeProfit) {
190
+ request['params']['conditional']['order_type'] = 'take-profit';
191
+ request['params']['conditional']['trigger_price'] = this.parseToNumeric(this.priceToPrecision(symbol, presetTakeProfit));
192
+ }
193
+ if (presetStopLossLimit !== undefined) {
194
+ request['params']['conditional']['order_type'] = 'stop-loss-limit';
195
+ request['params']['conditional']['limit_price'] = this.parseToNumeric(this.priceToPrecision(symbol, presetStopLossLimit));
196
+ }
197
+ else if (presetTakeProfitLimit !== undefined) {
198
+ request['params']['conditional']['order_type'] = 'take-profit-limit';
199
+ request['params']['conditional']['limit_price'] = this.parseToNumeric(this.priceToPrecision(symbol, presetTakeProfitLimit));
200
+ }
201
+ params = this.omit(params, ['stopLoss', 'takeProfit']);
202
+ }
203
+ else if (isStopLossPriceOrder || isTakeProfitPriceOrder) {
204
+ if (isStopLossPriceOrder) {
205
+ request['params']['triggers']['price'] = this.parseToNumeric(this.priceToPrecision(symbol, stopLossPrice));
206
+ if (isLimitOrder) {
207
+ request['params']['order_type'] = 'stop-loss-limit';
208
+ }
209
+ else {
210
+ request['params']['order_type'] = 'stop-loss';
211
+ }
212
+ }
213
+ else {
214
+ request['params']['triggers']['price'] = this.parseToNumeric(this.priceToPrecision(symbol, takeProfitPrice));
215
+ if (isLimitOrder) {
216
+ request['params']['order_type'] = 'take-profit-limit';
217
+ }
218
+ else {
219
+ request['params']['order_type'] = 'take-profit';
220
+ }
221
+ }
222
+ }
223
+ else if (isTrailingAmountOrder || isTrailingPercentOrder || isTrailingLimitAmountOrder || isTrailingLimitPercentOrder) {
224
+ request['params']['triggers']['price_type'] = priceType;
225
+ if (!isLimitOrder && (isTrailingAmountOrder || isTrailingPercentOrder)) {
226
+ request['params']['order_type'] = 'trailing-stop';
227
+ if (isTrailingAmountOrder) {
228
+ request['params']['triggers']['price'] = this.parseToNumeric(trailingAmountString);
229
+ }
230
+ else {
231
+ request['params']['triggers']['price'] = this.parseToNumeric(trailingPercentString);
232
+ }
233
+ }
234
+ else {
235
+ // trailing limit orders are not conventionally supported because the static limit_price_type param is not available for trailing-stop-limit orders
236
+ request['params']['limit_price_type'] = priceType;
237
+ request['params']['order_type'] = 'trailing-stop-limit';
238
+ if (isTrailingLimitAmountOrder) {
239
+ request['params']['triggers']['price'] = this.parseToNumeric(trailingLimitAmountString);
240
+ }
241
+ else {
242
+ request['params']['triggers']['price'] = this.parseToNumeric(trailingLimitPercentString);
243
+ }
244
+ }
245
+ }
246
+ }
247
+ else if (method === 'editOrderWs') {
248
+ if (isPresetStopLoss || isPresetTakeProfit) {
249
+ throw new NotSupported(this.id + ' editing the stopLoss and takeProfit on existing orders is currently not supported');
250
+ }
251
+ if (isStopLossPriceOrder || isTakeProfitPriceOrder) {
252
+ if (isStopLossPriceOrder) {
253
+ request['params']['trigger_price'] = this.parseToNumeric(this.priceToPrecision(symbol, stopLossPrice));
254
+ }
255
+ else {
256
+ request['params']['trigger_price'] = this.parseToNumeric(this.priceToPrecision(symbol, takeProfitPrice));
257
+ }
258
+ }
259
+ else if (isTrailingAmountOrder || isTrailingPercentOrder || isTrailingLimitAmountOrder || isTrailingLimitPercentOrder) {
260
+ request['params']['trigger_price_type'] = priceType;
261
+ if (!isLimitOrder && (isTrailingAmountOrder || isTrailingPercentOrder)) {
262
+ if (isTrailingAmountOrder) {
263
+ request['params']['trigger_price'] = this.parseToNumeric(trailingAmountString);
264
+ }
265
+ else {
266
+ request['params']['trigger_price'] = this.parseToNumeric(trailingPercentString);
267
+ }
268
+ }
269
+ else {
270
+ request['params']['limit_price_type'] = priceType;
271
+ if (isTrailingLimitAmountOrder) {
272
+ request['params']['trigger_price'] = this.parseToNumeric(trailingLimitAmountString);
273
+ }
274
+ else {
275
+ request['params']['trigger_price'] = this.parseToNumeric(trailingLimitPercentString);
276
+ }
277
+ }
278
+ }
279
+ }
280
+ params = this.omit(params, ['clientOrderId', 'cost', 'offset', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingPercent', 'trailingLimitAmount', 'trailingLimitPercent']);
281
+ return [request, params];
282
+ }
283
+ /**
284
+ * @method
285
+ * @name kraken#createOrderWs
286
+ * @description create a trade order
287
+ * @see https://docs.kraken.com/api/docs/websocket-v2/add_order
288
+ * @param {string} symbol unified symbol of the market to create an order in
289
+ * @param {string} type 'market' or 'limit'
290
+ * @param {string} side 'buy' or 'sell'
291
+ * @param {float} amount how much of currency you want to trade in units of base currency
292
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
293
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
294
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
295
+ */
296
+ async createOrderWs(symbol, type, side, amount, price = undefined, params = {}) {
297
+ await this.loadMarkets();
298
+ const token = await this.authenticate();
299
+ const market = this.market(symbol);
300
+ const url = this.urls['api']['ws']['privateV2'];
301
+ const requestId = this.requestId();
302
+ const messageHash = requestId;
303
+ let request = {
304
+ 'method': 'add_order',
305
+ 'params': {
306
+ 'order_type': type,
307
+ 'side': side,
308
+ 'order_qty': this.parseToNumeric(this.amountToPrecision(symbol, amount)),
309
+ 'symbol': market['symbol'],
310
+ 'token': token,
311
+ },
312
+ 'req_id': requestId,
313
+ };
314
+ [request, params] = this.orderRequestWs('createOrderWs', symbol, type, request, amount, price, params);
315
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
316
+ }
317
+ handleCreateEditOrder(client, message) {
318
+ //
319
+ // createOrder
320
+ // {
321
+ // "method": "add_order",
322
+ // "req_id": 1,
323
+ // "result": {
324
+ // "order_id": "OXM2QD-EALR2-YBAVEU"
325
+ // },
326
+ // "success": true,
327
+ // "time_in": "2025-05-13T10:12:13.876173Z",
328
+ // "time_out": "2025-05-13T10:12:13.890137Z"
329
+ // }
330
+ //
331
+ // editOrder
332
+ // {
333
+ // "method": "amend_order",
334
+ // "req_id": 1,
335
+ // "result": {
336
+ // "amend_id": "TYDLSQ-OYNYU-3MNRER",
337
+ // "order_id": "OGL7HR-SWFO4-NRQTHO"
338
+ // },
339
+ // "success": true,
340
+ // "time_in": "2025-05-14T13:54:10.840342Z",
341
+ // "time_out": "2025-05-14T13:54:10.855046Z"
342
+ // }
343
+ //
344
+ const result = this.safeDict(message, 'result', {});
345
+ const order = this.parseOrder(result);
346
+ const messageHash = this.safeValue2(message, 'reqid', 'req_id');
347
+ client.resolve(order, messageHash);
348
+ }
349
+ /**
350
+ * @method
351
+ * @name kraken#editOrderWs
352
+ * @description edit a trade order
353
+ * @see https://docs.kraken.com/api/docs/websocket-v2/amend_order
354
+ * @param {string} id order id
355
+ * @param {string} symbol unified symbol of the market to create an order in
356
+ * @param {string} type 'market' or 'limit'
357
+ * @param {string} side 'buy' or 'sell'
358
+ * @param {float} amount how much of the currency you want to trade in units of the base currency
359
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
360
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
361
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
362
+ */
363
+ async editOrderWs(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
364
+ await this.loadMarkets();
365
+ const token = await this.authenticate();
366
+ const url = this.urls['api']['ws']['privateV2'];
367
+ const requestId = this.requestId();
368
+ const messageHash = requestId;
369
+ let request = {
370
+ 'method': 'amend_order',
371
+ 'params': {
372
+ 'order_id': id,
373
+ 'order_qty': this.parseToNumeric(this.amountToPrecision(symbol, amount)),
374
+ 'token': token,
375
+ },
376
+ 'req_id': requestId,
377
+ };
378
+ [request, params] = this.orderRequestWs('editOrderWs', symbol, type, request, amount, price, params);
379
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
380
+ }
381
+ /**
382
+ * @method
383
+ * @name kraken#cancelOrdersWs
384
+ * @description cancel multiple orders
385
+ * @see https://docs.kraken.com/api/docs/websocket-v2/cancel_order
386
+ * @param {string[]} ids order ids
387
+ * @param {string} [symbol] unified market symbol, default is undefined
388
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
389
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
390
+ */
391
+ async cancelOrdersWs(ids, symbol = undefined, params = {}) {
392
+ if (symbol !== undefined) {
393
+ throw new NotSupported(this.id + ' cancelOrdersWs () does not support cancelling orders for a specific symbol.');
394
+ }
395
+ await this.loadMarkets();
396
+ const token = await this.authenticate();
397
+ const url = this.urls['api']['ws']['privateV2'];
398
+ const requestId = this.requestId();
399
+ const messageHash = requestId;
400
+ const request = {
401
+ 'method': 'cancel_order',
402
+ 'params': {
403
+ 'order_id': ids,
404
+ 'token': token,
405
+ },
406
+ 'req_id': requestId,
407
+ };
408
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
409
+ }
410
+ /**
411
+ * @method
412
+ * @name kraken#cancelOrderWs
413
+ * @description cancels an open order
414
+ * @see https://docs.kraken.com/api/docs/websocket-v2/cancel_order
415
+ * @param {string} id order id
416
+ * @param {string} [symbol] unified symbol of the market the order was made in
417
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
418
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
419
+ */
420
+ async cancelOrderWs(id, symbol = undefined, params = {}) {
421
+ if (symbol !== undefined) {
422
+ throw new NotSupported(this.id + ' cancelOrderWs () does not support cancelling orders for a specific symbol.');
423
+ }
424
+ await this.loadMarkets();
425
+ const token = await this.authenticate();
426
+ const url = this.urls['api']['ws']['privateV2'];
427
+ const requestId = this.requestId();
428
+ const messageHash = requestId;
429
+ const request = {
430
+ 'method': 'cancel_order',
431
+ 'params': {
432
+ 'order_id': [id],
433
+ 'token': token,
434
+ },
435
+ 'req_id': requestId,
436
+ };
437
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
438
+ }
439
+ handleCancelOrder(client, message) {
440
+ //
441
+ // {
442
+ // "method": "cancel_order",
443
+ // "req_id": 123456789,
444
+ // "result": {
445
+ // "order_id": "OKAGJC-YHIWK-WIOZWG"
446
+ // },
447
+ // "success": true,
448
+ // "time_in": "2023-09-21T14:36:57.428972Z",
449
+ // "time_out": "2023-09-21T14:36:57.437952Z"
450
+ // }
451
+ //
452
+ const reqId = this.safeValue(message, 'req_id');
453
+ client.resolve(message, reqId);
454
+ }
455
+ /**
456
+ * @method
457
+ * @name kraken#cancelAllOrdersWs
458
+ * @description cancel all open orders
459
+ * @see https://docs.kraken.com/api/docs/websocket-v2/cancel_all
460
+ * @param {string} [symbol] unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
461
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
462
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
463
+ */
464
+ async cancelAllOrdersWs(symbol = undefined, params = {}) {
465
+ if (symbol !== undefined) {
466
+ throw new NotSupported(this.id + ' cancelAllOrdersWs () does not support cancelling orders in a specific market.');
467
+ }
468
+ await this.loadMarkets();
469
+ const token = await this.authenticate();
470
+ const url = this.urls['api']['ws']['privateV2'];
471
+ const requestId = this.requestId();
472
+ const messageHash = requestId;
473
+ const request = {
474
+ 'method': 'cancel_all',
475
+ 'params': {
476
+ 'token': token,
477
+ },
478
+ 'req_id': requestId,
479
+ };
480
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
481
+ }
482
+ handleCancelAllOrders(client, message) {
483
+ //
484
+ // {
485
+ // "method": "cancel_all",
486
+ // "req_id": 123456789,
487
+ // "result": {
488
+ // "count": 1
489
+ // },
490
+ // "success": true,
491
+ // "time_in": "2023-09-21T14:36:57.428972Z",
492
+ // "time_out": "2023-09-21T14:36:57.437952Z"
493
+ // }
494
+ //
495
+ const reqId = this.safeValue(message, 'req_id');
496
+ client.resolve(message, reqId);
497
+ }
498
+ handleTicker(client, message) {
499
+ //
500
+ // {
501
+ // "channel": "ticker",
502
+ // "type": "snapshot",
503
+ // "data": [
504
+ // {
505
+ // "symbol": "BTC/USD",
506
+ // "bid": 108359.8,
507
+ // "bid_qty": 0.01362603,
508
+ // "ask": 108359.9,
509
+ // "ask_qty": 17.17988863,
510
+ // "last": 108359.8,
511
+ // "volume": 2158.32346723,
512
+ // "vwap": 108894.5,
513
+ // "low": 106824,
514
+ // "high": 111300,
515
+ // "change": -2679.9,
516
+ // "change_pct": -2.41
517
+ // }
518
+ // ]
519
+ // }
520
+ //
521
+ const data = this.safeList(message, 'data', []);
522
+ const ticker = data[0];
523
+ const symbol = this.safeString(ticker, 'symbol');
524
+ const messageHash = this.getMessageHash('ticker', undefined, symbol);
525
+ const vwap = this.safeString(ticker, 'vwap');
526
+ let quoteVolume = undefined;
527
+ const baseVolume = this.safeString(ticker, 'volume');
528
+ if (baseVolume !== undefined && vwap !== undefined) {
529
+ quoteVolume = Precise.stringMul(baseVolume, vwap);
530
+ }
531
+ const last = this.safeString(ticker, 'last');
532
+ const result = this.safeTicker({
533
+ 'symbol': symbol,
534
+ 'timestamp': undefined,
535
+ 'datetime': undefined,
536
+ 'high': this.safeString(ticker, 'high'),
537
+ 'low': this.safeString(ticker, 'low'),
538
+ 'bid': this.safeString(ticker, 'bid'),
539
+ 'bidVolume': this.safeString(ticker, 'bid_qty'),
540
+ 'ask': this.safeString(ticker, 'ask'),
541
+ 'askVolume': this.safeString(ticker, 'ask_qty'),
542
+ 'vwap': vwap,
543
+ 'open': undefined,
544
+ 'close': last,
545
+ 'last': last,
546
+ 'previousClose': undefined,
547
+ 'change': this.safeString(ticker, 'change'),
548
+ 'percentage': this.safeString(ticker, 'change_pct'),
549
+ 'average': undefined,
550
+ 'baseVolume': baseVolume,
551
+ 'quoteVolume': quoteVolume,
552
+ 'info': ticker,
553
+ });
554
+ this.tickers[symbol] = result;
555
+ client.resolve(result, messageHash);
556
+ }
557
+ handleTrades(client, message) {
558
+ //
559
+ // {
560
+ // "channel": "trade",
561
+ // "type": "update",
562
+ // "data": [
563
+ // {
564
+ // "symbol": "MATIC/USD",
565
+ // "side": "sell",
566
+ // "price": 0.5117,
567
+ // "qty": 40.0,
568
+ // "ord_type": "market",
569
+ // "trade_id": 4665906,
570
+ // "timestamp": "2023-09-25T07:49:37.708706Z"
571
+ // }
572
+ // ]
573
+ // }
574
+ //
575
+ const data = this.safeList(message, 'data', []);
576
+ const trade = data[0];
577
+ const symbol = this.safeString(trade, 'symbol');
578
+ const messageHash = this.getMessageHash('trade', undefined, symbol);
579
+ let stored = this.safeValue(this.trades, symbol);
580
+ if (stored === undefined) {
581
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
582
+ stored = new ArrayCache(limit);
583
+ this.trades[symbol] = stored;
584
+ }
585
+ const market = this.market(symbol);
586
+ const parsed = this.parseTrades(data, market);
587
+ for (let i = 0; i < parsed.length; i++) {
588
+ stored.append(parsed[i]);
589
+ }
590
+ client.resolve(stored, messageHash);
591
+ }
592
+ handleOHLCV(client, message, subscription) {
593
+ //
594
+ // [
595
+ // 216, // channelID
596
+ // [
597
+ // "1574454214.962096", // Time, seconds since epoch
598
+ // "1574454240.000000", // End timestamp of the interval
599
+ // "0.020970", // Open price at midnight UTC
600
+ // "0.020970", // Intraday high price
601
+ // "0.020970", // Intraday low price
602
+ // "0.020970", // Closing price at midnight UTC
603
+ // "0.020970", // Volume weighted average price
604
+ // "0.08636138", // Accumulated volume today
605
+ // 1, // Number of trades today
606
+ // ],
607
+ // "ohlc-1", // Channel Name of subscription
608
+ // "ETH/XBT", // Asset pair
609
+ // ]
610
+ //
611
+ const info = this.safeValue(subscription, 'subscription', {});
612
+ const interval = this.safeInteger(info, 'interval');
613
+ const name = this.safeString(info, 'name');
614
+ const wsName = this.safeString(message, 3);
615
+ const market = this.safeValue(this.options['marketsByWsName'], wsName);
616
+ const symbol = market['symbol'];
617
+ const timeframe = this.findTimeframe(interval);
618
+ const duration = this.parseTimeframe(timeframe);
619
+ if (timeframe !== undefined) {
620
+ const candle = this.safeValue(message, 1);
621
+ const messageHash = name + ':' + timeframe + ':' + wsName;
622
+ let timestamp = this.safeFloat(candle, 1);
623
+ timestamp -= duration;
624
+ const ts = this.parseToInt(timestamp * 1000);
625
+ const result = [
626
+ ts,
627
+ this.safeFloat(candle, 2),
628
+ this.safeFloat(candle, 3),
629
+ this.safeFloat(candle, 4),
630
+ this.safeFloat(candle, 5),
631
+ this.safeFloat(candle, 7),
632
+ ];
633
+ this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
634
+ let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
635
+ if (stored === undefined) {
636
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
637
+ stored = new ArrayCacheByTimestamp(limit);
638
+ this.ohlcvs[symbol][timeframe] = stored;
639
+ }
640
+ stored.append(result);
641
+ client.resolve(stored, messageHash);
642
+ }
643
+ }
644
+ requestId() {
645
+ // their support said that reqid must be an int32, not documented
646
+ const reqid = this.sum(this.safeInteger(this.options, 'reqid', 0), 1);
647
+ this.options['reqid'] = reqid;
648
+ return reqid;
649
+ }
650
+ async watchPublic(name, symbol, params = {}) {
651
+ await this.loadMarkets();
652
+ const market = this.market(symbol);
653
+ const wsName = this.safeValue(market['info'], 'wsname');
654
+ const messageHash = name + ':' + wsName;
655
+ const url = this.urls['api']['ws']['public'];
656
+ const requestId = this.requestId();
657
+ const subscribe = {
658
+ 'event': 'subscribe',
659
+ 'reqid': requestId,
660
+ 'pair': [
661
+ wsName,
662
+ ],
663
+ 'subscription': {
664
+ 'name': name,
665
+ },
666
+ };
667
+ const request = this.deepExtend(subscribe, params);
668
+ return await this.watch(url, messageHash, request, messageHash);
669
+ }
670
+ /**
671
+ * @method
672
+ * @name kraken#watchTicker
673
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
674
+ * @see https://docs.kraken.com/api/docs/websocket-v2/ticker
675
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
676
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
677
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
678
+ */
679
+ async watchTicker(symbol, params = {}) {
680
+ await this.loadMarkets();
681
+ symbol = this.symbol(symbol);
682
+ const tickers = await this.watchTickers([symbol], params);
683
+ return tickers[symbol];
684
+ }
685
+ /**
686
+ * @method
687
+ * @name kraken#watchTickers
688
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
689
+ * @see https://docs.kraken.com/api/docs/websocket-v2/ticker
690
+ * @param {string[]} symbols
691
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
692
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
693
+ */
694
+ async watchTickers(symbols = undefined, params = {}) {
695
+ await this.loadMarkets();
696
+ symbols = this.marketSymbols(symbols, undefined, false);
697
+ const ticker = await this.watchMultiHelper('ticker', 'ticker', symbols, undefined, params);
698
+ if (this.newUpdates) {
699
+ const result = {};
700
+ result[ticker['symbol']] = ticker;
701
+ return result;
702
+ }
703
+ return this.filterByArray(this.tickers, 'symbol', symbols);
704
+ }
705
+ /**
706
+ * @method
707
+ * @name kraken#watchBidsAsks
708
+ * @description watches best bid & ask for symbols
709
+ * @see https://docs.kraken.com/api/docs/websocket-v2/ticker
710
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
711
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
712
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
713
+ */
714
+ async watchBidsAsks(symbols = undefined, params = {}) {
715
+ await this.loadMarkets();
716
+ symbols = this.marketSymbols(symbols, undefined, false);
717
+ params['event_trigger'] = 'bbo';
718
+ const ticker = await this.watchMultiHelper('bidask', 'ticker', symbols, undefined, params);
719
+ if (this.newUpdates) {
720
+ const result = {};
721
+ result[ticker['symbol']] = ticker;
722
+ return result;
723
+ }
724
+ return this.filterByArray(this.bidsasks, 'symbol', symbols);
725
+ }
726
+ /**
727
+ * @method
728
+ * @name kraken#watchTrades
729
+ * @description get the list of most recent trades for a particular symbol
730
+ * @see https://docs.kraken.com/api/docs/websocket-v2/trade
731
+ * @param {string} symbol unified symbol of the market to fetch trades for
732
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
733
+ * @param {int} [limit] the maximum amount of trades to fetch
734
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
735
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
736
+ */
737
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
738
+ return await this.watchTradesForSymbols([symbol], since, limit, params);
739
+ }
740
+ /**
741
+ * @method
742
+ * @name kraken#watchTradesForSymbols
743
+ * @description get the list of most recent trades for a list of symbols
744
+ * @see https://docs.kraken.com/api/docs/websocket-v2/trade
745
+ * @param {string[]} symbols unified symbol of the market to fetch trades for
746
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
747
+ * @param {int} [limit] the maximum amount of trades to fetch
748
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
749
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
750
+ */
751
+ async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
752
+ const trades = await this.watchMultiHelper('trade', 'trade', symbols, undefined, params);
753
+ if (this.newUpdates) {
754
+ const first = this.safeList(trades, 0);
755
+ const tradeSymbol = this.safeString(first, 'symbol');
756
+ limit = trades.getLimit(tradeSymbol, limit);
757
+ }
758
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
759
+ }
760
+ /**
761
+ * @method
762
+ * @name kraken#watchOrderBook
763
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
764
+ * @see https://docs.kraken.com/api/docs/websocket-v2/book
765
+ * @param {string} symbol unified symbol of the market to fetch the order book for
766
+ * @param {int} [limit] the maximum amount of order book entries to return
767
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
768
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
769
+ */
770
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
771
+ return await this.watchOrderBookForSymbols([symbol], limit, params);
772
+ }
773
+ /**
774
+ * @method
775
+ * @name kraken#watchOrderBookForSymbols
776
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
777
+ * @see https://docs.kraken.com/api/docs/websocket-v2/book
778
+ * @param {string[]} symbols unified array of symbols
779
+ * @param {int} [limit] the maximum amount of order book entries to return
780
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
781
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
782
+ */
783
+ async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
784
+ const requiredParams = {};
785
+ if (limit !== undefined) {
786
+ if (this.inArray(limit, [10, 25, 100, 500, 1000])) {
787
+ requiredParams['depth'] = limit; // default 10, valid options 10, 25, 100, 500, 1000
788
+ }
789
+ else {
790
+ throw new NotSupported(this.id + ' watchOrderBook accepts limit values of 10, 25, 100, 500 and 1000 only');
791
+ }
792
+ }
793
+ const orderbook = await this.watchMultiHelper('orderbook', 'book', symbols, { 'limit': limit }, this.extend(requiredParams, params));
794
+ return orderbook.limit();
795
+ }
796
+ /**
797
+ * @method
798
+ * @name kraken#watchOHLCV
799
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
800
+ * @see https://docs.kraken.com/api/docs/websocket-v1/ohlc
801
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
802
+ * @param {string} timeframe the length of time each candle represents
803
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
804
+ * @param {int} [limit] the maximum amount of candles to fetch
805
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
806
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
807
+ */
808
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
809
+ await this.loadMarkets();
810
+ const name = 'ohlc';
811
+ const market = this.market(symbol);
812
+ symbol = market['symbol'];
813
+ const wsName = this.safeValue(market['info'], 'wsname');
814
+ const messageHash = name + ':' + timeframe + ':' + wsName;
815
+ const url = this.urls['api']['ws']['public'];
816
+ const requestId = this.requestId();
817
+ const subscribe = {
818
+ 'event': 'subscribe',
819
+ 'reqid': requestId,
820
+ 'pair': [
821
+ wsName,
822
+ ],
823
+ 'subscription': {
824
+ 'name': name,
825
+ 'interval': this.safeValue(this.timeframes, timeframe, timeframe),
826
+ },
827
+ };
828
+ const request = this.deepExtend(subscribe, params);
829
+ const ohlcv = await this.watch(url, messageHash, request, messageHash);
830
+ if (this.newUpdates) {
831
+ limit = ohlcv.getLimit(symbol, limit);
832
+ }
833
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
834
+ }
835
+ async loadMarkets(reload = false, params = {}) {
836
+ const markets = await super.loadMarkets(reload, params);
837
+ let marketsByWsName = this.safeValue(this.options, 'marketsByWsName');
838
+ if ((marketsByWsName === undefined) || reload) {
839
+ marketsByWsName = {};
840
+ for (let i = 0; i < this.symbols.length; i++) {
841
+ const symbol = this.symbols[i];
842
+ const market = this.markets[symbol];
843
+ const info = this.safeValue(market, 'info', {});
844
+ const wsName = this.safeString(info, 'wsname');
845
+ marketsByWsName[wsName] = market;
846
+ }
847
+ this.options['marketsByWsName'] = marketsByWsName;
848
+ }
849
+ return markets;
850
+ }
851
+ ping(client) {
852
+ const url = client.url;
853
+ const request = {};
854
+ if (url.indexOf('v2') >= 0) {
855
+ request['method'] = 'ping';
856
+ }
857
+ else {
858
+ request['event'] = 'ping';
859
+ }
860
+ return request;
861
+ }
862
+ handlePong(client, message) {
863
+ client.lastPong = this.milliseconds();
864
+ return message;
865
+ }
866
+ async watchHeartbeat(params = {}) {
867
+ await this.loadMarkets();
868
+ const event = 'heartbeat';
869
+ const url = this.urls['api']['ws']['public'];
870
+ return await this.watch(url, event);
871
+ }
872
+ handleHeartbeat(client, message) {
873
+ //
874
+ // every second (approx) if no other updates are sent
875
+ //
876
+ // { "event": "heartbeat" }
877
+ //
878
+ const event = this.safeString(message, 'event');
879
+ client.resolve(message, event);
880
+ }
881
+ handleOrderBook(client, message) {
882
+ //
883
+ // first message (snapshot)
884
+ //
885
+ // {
886
+ // "channel": "book",
887
+ // "type": "snapshot",
888
+ // "data": [
889
+ // {
890
+ // "symbol": "MATIC/USD",
891
+ // "bids": [
892
+ // {
893
+ // "price": 0.5666,
894
+ // "qty": 4831.75496356
895
+ // },
896
+ // {
897
+ // "price": 0.5665,
898
+ // "qty": 6658.22734739
899
+ // }
900
+ // ],
901
+ // "asks": [
902
+ // {
903
+ // "price": 0.5668,
904
+ // "qty": 4410.79769741
905
+ // },
906
+ // {
907
+ // "price": 0.5669,
908
+ // "qty": 4655.40412487
909
+ // }
910
+ // ],
911
+ // "checksum": 2439117997
912
+ // }
913
+ // ]
914
+ // }
915
+ //
916
+ // subsequent updates
917
+ //
918
+ // {
919
+ // "channel": "book",
920
+ // "type": "update",
921
+ // "data": [
922
+ // {
923
+ // "symbol": "MATIC/USD",
924
+ // "bids": [
925
+ // {
926
+ // "price": 0.5657,
927
+ // "qty": 1098.3947558
928
+ // }
929
+ // ],
930
+ // "asks": [],
931
+ // "checksum": 2114181697,
932
+ // "timestamp": "2023-10-06T17:35:55.440295Z"
933
+ // }
934
+ // ]
935
+ // }
936
+ //
937
+ const type = this.safeString(message, 'type');
938
+ const data = this.safeList(message, 'data', []);
939
+ const first = this.safeDict(data, 0, {});
940
+ const symbol = this.safeString(first, 'symbol');
941
+ const a = this.safeValue(first, 'asks', []);
942
+ const b = this.safeValue(first, 'bids', []);
943
+ const c = this.safeInteger(first, 'checksum');
944
+ const messageHash = this.getMessageHash('orderbook', undefined, symbol);
945
+ let orderbook = undefined;
946
+ if (type === 'update') {
947
+ orderbook = this.orderbooks[symbol];
948
+ const storedAsks = orderbook['asks'];
949
+ const storedBids = orderbook['bids'];
950
+ if (a !== undefined) {
951
+ this.customHandleDeltas(storedAsks, a);
952
+ }
953
+ if (b !== undefined) {
954
+ this.customHandleDeltas(storedBids, b);
955
+ }
956
+ const datetime = this.safeString(first, 'timestamp');
957
+ orderbook['symbol'] = symbol;
958
+ orderbook['timestamp'] = this.parse8601(datetime);
959
+ orderbook['datetime'] = datetime;
960
+ }
961
+ else {
962
+ // snapshot
963
+ const depth = a.length;
964
+ this.orderbooks[symbol] = this.orderBook({}, depth);
965
+ orderbook = this.orderbooks[symbol];
966
+ const keys = ['asks', 'bids'];
967
+ for (let i = 0; i < keys.length; i++) {
968
+ const key = keys[i];
969
+ const bookside = orderbook[key];
970
+ const deltas = this.safeValue(first, key, []);
971
+ if (deltas.length > 0) {
972
+ this.customHandleDeltas(bookside, deltas);
973
+ }
974
+ }
975
+ orderbook['symbol'] = symbol;
976
+ }
977
+ orderbook.limit();
978
+ // checksum temporarily disabled because the exchange checksum was not reliable
979
+ const checksum = this.handleOption('watchOrderBook', 'checksum', false);
980
+ if (checksum) {
981
+ const payloadArray = [];
982
+ if (c !== undefined) {
983
+ const checkAsks = orderbook['asks'];
984
+ const checkBids = orderbook['bids'];
985
+ // const checkAsks = asks.map ((elem) => [ elem['price'], elem['qty'] ]);
986
+ // const checkBids = bids.map ((elem) => [ elem['price'], elem['qty'] ]);
987
+ for (let i = 0; i < 10; i++) {
988
+ const currentAsk = this.safeValue(checkAsks, i, {});
989
+ const formattedAsk = this.formatNumber(currentAsk[0]) + this.formatNumber(currentAsk[1]);
990
+ payloadArray.push(formattedAsk);
991
+ }
992
+ for (let i = 0; i < 10; i++) {
993
+ const currentBid = this.safeValue(checkBids, i, {});
994
+ const formattedBid = this.formatNumber(currentBid[0]) + this.formatNumber(currentBid[1]);
995
+ payloadArray.push(formattedBid);
996
+ }
997
+ }
998
+ const payload = payloadArray.join('');
999
+ const localChecksum = this.crc32(payload, false);
1000
+ if (localChecksum !== c) {
1001
+ const error = new ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
1002
+ delete client.subscriptions[messageHash];
1003
+ delete this.orderbooks[symbol];
1004
+ client.reject(error, messageHash);
1005
+ return;
1006
+ }
1007
+ }
1008
+ client.resolve(orderbook, messageHash);
1009
+ }
1010
+ customHandleDeltas(bookside, deltas) {
1011
+ // const sortOrder = (key === 'bids') ? true : false;
1012
+ for (let j = 0; j < deltas.length; j++) {
1013
+ const delta = deltas[j];
1014
+ const price = this.safeNumber(delta, 'price');
1015
+ const amount = this.safeNumber(delta, 'qty');
1016
+ bookside.store(price, amount);
1017
+ // if (amount === 0) {
1018
+ // const index = bookside.findIndex ((x: Int) => x[0] === price);
1019
+ // bookside.splice (index, 1);
1020
+ // } else {
1021
+ // bookside.store (price, amount);
1022
+ // }
1023
+ // bookside = this.sortBy (bookside, 0, sortOrder);
1024
+ // bookside.slice (0, 9);
1025
+ }
1026
+ }
1027
+ formatNumber(data) {
1028
+ const parts = data.split('.');
1029
+ const integer = this.safeString(parts, 0);
1030
+ const decimals = this.safeString(parts, 1, '');
1031
+ let joinedResult = integer + decimals;
1032
+ let i = 0;
1033
+ while (joinedResult[i] === '0') {
1034
+ i += 1;
1035
+ }
1036
+ if (i > 0) {
1037
+ joinedResult = joinedResult.slice(i);
1038
+ }
1039
+ return joinedResult;
1040
+ }
1041
+ handleSystemStatus(client, message) {
1042
+ //
1043
+ // todo: answer the question whether handleSystemStatus should be renamed
1044
+ // and unified as handleStatus for any usage pattern that
1045
+ // involves system status and maintenance updates
1046
+ //
1047
+ // {
1048
+ // "connectionID": 15527282728335292000,
1049
+ // "event": "systemStatus",
1050
+ // "status": "online", // online|maintenance|(custom status tbd)
1051
+ // "version": "0.2.0"
1052
+ // }
1053
+ //
1054
+ // v2
1055
+ // {
1056
+ // channel: 'status',
1057
+ // type: 'update',
1058
+ // data: [
1059
+ // {
1060
+ // version: '2.0.10',
1061
+ // system: 'online',
1062
+ // api_version: 'v2',
1063
+ // connection_id: 6447481662169813000
1064
+ // }
1065
+ // ]
1066
+ // }
1067
+ //
1068
+ return message;
1069
+ }
1070
+ async authenticate(params = {}) {
1071
+ const url = this.urls['api']['ws']['private'];
1072
+ const client = this.client(url);
1073
+ const authenticated = 'authenticated';
1074
+ let subscription = this.safeValue(client.subscriptions, authenticated);
1075
+ const now = this.seconds();
1076
+ const start = this.safeInteger(subscription, 'start');
1077
+ const expires = this.safeInteger(subscription, 'expires');
1078
+ if ((subscription === undefined) || ((subscription !== undefined) && (start + expires) <= now)) {
1079
+ // https://docs.kraken.com/api/docs/rest-api/get-websockets-token
1080
+ const response = await this.privatePostGetWebSocketsToken(params);
1081
+ //
1082
+ // {
1083
+ // "error":[],
1084
+ // "result":{
1085
+ // "token":"xeAQ\/RCChBYNVh53sTv1yZ5H4wIbwDF20PiHtTF+4UI",
1086
+ // "expires":900
1087
+ // }
1088
+ // }
1089
+ //
1090
+ subscription = this.safeDict(response, 'result');
1091
+ subscription['start'] = now;
1092
+ client.subscriptions[authenticated] = subscription;
1093
+ }
1094
+ return this.safeString(subscription, 'token');
1095
+ }
1096
+ async watchPrivate(name, symbol = undefined, since = undefined, limit = undefined, params = {}) {
1097
+ await this.loadMarkets();
1098
+ const token = await this.authenticate();
1099
+ const subscriptionHash = name;
1100
+ let messageHash = name;
1101
+ if (symbol !== undefined) {
1102
+ symbol = this.symbol(symbol);
1103
+ messageHash += ':' + symbol;
1104
+ }
1105
+ const url = this.urls['api']['ws']['private'];
1106
+ const requestId = this.requestId();
1107
+ const subscribe = {
1108
+ 'event': 'subscribe',
1109
+ 'reqid': requestId,
1110
+ 'subscription': {
1111
+ 'name': name,
1112
+ 'token': token,
1113
+ },
1114
+ };
1115
+ const request = this.deepExtend(subscribe, params);
1116
+ const result = await this.watch(url, messageHash, request, subscriptionHash);
1117
+ if (this.newUpdates) {
1118
+ limit = result.getLimit(symbol, limit);
1119
+ }
1120
+ return this.filterBySymbolSinceLimit(result, symbol, since, limit);
1121
+ }
1122
+ /**
1123
+ * @method
1124
+ * @name kraken#watchMyTrades
1125
+ * @description watches information on multiple trades made by the user
1126
+ * @see https://docs.kraken.com/api/docs/websocket-v1/owntrades
1127
+ * @param {string} symbol unified market symbol of the market trades were made in
1128
+ * @param {int} [since] the earliest time in ms to fetch trades for
1129
+ * @param {int} [limit] the maximum number of trade structures to retrieve
1130
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1131
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1132
+ */
1133
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1134
+ return await this.watchPrivate('ownTrades', symbol, since, limit, params);
1135
+ }
1136
+ handleMyTrades(client, message, subscription = undefined) {
1137
+ //
1138
+ // [
1139
+ // [
1140
+ // {
1141
+ // "TT5UC3-GOIRW-6AZZ6R": {
1142
+ // "cost": "1493.90107",
1143
+ // "fee": "3.88415",
1144
+ // "margin": "0.00000",
1145
+ // "ordertxid": "OTLAS3-RRHUF-NDWH5A",
1146
+ // "ordertype": "market",
1147
+ // "pair": "XBT/USDT",
1148
+ // "postxid": "TKH2SE-M7IF5-CFI7LT",
1149
+ // "price": "6851.50005",
1150
+ // "time": "1586822919.335498",
1151
+ // "type": "sell",
1152
+ // "vol": "0.21804000"
1153
+ // }
1154
+ // },
1155
+ // {
1156
+ // "TIY6G4-LKLAI-Y3GD4A": {
1157
+ // "cost": "22.17134",
1158
+ // "fee": "0.05765",
1159
+ // "margin": "0.00000",
1160
+ // "ordertxid": "ODQXS7-MOLK6-ICXKAA",
1161
+ // "ordertype": "market",
1162
+ // "pair": "ETH/USD",
1163
+ // "postxid": "TKH2SE-M7IF5-CFI7LT",
1164
+ // "price": "169.97999",
1165
+ // "time": "1586340530.895739",
1166
+ // "type": "buy",
1167
+ // "vol": "0.13043500"
1168
+ // }
1169
+ // },
1170
+ // ],
1171
+ // "ownTrades",
1172
+ // { sequence: 1 }
1173
+ // ]
1174
+ //
1175
+ const allTrades = this.safeValue(message, 0, []);
1176
+ const allTradesLength = allTrades.length;
1177
+ if (allTradesLength > 0) {
1178
+ if (this.myTrades === undefined) {
1179
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
1180
+ this.myTrades = new ArrayCache(limit);
1181
+ }
1182
+ const stored = this.myTrades;
1183
+ const symbols = {};
1184
+ for (let i = 0; i < allTrades.length; i++) {
1185
+ const trades = this.safeValue(allTrades, i, {});
1186
+ const ids = Object.keys(trades);
1187
+ for (let j = 0; j < ids.length; j++) {
1188
+ const id = ids[j];
1189
+ const trade = trades[id];
1190
+ const parsed = this.parseWsTrade(this.extend({ 'id': id }, trade));
1191
+ stored.append(parsed);
1192
+ const symbol = parsed['symbol'];
1193
+ symbols[symbol] = true;
1194
+ }
1195
+ }
1196
+ const name = 'ownTrades';
1197
+ client.resolve(this.myTrades, name);
1198
+ const keys = Object.keys(symbols);
1199
+ for (let i = 0; i < keys.length; i++) {
1200
+ const messageHash = name + ':' + keys[i];
1201
+ client.resolve(this.myTrades, messageHash);
1202
+ }
1203
+ }
1204
+ }
1205
+ parseWsTrade(trade, market = undefined) {
1206
+ //
1207
+ // {
1208
+ // "id": "TIMIRG-WUNNE-RRJ6GT", // injected from outside
1209
+ // "ordertxid": "OQRPN2-LRHFY-HIFA7D",
1210
+ // "postxid": "TKH2SE-M7IF5-CFI7LT",
1211
+ // "pair": "USDCUSDT",
1212
+ // "time": 1586340086.457,
1213
+ // "type": "sell",
1214
+ // "ordertype": "market",
1215
+ // "price": "0.99860000",
1216
+ // "cost": "22.16892001",
1217
+ // "fee": "0.04433784",
1218
+ // "vol": "22.20000000",
1219
+ // "margin": "0.00000000",
1220
+ // "misc": ''
1221
+ // }
1222
+ //
1223
+ // {
1224
+ // "id": "TIY6G4-LKLAI-Y3GD4A",
1225
+ // "cost": "22.17134",
1226
+ // "fee": "0.05765",
1227
+ // "margin": "0.00000",
1228
+ // "ordertxid": "ODQXS7-MOLK6-ICXKAA",
1229
+ // "ordertype": "market",
1230
+ // "pair": "ETH/USD",
1231
+ // "postxid": "TKH2SE-M7IF5-CFI7LT",
1232
+ // "price": "169.97999",
1233
+ // "time": "1586340530.895739",
1234
+ // "type": "buy",
1235
+ // "vol": "0.13043500"
1236
+ // }
1237
+ //
1238
+ const wsName = this.safeString(trade, 'pair');
1239
+ market = this.safeValue(this.options['marketsByWsName'], wsName, market);
1240
+ let symbol = undefined;
1241
+ const orderId = this.safeString(trade, 'ordertxid');
1242
+ const id = this.safeString2(trade, 'id', 'postxid');
1243
+ const timestamp = this.safeTimestamp(trade, 'time');
1244
+ const side = this.safeString(trade, 'type');
1245
+ const type = this.safeString(trade, 'ordertype');
1246
+ const price = this.safeFloat(trade, 'price');
1247
+ const amount = this.safeFloat(trade, 'vol');
1248
+ let cost = undefined;
1249
+ let fee = undefined;
1250
+ if ('fee' in trade) {
1251
+ let currency = undefined;
1252
+ if (market !== undefined) {
1253
+ currency = market['quote'];
1254
+ }
1255
+ fee = {
1256
+ 'cost': this.safeFloat(trade, 'fee'),
1257
+ 'currency': currency,
1258
+ };
1259
+ }
1260
+ if (market !== undefined) {
1261
+ symbol = market['symbol'];
1262
+ }
1263
+ if (price !== undefined) {
1264
+ if (amount !== undefined) {
1265
+ cost = price * amount;
1266
+ }
1267
+ }
1268
+ return {
1269
+ 'id': id,
1270
+ 'order': orderId,
1271
+ 'info': trade,
1272
+ 'timestamp': timestamp,
1273
+ 'datetime': this.iso8601(timestamp),
1274
+ 'symbol': symbol,
1275
+ 'type': type,
1276
+ 'side': side,
1277
+ 'takerOrMaker': undefined,
1278
+ 'price': price,
1279
+ 'amount': amount,
1280
+ 'cost': cost,
1281
+ 'fee': fee,
1282
+ };
1283
+ }
1284
+ /**
1285
+ * @method
1286
+ * @name kraken#watchOrders
1287
+ * @see https://docs.kraken.com/api/docs/websocket-v1/openorders
1288
+ * @description watches information on multiple orders made by the user
1289
+ * @param {string} symbol unified market symbol of the market orders were made in
1290
+ * @param {int} [since] the earliest time in ms to fetch orders for
1291
+ * @param {int} [limit] the maximum number of orde structures to retrieve
1292
+ * @param {object} [params] maximum number of orderic to the exchange API endpoint
1293
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1294
+ */
1295
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1296
+ return await this.watchPrivate('openOrders', symbol, since, limit, params);
1297
+ }
1298
+ handleOrders(client, message, subscription = undefined) {
1299
+ //
1300
+ // [
1301
+ // [
1302
+ // {
1303
+ // "OGTT3Y-C6I3P-XRI6HX": {
1304
+ // "cost": "0.00000",
1305
+ // "descr": {
1306
+ // "close": "",
1307
+ // "leverage": "0:1",
1308
+ // "order": "sell 10.00345345 XBT/EUR @ limit 34.50000 with 0:1 leverage",
1309
+ // "ordertype": "limit",
1310
+ // "pair": "XBT/EUR",
1311
+ // "price": "34.50000",
1312
+ // "price2": "0.00000",
1313
+ // "type": "sell"
1314
+ // },
1315
+ // "expiretm": "0.000000",
1316
+ // "fee": "0.00000",
1317
+ // "limitprice": "34.50000",
1318
+ // "misc": "",
1319
+ // "oflags": "fcib",
1320
+ // "opentm": "0.000000",
1321
+ // "price": "34.50000",
1322
+ // "refid": "OKIVMP-5GVZN-Z2D2UA",
1323
+ // "starttm": "0.000000",
1324
+ // "status": "open",
1325
+ // "stopprice": "0.000000",
1326
+ // "userref": 0,
1327
+ // "vol": "10.00345345",
1328
+ // "vol_exec": "0.00000000"
1329
+ // }
1330
+ // },
1331
+ // {
1332
+ // "OGTT3Y-C6I3P-XRI6HX": {
1333
+ // "cost": "0.00000",
1334
+ // "descr": {
1335
+ // "close": "",
1336
+ // "leverage": "0:1",
1337
+ // "order": "sell 0.00000010 XBT/EUR @ limit 5334.60000 with 0:1 leverage",
1338
+ // "ordertype": "limit",
1339
+ // "pair": "XBT/EUR",
1340
+ // "price": "5334.60000",
1341
+ // "price2": "0.00000",
1342
+ // "type": "sell"
1343
+ // },
1344
+ // "expiretm": "0.000000",
1345
+ // "fee": "0.00000",
1346
+ // "limitprice": "5334.60000",
1347
+ // "misc": "",
1348
+ // "oflags": "fcib",
1349
+ // "opentm": "0.000000",
1350
+ // "price": "5334.60000",
1351
+ // "refid": "OKIVMP-5GVZN-Z2D2UA",
1352
+ // "starttm": "0.000000",
1353
+ // "status": "open",
1354
+ // "stopprice": "0.000000",
1355
+ // "userref": 0,
1356
+ // "vol": "0.00000010",
1357
+ // "vol_exec": "0.00000000"
1358
+ // }
1359
+ // },
1360
+ // ],
1361
+ // "openOrders",
1362
+ // { "sequence": 234 }
1363
+ // ]
1364
+ //
1365
+ // status-change
1366
+ //
1367
+ // [
1368
+ // [
1369
+ // { "OGTT3Y-C6I3P-XRI6HX": { "status": "closed" }},
1370
+ // { "OGTT3Y-C6I3P-XRI6HX": { "status": "closed" }},
1371
+ // ],
1372
+ // "openOrders",
1373
+ // { "sequence": 59342 }
1374
+ // ]
1375
+ //
1376
+ const allOrders = this.safeValue(message, 0, []);
1377
+ const allOrdersLength = allOrders.length;
1378
+ if (allOrdersLength > 0) {
1379
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
1380
+ if (this.orders === undefined) {
1381
+ this.orders = new ArrayCacheBySymbolById(limit);
1382
+ }
1383
+ const stored = this.orders;
1384
+ const symbols = {};
1385
+ for (let i = 0; i < allOrders.length; i++) {
1386
+ const orders = this.safeValue(allOrders, i, {});
1387
+ const ids = Object.keys(orders);
1388
+ for (let j = 0; j < ids.length; j++) {
1389
+ const id = ids[j];
1390
+ const order = orders[id];
1391
+ const parsed = this.parseWsOrder(order);
1392
+ parsed['id'] = id;
1393
+ let symbol = undefined;
1394
+ const symbolsByOrderId = this.safeValue(this.options, 'symbolsByOrderId', {});
1395
+ if (parsed['symbol'] !== undefined) {
1396
+ symbol = parsed['symbol'];
1397
+ symbolsByOrderId[id] = symbol;
1398
+ this.options['symbolsByOrderId'] = symbolsByOrderId;
1399
+ }
1400
+ else {
1401
+ symbol = this.safeString(symbolsByOrderId, id);
1402
+ }
1403
+ const previousOrders = this.safeValue(stored.hashmap, symbol);
1404
+ const previousOrder = this.safeValue(previousOrders, id);
1405
+ let newOrder = parsed;
1406
+ if (previousOrder !== undefined) {
1407
+ const newRawOrder = this.extend(previousOrder['info'], newOrder['info']);
1408
+ newOrder = this.parseWsOrder(newRawOrder);
1409
+ newOrder['id'] = id;
1410
+ }
1411
+ const length = stored.length;
1412
+ if (length === limit && (previousOrder === undefined)) {
1413
+ const first = stored[0];
1414
+ if (first['id'] in symbolsByOrderId) {
1415
+ delete symbolsByOrderId[first['id']];
1416
+ }
1417
+ }
1418
+ stored.append(newOrder);
1419
+ symbols[symbol] = true;
1420
+ }
1421
+ }
1422
+ const name = 'openOrders';
1423
+ client.resolve(this.orders, name);
1424
+ const keys = Object.keys(symbols);
1425
+ for (let i = 0; i < keys.length; i++) {
1426
+ const messageHash = name + ':' + keys[i];
1427
+ client.resolve(this.orders, messageHash);
1428
+ }
1429
+ }
1430
+ }
1431
+ parseWsOrder(order, market = undefined) {
1432
+ //
1433
+ // createOrder
1434
+ // {
1435
+ // "avg_price": "0.00000",
1436
+ // "cost": "0.00000",
1437
+ // "descr": {
1438
+ // "close": null,
1439
+ // "leverage": null,
1440
+ // "order": "sell 0.01000000 ETH/USDT @ limit 1900.00000",
1441
+ // "ordertype": "limit",
1442
+ // "pair": "ETH/USDT",
1443
+ // "price": "1900.00000",
1444
+ // "price2": "0.00000",
1445
+ // "type": "sell"
1446
+ // },
1447
+ // "expiretm": null,
1448
+ // "fee": "0.00000",
1449
+ // "limitprice": "0.00000",
1450
+ // "misc": '',
1451
+ // "oflags": "fciq",
1452
+ // "opentm": "1667522705.757622",
1453
+ // "refid": null,
1454
+ // "starttm": null,
1455
+ // "status": "open",
1456
+ // "stopprice": "0.00000",
1457
+ // "timeinforce": "GTC",
1458
+ // "userref": 0,
1459
+ // "vol": "0.01000000",
1460
+ // "vol_exec": "0.00000000"
1461
+ // }
1462
+ //
1463
+ const description = this.safeValue(order, 'descr', {});
1464
+ const orderDescription = this.safeString(description, 'order');
1465
+ let side = undefined;
1466
+ let type = undefined;
1467
+ let wsName = undefined;
1468
+ let price = undefined;
1469
+ let amount = undefined;
1470
+ if (orderDescription !== undefined) {
1471
+ const parts = orderDescription.split(' ');
1472
+ side = this.safeString(parts, 0);
1473
+ amount = this.safeString(parts, 1);
1474
+ wsName = this.safeString(parts, 2);
1475
+ type = this.safeString(parts, 4);
1476
+ price = this.safeString(parts, 5);
1477
+ }
1478
+ side = this.safeString(description, 'type', side);
1479
+ type = this.safeString(description, 'ordertype', type);
1480
+ wsName = this.safeString(description, 'pair', wsName);
1481
+ market = this.safeValue(this.options['marketsByWsName'], wsName, market);
1482
+ let symbol = undefined;
1483
+ const timestamp = this.safeTimestamp(order, 'opentm');
1484
+ amount = this.safeString(order, 'vol', amount);
1485
+ const filled = this.safeString(order, 'vol_exec');
1486
+ let fee = undefined;
1487
+ const cost = this.safeString(order, 'cost');
1488
+ price = this.safeString(description, 'price', price);
1489
+ if ((price === undefined) || (Precise.stringEq(price, '0.0'))) {
1490
+ price = this.safeString(description, 'price2');
1491
+ }
1492
+ if ((price === undefined) || (Precise.stringEq(price, '0.0'))) {
1493
+ price = this.safeString(order, 'price', price);
1494
+ }
1495
+ const average = this.safeString2(order, 'avg_price', 'price');
1496
+ if (market !== undefined) {
1497
+ symbol = market['symbol'];
1498
+ if ('fee' in order) {
1499
+ const flags = order['oflags'];
1500
+ const feeCost = this.safeString(order, 'fee');
1501
+ fee = {
1502
+ 'cost': feeCost,
1503
+ 'rate': undefined,
1504
+ };
1505
+ if (flags.indexOf('fciq') >= 0) {
1506
+ fee['currency'] = market['quote'];
1507
+ }
1508
+ else if (flags.indexOf('fcib') >= 0) {
1509
+ fee['currency'] = market['base'];
1510
+ }
1511
+ }
1512
+ }
1513
+ const status = this.parseOrderStatus(this.safeString(order, 'status'));
1514
+ let id = this.safeString(order, 'id');
1515
+ if (id === undefined) {
1516
+ const txid = this.safeValue(order, 'txid');
1517
+ id = this.safeString(txid, 0);
1518
+ }
1519
+ const clientOrderId = this.safeString(order, 'userref');
1520
+ const rawTrades = this.safeValue(order, 'trades');
1521
+ let trades = undefined;
1522
+ if (rawTrades !== undefined) {
1523
+ trades = this.parseTrades(rawTrades, market, undefined, undefined, { 'order': id });
1524
+ }
1525
+ const stopPrice = this.safeNumber(order, 'stopprice');
1526
+ return this.safeOrder({
1527
+ 'id': id,
1528
+ 'clientOrderId': clientOrderId,
1529
+ 'info': order,
1530
+ 'timestamp': timestamp,
1531
+ 'datetime': this.iso8601(timestamp),
1532
+ 'lastTradeTimestamp': undefined,
1533
+ 'status': status,
1534
+ 'symbol': symbol,
1535
+ 'type': type,
1536
+ 'timeInForce': undefined,
1537
+ 'postOnly': undefined,
1538
+ 'side': side,
1539
+ 'price': price,
1540
+ 'stopPrice': stopPrice,
1541
+ 'triggerPrice': stopPrice,
1542
+ 'cost': cost,
1543
+ 'amount': amount,
1544
+ 'filled': filled,
1545
+ 'average': average,
1546
+ 'remaining': undefined,
1547
+ 'fee': fee,
1548
+ 'trades': trades,
1549
+ });
1550
+ }
1551
+ async watchMultiHelper(unifiedName, channelName, symbols = undefined, subscriptionArgs = undefined, params = {}) {
1552
+ await this.loadMarkets();
1553
+ // symbols are required
1554
+ symbols = this.marketSymbols(symbols, undefined, false, true, false);
1555
+ const messageHashes = [];
1556
+ for (let i = 0; i < symbols.length; i++) {
1557
+ const eventTrigger = this.safeString(params, 'event_trigger');
1558
+ if (eventTrigger !== undefined) {
1559
+ messageHashes.push(this.getMessageHash(channelName, undefined, this.symbol(symbols[i])));
1560
+ }
1561
+ else {
1562
+ messageHashes.push(this.getMessageHash(unifiedName, undefined, this.symbol(symbols[i])));
1563
+ }
1564
+ }
1565
+ const request = {
1566
+ 'method': 'subscribe',
1567
+ 'params': {
1568
+ 'channel': channelName,
1569
+ 'symbol': symbols,
1570
+ },
1571
+ 'req_id': this.requestId(),
1572
+ };
1573
+ request['params'] = this.deepExtend(request['params'], params);
1574
+ const url = this.urls['api']['ws']['publicV2'];
1575
+ return await this.watchMultiple(url, messageHashes, request, messageHashes, subscriptionArgs);
1576
+ }
1577
+ /**
1578
+ * @method
1579
+ * @name kraken#watchBalance
1580
+ * @description watch balance and get the amount of funds available for trading or funds locked in orders
1581
+ * @see https://docs.kraken.com/api/docs/websocket-v2/balances
1582
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1583
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1584
+ */
1585
+ async watchBalance(params = {}) {
1586
+ await this.loadMarkets();
1587
+ const token = await this.authenticate();
1588
+ const messageHash = 'balances';
1589
+ const url = this.urls['api']['ws']['privateV2'];
1590
+ const requestId = this.requestId();
1591
+ const subscribe = {
1592
+ 'method': 'subscribe',
1593
+ 'req_id': requestId,
1594
+ 'params': {
1595
+ 'channel': 'balances',
1596
+ 'token': token,
1597
+ },
1598
+ };
1599
+ const request = this.deepExtend(subscribe, params);
1600
+ return await this.watch(url, messageHash, request, messageHash);
1601
+ }
1602
+ handleBalance(client, message) {
1603
+ //
1604
+ // {
1605
+ // "channel": "balances",
1606
+ // "data": [
1607
+ // {
1608
+ // "asset": "BTC",
1609
+ // "asset_class": "currency",
1610
+ // "balance": 1.2,
1611
+ // "wallets": [
1612
+ // {
1613
+ // "type": "spot",
1614
+ // "id": "main",
1615
+ // "balance": 1.2
1616
+ // }
1617
+ // ]
1618
+ // }
1619
+ // ],
1620
+ // "type": "snapshot",
1621
+ // "sequence": 1
1622
+ // }
1623
+ //
1624
+ const data = this.safeList(message, 'data', []);
1625
+ const result = { 'info': message };
1626
+ for (let i = 0; i < data.length; i++) {
1627
+ const currencyId = this.safeString(data[i], 'asset');
1628
+ const code = this.safeCurrencyCode(currencyId);
1629
+ const account = this.account();
1630
+ const eq = this.safeString(data[i], 'balance');
1631
+ account['total'] = eq;
1632
+ result[code] = account;
1633
+ }
1634
+ const type = 'spot';
1635
+ const balance = this.safeBalance(result);
1636
+ const oldBalance = this.safeValue(this.balance, type, {});
1637
+ const newBalance = this.deepExtend(oldBalance, balance);
1638
+ this.balance[type] = this.safeBalance(newBalance);
1639
+ const channel = this.safeString(message, 'channel');
1640
+ client.resolve(this.balance[type], channel);
1641
+ }
1642
+ getMessageHash(unifiedElementName, subChannelName = undefined, symbol = undefined) {
1643
+ // unifiedElementName can be : orderbook, trade, ticker, bidask ...
1644
+ // subChannelName only applies to channel that needs specific variation (i.e. depth_50, depth_100..) to be selected
1645
+ const withSymbol = symbol !== undefined;
1646
+ let messageHash = unifiedElementName;
1647
+ if (!withSymbol) {
1648
+ messageHash += 's';
1649
+ }
1650
+ else {
1651
+ messageHash += '@' + symbol;
1652
+ }
1653
+ if (subChannelName !== undefined) {
1654
+ messageHash += '#' + subChannelName;
1655
+ }
1656
+ return messageHash;
1657
+ }
1658
+ handleSubscriptionStatus(client, message) {
1659
+ //
1660
+ // public
1661
+ //
1662
+ // {
1663
+ // "channelID": 210,
1664
+ // "channelName": "book-10",
1665
+ // "event": "subscriptionStatus",
1666
+ // "reqid": 1574146735269,
1667
+ // "pair": "ETH/XBT",
1668
+ // "status": "subscribed",
1669
+ // "subscription": { depth: 10, name: "book" }
1670
+ // }
1671
+ //
1672
+ // private
1673
+ //
1674
+ // {
1675
+ // "channelName": "openOrders",
1676
+ // "event": "subscriptionStatus",
1677
+ // "reqid": 1,
1678
+ // "status": "subscribed",
1679
+ // "subscription": { maxratecount: 125, name: "openOrders" }
1680
+ // }
1681
+ //
1682
+ const channelId = this.safeString(message, 'channelID');
1683
+ if (channelId !== undefined) {
1684
+ client.subscriptions[channelId] = message;
1685
+ }
1686
+ // const requestId = this.safeString (message, "reqid");
1687
+ // if (requestId in client.futures) {
1688
+ // delete client.futures[requestId];
1689
+ // }
1690
+ }
1691
+ handleErrorMessage(client, message) {
1692
+ //
1693
+ // {
1694
+ // "errorMessage": "Currency pair not in ISO 4217-A3 format foobar",
1695
+ // "event": "subscriptionStatus",
1696
+ // "pair": "foobar",
1697
+ // "reqid": 1574146735269,
1698
+ // "status": "error",
1699
+ // "subscription": { name: "ticker" }
1700
+ // }
1701
+ //
1702
+ // v2
1703
+ // {
1704
+ // "error": "Unsupported field: 'price' for the given msg type: add order",
1705
+ // "method": "add_order",
1706
+ // "success": false,
1707
+ // "time_in": "2025-05-13T08:59:44.803511Z",
1708
+ // "time_out": "2025-05-13T08:59:44.803542Z'
1709
+ // }
1710
+ //
1711
+ const errorMessage = this.safeString2(message, 'errorMessage', 'error');
1712
+ if (errorMessage !== undefined) {
1713
+ // const requestId = this.safeValue2 (message, 'reqid', 'req_id');
1714
+ const broad = this.exceptions['ws']['broad'];
1715
+ const broadKey = this.findBroadlyMatchedKey(broad, errorMessage);
1716
+ let exception = undefined;
1717
+ if (broadKey === undefined) {
1718
+ exception = new ExchangeError(errorMessage); // c# requirement to convert the errorMessage to string
1719
+ }
1720
+ else {
1721
+ exception = new broad[broadKey](errorMessage);
1722
+ }
1723
+ // if (requestId !== undefined) {
1724
+ // client.reject (exception, requestId);
1725
+ // } else {
1726
+ client.reject(exception);
1727
+ // }
1728
+ return false;
1729
+ }
1730
+ return true;
1731
+ }
1732
+ handleMessage(client, message) {
1733
+ if (Array.isArray(message)) {
1734
+ const channelId = this.safeString(message, 0);
1735
+ const subscription = this.safeValue(client.subscriptions, channelId, {});
1736
+ const info = this.safeValue(subscription, 'subscription', {});
1737
+ const messageLength = message.length;
1738
+ const channelName = this.safeString(message, messageLength - 2);
1739
+ const name = this.safeString(info, 'name');
1740
+ const methods = {
1741
+ // public
1742
+ 'ohlc': this.handleOHLCV,
1743
+ // private
1744
+ 'openOrders': this.handleOrders,
1745
+ 'ownTrades': this.handleMyTrades,
1746
+ };
1747
+ const method = this.safeValue2(methods, name, channelName);
1748
+ if (method !== undefined) {
1749
+ method.call(this, client, message, subscription);
1750
+ }
1751
+ }
1752
+ else {
1753
+ const channel = this.safeString(message, 'channel');
1754
+ if (channel !== undefined) {
1755
+ const methods = {
1756
+ 'balances': this.handleBalance,
1757
+ 'book': this.handleOrderBook,
1758
+ 'ticker': this.handleTicker,
1759
+ 'trade': this.handleTrades,
1760
+ };
1761
+ const method = this.safeValue(methods, channel);
1762
+ if (method !== undefined) {
1763
+ method.call(this, client, message);
1764
+ }
1765
+ }
1766
+ if (this.handleErrorMessage(client, message)) {
1767
+ const event = this.safeString2(message, 'event', 'method');
1768
+ const methods = {
1769
+ 'heartbeat': this.handleHeartbeat,
1770
+ 'systemStatus': this.handleSystemStatus,
1771
+ 'subscriptionStatus': this.handleSubscriptionStatus,
1772
+ 'add_order': this.handleCreateEditOrder,
1773
+ 'amend_order': this.handleCreateEditOrder,
1774
+ 'cancel_order': this.handleCancelOrder,
1775
+ 'cancel_all': this.handleCancelAllOrders,
1776
+ 'pong': this.handlePong,
1777
+ };
1778
+ const method = this.safeValue(methods, event);
1779
+ if (method !== undefined) {
1780
+ method.call(this, client, message);
1781
+ }
1782
+ }
1783
+ }
1784
+ }
1785
+ }