ccxt 4.2.18 → 4.2.20

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 (446) hide show
  1. package/README.md +100 -100
  2. package/dist/ccxt.browser.js +34240 -33297
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +276 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +165 -35
  10. package/dist/cjs/src/binanceus.js +25 -0
  11. package/dist/cjs/src/bingx.js +185 -42
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +84 -47
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bitteam.js +1 -1
  19. package/dist/cjs/src/bybit.js +27 -75
  20. package/dist/cjs/src/coinbase.js +176 -26
  21. package/dist/cjs/src/coincheck.js +1 -0
  22. package/dist/cjs/src/coinex.js +3 -0
  23. package/dist/cjs/src/coinlist.js +13 -6
  24. package/dist/cjs/src/coinone.js +2 -2
  25. package/dist/cjs/src/coinsph.js +4 -5
  26. package/dist/cjs/src/delta.js +7 -19
  27. package/dist/cjs/src/deribit.js +17 -4
  28. package/dist/cjs/src/gate.js +151 -194
  29. package/dist/cjs/src/gemini.js +1 -1
  30. package/dist/cjs/src/hitbtc.js +2 -3
  31. package/dist/cjs/src/htx.js +157 -7
  32. package/dist/cjs/src/huobijp.js +2 -3
  33. package/dist/cjs/src/independentreserve.js +7 -5
  34. package/dist/cjs/src/kraken.js +86 -54
  35. package/dist/cjs/src/kucoin.js +5 -0
  36. package/dist/cjs/src/kucoinfutures.js +140 -86
  37. package/dist/cjs/src/lbank.js +60 -33
  38. package/dist/cjs/src/luno.js +84 -2
  39. package/dist/cjs/src/mexc.js +3 -3
  40. package/dist/cjs/src/oceanex.js +1 -1
  41. package/dist/cjs/src/okx.js +23 -29
  42. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  43. package/dist/cjs/src/phemex.js +37 -27
  44. package/dist/cjs/src/poloniexfutures.js +1 -0
  45. package/dist/cjs/src/pro/binance.js +66 -25
  46. package/dist/cjs/src/pro/bitget.js +1 -1
  47. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  48. package/dist/cjs/src/pro/coinbase.js +4 -1
  49. package/dist/cjs/src/pro/hitbtc.js +5 -4
  50. package/dist/cjs/src/pro/htx.js +6 -1
  51. package/dist/cjs/src/pro/kraken.js +1 -1
  52. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  53. package/dist/cjs/src/pro/kucoin.js +46 -36
  54. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  55. package/dist/cjs/src/pro/lbank.js +881 -0
  56. package/dist/cjs/src/pro/okx.js +52 -2
  57. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  58. package/dist/cjs/src/pro/poloniex.js +2 -2
  59. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  60. package/dist/cjs/src/pro/woo.js +126 -0
  61. package/dist/cjs/src/probit.js +4 -2
  62. package/dist/cjs/src/upbit.js +12 -12
  63. package/dist/cjs/src/wavesexchange.js +1 -1
  64. package/dist/cjs/src/whitebit.js +1 -0
  65. package/dist/cjs/src/woo.js +56 -0
  66. package/js/ccxt.d.ts +11 -2
  67. package/js/ccxt.js +8 -2
  68. package/js/src/abstract/binance.d.ts +1 -0
  69. package/js/src/abstract/binancecoinm.d.ts +1 -0
  70. package/js/src/abstract/binanceus.d.ts +1 -0
  71. package/js/src/abstract/binanceusdm.d.ts +1 -0
  72. package/js/src/abstract/bitpanda.d.ts +4 -4
  73. package/js/src/abstract/bitpanda.js +3 -3
  74. package/js/src/abstract/bitstamp.d.ts +8 -0
  75. package/js/src/abstract/gate.d.ts +1 -0
  76. package/js/src/abstract/gateio.d.ts +1 -0
  77. package/js/src/abstract/htx.d.ts +3 -0
  78. package/js/src/abstract/huobi.d.ts +3 -0
  79. package/js/src/abstract/luno.d.ts +1 -0
  80. package/js/src/abstract/onetrading.d.ts +38 -0
  81. package/js/src/abstract/onetrading.js +11 -0
  82. package/js/src/ascendex.js +2 -0
  83. package/js/src/base/Exchange.d.ts +3 -0
  84. package/js/src/base/Exchange.js +10 -0
  85. package/js/src/binance.js +2 -1
  86. package/js/src/binanceus.js +17 -0
  87. package/js/src/bingx.js +3 -2
  88. package/js/src/bitget.d.ts +1 -1
  89. package/js/src/bitget.js +47 -34
  90. package/js/src/bitpanda.d.ts +2 -72
  91. package/js/src/bitpanda.js +5 -1991
  92. package/js/src/bitstamp.js +8 -0
  93. package/js/src/bitteam.js +1 -1
  94. package/js/src/bybit.d.ts +0 -1
  95. package/js/src/bybit.js +1 -29
  96. package/js/src/delta.d.ts +0 -1
  97. package/js/src/delta.js +0 -18
  98. package/js/src/deribit.js +11 -3
  99. package/js/src/gate.d.ts +1 -1
  100. package/js/src/gate.js +50 -135
  101. package/js/src/htx.js +3 -0
  102. package/js/src/kraken.d.ts +1 -0
  103. package/js/src/kraken.js +39 -38
  104. package/js/src/kucoinfutures.d.ts +6 -6
  105. package/js/src/kucoinfutures.js +9 -9
  106. package/js/src/lbank.js +1 -0
  107. package/js/src/luno.d.ts +3 -1
  108. package/js/src/luno.js +84 -2
  109. package/js/src/mexc.js +1 -2
  110. package/js/src/okx.d.ts +0 -1
  111. package/js/src/okx.js +0 -18
  112. package/js/src/onetrading.d.ts +74 -0
  113. package/js/src/onetrading.js +2003 -0
  114. package/js/src/poloniexfutures.js +1 -0
  115. package/js/src/pro/binance.js +6 -1
  116. package/js/src/pro/bitpanda.d.ts +2 -34
  117. package/js/src/pro/bitpanda.js +5 -1330
  118. package/js/src/pro/lbank.d.ts +29 -0
  119. package/js/src/pro/lbank.js +882 -0
  120. package/js/src/pro/onetrading.d.ts +36 -0
  121. package/js/src/pro/onetrading.js +1339 -0
  122. package/package.json +2 -2
  123. package/rollup.config.js +2 -0
  124. package/skip-tests.json +4 -2
  125. package/test-commonjs.cjs +25 -1
  126. package/dist/cjs/js/ccxt.js +0 -478
  127. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  128. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  130. package/dist/cjs/js/src/abstract/binance.js +0 -9
  131. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  132. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  133. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  140. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  143. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  144. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  145. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  146. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  147. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  148. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  149. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  150. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  151. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  152. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  153. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  154. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  155. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  156. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  157. package/dist/cjs/js/src/abstract/cex.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  160. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  161. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  162. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  163. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  164. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  165. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  166. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  167. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  168. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  169. package/dist/cjs/js/src/abstract/delta.js +0 -9
  170. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  171. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  172. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  173. package/dist/cjs/js/src/abstract/gate.js +0 -9
  174. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  175. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  176. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  177. package/dist/cjs/js/src/abstract/htx.js +0 -9
  178. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  179. package/dist/cjs/js/src/abstract/idex.js +0 -9
  180. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  181. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  182. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  183. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  184. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  185. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  186. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  187. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  188. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  189. package/dist/cjs/js/src/abstract/luno.js +0 -9
  190. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  191. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  192. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  193. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  194. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  195. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  196. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  197. package/dist/cjs/js/src/abstract/okx.js +0 -9
  198. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  199. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  200. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  201. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  202. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  203. package/dist/cjs/js/src/abstract/probit.js +0 -9
  204. package/dist/cjs/js/src/abstract/timex.js +0 -9
  205. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  206. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  207. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  208. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  209. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  210. package/dist/cjs/js/src/abstract/woo.js +0 -9
  211. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  212. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  213. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  214. package/dist/cjs/js/src/ace.js +0 -1058
  215. package/dist/cjs/js/src/alpaca.js +0 -1125
  216. package/dist/cjs/js/src/ascendex.js +0 -3365
  217. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  218. package/dist/cjs/js/src/base/Precise.js +0 -263
  219. package/dist/cjs/js/src/base/errors.js +0 -299
  220. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  221. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  222. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  223. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  224. package/dist/cjs/js/src/base/functions/number.js +0 -297
  225. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  226. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  227. package/dist/cjs/js/src/base/functions/string.js +0 -48
  228. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  229. package/dist/cjs/js/src/base/functions/time.js +0 -187
  230. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  231. package/dist/cjs/js/src/base/functions/type.js +0 -162
  232. package/dist/cjs/js/src/base/functions.js +0 -157
  233. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  234. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  235. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  236. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  237. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  238. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  239. package/dist/cjs/js/src/bequant.js +0 -33
  240. package/dist/cjs/js/src/bigone.js +0 -2213
  241. package/dist/cjs/js/src/binance.js +0 -9851
  242. package/dist/cjs/js/src/binancecoinm.js +0 -45
  243. package/dist/cjs/js/src/binanceus.js +0 -92
  244. package/dist/cjs/js/src/binanceusdm.js +0 -58
  245. package/dist/cjs/js/src/bingx.js +0 -3872
  246. package/dist/cjs/js/src/bit2c.js +0 -916
  247. package/dist/cjs/js/src/bitbank.js +0 -1000
  248. package/dist/cjs/js/src/bitbay.js +0 -17
  249. package/dist/cjs/js/src/bitbns.js +0 -1220
  250. package/dist/cjs/js/src/bitcoincom.js +0 -17
  251. package/dist/cjs/js/src/bitfinex.js +0 -1670
  252. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  253. package/dist/cjs/js/src/bitflyer.js +0 -1045
  254. package/dist/cjs/js/src/bitforex.js +0 -852
  255. package/dist/cjs/js/src/bitget.js +0 -8295
  256. package/dist/cjs/js/src/bithumb.js +0 -1090
  257. package/dist/cjs/js/src/bitmart.js +0 -4454
  258. package/dist/cjs/js/src/bitmex.js +0 -2881
  259. package/dist/cjs/js/src/bitopro.js +0 -1724
  260. package/dist/cjs/js/src/bitrue.js +0 -3253
  261. package/dist/cjs/js/src/bitso.js +0 -1753
  262. package/dist/cjs/js/src/bitstamp.js +0 -2188
  263. package/dist/cjs/js/src/bitteam.js +0 -2309
  264. package/dist/cjs/js/src/bitvavo.js +0 -1968
  265. package/dist/cjs/js/src/bl3p.js +0 -447
  266. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  267. package/dist/cjs/js/src/btcalpha.js +0 -929
  268. package/dist/cjs/js/src/btcbox.js +0 -565
  269. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  270. package/dist/cjs/js/src/btcturk.js +0 -929
  271. package/dist/cjs/js/src/bybit.js +0 -7624
  272. package/dist/cjs/js/src/cex.js +0 -1693
  273. package/dist/cjs/js/src/coinbase.js +0 -3424
  274. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  275. package/dist/cjs/js/src/coincheck.js +0 -844
  276. package/dist/cjs/js/src/coinex.js +0 -5417
  277. package/dist/cjs/js/src/coinlist.js +0 -2337
  278. package/dist/cjs/js/src/coinmate.js +0 -989
  279. package/dist/cjs/js/src/coinone.js +0 -1185
  280. package/dist/cjs/js/src/coinsph.js +0 -1933
  281. package/dist/cjs/js/src/coinspot.js +0 -548
  282. package/dist/cjs/js/src/cryptocom.js +0 -3007
  283. package/dist/cjs/js/src/currencycom.js +0 -2015
  284. package/dist/cjs/js/src/delta.js +0 -3262
  285. package/dist/cjs/js/src/deribit.js +0 -3310
  286. package/dist/cjs/js/src/digifinex.js +0 -4307
  287. package/dist/cjs/js/src/exmo.js +0 -2645
  288. package/dist/cjs/js/src/fmfwio.js +0 -34
  289. package/dist/cjs/js/src/gate.js +0 -7077
  290. package/dist/cjs/js/src/gateio.js +0 -16
  291. package/dist/cjs/js/src/gemini.js +0 -1801
  292. package/dist/cjs/js/src/hitbtc.js +0 -3660
  293. package/dist/cjs/js/src/hitbtc3.js +0 -19
  294. package/dist/cjs/js/src/hollaex.js +0 -1882
  295. package/dist/cjs/js/src/htx.js +0 -9174
  296. package/dist/cjs/js/src/huobi.js +0 -16
  297. package/dist/cjs/js/src/huobijp.js +0 -1918
  298. package/dist/cjs/js/src/idex.js +0 -1770
  299. package/dist/cjs/js/src/independentreserve.js +0 -761
  300. package/dist/cjs/js/src/indodax.js +0 -1069
  301. package/dist/cjs/js/src/kraken.js +0 -2891
  302. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  303. package/dist/cjs/js/src/kucoin.js +0 -4494
  304. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  305. package/dist/cjs/js/src/kuna.js +0 -1949
  306. package/dist/cjs/js/src/latoken.js +0 -1729
  307. package/dist/cjs/js/src/lbank.js +0 -2851
  308. package/dist/cjs/js/src/luno.js +0 -1044
  309. package/dist/cjs/js/src/lykke.js +0 -1303
  310. package/dist/cjs/js/src/mercado.js +0 -897
  311. package/dist/cjs/js/src/mexc.js +0 -5407
  312. package/dist/cjs/js/src/ndax.js +0 -2450
  313. package/dist/cjs/js/src/novadax.js +0 -1556
  314. package/dist/cjs/js/src/oceanex.js +0 -964
  315. package/dist/cjs/js/src/okcoin.js +0 -3115
  316. package/dist/cjs/js/src/okx.js +0 -7331
  317. package/dist/cjs/js/src/p2b.js +0 -1243
  318. package/dist/cjs/js/src/paymium.js +0 -597
  319. package/dist/cjs/js/src/phemex.js +0 -4725
  320. package/dist/cjs/js/src/poloniex.js +0 -2356
  321. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  322. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  323. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  324. package/dist/cjs/js/src/pro/bequant.js +0 -33
  325. package/dist/cjs/js/src/pro/binance.js +0 -2796
  326. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  327. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  328. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  329. package/dist/cjs/js/src/pro/bingx.js +0 -944
  330. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  331. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  332. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  333. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  334. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  335. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  336. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  337. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  338. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  339. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  340. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  341. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  342. package/dist/cjs/js/src/pro/cex.js +0 -1510
  343. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  344. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  345. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  346. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  347. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  348. package/dist/cjs/js/src/pro/deribit.js +0 -825
  349. package/dist/cjs/js/src/pro/exmo.js +0 -658
  350. package/dist/cjs/js/src/pro/gate.js +0 -1316
  351. package/dist/cjs/js/src/pro/gateio.js +0 -16
  352. package/dist/cjs/js/src/pro/gemini.js +0 -649
  353. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  354. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  355. package/dist/cjs/js/src/pro/htx.js +0 -2388
  356. package/dist/cjs/js/src/pro/huobi.js +0 -16
  357. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  358. package/dist/cjs/js/src/pro/idex.js +0 -714
  359. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  360. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  361. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  362. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  363. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  364. package/dist/cjs/js/src/pro/luno.js +0 -322
  365. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  366. package/dist/cjs/js/src/pro/ndax.js +0 -545
  367. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  368. package/dist/cjs/js/src/pro/okx.js +0 -1608
  369. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  370. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  371. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  372. package/dist/cjs/js/src/pro/probit.js +0 -586
  373. package/dist/cjs/js/src/pro/upbit.js +0 -234
  374. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  375. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  376. package/dist/cjs/js/src/pro/woo.js +0 -895
  377. package/dist/cjs/js/src/probit.js +0 -1867
  378. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  386. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  387. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  388. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  389. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  390. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  391. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  392. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  396. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  397. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  398. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  399. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  400. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  401. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  402. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  407. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  408. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  409. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  410. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  411. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  412. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  413. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  419. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  420. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  421. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  422. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  423. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  424. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  425. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  426. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  427. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  428. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  429. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  430. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  431. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  432. package/dist/cjs/js/src/timex.js +0 -1562
  433. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  434. package/dist/cjs/js/src/upbit.js +0 -1844
  435. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  436. package/dist/cjs/js/src/wazirx.js +0 -953
  437. package/dist/cjs/js/src/whitebit.js +0 -2310
  438. package/dist/cjs/js/src/woo.js +0 -2769
  439. package/dist/cjs/js/src/yobit.js +0 -1314
  440. package/dist/cjs/js/src/zaif.js +0 -736
  441. package/dist/cjs/js/src/zonda.js +0 -1883
  442. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  443. package/test.ts +0 -0
  444. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  445. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  446. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
@@ -1,968 +0,0 @@
1
- 'use strict';
2
-
3
- var coinbasepro$1 = require('../coinbasepro.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 coinbasepro extends coinbasepro$1 {
11
- describe() {
12
- return this.deepExtend(super.describe(), {
13
- 'has': {
14
- 'ws': true,
15
- 'watchOHLCV': false,
16
- 'watchOrderBook': true,
17
- 'watchOrderBookForSymbols': true,
18
- 'watchTicker': true,
19
- 'watchTickers': true,
20
- 'watchTrades': true,
21
- 'watchTradesForSymbols': true,
22
- 'watchMyTradesForSymbols': true,
23
- 'watchBalance': false,
24
- 'watchStatus': false,
25
- 'watchOrders': true,
26
- 'watchOrdersForSymbols': true,
27
- 'watchMyTrades': true,
28
- },
29
- 'urls': {
30
- 'api': {
31
- 'ws': 'wss://ws-feed.pro.coinbase.com',
32
- },
33
- 'test': {
34
- 'ws': 'wss://ws-feed-public.sandbox.exchange.coinbase.com',
35
- },
36
- },
37
- 'options': {
38
- 'tradesLimit': 1000,
39
- 'ordersLimit': 1000,
40
- 'myTradesLimit': 1000,
41
- },
42
- });
43
- }
44
- authenticate() {
45
- this.checkRequiredCredentials();
46
- const path = '/users/self/verify';
47
- const nonce = this.nonce();
48
- const payload = nonce.toString() + 'GET' + path;
49
- const signature = this.hmac(this.encode(payload), this.base64ToBinary(this.secret), sha256.sha256, 'base64');
50
- return {
51
- 'timestamp': nonce,
52
- 'key': this.apiKey,
53
- 'signature': signature,
54
- 'passphrase': this.password,
55
- };
56
- }
57
- async subscribe(name, symbol = undefined, messageHashStart = undefined, params = {}) {
58
- await this.loadMarkets();
59
- let market = undefined;
60
- let messageHash = messageHashStart;
61
- const productIds = [];
62
- if (symbol !== undefined) {
63
- market = this.market(symbol);
64
- messageHash += ':' + market['id'];
65
- productIds.push(market['id']);
66
- }
67
- let url = this.urls['api']['ws'];
68
- if ('signature' in params) {
69
- // need to distinguish between public trades and user trades
70
- url = url + '?';
71
- }
72
- const subscribe = {
73
- 'type': 'subscribe',
74
- 'product_ids': productIds,
75
- 'channels': [
76
- name,
77
- ],
78
- };
79
- const request = this.extend(subscribe, params);
80
- return await this.watch(url, messageHash, request, messageHash);
81
- }
82
- async subscribeMultiple(name, symbols = [], messageHashStart = undefined, params = {}) {
83
- await this.loadMarkets();
84
- let market = undefined;
85
- symbols = this.marketSymbols(symbols);
86
- const messageHashes = [];
87
- const productIds = [];
88
- for (let i = 0; i < symbols.length; i++) {
89
- const symbol = symbols[i];
90
- market = this.market(symbol);
91
- productIds.push(market['id']);
92
- messageHashes.push(messageHashStart + ':' + market['symbol']);
93
- }
94
- let url = this.urls['api']['ws'];
95
- if ('signature' in params) {
96
- // need to distinguish between public trades and user trades
97
- url = url + '?';
98
- }
99
- const subscribe = {
100
- 'type': 'subscribe',
101
- 'product_ids': productIds,
102
- 'channels': [
103
- name,
104
- ],
105
- };
106
- const request = this.extend(subscribe, params);
107
- return await this.watchMultiple(url, messageHashes, request, messageHashes);
108
- }
109
- async watchTicker(symbol, params = {}) {
110
- /**
111
- * @method
112
- * @name coinbasepro#watchTicker
113
- * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
114
- * @param {string} symbol unified symbol of the market to fetch the ticker for
115
- * @param {object} [params] extra parameters specific to the exchange API endpoint
116
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
117
- */
118
- const name = 'ticker';
119
- return await this.subscribe(name, symbol, name, params);
120
- }
121
- async watchTickers(symbols = undefined, params = {}) {
122
- /**
123
- * @method
124
- * @name coinbasepro#watchTickers
125
- * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
126
- * @param {string[]} [symbols] unified symbol of the market to fetch the ticker for
127
- * @param {object} [params] extra parameters specific to the exchange API endpoint
128
- * @param {string} [params.channel] the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
129
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
130
- */
131
- await this.loadMarkets();
132
- const symbolsLength = symbols.length;
133
- if (symbolsLength === 0) {
134
- throw new errors.BadSymbol(this.id + ' watchTickers requires a non-empty symbols array');
135
- }
136
- const channel = 'ticker';
137
- const messageHash = 'ticker';
138
- const ticker = await this.subscribeMultiple(channel, symbols, messageHash, params);
139
- if (this.newUpdates) {
140
- const result = {};
141
- result[ticker['symbol']] = ticker;
142
- return result;
143
- }
144
- return this.filterByArray(this.tickers, 'symbol', symbols);
145
- }
146
- async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
147
- /**
148
- * @method
149
- * @name coinbasepro#watchTrades
150
- * @description get the list of most recent trades for a particular symbol
151
- * @param {string} symbol unified symbol of the market to fetch trades for
152
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
153
- * @param {int} [limit] the maximum amount of trades to fetch
154
- * @param {object} [params] extra parameters specific to the exchange API endpoint
155
- * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
156
- */
157
- await this.loadMarkets();
158
- symbol = this.symbol(symbol);
159
- const name = 'matches';
160
- const trades = await this.subscribe(name, symbol, name, params);
161
- if (this.newUpdates) {
162
- limit = trades.getLimit(symbol, limit);
163
- }
164
- return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
165
- }
166
- async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
167
- /**
168
- * @method
169
- * @name coinbase#watchTradesForSymbols
170
- * @description get the list of most recent trades for a particular symbol
171
- * @param {string} symbol unified symbol of the market to fetch trades for
172
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
173
- * @param {int} [limit] the maximum amount of trades to fetch
174
- * @param {object} [params] extra parameters specific to the exchange API endpoint
175
- * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
176
- */
177
- const symbolsLength = symbols.length;
178
- if (symbolsLength === 0) {
179
- throw new errors.BadRequest(this.id + ' watchTradesForSymbols() requires a non-empty array of symbols');
180
- }
181
- await this.loadMarkets();
182
- symbols = this.marketSymbols(symbols);
183
- const name = 'matches';
184
- const trades = await this.subscribeMultiple(name, symbols, name, params);
185
- if (this.newUpdates) {
186
- const first = this.safeValue(trades, 0);
187
- const tradeSymbol = this.safeString(first, 'symbol');
188
- limit = trades.getLimit(tradeSymbol, limit);
189
- }
190
- return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
191
- }
192
- async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
193
- /**
194
- * @method
195
- * @name coinbasepro#watchMyTrades
196
- * @description watches information on multiple trades made by the user
197
- * @param {string} symbol unified market symbol of the market trades were made in
198
- * @param {int} [since] the earliest time in ms to fetch trades for
199
- * @param {int} [limit] the maximum number of trade structures to retrieve
200
- * @param {object} [params] extra parameters specific to the exchange API endpoint
201
- * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
202
- */
203
- if (symbol === undefined) {
204
- throw new errors.ArgumentsRequired(this.id + ' watchMyTrades() requires a symbol argument');
205
- }
206
- await this.loadMarkets();
207
- symbol = this.symbol(symbol);
208
- const name = 'user';
209
- const messageHash = 'myTrades';
210
- const authentication = this.authenticate();
211
- const trades = await this.subscribe(name, symbol, messageHash, this.extend(params, authentication));
212
- if (this.newUpdates) {
213
- limit = trades.getLimit(symbol, limit);
214
- }
215
- return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
216
- }
217
- async watchMyTradesForSymbols(symbols = undefined, since = undefined, limit = undefined, params = {}) {
218
- /**
219
- * @method
220
- * @name coinbasepro#watchMyTradesForSymbols
221
- * @description watches information on multiple trades made by the user
222
- * @param {string[]} symbols unified symbol of the market to fetch trades for
223
- * @param {int} [since] the earliest time in ms to fetch trades for
224
- * @param {int} [limit] the maximum number of trade structures to retrieve
225
- * @param {object} [params] extra parameters specific to the exchange API endpoint
226
- * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
227
- */
228
- symbols = this.marketSymbols(symbols, undefined, false);
229
- await this.loadMarkets();
230
- const name = 'user';
231
- const messageHash = 'myTrades';
232
- const authentication = this.authenticate();
233
- const trades = await this.subscribeMultiple(name, symbols, messageHash, this.extend(params, authentication));
234
- if (this.newUpdates) {
235
- const first = this.safeValue(trades, 0);
236
- const tradeSymbol = this.safeString(first, 'symbol');
237
- limit = trades.getLimit(tradeSymbol, limit);
238
- }
239
- return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
240
- }
241
- async watchOrdersForSymbols(symbols = undefined, since = undefined, limit = undefined, params = {}) {
242
- /**
243
- * @method
244
- * @name coinbasepro#watchOrdersForSymbols
245
- * @description watches information on multiple orders made by the user
246
- * @param {string[]} symbols unified symbol of the market to fetch orders for
247
- * @param {int} [since] the earliest time in ms to fetch orders for
248
- * @param {int} [limit] the maximum number of trade structures to retrieve
249
- * @param {object} [params] extra parameters specific to the exchange API endpoint
250
- * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
251
- */
252
- await this.loadMarkets();
253
- symbols = this.marketSymbols(symbols, undefined, false);
254
- const name = 'user';
255
- const messageHash = 'orders';
256
- const authentication = this.authenticate();
257
- const orders = await this.subscribeMultiple(name, symbols, messageHash, this.extend(params, authentication));
258
- if (this.newUpdates) {
259
- const first = this.safeValue(orders, 0);
260
- const tradeSymbol = this.safeString(first, 'symbol');
261
- limit = orders.getLimit(tradeSymbol, limit);
262
- }
263
- return this.filterBySinceLimit(orders, since, limit, 'timestamp', true);
264
- }
265
- async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
266
- /**
267
- * @method
268
- * @name coinbasepro#watchOrders
269
- * @description watches information on multiple orders made by the user
270
- * @param {string} symbol unified market symbol of the market orders were made in
271
- * @param {int} [since] the earliest time in ms to fetch orders for
272
- * @param {int} [limit] the maximum number of order structures to retrieve
273
- * @param {object} [params] extra parameters specific to the exchange API endpoint
274
- * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
275
- */
276
- if (symbol === undefined) {
277
- throw new errors.BadSymbol(this.id + ' watchMyTrades requires a symbol');
278
- }
279
- await this.loadMarkets();
280
- symbol = this.symbol(symbol);
281
- const name = 'user';
282
- const messageHash = 'orders';
283
- const authentication = this.authenticate();
284
- const orders = await this.subscribe(name, symbol, messageHash, this.extend(params, authentication));
285
- if (this.newUpdates) {
286
- limit = orders.getLimit(symbol, limit);
287
- }
288
- return this.filterBySinceLimit(orders, since, limit, 'timestamp', true);
289
- }
290
- async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
291
- /**
292
- * @method
293
- * @name coinbasepro#watchOrderBookForSymbols
294
- * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
295
- * @param {string[]} symbols unified array of symbols
296
- * @param {int} [limit] the maximum amount of order book entries to return
297
- * @param {object} [params] extra parameters specific to the exchange API endpoint
298
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
299
- */
300
- const symbolsLength = symbols.length;
301
- if (symbolsLength === 0) {
302
- throw new errors.BadRequest(this.id + ' watchOrderBookForSymbols() requires a non-empty array of symbols');
303
- }
304
- const name = 'level2';
305
- await this.loadMarkets();
306
- symbols = this.marketSymbols(symbols);
307
- const marketIds = this.marketIds(symbols);
308
- const messageHashes = [];
309
- for (let i = 0; i < symbolsLength; i++) {
310
- const marketId = marketIds[i];
311
- messageHashes.push(name + ':' + marketId);
312
- }
313
- const url = this.urls['api']['ws'];
314
- const subscribe = {
315
- 'type': 'subscribe',
316
- 'product_ids': marketIds,
317
- 'channels': [
318
- name,
319
- ],
320
- };
321
- const request = this.extend(subscribe, params);
322
- const subscription = {
323
- 'messageHash': name,
324
- 'symbols': symbols,
325
- 'marketIds': marketIds,
326
- 'limit': limit,
327
- };
328
- const authentication = this.authenticate();
329
- const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, authentication), messageHashes, subscription);
330
- return orderbook.limit();
331
- }
332
- async watchOrderBook(symbol, limit = undefined, params = {}) {
333
- /**
334
- * @method
335
- * @name coinbasepro#watchOrderBook
336
- * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
337
- * @param {string} symbol unified symbol of the market to fetch the order book for
338
- * @param {int} [limit] the maximum amount of order book entries to return
339
- * @param {object} [params] extra parameters specific to the exchange API endpoint
340
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
341
- */
342
- const name = 'level2';
343
- await this.loadMarkets();
344
- const market = this.market(symbol);
345
- symbol = market['symbol'];
346
- const messageHash = name + ':' + market['id'];
347
- const url = this.urls['api']['ws'];
348
- const subscribe = {
349
- 'type': 'subscribe',
350
- 'product_ids': [
351
- market['id'],
352
- ],
353
- 'channels': [
354
- name,
355
- ],
356
- };
357
- const request = this.extend(subscribe, params);
358
- const subscription = {
359
- 'messageHash': messageHash,
360
- 'symbol': symbol,
361
- 'marketId': market['id'],
362
- 'limit': limit,
363
- };
364
- const authentication = this.authenticate();
365
- const orderbook = await this.watch(url, messageHash, this.extend(request, authentication), messageHash, subscription);
366
- return orderbook.limit();
367
- }
368
- handleTrade(client, message) {
369
- //
370
- // {
371
- // "type": "match",
372
- // "trade_id": 82047307,
373
- // "maker_order_id": "0f358725-2134-435e-be11-753912a326e0",
374
- // "taker_order_id": "252b7002-87a3-425c-ac73-f5b9e23f3caf",
375
- // "side": "sell",
376
- // "size": "0.00513192",
377
- // "price": "9314.78",
378
- // "product_id": "BTC-USD",
379
- // "sequence": 12038915443,
380
- // "time": "2020-01-31T20:03:41.158814Z"
381
- // }
382
- //
383
- const marketId = this.safeString(message, 'product_id');
384
- if (marketId !== undefined) {
385
- const trade = this.parseWsTrade(message);
386
- const symbol = trade['symbol'];
387
- // the exchange sends type = 'match'
388
- // but requires 'matches' upon subscribing
389
- // therefore we resolve 'matches' here instead of 'match'
390
- const type = 'matches';
391
- const messageHash = type + ':' + marketId;
392
- let tradesArray = this.safeValue(this.trades, symbol);
393
- if (tradesArray === undefined) {
394
- const tradesLimit = this.safeInteger(this.options, 'tradesLimit', 1000);
395
- tradesArray = new Cache.ArrayCache(tradesLimit);
396
- this.trades[symbol] = tradesArray;
397
- }
398
- tradesArray.append(trade);
399
- client.resolve(tradesArray, messageHash);
400
- }
401
- return message;
402
- }
403
- handleMyTrade(client, message) {
404
- const marketId = this.safeString(message, 'product_id');
405
- if (marketId !== undefined) {
406
- const trade = this.parseWsTrade(message);
407
- const type = 'myTrades';
408
- const messageHash = type + ':' + marketId;
409
- let tradesArray = this.myTrades;
410
- if (tradesArray === undefined) {
411
- const limit = this.safeInteger(this.options, 'myTradesLimit', 1000);
412
- tradesArray = new Cache.ArrayCacheBySymbolById(limit);
413
- this.myTrades = tradesArray;
414
- }
415
- tradesArray.append(trade);
416
- client.resolve(tradesArray, messageHash);
417
- }
418
- return message;
419
- }
420
- parseWsTrade(trade, market = undefined) {
421
- //
422
- // private trades
423
- // {
424
- // "type": "match",
425
- // "trade_id": 10,
426
- // "sequence": 50,
427
- // "maker_order_id": "ac928c66-ca53-498f-9c13-a110027a60e8",
428
- // "taker_order_id": "132fb6ae-456b-4654-b4e0-d681ac05cea1",
429
- // "time": "2014-11-07T08:19:27.028459Z",
430
- // "product_id": "BTC-USD",
431
- // "size": "5.23512",
432
- // "price": "400.23",
433
- // "side": "sell",
434
- // "taker_user_id: "5844eceecf7e803e259d0365",
435
- // "user_id": "5844eceecf7e803e259d0365",
436
- // "taker_profile_id": "765d1549-9660-4be2-97d4-fa2d65fa3352",
437
- // "profile_id": "765d1549-9660-4be2-97d4-fa2d65fa3352",
438
- // "taker_fee_rate": "0.005"
439
- // }
440
- //
441
- // {
442
- // "type": "match",
443
- // "trade_id": 10,
444
- // "sequence": 50,
445
- // "maker_order_id": "ac928c66-ca53-498f-9c13-a110027a60e8",
446
- // "taker_order_id": "132fb6ae-456b-4654-b4e0-d681ac05cea1",
447
- // "time": "2014-11-07T08:19:27.028459Z",
448
- // "product_id": "BTC-USD",
449
- // "size": "5.23512",
450
- // "price": "400.23",
451
- // "side": "sell",
452
- // "maker_user_id: "5844eceecf7e803e259d0365",
453
- // "maker_id": "5844eceecf7e803e259d0365",
454
- // "maker_profile_id": "765d1549-9660-4be2-97d4-fa2d65fa3352",
455
- // "profile_id": "765d1549-9660-4be2-97d4-fa2d65fa3352",
456
- // "maker_fee_rate": "0.001"
457
- // }
458
- //
459
- // public trades
460
- // {
461
- // "type": "received",
462
- // "time": "2014-11-07T08:19:27.028459Z",
463
- // "product_id": "BTC-USD",
464
- // "sequence": 10,
465
- // "order_id": "d50ec984-77a8-460a-b958-66f114b0de9b",
466
- // "size": "1.34",
467
- // "price": "502.1",
468
- // "side": "buy",
469
- // "order_type": "limit"
470
- // }
471
- const parsed = super.parseTrade(trade);
472
- let feeRate = undefined;
473
- let isMaker = false;
474
- if ('maker_fee_rate' in trade) {
475
- isMaker = true;
476
- parsed['takerOrMaker'] = 'maker';
477
- feeRate = this.safeNumber(trade, 'maker_fee_rate');
478
- }
479
- else {
480
- parsed['takerOrMaker'] = 'taker';
481
- feeRate = this.safeNumber(trade, 'taker_fee_rate');
482
- // side always represents the maker side of the trade
483
- // so if we're taker, we invert it
484
- const currentSide = parsed['side'];
485
- parsed['side'] = this.safeString({
486
- 'buy': 'sell',
487
- 'sell': 'buy',
488
- }, currentSide, currentSide);
489
- }
490
- const idKey = isMaker ? 'maker_order_id' : 'taker_order_id';
491
- parsed['order'] = this.safeString(trade, idKey);
492
- market = this.market(parsed['symbol']);
493
- const feeCurrency = market['quote'];
494
- let feeCost = undefined;
495
- if ((parsed['cost'] !== undefined) && (feeRate !== undefined)) {
496
- const cost = this.safeNumber(parsed, 'cost');
497
- feeCost = cost * feeRate;
498
- }
499
- parsed['fee'] = {
500
- 'rate': feeRate,
501
- 'cost': feeCost,
502
- 'currency': feeCurrency,
503
- };
504
- return parsed;
505
- }
506
- parseWsOrderStatus(status) {
507
- const statuses = {
508
- 'filled': 'closed',
509
- 'canceled': 'canceled',
510
- };
511
- return this.safeString(statuses, status, 'open');
512
- }
513
- handleOrder(client, message) {
514
- //
515
- // Order is created
516
- //
517
- // {
518
- // "type": "received",
519
- // "side": "sell",
520
- // "product_id": "BTC-USDC",
521
- // "time": "2021-03-05T16:42:21.878177Z",
522
- // "sequence": 5641953814,
523
- // "profile_id": "774ee0ce-fdda-405f-aa8d-47189a14ba0a",
524
- // "user_id": "54fc141576dcf32596000133",
525
- // "order_id": "11838707-bf9c-4d65-8cec-b57c9a7cab42",
526
- // "order_type": "limit",
527
- // "size": "0.0001",
528
- // "price": "50000",
529
- // "client_oid": "a317abb9-2b30-4370-ebfe-0deecb300180"
530
- // }
531
- //
532
- // {
533
- // "type": "received",
534
- // "time": "2014-11-09T08:19:27.028459Z",
535
- // "product_id": "BTC-USD",
536
- // "sequence": 12,
537
- // "order_id": "dddec984-77a8-460a-b958-66f114b0de9b",
538
- // "funds": "3000.234",
539
- // "side": "buy",
540
- // "order_type": "market"
541
- // }
542
- //
543
- // Order is on the order book
544
- //
545
- // {
546
- // "type": "open",
547
- // "side": "sell",
548
- // "product_id": "BTC-USDC",
549
- // "time": "2021-03-05T16:42:21.878177Z",
550
- // "sequence": 5641953815,
551
- // "profile_id": "774ee0ce-fdda-405f-aa8d-47189a14ba0a",
552
- // "user_id": "54fc141576dcf32596000133",
553
- // "price": "50000",
554
- // "order_id": "11838707-bf9c-4d65-8cec-b57c9a7cab42",
555
- // "remaining_size": "0.0001"
556
- // }
557
- //
558
- // Order is partially or completely filled
559
- //
560
- // {
561
- // "type": "match",
562
- // "side": "sell",
563
- // "product_id": "BTC-USDC",
564
- // "time": "2021-03-05T16:37:13.396107Z",
565
- // "sequence": 5641897876,
566
- // "profile_id": "774ee0ce-fdda-405f-aa8d-47189a14ba0a",
567
- // "user_id": "54fc141576dcf32596000133",
568
- // "trade_id": 5455505,
569
- // "maker_order_id": "e5f5754d-70a3-4346-95a6-209bcb503629",
570
- // "taker_order_id": "88bf7086-7b15-40ff-8b19-ab4e08516d69",
571
- // "size": "0.00021019",
572
- // "price": "47338.46",
573
- // "taker_profile_id": "774ee0ce-fdda-405f-aa8d-47189a14ba0a",
574
- // "taker_user_id": "54fc141576dcf32596000133",
575
- // "taker_fee_rate": "0.005"
576
- // }
577
- //
578
- // Order is canceled / closed
579
- //
580
- // {
581
- // "type": "done",
582
- // "side": "buy",
583
- // "product_id": "BTC-USDC",
584
- // "time": "2021-03-05T16:37:13.396107Z",
585
- // "sequence": 5641897877,
586
- // "profile_id": "774ee0ce-fdda-405f-aa8d-47189a14ba0a",
587
- // "user_id": "54fc141576dcf32596000133",
588
- // "order_id": "88bf7086-7b15-40ff-8b19-ab4e08516d69",
589
- // "reason": "filled"
590
- // }
591
- //
592
- let currentOrders = this.orders;
593
- if (currentOrders === undefined) {
594
- const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
595
- currentOrders = new Cache.ArrayCacheBySymbolById(limit);
596
- this.orders = currentOrders;
597
- }
598
- const type = this.safeString(message, 'type');
599
- const marketId = this.safeString(message, 'product_id');
600
- if (marketId !== undefined) {
601
- const messageHash = 'orders:' + marketId;
602
- const symbol = this.safeSymbol(marketId);
603
- const orderId = this.safeString(message, 'order_id');
604
- const makerOrderId = this.safeString(message, 'maker_order_id');
605
- const takerOrderId = this.safeString(message, 'taker_order_id');
606
- const orders = this.orders;
607
- const previousOrders = this.safeValue(orders.hashmap, symbol, {});
608
- let previousOrder = this.safeValue(previousOrders, orderId);
609
- if (previousOrder === undefined) {
610
- previousOrder = this.safeValue2(previousOrders, makerOrderId, takerOrderId);
611
- }
612
- if (previousOrder === undefined) {
613
- const parsed = this.parseWsOrder(message);
614
- orders.append(parsed);
615
- client.resolve(orders, messageHash);
616
- }
617
- else {
618
- const sequence = this.safeInteger(message, 'sequence');
619
- const previousInfo = this.safeValue(previousOrder, 'info', {});
620
- const previousSequence = this.safeInteger(previousInfo, 'sequence');
621
- if ((previousSequence === undefined) || (sequence > previousSequence)) {
622
- if (type === 'match') {
623
- const trade = this.parseWsTrade(message);
624
- if (previousOrder['trades'] === undefined) {
625
- previousOrder['trades'] = [];
626
- }
627
- previousOrder['trades'].push(trade);
628
- previousOrder['lastTradeTimestamp'] = trade['timestamp'];
629
- let totalCost = 0;
630
- let totalAmount = 0;
631
- const trades = previousOrder['trades'];
632
- for (let i = 0; i < trades.length; i++) {
633
- const tradeEntry = trades[i];
634
- totalCost = this.sum(totalCost, tradeEntry['cost']);
635
- totalAmount = this.sum(totalAmount, tradeEntry['amount']);
636
- }
637
- if (totalAmount > 0) {
638
- previousOrder['average'] = totalCost / totalAmount;
639
- }
640
- previousOrder['cost'] = totalCost;
641
- if (previousOrder['filled'] !== undefined) {
642
- previousOrder['filled'] += trade['amount'];
643
- if (previousOrder['amount'] !== undefined) {
644
- previousOrder['remaining'] = previousOrder['amount'] - previousOrder['filled'];
645
- }
646
- }
647
- if (previousOrder['fee'] === undefined) {
648
- previousOrder['fee'] = {
649
- 'cost': 0,
650
- 'currency': trade['fee']['currency'],
651
- };
652
- }
653
- if ((previousOrder['fee']['cost'] !== undefined) && (trade['fee']['cost'] !== undefined)) {
654
- previousOrder['fee']['cost'] = this.sum(previousOrder['fee']['cost'], trade['fee']['cost']);
655
- }
656
- // update the newUpdates count
657
- orders.append(previousOrder);
658
- client.resolve(orders, messageHash);
659
- }
660
- else if ((type === 'received') || (type === 'done')) {
661
- const info = this.extend(previousOrder['info'], message);
662
- const order = this.parseWsOrder(info);
663
- const keys = Object.keys(order);
664
- // update the reference
665
- for (let i = 0; i < keys.length; i++) {
666
- const key = keys[i];
667
- if (order[key] !== undefined) {
668
- previousOrder[key] = order[key];
669
- }
670
- }
671
- // update the newUpdates count
672
- orders.append(previousOrder);
673
- client.resolve(orders, messageHash);
674
- }
675
- }
676
- }
677
- }
678
- }
679
- parseWsOrder(order, market = undefined) {
680
- const id = this.safeString(order, 'order_id');
681
- const clientOrderId = this.safeString(order, 'client_oid');
682
- const marketId = this.safeString(order, 'product_id');
683
- const symbol = this.safeSymbol(marketId);
684
- const side = this.safeString(order, 'side');
685
- const price = this.safeNumber(order, 'price');
686
- const amount = this.safeNumber2(order, 'size', 'funds');
687
- const time = this.safeString(order, 'time');
688
- const timestamp = this.parse8601(time);
689
- const reason = this.safeString(order, 'reason');
690
- const status = this.parseWsOrderStatus(reason);
691
- const orderType = this.safeString(order, 'order_type');
692
- let remaining = this.safeNumber(order, 'remaining_size');
693
- const type = this.safeString(order, 'type');
694
- let filled = undefined;
695
- if ((amount !== undefined) && (remaining !== undefined)) {
696
- filled = amount - remaining;
697
- }
698
- else if (type === 'received') {
699
- filled = 0;
700
- if (amount !== undefined) {
701
- remaining = amount - filled;
702
- }
703
- }
704
- return this.safeOrder({
705
- 'info': order,
706
- 'symbol': symbol,
707
- 'id': id,
708
- 'clientOrderId': clientOrderId,
709
- 'timestamp': timestamp,
710
- 'datetime': this.iso8601(timestamp),
711
- 'lastTradeTimestamp': undefined,
712
- 'type': orderType,
713
- 'timeInForce': undefined,
714
- 'postOnly': undefined,
715
- 'side': side,
716
- 'price': price,
717
- 'stopPrice': undefined,
718
- 'triggerPrice': undefined,
719
- 'amount': amount,
720
- 'cost': undefined,
721
- 'average': undefined,
722
- 'filled': filled,
723
- 'remaining': remaining,
724
- 'status': status,
725
- 'fee': undefined,
726
- 'trades': undefined,
727
- });
728
- }
729
- handleTicker(client, message) {
730
- //
731
- // {
732
- // "type": "ticker",
733
- // "sequence": 12042642428,
734
- // "product_id": "BTC-USD",
735
- // "price": "9380.55",
736
- // "open_24h": "9450.81000000",
737
- // "volume_24h": "9611.79166047",
738
- // "low_24h": "9195.49000000",
739
- // "high_24h": "9475.19000000",
740
- // "volume_30d": "327812.00311873",
741
- // "best_bid": "9380.54",
742
- // "best_ask": "9380.55",
743
- // "side": "buy",
744
- // "time": "2020-02-01T01:40:16.253563Z",
745
- // "trade_id": 82062566,
746
- // "last_size": "0.41969131"
747
- // }
748
- //
749
- const marketId = this.safeString(message, 'product_id');
750
- if (marketId !== undefined) {
751
- const ticker = this.parseTicker(message);
752
- const symbol = ticker['symbol'];
753
- this.tickers[symbol] = ticker;
754
- const messageHash = 'ticker:' + symbol;
755
- const idMessageHash = 'ticker:' + marketId;
756
- client.resolve(ticker, messageHash);
757
- client.resolve(ticker, idMessageHash);
758
- }
759
- return message;
760
- }
761
- parseTicker(ticker, market = undefined) {
762
- //
763
- // {
764
- // "type": "ticker",
765
- // "sequence": 7388547310,
766
- // "product_id": "BTC-USDT",
767
- // "price": "22345.67",
768
- // "open_24h": "22308.13",
769
- // "volume_24h": "470.21123644",
770
- // "low_24h": "22150",
771
- // "high_24h": "22495.15",
772
- // "volume_30d": "25713.98401605",
773
- // "best_bid": "22345.67",
774
- // "best_bid_size": "0.10647825",
775
- // "best_ask": "22349.68",
776
- // "best_ask_size": "0.03131702",
777
- // "side": "sell",
778
- // "time": "2023-03-04T03:37:20.799258Z",
779
- // "trade_id": 11586478,
780
- // "last_size": "0.00352175"
781
- // }
782
- //
783
- const type = this.safeString(ticker, 'type');
784
- if (type === undefined) {
785
- return super.parseTicker(ticker, market);
786
- }
787
- const marketId = this.safeString(ticker, 'product_id');
788
- const symbol = this.safeSymbol(marketId, market, '-');
789
- const timestamp = this.parse8601(this.safeString(ticker, 'time'));
790
- const last = this.safeString(ticker, 'price');
791
- return this.safeTicker({
792
- 'symbol': symbol,
793
- 'timestamp': timestamp,
794
- 'datetime': this.iso8601(timestamp),
795
- 'high': this.safeString(ticker, 'high_24h'),
796
- 'low': this.safeString(ticker, 'low_24h'),
797
- 'bid': this.safeString(ticker, 'best_bid'),
798
- 'bidVolume': this.safeString(ticker, 'best_bid_size'),
799
- 'ask': this.safeString(ticker, 'best_ask'),
800
- 'askVolume': this.safeString(ticker, 'best_ask_size'),
801
- 'vwap': undefined,
802
- 'open': this.safeString(ticker, 'open_24h'),
803
- 'close': last,
804
- 'last': last,
805
- 'previousClose': undefined,
806
- 'change': undefined,
807
- 'percentage': undefined,
808
- 'average': undefined,
809
- 'baseVolume': this.safeString(ticker, 'volume_24h'),
810
- 'quoteVolume': undefined,
811
- 'info': ticker,
812
- });
813
- }
814
- handleDelta(bookside, delta) {
815
- const price = this.safeNumber(delta, 0);
816
- const amount = this.safeNumber(delta, 1);
817
- bookside.store(price, amount);
818
- }
819
- handleDeltas(bookside, deltas) {
820
- for (let i = 0; i < deltas.length; i++) {
821
- this.handleDelta(bookside, deltas[i]);
822
- }
823
- }
824
- handleOrderBook(client, message) {
825
- //
826
- // first message (snapshot)
827
- //
828
- // {
829
- // "type": "snapshot",
830
- // "product_id": "BTC-USD",
831
- // "bids": [
832
- // ["10101.10", "0.45054140"]
833
- // ],
834
- // "asks": [
835
- // ["10102.55", "0.57753524"]
836
- // ]
837
- // }
838
- //
839
- // subsequent updates
840
- //
841
- // {
842
- // "type": "l2update",
843
- // "product_id": "BTC-USD",
844
- // "time": "2019-08-14T20:42:27.265Z",
845
- // "changes": [
846
- // [ "buy", "10101.80000000", "0.162567" ]
847
- // ]
848
- // }
849
- //
850
- const type = this.safeString(message, 'type');
851
- const marketId = this.safeString(message, 'product_id');
852
- const market = this.safeMarket(marketId, undefined, '-');
853
- const symbol = market['symbol'];
854
- const name = 'level2';
855
- const messageHash = name + ':' + marketId;
856
- const subscription = this.safeValue(client.subscriptions, messageHash, {});
857
- const limit = this.safeInteger(subscription, 'limit');
858
- if (type === 'snapshot') {
859
- this.orderbooks[symbol] = this.orderBook({}, limit);
860
- const orderbook = this.orderbooks[symbol];
861
- this.handleDeltas(orderbook['asks'], this.safeValue(message, 'asks', []));
862
- this.handleDeltas(orderbook['bids'], this.safeValue(message, 'bids', []));
863
- orderbook['timestamp'] = undefined;
864
- orderbook['datetime'] = undefined;
865
- orderbook['symbol'] = symbol;
866
- client.resolve(orderbook, messageHash);
867
- }
868
- else if (type === 'l2update') {
869
- const orderbook = this.orderbooks[symbol];
870
- const timestamp = this.parse8601(this.safeString(message, 'time'));
871
- const changes = this.safeValue(message, 'changes', []);
872
- const sides = {
873
- 'sell': 'asks',
874
- 'buy': 'bids',
875
- };
876
- for (let i = 0; i < changes.length; i++) {
877
- const change = changes[i];
878
- const key = this.safeString(change, 0);
879
- const side = this.safeString(sides, key);
880
- const price = this.safeNumber(change, 1);
881
- const amount = this.safeNumber(change, 2);
882
- const bookside = orderbook[side];
883
- bookside.store(price, amount);
884
- }
885
- orderbook['timestamp'] = timestamp;
886
- orderbook['datetime'] = this.iso8601(timestamp);
887
- client.resolve(orderbook, messageHash);
888
- }
889
- }
890
- handleSubscriptionStatus(client, message) {
891
- //
892
- // {
893
- // "type": "subscriptions",
894
- // "channels": [
895
- // {
896
- // "name": "level2",
897
- // "product_ids": [ "ETH-BTC" ]
898
- // }
899
- // ]
900
- // }
901
- //
902
- return message;
903
- }
904
- handleErrorMessage(client, message) {
905
- //
906
- // {
907
- // "type": "error",
908
- // "message": "error message",
909
- // /* ... */
910
- // }
911
- //
912
- // auth error
913
- //
914
- // {
915
- // "type": "error",
916
- // "message": "Authentication Failed",
917
- // "reason": "{"message":"Invalid API Key"}"
918
- // }
919
- //
920
- const errMsg = this.safeString(message, 'message');
921
- const reason = this.safeString(message, 'reason');
922
- try {
923
- if (errMsg === 'Authentication Failed') {
924
- throw new errors.AuthenticationError('Authentication failed: ' + reason);
925
- }
926
- else {
927
- throw new errors.ExchangeError(this.id + ' ' + reason);
928
- }
929
- }
930
- catch (error) {
931
- client.reject(error);
932
- return true;
933
- }
934
- }
935
- handleMessage(client, message) {
936
- const type = this.safeString(message, 'type');
937
- const methods = {
938
- 'snapshot': this.handleOrderBook,
939
- 'l2update': this.handleOrderBook,
940
- 'subscribe': this.handleSubscriptionStatus,
941
- 'ticker': this.handleTicker,
942
- 'received': this.handleOrder,
943
- 'open': this.handleOrder,
944
- 'change': this.handleOrder,
945
- 'done': this.handleOrder,
946
- 'error': this.handleErrorMessage,
947
- };
948
- const length = client.url.length - 0;
949
- const authenticated = client.url[length - 1] === '?';
950
- const method = this.safeValue(methods, type);
951
- if (method === undefined) {
952
- if (type === 'match') {
953
- if (authenticated) {
954
- this.handleMyTrade(client, message);
955
- this.handleOrder(client, message);
956
- }
957
- else {
958
- this.handleTrade(client, message);
959
- }
960
- }
961
- }
962
- else {
963
- return method.call(this, client, message);
964
- }
965
- }
966
- }
967
-
968
- module.exports = coinbasepro;