ccxt 4.2.11 → 4.2.13

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 (392) hide show
  1. package/README.md +5 -5
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +1347 -490
  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 +2209 -0
  125. package/dist/cjs/js/src/binance.js +9736 -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 +3807 -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 +8291 -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 +3424 -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 +7072 -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 +9049 -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 +761 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2857 -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 +2851 -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 +7330 -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 +4722 -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 +1608 -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 +1867 -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 +2765 -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/js/ccxt.d.ts +1 -1
  329. package/js/ccxt.js +1 -1
  330. package/js/src/abstract/bigone.d.ts +18 -0
  331. package/js/src/abstract/binance.d.ts +2 -0
  332. package/js/src/abstract/binancecoinm.d.ts +2 -0
  333. package/js/src/abstract/binanceus.d.ts +2 -0
  334. package/js/src/abstract/binanceusdm.d.ts +2 -0
  335. package/js/src/abstract/bingx.d.ts +2 -0
  336. package/js/src/abstract/bybit.d.ts +1 -0
  337. package/js/src/abstract/gate.d.ts +11 -0
  338. package/js/src/abstract/gateio.d.ts +11 -0
  339. package/js/src/abstract/okx.d.ts +1 -0
  340. package/js/src/alpaca.js +18 -18
  341. package/js/src/base/Exchange.d.ts +5 -1
  342. package/js/src/base/Exchange.js +101 -12
  343. package/js/src/bigone.d.ts +3 -2
  344. package/js/src/bigone.js +429 -167
  345. package/js/src/binance.js +48 -34
  346. package/js/src/bingx.js +115 -38
  347. package/js/src/bitfinex.d.ts +2 -2
  348. package/js/src/bitfinex.js +2 -3
  349. package/js/src/bitget.js +33 -13
  350. package/js/src/bitmart.d.ts +2 -2
  351. package/js/src/bitmart.js +5 -5
  352. package/js/src/bitmex.js +1 -0
  353. package/js/src/bybit.js +2 -0
  354. package/js/src/coinbase.d.ts +26 -3
  355. package/js/src/coinbase.js +176 -26
  356. package/js/src/coinlist.js +3 -4
  357. package/js/src/coinone.js +1 -1
  358. package/js/src/coinsph.js +2 -3
  359. package/js/src/deribit.js +1 -0
  360. package/js/src/gate.d.ts +4 -4
  361. package/js/src/gate.js +96 -59
  362. package/js/src/gemini.js +1 -1
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.d.ts +1 -0
  366. package/js/src/htx.js +29 -7
  367. package/js/src/huobijp.js +2 -3
  368. package/js/src/independentreserve.js +7 -5
  369. package/js/src/kraken.js +3 -6
  370. package/js/src/lbank.js +59 -33
  371. package/js/src/mexc.js +2 -1
  372. package/js/src/oceanex.js +1 -1
  373. package/js/src/okx.js +14 -3
  374. package/js/src/phemex.js +9 -2
  375. package/js/src/pro/binance.d.ts +2 -23
  376. package/js/src/pro/binance.js +58 -22
  377. package/js/src/pro/coinbase.d.ts +2 -2
  378. package/js/src/pro/coinbase.js +4 -1
  379. package/js/src/pro/coinbasepro.d.ts +2 -2
  380. package/js/src/pro/hitbtc.d.ts +2 -2
  381. package/js/src/pro/kraken.js +1 -1
  382. package/js/src/pro/okx.d.ts +1 -0
  383. package/js/src/pro/okx.js +52 -2
  384. package/js/src/pro/poloniex.d.ts +2 -2
  385. package/js/src/probit.js +4 -2
  386. package/js/src/upbit.d.ts +3 -101
  387. package/js/src/upbit.js +12 -12
  388. package/js/src/wavesexchange.js +1 -1
  389. package/js/src/woo.d.ts +2 -0
  390. package/js/src/woo.js +52 -0
  391. package/package.json +1 -1
  392. package/skip-tests.json +5 -0
@@ -0,0 +1,586 @@
1
+ 'use strict';
2
+
3
+ var probit$1 = require('../probit.js');
4
+ var errors = require('../base/errors.js');
5
+ var Cache = require('../base/ws/Cache.js');
6
+
7
+ // ---------------------------------------------------------------------------
8
+ class probit extends probit$1 {
9
+ describe() {
10
+ return this.deepExtend(super.describe(), {
11
+ 'has': {
12
+ 'ws': true,
13
+ 'watchBalance': true,
14
+ 'watchTicker': true,
15
+ 'watchTickers': false,
16
+ 'watchTrades': true,
17
+ 'watchMyTrades': true,
18
+ 'watchOrders': true,
19
+ 'watchOrderBook': true,
20
+ 'watchOHLCV': false,
21
+ },
22
+ 'urls': {
23
+ 'api': {
24
+ 'ws': 'wss://api.probit.com/api/exchange/v1/ws',
25
+ },
26
+ 'test': {
27
+ 'ws': 'wss://demo-api.probit.com/api/exchange/v1/ws',
28
+ },
29
+ },
30
+ 'options': {
31
+ 'watchOrderBook': {
32
+ 'filter': 'order_books_l2',
33
+ 'interval': 100, // or 500
34
+ },
35
+ 'watchTrades': {
36
+ 'filter': 'recent_trades',
37
+ },
38
+ 'watchTicker': {
39
+ 'filter': 'ticker',
40
+ },
41
+ 'watchOrders': {
42
+ 'channel': 'open_order',
43
+ },
44
+ },
45
+ 'streaming': {},
46
+ 'exceptions': {},
47
+ });
48
+ }
49
+ async watchBalance(params = {}) {
50
+ /**
51
+ * @method
52
+ * @name probit#watchBalance
53
+ * @description watch balance and get the amount of funds available for trading or funds locked in orders
54
+ * @see https://docs-en.probit.com/reference/balance-1
55
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
56
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
57
+ */
58
+ await this.authenticate(params);
59
+ const messageHash = 'balance';
60
+ const url = this.urls['api']['ws'];
61
+ const subscribe = {
62
+ 'type': 'subscribe',
63
+ 'channel': 'balance',
64
+ };
65
+ const request = this.extend(subscribe, params);
66
+ return await this.watch(url, messageHash, request, messageHash);
67
+ }
68
+ handleBalance(client, message) {
69
+ //
70
+ // {
71
+ // "channel": "balance",
72
+ // "reset": false,
73
+ // "data": {
74
+ // "USDT": {
75
+ // "available": "15",
76
+ // "total": "15"
77
+ // }
78
+ // }
79
+ // }
80
+ //
81
+ const messageHash = 'balance';
82
+ this.parseWSBalance(message);
83
+ client.resolve(this.balance, messageHash);
84
+ }
85
+ parseWSBalance(message) {
86
+ //
87
+ // {
88
+ // "channel": "balance",
89
+ // "reset": false,
90
+ // "data": {
91
+ // "USDT": {
92
+ // "available": "15",
93
+ // "total": "15"
94
+ // }
95
+ // }
96
+ // }
97
+ //
98
+ const reset = this.safeValue(message, 'reset', false);
99
+ const data = this.safeValue(message, 'data', {});
100
+ const currencyIds = Object.keys(data);
101
+ if (reset) {
102
+ this.balance = {};
103
+ }
104
+ for (let i = 0; i < currencyIds.length; i++) {
105
+ const currencyId = currencyIds[i];
106
+ const entry = data[currencyId];
107
+ const code = this.safeCurrencyCode(currencyId);
108
+ const account = this.account();
109
+ account['free'] = this.safeString(entry, 'available');
110
+ account['total'] = this.safeString(entry, 'total');
111
+ this.balance[code] = account;
112
+ }
113
+ this.balance = this.safeBalance(this.balance);
114
+ }
115
+ async watchTicker(symbol, params = {}) {
116
+ /**
117
+ * @method
118
+ * @name probit#watchTicker
119
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
120
+ * @see https://docs-en.probit.com/reference/marketdata
121
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
122
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
123
+ * @param {int} [params.interval] Unit time to synchronize market information (ms). Available units: 100, 500
124
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
125
+ */
126
+ let filter = undefined;
127
+ [filter, params] = this.handleOptionAndParams(params, 'watchTicker', 'filter', 'ticker');
128
+ return await this.subscribeOrderBook(symbol, 'ticker', filter, params);
129
+ }
130
+ handleTicker(client, message) {
131
+ //
132
+ // {
133
+ // "channel": "marketdata",
134
+ // "market_id": "BTC-USDT",
135
+ // "status": "ok",
136
+ // "lag": 0,
137
+ // "ticker": {
138
+ // "time": "2022-07-21T14:18:04.000Z",
139
+ // "last": "22591.3",
140
+ // "low": "22500.1",
141
+ // "high": "39790.7",
142
+ // "change": "-1224",
143
+ // "base_volume": "1002.32005445",
144
+ // "quote_volume": "23304489.385351021"
145
+ // },
146
+ // "reset": true
147
+ // }
148
+ //
149
+ const marketId = this.safeString(message, 'market_id');
150
+ const symbol = this.safeSymbol(marketId);
151
+ const ticker = this.safeValue(message, 'ticker', {});
152
+ const market = this.safeMarket(marketId);
153
+ const parsedTicker = this.parseTicker(ticker, market);
154
+ const messageHash = 'ticker:' + symbol;
155
+ this.tickers[symbol] = parsedTicker;
156
+ client.resolve(parsedTicker, messageHash);
157
+ }
158
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
159
+ /**
160
+ * @method
161
+ * @name probit#watchTrades
162
+ * @description get the list of most recent trades for a particular symbol
163
+ * @see https://docs-en.probit.com/reference/trade_history
164
+ * @param {string} symbol unified symbol of the market to fetch trades for
165
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
166
+ * @param {int} [limit] the maximum amount of trades to fetch
167
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
168
+ * @param {int} [params.interval] Unit time to synchronize market information (ms). Available units: 100, 500
169
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
170
+ */
171
+ let filter = undefined;
172
+ [filter, params] = this.handleOptionAndParams(params, 'watchTrades', 'filter', 'recent_trades');
173
+ const trades = await this.subscribeOrderBook(symbol, 'trades', filter, params);
174
+ if (this.newUpdates) {
175
+ limit = trades.getLimit(symbol, limit);
176
+ }
177
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
178
+ }
179
+ handleTrades(client, message) {
180
+ //
181
+ // {
182
+ // "channel": "marketdata",
183
+ // "market_id": "BTC-USDT",
184
+ // "status": "ok",
185
+ // "lag": 0,
186
+ // "recent_trades": [
187
+ // {
188
+ // "id": "BTC-USDT:8010233",
189
+ // "price": "22701.4",
190
+ // "quantity": "0.011011",
191
+ // "time": "2022-07-21T13:40:40.983Z",
192
+ // "side": "buy",
193
+ // "tick_direction": "up"
194
+ // }
195
+ // ...
196
+ // ]
197
+ // "reset": true
198
+ // }
199
+ //
200
+ const marketId = this.safeString(message, 'market_id');
201
+ const symbol = this.safeSymbol(marketId);
202
+ const market = this.safeMarket(marketId);
203
+ const trades = this.safeValue(message, 'recent_trades', []);
204
+ const reset = this.safeValue(message, 'reset', false);
205
+ const messageHash = 'trades:' + symbol;
206
+ let stored = this.safeValue(this.trades, symbol);
207
+ if (stored === undefined || reset) {
208
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
209
+ stored = new Cache.ArrayCache(limit);
210
+ this.trades[symbol] = stored;
211
+ }
212
+ for (let i = 0; i < trades.length; i++) {
213
+ const trade = trades[i];
214
+ const parsed = this.parseTrade(trade, market);
215
+ stored.append(parsed);
216
+ }
217
+ this.trades[symbol] = stored;
218
+ client.resolve(this.trades[symbol], messageHash);
219
+ }
220
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
221
+ /**
222
+ * @method
223
+ * @name probit#watchMyTrades
224
+ * @description get the list of trades associated with the user
225
+ * @param {string} symbol unified symbol of the market to fetch trades for
226
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
227
+ * @param {int} [limit] the maximum amount of trades to fetch
228
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
229
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
230
+ */
231
+ await this.loadMarkets();
232
+ await this.authenticate(params);
233
+ let messageHash = 'myTrades';
234
+ if (symbol !== undefined) {
235
+ const market = this.market(symbol);
236
+ symbol = market['symbol'];
237
+ messageHash = messageHash + ':' + symbol;
238
+ }
239
+ const url = this.urls['api']['ws'];
240
+ const channel = 'trade_history';
241
+ const message = {
242
+ 'type': 'subscribe',
243
+ 'channel': channel,
244
+ };
245
+ const request = this.extend(message, params);
246
+ const trades = await this.watch(url, messageHash, request, channel);
247
+ if (this.newUpdates) {
248
+ limit = trades.getLimit(symbol, limit);
249
+ }
250
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
251
+ }
252
+ handleMyTrades(client, message) {
253
+ //
254
+ // {
255
+ // "channel": "trade_history",
256
+ // "reset": false,
257
+ // "data": [{
258
+ // "id": "BTC-USDT:8010722",
259
+ // "order_id": "4124999207",
260
+ // "side": "buy",
261
+ // "fee_amount": "0.0134999868096",
262
+ // "fee_currency_id": "USDT",
263
+ // "status": "settled",
264
+ // "price": "23136.7",
265
+ // "quantity": "0.00032416",
266
+ // "cost": "7.499992672",
267
+ // "time": "2022-07-21T17:09:33.056Z",
268
+ // "market_id": "BTC-USDT"
269
+ // }]
270
+ // }
271
+ //
272
+ const rawTrades = this.safeValue(message, 'data', []);
273
+ const length = rawTrades.length;
274
+ if (length === 0) {
275
+ return;
276
+ }
277
+ const reset = this.safeValue(message, 'reset', false);
278
+ const messageHash = 'myTrades';
279
+ let stored = this.myTrades;
280
+ if ((stored === undefined) || reset) {
281
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
282
+ stored = new Cache.ArrayCacheBySymbolById(limit);
283
+ this.myTrades = stored;
284
+ }
285
+ const trades = this.parseTrades(rawTrades);
286
+ const tradeSymbols = {};
287
+ for (let j = 0; j < trades.length; j++) {
288
+ const trade = trades[j];
289
+ tradeSymbols[trade['symbol']] = true;
290
+ stored.append(trade);
291
+ }
292
+ const unique = Object.keys(tradeSymbols);
293
+ for (let i = 0; i < unique.length; i++) {
294
+ const symbol = unique[i];
295
+ const symbolSpecificMessageHash = messageHash + ':' + symbol;
296
+ client.resolve(stored, symbolSpecificMessageHash);
297
+ }
298
+ client.resolve(stored, messageHash);
299
+ }
300
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
301
+ /**
302
+ * @method
303
+ * @name probit#watchOrders
304
+ * @description watches information on an order made by the user
305
+ * @see https://docs-en.probit.com/reference/open_order
306
+ * @param {string} symbol unified symbol of the market the order was made in
307
+ * @param {int} [since] timestamp in ms of the earliest order to watch
308
+ * @param {int} [limit] the maximum amount of orders to watch
309
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
310
+ * @param {string} [params.channel] choose what channel to use. Can open_order or order_history.
311
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
312
+ */
313
+ await this.authenticate(params);
314
+ const url = this.urls['api']['ws'];
315
+ let messageHash = 'orders';
316
+ if (symbol !== undefined) {
317
+ const market = this.market(symbol);
318
+ symbol = market['symbol'];
319
+ messageHash = messageHash + ':' + symbol;
320
+ }
321
+ let channel = undefined;
322
+ [channel, params] = this.handleOptionAndParams(params, 'watchOrders', 'channel', 'open_order');
323
+ const subscribe = {
324
+ 'type': 'subscribe',
325
+ 'channel': channel,
326
+ };
327
+ const request = this.extend(subscribe, params);
328
+ const orders = await this.watch(url, messageHash, request, channel);
329
+ if (this.newUpdates) {
330
+ limit = orders.getLimit(symbol, limit);
331
+ }
332
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
333
+ }
334
+ handleOrders(client, message) {
335
+ //
336
+ // {
337
+ // "channel": "order_history",
338
+ // "reset": true,
339
+ // "data": [{
340
+ // "id": "4124999207",
341
+ // "user_id": "633dc56a-621b-4680-8a4e-85a823499b6d",
342
+ // "market_id": "BTC-USDT",
343
+ // "type": "market",
344
+ // "side": "buy",
345
+ // "limit_price": "0",
346
+ // "time_in_force": "ioc",
347
+ // "filled_cost": "7.499992672",
348
+ // "filled_quantity": "0.00032416",
349
+ // "open_quantity": "0",
350
+ // "status": "filled",
351
+ // "time": "2022-07-21T17:09:33.056Z",
352
+ // "client_order_id": '',
353
+ // "cost": "7.5"
354
+ // },
355
+ // ...
356
+ // ]
357
+ // }
358
+ //
359
+ const rawOrders = this.safeValue(message, 'data', []);
360
+ const length = rawOrders.length;
361
+ if (length === 0) {
362
+ return;
363
+ }
364
+ const messageHash = 'orders';
365
+ const reset = this.safeValue(message, 'reset', false);
366
+ let stored = this.orders;
367
+ if (stored === undefined || reset) {
368
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
369
+ stored = new Cache.ArrayCacheBySymbolById(limit);
370
+ this.orders = stored;
371
+ }
372
+ const orderSymbols = {};
373
+ for (let i = 0; i < rawOrders.length; i++) {
374
+ const rawOrder = rawOrders[i];
375
+ const order = this.parseOrder(rawOrder);
376
+ orderSymbols[order['symbol']] = true;
377
+ stored.append(order);
378
+ }
379
+ const unique = Object.keys(orderSymbols);
380
+ for (let i = 0; i < unique.length; i++) {
381
+ const symbol = unique[i];
382
+ const symbolSpecificMessageHash = messageHash + ':' + symbol;
383
+ client.resolve(stored, symbolSpecificMessageHash);
384
+ }
385
+ client.resolve(stored, messageHash);
386
+ }
387
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
388
+ /**
389
+ * @method
390
+ * @name probit#watchOrderBook
391
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
392
+ * @see https://docs-en.probit.com/reference/marketdata
393
+ * @param {string} symbol unified symbol of the market to fetch the order book for
394
+ * @param {int} [limit] the maximum amount of order book entries to return
395
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
396
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
397
+ */
398
+ let filter = undefined;
399
+ [filter, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'filter', 'order_books');
400
+ const orderbook = await this.subscribeOrderBook(symbol, 'orderbook', filter, params);
401
+ return orderbook.limit();
402
+ }
403
+ async subscribeOrderBook(symbol, messageHash, filter, params = {}) {
404
+ await this.loadMarkets();
405
+ const market = this.market(symbol);
406
+ symbol = market['symbol'];
407
+ const url = this.urls['api']['ws'];
408
+ const client = this.client(url);
409
+ let interval = undefined;
410
+ [interval, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'interval', 100);
411
+ const subscriptionHash = 'marketdata:' + symbol;
412
+ messageHash = messageHash + ':' + symbol;
413
+ let filters = {};
414
+ if (subscriptionHash in client.subscriptions) {
415
+ // already subscribed
416
+ filters = client.subscriptions[subscriptionHash];
417
+ if (!(filter in filters)) {
418
+ // resubscribe
419
+ delete client.subscriptions[subscriptionHash];
420
+ }
421
+ }
422
+ filters[filter] = true;
423
+ const keys = Object.keys(filters);
424
+ const message = {
425
+ 'channel': 'marketdata',
426
+ 'interval': interval,
427
+ 'market_id': market['id'],
428
+ 'type': 'subscribe',
429
+ 'filter': keys,
430
+ };
431
+ const request = this.extend(message, params);
432
+ return await this.watch(url, messageHash, request, messageHash, filters);
433
+ }
434
+ handleOrderBook(client, message, orderBook) {
435
+ //
436
+ // {
437
+ // "channel": "marketdata",
438
+ // "market_id": "BTC-USDT",
439
+ // "status": "ok",
440
+ // "lag": 0,
441
+ // "order_books": [
442
+ // { side: "buy", price: '1420.7', quantity: "0.057" },
443
+ // ...
444
+ // ],
445
+ // "reset": true
446
+ // }
447
+ //
448
+ const marketId = this.safeString(message, 'market_id');
449
+ const symbol = this.safeSymbol(marketId);
450
+ const dataBySide = this.groupBy(orderBook, 'side');
451
+ const messageHash = 'orderbook:' + symbol;
452
+ let storedOrderBook = this.safeValue(this.orderbooks, symbol);
453
+ if (storedOrderBook === undefined) {
454
+ storedOrderBook = this.orderBook({});
455
+ this.orderbooks[symbol] = storedOrderBook;
456
+ }
457
+ const reset = this.safeValue(message, 'reset', false);
458
+ if (reset) {
459
+ const snapshot = this.parseOrderBook(dataBySide, symbol, undefined, 'buy', 'sell', 'price', 'quantity');
460
+ storedOrderBook.reset(snapshot);
461
+ }
462
+ else {
463
+ this.handleDelta(storedOrderBook, dataBySide);
464
+ }
465
+ client.resolve(storedOrderBook, messageHash);
466
+ }
467
+ handleBidAsks(bookSide, bidAsks) {
468
+ for (let i = 0; i < bidAsks.length; i++) {
469
+ const bidAsk = bidAsks[i];
470
+ const parsed = this.parseBidAsk(bidAsk, 'price', 'quantity');
471
+ bookSide.storeArray(parsed);
472
+ }
473
+ }
474
+ handleDelta(orderbook, delta) {
475
+ const storedBids = orderbook['bids'];
476
+ const storedAsks = orderbook['asks'];
477
+ const asks = this.safeValue(delta, 'sell', []);
478
+ const bids = this.safeValue(delta, 'buy', []);
479
+ this.handleBidAsks(storedBids, bids);
480
+ this.handleBidAsks(storedAsks, asks);
481
+ }
482
+ handleErrorMessage(client, message) {
483
+ //
484
+ // {
485
+ // "errorCode": "INVALID_ARGUMENT",
486
+ // "message": '',
487
+ // "details": {
488
+ // "interval": "invalid"
489
+ // }
490
+ // }
491
+ //
492
+ const code = this.safeString(message, 'errorCode');
493
+ const errMessage = this.safeString(message, 'message', '');
494
+ const details = this.safeValue(message, 'details');
495
+ // todo - throw properly here
496
+ throw new errors.ExchangeError(this.id + ' ' + code + ' ' + errMessage + ' ' + this.json(details));
497
+ }
498
+ handleAuthenticate(client, message) {
499
+ //
500
+ // { type: "authorization", result: "ok" }
501
+ //
502
+ const result = this.safeString(message, 'result');
503
+ const future = client.subscriptions['authenticated'];
504
+ if (result === 'ok') {
505
+ future.resolve(true);
506
+ }
507
+ else {
508
+ future.reject(message);
509
+ delete client.subscriptions['authenticated'];
510
+ }
511
+ }
512
+ handleMarketData(client, message) {
513
+ const ticker = this.safeValue(message, 'ticker');
514
+ if (ticker !== undefined) {
515
+ this.handleTicker(client, message);
516
+ }
517
+ const trades = this.safeValue(message, 'recent_trades', []);
518
+ if (trades.length) {
519
+ this.handleTrades(client, message);
520
+ }
521
+ const orderBook = this.safeValueN(message, ['order_books', 'order_books_l1', 'order_books_l2', 'order_books_l3', 'order_books_l4'], []);
522
+ if (orderBook.length) {
523
+ this.handleOrderBook(client, message, orderBook);
524
+ }
525
+ }
526
+ handleMessage(client, message) {
527
+ //
528
+ // {
529
+ // "errorCode": "INVALID_ARGUMENT",
530
+ // "message": '',
531
+ // "details": {
532
+ // "interval": "invalid"
533
+ // }
534
+ // }
535
+ //
536
+ const errorCode = this.safeString(message, 'errorCode');
537
+ if (errorCode !== undefined) {
538
+ return this.handleErrorMessage(client, message);
539
+ }
540
+ const type = this.safeString(message, 'type');
541
+ if (type === 'authorization') {
542
+ return this.handleAuthenticate(client, message);
543
+ }
544
+ const handlers = {
545
+ 'marketdata': this.handleMarketData,
546
+ 'balance': this.handleBalance,
547
+ 'trade_history': this.handleMyTrades,
548
+ 'open_order': this.handleOrders,
549
+ 'order_history': this.handleOrders,
550
+ };
551
+ const channel = this.safeString(message, 'channel');
552
+ const handler = this.safeValue(handlers, channel);
553
+ if (handler !== undefined) {
554
+ return handler.call(this, client, message);
555
+ }
556
+ const error = new errors.NotSupported(this.id + ' handleMessage: unknown message: ' + this.json(message));
557
+ client.reject(error);
558
+ }
559
+ async authenticate(params = {}) {
560
+ const url = this.urls['api']['ws'];
561
+ const client = this.client(url);
562
+ const messageHash = 'authenticated';
563
+ const expires = this.safeInteger(this.options, 'expires', 0);
564
+ let future = this.safeValue(client.subscriptions, messageHash);
565
+ if ((future === undefined) || (this.milliseconds() > expires)) {
566
+ const response = await this.signIn();
567
+ //
568
+ // {
569
+ // "access_token": "0ttDv/2hTTn3bLi8GP1gKaneiEQ6+0hOBenPrxNQt2s=",
570
+ // "token_type": "bearer",
571
+ // "expires_in": 900
572
+ // }
573
+ //
574
+ const accessToken = this.safeString(response, 'access_token');
575
+ const request = {
576
+ 'type': 'authorization',
577
+ 'token': accessToken,
578
+ };
579
+ future = this.watch(url, messageHash, this.extend(request, params));
580
+ client.subscriptions[messageHash] = future;
581
+ }
582
+ return await future;
583
+ }
584
+ }
585
+
586
+ module.exports = probit;