ccxt 4.2.10 → 4.2.12

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 (383) hide show
  1. package/README.md +5 -5
  2. package/build.sh +4 -4
  3. package/dist/ccxt.browser.js +695 -282
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/_virtual/agent.js +7 -0
  6. package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
  7. package/dist/cjs/_virtual/promisify.js +7 -0
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/js/ccxt.js +474 -0
  10. package/dist/cjs/js/src/abstract/ace.js +9 -0
  11. package/dist/cjs/js/src/abstract/alpaca.js +9 -0
  12. package/dist/cjs/js/src/abstract/ascendex.js +9 -0
  13. package/dist/cjs/js/src/abstract/bigone.js +9 -0
  14. package/dist/cjs/js/src/abstract/binance.js +9 -0
  15. package/dist/cjs/js/src/abstract/bingx.js +9 -0
  16. package/dist/cjs/js/src/abstract/bit2c.js +9 -0
  17. package/dist/cjs/js/src/abstract/bitbank.js +9 -0
  18. package/dist/cjs/js/src/abstract/bitbns.js +9 -0
  19. package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
  20. package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
  21. package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
  22. package/dist/cjs/js/src/abstract/bitforex.js +9 -0
  23. package/dist/cjs/js/src/abstract/bitget.js +9 -0
  24. package/dist/cjs/js/src/abstract/bithumb.js +9 -0
  25. package/dist/cjs/js/src/abstract/bitmart.js +9 -0
  26. package/dist/cjs/js/src/abstract/bitmex.js +9 -0
  27. package/dist/cjs/js/src/abstract/bitopro.js +9 -0
  28. package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
  29. package/dist/cjs/js/src/abstract/bitrue.js +9 -0
  30. package/dist/cjs/js/src/abstract/bitso.js +9 -0
  31. package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
  32. package/dist/cjs/js/src/abstract/bitteam.js +9 -0
  33. package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
  34. package/dist/cjs/js/src/abstract/bl3p.js +9 -0
  35. package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
  36. package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
  37. package/dist/cjs/js/src/abstract/btcbox.js +9 -0
  38. package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
  39. package/dist/cjs/js/src/abstract/btcturk.js +9 -0
  40. package/dist/cjs/js/src/abstract/bybit.js +9 -0
  41. package/dist/cjs/js/src/abstract/cex.js +9 -0
  42. package/dist/cjs/js/src/abstract/coinbase.js +9 -0
  43. package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
  44. package/dist/cjs/js/src/abstract/coincheck.js +9 -0
  45. package/dist/cjs/js/src/abstract/coinex.js +9 -0
  46. package/dist/cjs/js/src/abstract/coinlist.js +9 -0
  47. package/dist/cjs/js/src/abstract/coinmate.js +9 -0
  48. package/dist/cjs/js/src/abstract/coinone.js +9 -0
  49. package/dist/cjs/js/src/abstract/coinsph.js +9 -0
  50. package/dist/cjs/js/src/abstract/coinspot.js +9 -0
  51. package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
  52. package/dist/cjs/js/src/abstract/currencycom.js +9 -0
  53. package/dist/cjs/js/src/abstract/delta.js +9 -0
  54. package/dist/cjs/js/src/abstract/deribit.js +9 -0
  55. package/dist/cjs/js/src/abstract/digifinex.js +9 -0
  56. package/dist/cjs/js/src/abstract/exmo.js +9 -0
  57. package/dist/cjs/js/src/abstract/gate.js +9 -0
  58. package/dist/cjs/js/src/abstract/gemini.js +9 -0
  59. package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
  60. package/dist/cjs/js/src/abstract/hollaex.js +9 -0
  61. package/dist/cjs/js/src/abstract/htx.js +9 -0
  62. package/dist/cjs/js/src/abstract/huobijp.js +9 -0
  63. package/dist/cjs/js/src/abstract/idex.js +9 -0
  64. package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
  65. package/dist/cjs/js/src/abstract/indodax.js +9 -0
  66. package/dist/cjs/js/src/abstract/kraken.js +9 -0
  67. package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
  68. package/dist/cjs/js/src/abstract/kucoin.js +9 -0
  69. package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
  70. package/dist/cjs/js/src/abstract/kuna.js +9 -0
  71. package/dist/cjs/js/src/abstract/latoken.js +9 -0
  72. package/dist/cjs/js/src/abstract/lbank.js +9 -0
  73. package/dist/cjs/js/src/abstract/luno.js +9 -0
  74. package/dist/cjs/js/src/abstract/lykke.js +9 -0
  75. package/dist/cjs/js/src/abstract/mercado.js +9 -0
  76. package/dist/cjs/js/src/abstract/mexc.js +9 -0
  77. package/dist/cjs/js/src/abstract/ndax.js +9 -0
  78. package/dist/cjs/js/src/abstract/novadax.js +9 -0
  79. package/dist/cjs/js/src/abstract/oceanex.js +9 -0
  80. package/dist/cjs/js/src/abstract/okcoin.js +9 -0
  81. package/dist/cjs/js/src/abstract/okx.js +9 -0
  82. package/dist/cjs/js/src/abstract/p2b.js +9 -0
  83. package/dist/cjs/js/src/abstract/paymium.js +9 -0
  84. package/dist/cjs/js/src/abstract/phemex.js +9 -0
  85. package/dist/cjs/js/src/abstract/poloniex.js +9 -0
  86. package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
  87. package/dist/cjs/js/src/abstract/probit.js +9 -0
  88. package/dist/cjs/js/src/abstract/timex.js +9 -0
  89. package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
  90. package/dist/cjs/js/src/abstract/upbit.js +9 -0
  91. package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
  92. package/dist/cjs/js/src/abstract/wazirx.js +9 -0
  93. package/dist/cjs/js/src/abstract/whitebit.js +9 -0
  94. package/dist/cjs/js/src/abstract/woo.js +9 -0
  95. package/dist/cjs/js/src/abstract/yobit.js +9 -0
  96. package/dist/cjs/js/src/abstract/zaif.js +9 -0
  97. package/dist/cjs/js/src/abstract/zonda.js +9 -0
  98. package/dist/cjs/js/src/ace.js +1058 -0
  99. package/dist/cjs/js/src/alpaca.js +1125 -0
  100. package/dist/cjs/js/src/ascendex.js +3360 -0
  101. package/dist/cjs/js/src/base/Exchange.js +5110 -0
  102. package/dist/cjs/js/src/base/Precise.js +263 -0
  103. package/dist/cjs/js/src/base/errors.js +299 -0
  104. package/dist/cjs/js/src/base/functions/crypto.js +78 -0
  105. package/dist/cjs/js/src/base/functions/encode.js +44 -0
  106. package/dist/cjs/js/src/base/functions/generic.js +193 -0
  107. package/dist/cjs/js/src/base/functions/misc.js +96 -0
  108. package/dist/cjs/js/src/base/functions/number.js +297 -0
  109. package/dist/cjs/js/src/base/functions/platform.js +28 -0
  110. package/dist/cjs/js/src/base/functions/rsa.js +34 -0
  111. package/dist/cjs/js/src/base/functions/string.js +48 -0
  112. package/dist/cjs/js/src/base/functions/throttle.js +66 -0
  113. package/dist/cjs/js/src/base/functions/time.js +187 -0
  114. package/dist/cjs/js/src/base/functions/totp.js +24 -0
  115. package/dist/cjs/js/src/base/functions/type.js +162 -0
  116. package/dist/cjs/js/src/base/functions.js +157 -0
  117. package/dist/cjs/js/src/base/ws/Cache.js +254 -0
  118. package/dist/cjs/js/src/base/ws/Client.js +299 -0
  119. package/dist/cjs/js/src/base/ws/Future.js +34 -0
  120. package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
  121. package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
  122. package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
  123. package/dist/cjs/js/src/bequant.js +33 -0
  124. package/dist/cjs/js/src/bigone.js +2142 -0
  125. package/dist/cjs/js/src/binance.js +9729 -0
  126. package/dist/cjs/js/src/binancecoinm.js +45 -0
  127. package/dist/cjs/js/src/binanceus.js +84 -0
  128. package/dist/cjs/js/src/binanceusdm.js +58 -0
  129. package/dist/cjs/js/src/bingx.js +3737 -0
  130. package/dist/cjs/js/src/bit2c.js +916 -0
  131. package/dist/cjs/js/src/bitbank.js +1000 -0
  132. package/dist/cjs/js/src/bitbay.js +17 -0
  133. package/dist/cjs/js/src/bitbns.js +1220 -0
  134. package/dist/cjs/js/src/bitcoincom.js +17 -0
  135. package/dist/cjs/js/src/bitfinex.js +1670 -0
  136. package/dist/cjs/js/src/bitfinex2.js +2990 -0
  137. package/dist/cjs/js/src/bitflyer.js +1045 -0
  138. package/dist/cjs/js/src/bitforex.js +852 -0
  139. package/dist/cjs/js/src/bitget.js +8284 -0
  140. package/dist/cjs/js/src/bithumb.js +1090 -0
  141. package/dist/cjs/js/src/bitmart.js +4454 -0
  142. package/dist/cjs/js/src/bitmex.js +2884 -0
  143. package/dist/cjs/js/src/bitopro.js +1724 -0
  144. package/dist/cjs/js/src/bitpanda.js +2002 -0
  145. package/dist/cjs/js/src/bitrue.js +3253 -0
  146. package/dist/cjs/js/src/bitso.js +1753 -0
  147. package/dist/cjs/js/src/bitstamp.js +2188 -0
  148. package/dist/cjs/js/src/bitteam.js +2309 -0
  149. package/dist/cjs/js/src/bitvavo.js +1968 -0
  150. package/dist/cjs/js/src/bl3p.js +447 -0
  151. package/dist/cjs/js/src/blockchaincom.js +1160 -0
  152. package/dist/cjs/js/src/btcalpha.js +929 -0
  153. package/dist/cjs/js/src/btcbox.js +565 -0
  154. package/dist/cjs/js/src/btcmarkets.js +1237 -0
  155. package/dist/cjs/js/src/btcturk.js +929 -0
  156. package/dist/cjs/js/src/bybit.js +7646 -0
  157. package/dist/cjs/js/src/cex.js +1693 -0
  158. package/dist/cjs/js/src/coinbase.js +3274 -0
  159. package/dist/cjs/js/src/coinbasepro.js +1866 -0
  160. package/dist/cjs/js/src/coincheck.js +843 -0
  161. package/dist/cjs/js/src/coinex.js +5414 -0
  162. package/dist/cjs/js/src/coinlist.js +2329 -0
  163. package/dist/cjs/js/src/coinmate.js +989 -0
  164. package/dist/cjs/js/src/coinone.js +1185 -0
  165. package/dist/cjs/js/src/coinsph.js +1933 -0
  166. package/dist/cjs/js/src/coinspot.js +548 -0
  167. package/dist/cjs/js/src/cryptocom.js +3007 -0
  168. package/dist/cjs/js/src/currencycom.js +2015 -0
  169. package/dist/cjs/js/src/delta.js +3256 -0
  170. package/dist/cjs/js/src/deribit.js +3306 -0
  171. package/dist/cjs/js/src/digifinex.js +4307 -0
  172. package/dist/cjs/js/src/exmo.js +2645 -0
  173. package/dist/cjs/js/src/fmfwio.js +34 -0
  174. package/dist/cjs/js/src/gate.js +7054 -0
  175. package/dist/cjs/js/src/gateio.js +16 -0
  176. package/dist/cjs/js/src/gemini.js +1801 -0
  177. package/dist/cjs/js/src/hitbtc.js +3660 -0
  178. package/dist/cjs/js/src/hitbtc3.js +19 -0
  179. package/dist/cjs/js/src/hollaex.js +1882 -0
  180. package/dist/cjs/js/src/htx.js +9024 -0
  181. package/dist/cjs/js/src/huobi.js +16 -0
  182. package/dist/cjs/js/src/huobijp.js +1918 -0
  183. package/dist/cjs/js/src/idex.js +1770 -0
  184. package/dist/cjs/js/src/independentreserve.js +759 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2861 -0
  187. package/dist/cjs/js/src/krakenfutures.js +2407 -0
  188. package/dist/cjs/js/src/kucoin.js +4489 -0
  189. package/dist/cjs/js/src/kucoinfutures.js +2475 -0
  190. package/dist/cjs/js/src/kuna.js +1949 -0
  191. package/dist/cjs/js/src/latoken.js +1729 -0
  192. package/dist/cjs/js/src/lbank.js +2825 -0
  193. package/dist/cjs/js/src/luno.js +1044 -0
  194. package/dist/cjs/js/src/lykke.js +1303 -0
  195. package/dist/cjs/js/src/mercado.js +897 -0
  196. package/dist/cjs/js/src/mexc.js +5407 -0
  197. package/dist/cjs/js/src/ndax.js +2450 -0
  198. package/dist/cjs/js/src/novadax.js +1556 -0
  199. package/dist/cjs/js/src/oceanex.js +964 -0
  200. package/dist/cjs/js/src/okcoin.js +3115 -0
  201. package/dist/cjs/js/src/okx.js +7329 -0
  202. package/dist/cjs/js/src/p2b.js +1243 -0
  203. package/dist/cjs/js/src/paymium.js +597 -0
  204. package/dist/cjs/js/src/phemex.js +4715 -0
  205. package/dist/cjs/js/src/poloniex.js +2356 -0
  206. package/dist/cjs/js/src/poloniexfutures.js +1794 -0
  207. package/dist/cjs/js/src/pro/alpaca.js +714 -0
  208. package/dist/cjs/js/src/pro/ascendex.js +957 -0
  209. package/dist/cjs/js/src/pro/bequant.js +33 -0
  210. package/dist/cjs/js/src/pro/binance.js +2796 -0
  211. package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
  212. package/dist/cjs/js/src/pro/binanceus.js +51 -0
  213. package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
  214. package/dist/cjs/js/src/pro/bingx.js +944 -0
  215. package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
  216. package/dist/cjs/js/src/pro/bitfinex.js +672 -0
  217. package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
  218. package/dist/cjs/js/src/pro/bitget.js +1733 -0
  219. package/dist/cjs/js/src/pro/bitmart.js +1486 -0
  220. package/dist/cjs/js/src/pro/bitmex.js +1576 -0
  221. package/dist/cjs/js/src/pro/bitopro.js +327 -0
  222. package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
  223. package/dist/cjs/js/src/pro/bitrue.js +462 -0
  224. package/dist/cjs/js/src/pro/bitstamp.js +547 -0
  225. package/dist/cjs/js/src/pro/bitvavo.js +704 -0
  226. package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
  227. package/dist/cjs/js/src/pro/bybit.js +1843 -0
  228. package/dist/cjs/js/src/pro/cex.js +1510 -0
  229. package/dist/cjs/js/src/pro/coinbase.js +561 -0
  230. package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
  231. package/dist/cjs/js/src/pro/coinex.js +1095 -0
  232. package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
  233. package/dist/cjs/js/src/pro/currencycom.js +563 -0
  234. package/dist/cjs/js/src/pro/deribit.js +825 -0
  235. package/dist/cjs/js/src/pro/exmo.js +658 -0
  236. package/dist/cjs/js/src/pro/gate.js +1316 -0
  237. package/dist/cjs/js/src/pro/gateio.js +16 -0
  238. package/dist/cjs/js/src/pro/gemini.js +649 -0
  239. package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
  240. package/dist/cjs/js/src/pro/hollaex.js +597 -0
  241. package/dist/cjs/js/src/pro/htx.js +2383 -0
  242. package/dist/cjs/js/src/pro/huobi.js +16 -0
  243. package/dist/cjs/js/src/pro/huobijp.js +606 -0
  244. package/dist/cjs/js/src/pro/idex.js +714 -0
  245. package/dist/cjs/js/src/pro/independentreserve.js +280 -0
  246. package/dist/cjs/js/src/pro/kraken.js +1364 -0
  247. package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
  248. package/dist/cjs/js/src/pro/kucoin.js +1052 -0
  249. package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
  250. package/dist/cjs/js/src/pro/luno.js +322 -0
  251. package/dist/cjs/js/src/pro/mexc.js +1170 -0
  252. package/dist/cjs/js/src/pro/ndax.js +545 -0
  253. package/dist/cjs/js/src/pro/okcoin.js +760 -0
  254. package/dist/cjs/js/src/pro/okx.js +1558 -0
  255. package/dist/cjs/js/src/pro/phemex.js +1511 -0
  256. package/dist/cjs/js/src/pro/poloniex.js +1253 -0
  257. package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
  258. package/dist/cjs/js/src/pro/probit.js +586 -0
  259. package/dist/cjs/js/src/pro/upbit.js +234 -0
  260. package/dist/cjs/js/src/pro/wazirx.js +776 -0
  261. package/dist/cjs/js/src/pro/whitebit.js +927 -0
  262. package/dist/cjs/js/src/pro/woo.js +769 -0
  263. package/dist/cjs/js/src/probit.js +1865 -0
  264. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
  265. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
  266. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
  267. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
  268. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  269. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  270. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  271. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
  272. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
  273. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
  274. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
  275. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
  276. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
  277. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
  278. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
  279. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
  280. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
  281. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
  282. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
  283. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
  284. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
  285. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
  286. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
  287. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
  288. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
  289. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
  290. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
  291. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
  292. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
  293. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
  294. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
  295. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
  296. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
  297. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
  298. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
  299. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
  300. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
  301. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
  302. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
  303. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
  304. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
  305. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
  306. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
  307. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
  308. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
  309. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
  310. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
  311. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
  312. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
  313. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
  314. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
  315. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  316. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
  317. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
  318. package/dist/cjs/js/src/timex.js +1562 -0
  319. package/dist/cjs/js/src/tokocrypto.js +2542 -0
  320. package/dist/cjs/js/src/upbit.js +1844 -0
  321. package/dist/cjs/js/src/wavesexchange.js +2607 -0
  322. package/dist/cjs/js/src/wazirx.js +953 -0
  323. package/dist/cjs/js/src/whitebit.js +2309 -0
  324. package/dist/cjs/js/src/woo.js +2715 -0
  325. package/dist/cjs/js/src/yobit.js +1314 -0
  326. package/dist/cjs/js/src/zaif.js +736 -0
  327. package/dist/cjs/js/src/zonda.js +1883 -0
  328. package/dist/cjs/src/base/Exchange.js +11 -0
  329. package/dist/cjs/src/bingx.js +0 -10
  330. package/dist/cjs/src/bitget.js +14 -5
  331. package/dist/cjs/src/bybit.js +1 -1
  332. package/dist/cjs/src/kucoin.js +29 -5
  333. package/js/ccxt.d.ts +1 -1
  334. package/js/ccxt.js +1 -1
  335. package/js/src/abstract/bigone.d.ts +18 -0
  336. package/js/src/abstract/binance.d.ts +2 -0
  337. package/js/src/abstract/binancecoinm.d.ts +2 -0
  338. package/js/src/abstract/binanceus.d.ts +2 -0
  339. package/js/src/abstract/binanceusdm.d.ts +2 -0
  340. package/js/src/abstract/bybit.d.ts +1 -0
  341. package/js/src/abstract/gate.d.ts +11 -0
  342. package/js/src/abstract/gateio.d.ts +11 -0
  343. package/js/src/alpaca.js +18 -18
  344. package/js/src/base/Exchange.d.ts +6 -1
  345. package/js/src/base/Exchange.js +112 -12
  346. package/js/src/bigone.d.ts +1 -2
  347. package/js/src/bigone.js +340 -145
  348. package/js/src/binance.js +15 -8
  349. package/js/src/bingx.d.ts +0 -1
  350. package/js/src/bingx.js +9 -12
  351. package/js/src/bitfinex.d.ts +2 -2
  352. package/js/src/bitfinex.js +2 -3
  353. package/js/src/bitget.js +35 -13
  354. package/js/src/bitmart.d.ts +2 -2
  355. package/js/src/bitmart.js +3 -3
  356. package/js/src/bitmex.js +1 -0
  357. package/js/src/bybit.js +3 -1
  358. package/js/src/coinlist.js +2 -3
  359. package/js/src/coinsph.js +2 -3
  360. package/js/src/deribit.js +1 -0
  361. package/js/src/gate.d.ts +4 -4
  362. package/js/src/gate.js +22 -3
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.js +4 -7
  366. package/js/src/huobijp.js +2 -3
  367. package/js/src/kraken.js +1 -0
  368. package/js/src/kucoin.js +29 -5
  369. package/js/src/mexc.js +2 -1
  370. package/js/src/okx.js +13 -3
  371. package/js/src/pro/binance.d.ts +2 -23
  372. package/js/src/pro/binance.js +58 -22
  373. package/js/src/pro/coinbase.d.ts +2 -2
  374. package/js/src/pro/coinbase.js +4 -1
  375. package/js/src/pro/coinbasepro.d.ts +2 -2
  376. package/js/src/pro/hitbtc.d.ts +2 -2
  377. package/js/src/pro/poloniex.d.ts +2 -2
  378. package/js/src/upbit.d.ts +3 -101
  379. package/js/src/upbit.js +12 -12
  380. package/js/src/woo.js +2 -0
  381. package/package.json +11 -11
  382. package/skip-tests.json +5 -0
  383. package/tests-manager.sh +2 -2
@@ -0,0 +1,597 @@
1
+ 'use strict';
2
+
3
+ var hollaex$1 = require('../hollaex.js');
4
+ var errors = require('../base/errors.js');
5
+ var Cache = require('../base/ws/Cache.js');
6
+ var sha256 = require('../static_dependencies/noble-hashes/sha256.js');
7
+
8
+ // ---------------------------------------------------------------------------
9
+ // ---------------------------------------------------------------------------
10
+ class hollaex extends hollaex$1 {
11
+ describe() {
12
+ return this.deepExtend(super.describe(), {
13
+ 'has': {
14
+ 'ws': true,
15
+ 'watchBalance': true,
16
+ 'watchMyTrades': false,
17
+ 'watchOHLCV': false,
18
+ 'watchOrderBook': true,
19
+ 'watchOrders': true,
20
+ 'watchTicker': false,
21
+ 'watchTickers': false,
22
+ 'watchTrades': true,
23
+ },
24
+ 'urls': {
25
+ 'api': {
26
+ 'ws': 'wss://api.hollaex.com/stream',
27
+ },
28
+ 'test': {
29
+ 'ws': 'wss://api.sandbox.hollaex.com/stream',
30
+ },
31
+ },
32
+ 'options': {
33
+ 'watchBalance': {
34
+ // 'api-expires': undefined,
35
+ },
36
+ 'watchOrders': {
37
+ // 'api-expires': undefined,
38
+ },
39
+ },
40
+ 'streaming': {
41
+ 'ping': this.ping,
42
+ },
43
+ 'exceptions': {
44
+ 'ws': {
45
+ 'exact': {
46
+ 'Bearer or HMAC authentication required': errors.BadSymbol,
47
+ 'Error: wrong input': errors.BadRequest, // { error: 'Error: wrong input' }
48
+ },
49
+ },
50
+ },
51
+ });
52
+ }
53
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
54
+ /**
55
+ * @method
56
+ * @name hollaex#watchOrderBook
57
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
58
+ * @param {string} symbol unified symbol of the market to fetch the order book for
59
+ * @param {int} [limit] the maximum amount of order book entries to return
60
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
61
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
62
+ */
63
+ await this.loadMarkets();
64
+ const market = this.market(symbol);
65
+ const messageHash = 'orderbook' + ':' + market['id'];
66
+ const orderbook = await this.watchPublic(messageHash, params);
67
+ return orderbook.limit();
68
+ }
69
+ handleOrderBook(client, message) {
70
+ //
71
+ // {
72
+ // "topic":"orderbook",
73
+ // "action":"partial",
74
+ // "symbol":"ltc-usdt",
75
+ // "data":{
76
+ // "bids":[
77
+ // [104.29, 5.2264],
78
+ // [103.86,1.3629],
79
+ // [101.82,0.5942]
80
+ // ],
81
+ // "asks":[
82
+ // [104.81,9.5531],
83
+ // [105.54,0.6416],
84
+ // [106.18,1.4141],
85
+ // ],
86
+ // "timestamp":"2022-04-12T08:17:05.932Z"
87
+ // },
88
+ // "time":1649751425
89
+ // }
90
+ //
91
+ const marketId = this.safeString(message, 'symbol');
92
+ const channel = this.safeString(message, 'topic');
93
+ const market = this.safeMarket(marketId);
94
+ const symbol = market['symbol'];
95
+ const data = this.safeValue(message, 'data');
96
+ const timestamp = this.safeString(data, 'timestamp');
97
+ const timestampMs = this.parse8601(timestamp);
98
+ const snapshot = this.parseOrderBook(data, symbol, timestampMs);
99
+ let orderbook = undefined;
100
+ if (!(symbol in this.orderbooks)) {
101
+ orderbook = this.orderBook(snapshot);
102
+ this.orderbooks[symbol] = orderbook;
103
+ }
104
+ else {
105
+ orderbook = this.orderbooks[symbol];
106
+ orderbook.reset(snapshot);
107
+ }
108
+ const messageHash = channel + ':' + marketId;
109
+ client.resolve(orderbook, messageHash);
110
+ }
111
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
112
+ /**
113
+ * @method
114
+ * @name hollaex#watchTrades
115
+ * @description get the list of most recent trades for a particular symbol
116
+ * @param {string} symbol unified symbol of the market to fetch trades for
117
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
118
+ * @param {int} [limit] the maximum amount of trades to fetch
119
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
120
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
121
+ */
122
+ await this.loadMarkets();
123
+ const market = this.market(symbol);
124
+ symbol = market['symbol'];
125
+ const messageHash = 'trade' + ':' + market['id'];
126
+ const trades = await this.watchPublic(messageHash, params);
127
+ if (this.newUpdates) {
128
+ limit = trades.getLimit(symbol, limit);
129
+ }
130
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
131
+ }
132
+ handleTrades(client, message) {
133
+ //
134
+ // {
135
+ // "topic": "trade",
136
+ // "action": "partial",
137
+ // "symbol": "btc-usdt",
138
+ // "data": [
139
+ // {
140
+ // "size": 0.05145,
141
+ // "price": 41977.9,
142
+ // "side": "buy",
143
+ // "timestamp": "2022-04-11T09:40:10.881Z"
144
+ // },
145
+ // ]
146
+ // }
147
+ //
148
+ const channel = this.safeString(message, 'topic');
149
+ const marketId = this.safeString(message, 'symbol');
150
+ const market = this.safeMarket(marketId);
151
+ const symbol = market['symbol'];
152
+ let stored = this.safeValue(this.trades, symbol);
153
+ if (stored === undefined) {
154
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
155
+ stored = new Cache.ArrayCache(limit);
156
+ this.trades[symbol] = stored;
157
+ }
158
+ const data = this.safeValue(message, 'data', []);
159
+ const parsedTrades = this.parseTrades(data, market);
160
+ for (let j = 0; j < parsedTrades.length; j++) {
161
+ stored.append(parsedTrades[j]);
162
+ }
163
+ const messageHash = channel + ':' + marketId;
164
+ client.resolve(stored, messageHash);
165
+ client.resolve(stored, channel);
166
+ }
167
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
168
+ /**
169
+ * @method
170
+ * @name hollaex#watchMyTrades
171
+ * @description watches information on multiple trades made by the user
172
+ * @param {string} symbol unified market symbol of the market trades were made in
173
+ * @param {int} [since] the earliest time in ms to fetch trades for
174
+ * @param {int} [limit] the maximum number of trade structures to retrieve
175
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
176
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
177
+ */
178
+ await this.loadMarkets();
179
+ let messageHash = 'usertrade';
180
+ let market = undefined;
181
+ if (symbol !== undefined) {
182
+ market = this.market(symbol);
183
+ symbol = market['symbol'];
184
+ messageHash += ':' + market['id'];
185
+ }
186
+ const trades = await this.watchPrivate(messageHash, params);
187
+ if (this.newUpdates) {
188
+ limit = trades.getLimit(symbol, limit);
189
+ }
190
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
191
+ }
192
+ handleMyTrades(client, message, subscription = undefined) {
193
+ //
194
+ // {
195
+ // "topic":"usertrade",
196
+ // "action":"insert",
197
+ // "user_id":"103",
198
+ // "symbol":"xht-usdt",
199
+ // "data":[
200
+ // {
201
+ // "size":1,
202
+ // "side":"buy",
203
+ // "price":0.24,
204
+ // "symbol":"xht-usdt",
205
+ // "timestamp":"2022-05-13T09:30:15.014Z",
206
+ // "order_id":"6065a66e-e9a4-44a3-9726-4f8fa54b6bb6",
207
+ // "fee":0.001,
208
+ // "fee_coin":"xht",
209
+ // "is_same":true
210
+ // }
211
+ // ],
212
+ // "time":1652434215
213
+ // }
214
+ //
215
+ const channel = this.safeString(message, 'topic');
216
+ const rawTrades = this.safeValue(message, 'data');
217
+ // usually the first message is an empty array
218
+ // when the user does not have any trades yet
219
+ const dataLength = rawTrades.length;
220
+ if (dataLength === 0) {
221
+ return 0;
222
+ }
223
+ if (this.myTrades === undefined) {
224
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
225
+ this.myTrades = new Cache.ArrayCache(limit);
226
+ }
227
+ const stored = this.myTrades;
228
+ const marketIds = {};
229
+ for (let i = 0; i < rawTrades.length; i++) {
230
+ const trade = rawTrades[i];
231
+ const parsed = this.parseTrade(trade);
232
+ stored.append(parsed);
233
+ const symbol = trade['symbol'];
234
+ const market = this.market(symbol);
235
+ const marketId = market['id'];
236
+ marketIds[marketId] = true;
237
+ }
238
+ // non-symbol specific
239
+ client.resolve(this.myTrades, channel);
240
+ const keys = Object.keys(marketIds);
241
+ for (let i = 0; i < keys.length; i++) {
242
+ const marketId = keys[i];
243
+ const messageHash = channel + ':' + marketId;
244
+ client.resolve(this.myTrades, messageHash);
245
+ }
246
+ }
247
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
248
+ /**
249
+ * @method
250
+ * @name hollaex#watchOrders
251
+ * @description watches information on multiple orders made by the user
252
+ * @param {string} symbol unified market symbol of the market orders were made in
253
+ * @param {int} [since] the earliest time in ms to fetch orders for
254
+ * @param {int} [limit] the maximum number of order structures to retrieve
255
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
256
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
257
+ */
258
+ await this.loadMarkets();
259
+ let messageHash = 'order';
260
+ let market = undefined;
261
+ if (symbol !== undefined) {
262
+ market = this.market(symbol);
263
+ symbol = market['symbol'];
264
+ messageHash += ':' + market['id'];
265
+ }
266
+ const orders = await this.watchPrivate(messageHash, params);
267
+ if (this.newUpdates) {
268
+ limit = orders.getLimit(symbol, limit);
269
+ }
270
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
271
+ }
272
+ handleOrder(client, message, subscription = undefined) {
273
+ //
274
+ // {
275
+ // "topic": "order",
276
+ // "action": "insert",
277
+ // "user_id": 155328,
278
+ // "symbol": "ltc-usdt",
279
+ // "data": {
280
+ // "symbol": "ltc-usdt",
281
+ // "side": "buy",
282
+ // "size": 0.05,
283
+ // "type": "market",
284
+ // "price": 0,
285
+ // "fee_structure": { maker: 0.1, taker: 0.1 },
286
+ // "fee_coin": "ltc",
287
+ // "id": "ce38fd48-b336-400b-812b-60c636454231",
288
+ // "created_by": 155328,
289
+ // "filled": 0.05,
290
+ // "method": "market",
291
+ // "created_at": "2022-04-11T14:09:00.760Z",
292
+ // "updated_at": "2022-04-11T14:09:00.760Z",
293
+ // "status": "filled"
294
+ // },
295
+ // "time": 1649686140
296
+ // }
297
+ //
298
+ // {
299
+ // "topic":"order",
300
+ // "action":"partial",
301
+ // "user_id":155328,
302
+ // "data":[
303
+ // {
304
+ // "created_at":"2022-05-13T08:19:07.694Z",
305
+ // "fee":0,
306
+ // "meta":{
307
+ //
308
+ // },
309
+ // "symbol":"ltc-usdt",
310
+ // "side":"buy",
311
+ // "size":0.1,
312
+ // "type":"limit",
313
+ // "price":55,
314
+ // "fee_structure":{
315
+ // "maker":0.1,
316
+ // "taker":0.1
317
+ // },
318
+ // "fee_coin":"ltc",
319
+ // "id":"d5e77182-ad4c-4ac9-8ce4-a97f9b43e33c",
320
+ // "created_by":155328,
321
+ // "filled":0,
322
+ // "status":"new",
323
+ // "updated_at":"2022-05-13T08:19:07.694Z",
324
+ // "stop":null
325
+ // }
326
+ // ],
327
+ // "time":1652430035
328
+ // }
329
+ //
330
+ const channel = this.safeString(message, 'topic');
331
+ const data = this.safeValue(message, 'data', {});
332
+ // usually the first message is an empty array
333
+ const dataLength = data.length;
334
+ if (dataLength === 0) {
335
+ return 0;
336
+ }
337
+ if (this.orders === undefined) {
338
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
339
+ this.orders = new Cache.ArrayCacheBySymbolById(limit);
340
+ }
341
+ const stored = this.orders;
342
+ let rawOrders = undefined;
343
+ if (!Array.isArray(data)) {
344
+ rawOrders = [data];
345
+ }
346
+ else {
347
+ rawOrders = data;
348
+ }
349
+ const marketIds = {};
350
+ for (let i = 0; i < rawOrders.length; i++) {
351
+ const order = rawOrders[i];
352
+ const parsed = this.parseOrder(order);
353
+ stored.append(parsed);
354
+ const symbol = order['symbol'];
355
+ const market = this.market(symbol);
356
+ const marketId = market['id'];
357
+ marketIds[marketId] = true;
358
+ }
359
+ // non-symbol specific
360
+ client.resolve(this.orders, channel);
361
+ const keys = Object.keys(marketIds);
362
+ for (let i = 0; i < keys.length; i++) {
363
+ const marketId = keys[i];
364
+ const messageHash = channel + ':' + marketId;
365
+ client.resolve(this.orders, messageHash);
366
+ }
367
+ }
368
+ async watchBalance(params = {}) {
369
+ /**
370
+ * @method
371
+ * @name hollaex#watchBalance
372
+ * @description watch balance and get the amount of funds available for trading or funds locked in orders
373
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
374
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
375
+ */
376
+ const messageHash = 'wallet';
377
+ return await this.watchPrivate(messageHash, params);
378
+ }
379
+ handleBalance(client, message) {
380
+ //
381
+ // {
382
+ // "topic": "wallet",
383
+ // "action": "partial",
384
+ // "user_id": 155328,
385
+ // "data": {
386
+ // "eth_balance": 0,
387
+ // "eth_available": 0,
388
+ // "usdt_balance": 18.94344188,
389
+ // "usdt_available": 18.94344188,
390
+ // "ltc_balance": 0.00005,
391
+ // "ltc_available": 0.00005,
392
+ // },
393
+ // "time": 1649687396
394
+ // }
395
+ //
396
+ const messageHash = this.safeString(message, 'topic');
397
+ const data = this.safeValue(message, 'data');
398
+ const keys = Object.keys(data);
399
+ const timestamp = this.safeTimestamp(message, 'time');
400
+ this.balance['info'] = data;
401
+ this.balance['timestamp'] = timestamp;
402
+ this.balance['datetime'] = this.iso8601(timestamp);
403
+ for (let i = 0; i < keys.length; i++) {
404
+ const key = keys[i];
405
+ const parts = key.split('_');
406
+ const currencyId = this.safeString(parts, 0);
407
+ const code = this.safeCurrencyCode(currencyId);
408
+ const account = (code in this.balance) ? this.balance[code] : this.account();
409
+ const second = this.safeString(parts, 1);
410
+ const freeOrTotal = (second === 'available') ? 'free' : 'total';
411
+ account[freeOrTotal] = this.safeString(data, key);
412
+ this.balance[code] = account;
413
+ }
414
+ this.balance = this.safeBalance(this.balance);
415
+ client.resolve(this.balance, messageHash);
416
+ }
417
+ async watchPublic(messageHash, params = {}) {
418
+ const url = this.urls['api']['ws'];
419
+ const request = {
420
+ 'op': 'subscribe',
421
+ 'args': [messageHash],
422
+ };
423
+ const message = this.extend(request, params);
424
+ return await this.watch(url, messageHash, message, messageHash);
425
+ }
426
+ async watchPrivate(messageHash, params = {}) {
427
+ this.checkRequiredCredentials();
428
+ let expires = this.safeString(this.options, 'ws-expires');
429
+ if (expires === undefined) {
430
+ const timeout = parseInt((this.timeout / 1000).toString());
431
+ expires = this.sum(this.seconds(), timeout);
432
+ expires = expires.toString();
433
+ // we need to memoize these values to avoid generating a new url on each method execution
434
+ // that would trigger a new connection on each received message
435
+ this.options['ws-expires'] = expires;
436
+ }
437
+ const url = this.urls['api']['ws'];
438
+ const auth = 'CONNECT' + '/stream' + expires;
439
+ const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256.sha256);
440
+ const authParams = {
441
+ 'api-key': this.apiKey,
442
+ 'api-signature': signature,
443
+ 'api-expires': expires,
444
+ };
445
+ const signedUrl = url + '?' + this.urlencode(authParams);
446
+ const request = {
447
+ 'op': 'subscribe',
448
+ 'args': [messageHash],
449
+ };
450
+ const message = this.extend(request, params);
451
+ return await this.watch(signedUrl, messageHash, message, messageHash);
452
+ }
453
+ handleErrorMessage(client, message) {
454
+ //
455
+ // { error: "Bearer or HMAC authentication required" }
456
+ // { error: "Error: wrong input" }
457
+ //
458
+ const error = this.safeInteger(message, 'error');
459
+ try {
460
+ if (error !== undefined) {
461
+ const feedback = this.id + ' ' + this.json(message);
462
+ this.throwExactlyMatchedException(this.exceptions['ws']['exact'], error, feedback);
463
+ }
464
+ }
465
+ catch (e) {
466
+ if (e instanceof errors.AuthenticationError) {
467
+ return false;
468
+ }
469
+ }
470
+ return message;
471
+ }
472
+ handleMessage(client, message) {
473
+ //
474
+ // pong
475
+ //
476
+ // { message: "pong" }
477
+ //
478
+ // trade
479
+ //
480
+ // {
481
+ // "topic": "trade",
482
+ // "action": "partial",
483
+ // "symbol": "btc-usdt",
484
+ // "data": [
485
+ // {
486
+ // "size": 0.05145,
487
+ // "price": 41977.9,
488
+ // "side": "buy",
489
+ // "timestamp": "2022-04-11T09:40:10.881Z"
490
+ // },
491
+ // ]
492
+ // }
493
+ //
494
+ // orderbook
495
+ //
496
+ // {
497
+ // "topic": "orderbook",
498
+ // "action": "partial",
499
+ // "symbol": "ltc-usdt",
500
+ // "data": {
501
+ // "bids": [
502
+ // [104.29, 5.2264],
503
+ // [103.86,1.3629],
504
+ // [101.82,0.5942]
505
+ // ],
506
+ // "asks": [
507
+ // [104.81,9.5531],
508
+ // [105.54,0.6416],
509
+ // [106.18,1.4141],
510
+ // ],
511
+ // "timestamp": "2022-04-11T10:37:01.227Z"
512
+ // },
513
+ // "time": 1649673421
514
+ // }
515
+ //
516
+ // order
517
+ //
518
+ // {
519
+ // "topic": "order",
520
+ // "action": "insert",
521
+ // "user_id": 155328,
522
+ // "symbol": "ltc-usdt",
523
+ // "data": {
524
+ // "symbol": "ltc-usdt",
525
+ // "side": "buy",
526
+ // "size": 0.05,
527
+ // "type": "market",
528
+ // "price": 0,
529
+ // "fee_structure": { maker: 0.1, taker: 0.1 },
530
+ // "fee_coin": "ltc",
531
+ // "id": "ce38fd48-b336-400b-812b-60c636454231",
532
+ // "created_by": 155328,
533
+ // "filled": 0.05,
534
+ // "method": "market",
535
+ // "created_at": "2022-04-11T14:09:00.760Z",
536
+ // "updated_at": "2022-04-11T14:09:00.760Z",
537
+ // "status": "filled"
538
+ // },
539
+ // "time": 1649686140
540
+ // }
541
+ //
542
+ // balance
543
+ //
544
+ // {
545
+ // "topic": "wallet",
546
+ // "action": "partial",
547
+ // "user_id": 155328,
548
+ // "data": {
549
+ // "eth_balance": 0,
550
+ // "eth_available": 0,
551
+ // "usdt_balance": 18.94344188,
552
+ // "usdt_available": 18.94344188,
553
+ // "ltc_balance": 0.00005,
554
+ // "ltc_available": 0.00005,
555
+ // }
556
+ // }
557
+ //
558
+ if (!this.handleErrorMessage(client, message)) {
559
+ return;
560
+ }
561
+ const content = this.safeString(message, 'message');
562
+ if (content === 'pong') {
563
+ this.handlePong(client, message);
564
+ return;
565
+ }
566
+ const methods = {
567
+ 'trade': this.handleTrades,
568
+ 'orderbook': this.handleOrderBook,
569
+ 'order': this.handleOrder,
570
+ 'wallet': this.handleBalance,
571
+ 'usertrade': this.handleMyTrades,
572
+ };
573
+ const topic = this.safeValue(message, 'topic');
574
+ const method = this.safeValue(methods, topic);
575
+ if (method !== undefined) {
576
+ method.call(this, client, message);
577
+ }
578
+ }
579
+ ping(client) {
580
+ // hollaex does not support built-in ws protocol-level ping-pong
581
+ return { 'op': 'ping' };
582
+ }
583
+ handlePong(client, message) {
584
+ client.lastPong = this.milliseconds();
585
+ return message;
586
+ }
587
+ onError(client, error) {
588
+ this.options['ws-expires'] = undefined;
589
+ this.onError(client, error);
590
+ }
591
+ onClose(client, error) {
592
+ this.options['ws-expires'] = undefined;
593
+ this.onClose(client, error);
594
+ }
595
+ }
596
+
597
+ module.exports = hollaex;