ccxt 4.2.17 → 4.2.19

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 (439) hide show
  1. package/README.md +9 -9
  2. package/dist/ccxt.browser.js +48992 -47725
  3. package/dist/ccxt.browser.min.js +3 -3
  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 +266 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +163 -34
  10. package/dist/cjs/src/binanceus.js +8 -0
  11. package/dist/cjs/src/bingx.js +183 -41
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +59 -16
  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/bybit.js +27 -47
  19. package/dist/cjs/src/coinbase.js +176 -26
  20. package/dist/cjs/src/coincheck.js +1 -0
  21. package/dist/cjs/src/coinex.js +3 -0
  22. package/dist/cjs/src/coinlist.js +13 -6
  23. package/dist/cjs/src/coinone.js +2 -2
  24. package/dist/cjs/src/coinsph.js +4 -5
  25. package/dist/cjs/src/delta.js +7 -1
  26. package/dist/cjs/src/deribit.js +17 -4
  27. package/dist/cjs/src/gate.js +151 -169
  28. package/dist/cjs/src/gemini.js +1 -1
  29. package/dist/cjs/src/hitbtc.js +2 -3
  30. package/dist/cjs/src/htx.js +157 -7
  31. package/dist/cjs/src/huobijp.js +2 -3
  32. package/dist/cjs/src/independentreserve.js +7 -5
  33. package/dist/cjs/src/kraken.js +86 -54
  34. package/dist/cjs/src/kucoin.js +5 -0
  35. package/dist/cjs/src/kucoinfutures.js +131 -77
  36. package/dist/cjs/src/lbank.js +60 -33
  37. package/dist/cjs/src/luno.js +84 -2
  38. package/dist/cjs/src/mexc.js +3 -3
  39. package/dist/cjs/src/oceanex.js +1 -1
  40. package/dist/cjs/src/okx.js +23 -11
  41. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  42. package/dist/cjs/src/phemex.js +37 -27
  43. package/dist/cjs/src/poloniexfutures.js +1 -0
  44. package/dist/cjs/src/pro/binance.js +66 -25
  45. package/dist/cjs/src/pro/bitget.js +1 -1
  46. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  47. package/dist/cjs/src/pro/coinbase.js +4 -1
  48. package/dist/cjs/src/pro/coincheck.js +208 -0
  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 +14 -2
  67. package/js/ccxt.js +10 -2
  68. package/js/src/abstract/bitpanda.d.ts +4 -4
  69. package/js/src/abstract/bitstamp.d.ts +8 -0
  70. package/js/src/abstract/gate.d.ts +1 -0
  71. package/js/src/abstract/gateio.d.ts +1 -0
  72. package/js/src/abstract/htx.d.ts +3 -0
  73. package/js/src/abstract/huobi.d.ts +3 -0
  74. package/js/src/abstract/luno.d.ts +1 -0
  75. package/js/src/abstract/onetrading.d.ts +38 -0
  76. package/js/src/ascendex.js +2 -0
  77. package/js/src/base/Exchange.d.ts +2 -3
  78. package/js/src/base/Exchange.js +5 -2
  79. package/js/src/binance.js +7 -1
  80. package/js/src/bingx.d.ts +1 -0
  81. package/js/src/bingx.js +26 -0
  82. package/js/src/bitget.js +22 -3
  83. package/js/src/bitpanda.d.ts +2 -72
  84. package/js/src/bitpanda.js +5 -1991
  85. package/js/src/bitstamp.js +8 -0
  86. package/js/src/bybit.js +21 -47
  87. package/js/src/coincheck.js +1 -0
  88. package/js/src/deribit.js +16 -4
  89. package/js/src/gate.d.ts +1 -0
  90. package/js/src/gate.js +50 -110
  91. package/js/src/htx.js +3 -0
  92. package/js/src/kraken.d.ts +1 -0
  93. package/js/src/kraken.js +40 -39
  94. package/js/src/lbank.js +1 -0
  95. package/js/src/luno.d.ts +3 -1
  96. package/js/src/luno.js +84 -2
  97. package/js/src/mexc.js +1 -2
  98. package/js/src/onetrading.d.ts +74 -0
  99. package/js/src/onetrading.js +2003 -0
  100. package/js/src/poloniexfutures.js +1 -0
  101. package/js/src/pro/binance.js +7 -2
  102. package/js/src/pro/bitget.js +1 -1
  103. package/js/src/pro/bitpanda.d.ts +2 -34
  104. package/js/src/pro/bitpanda.js +5 -1330
  105. package/js/src/pro/coincheck.d.ts +12 -0
  106. package/js/src/pro/coincheck.js +209 -0
  107. package/js/src/pro/kucoin.js +43 -35
  108. package/js/src/pro/kucoinfutures.js +45 -37
  109. package/js/src/pro/lbank.d.ts +29 -0
  110. package/js/src/pro/lbank.js +882 -0
  111. package/js/src/pro/onetrading.d.ts +36 -0
  112. package/js/src/pro/onetrading.js +1339 -0
  113. package/js/src/pro/poloniexfutures.js +43 -35
  114. package/js/src/whitebit.js +1 -0
  115. package/package.json +2 -2
  116. package/rollup.config.js +2 -0
  117. package/skip-tests.json +14 -2
  118. package/test-commonjs.cjs +25 -1
  119. package/dist/cjs/js/ccxt.js +0 -476
  120. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  121. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  122. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  123. package/dist/cjs/js/src/abstract/binance.js +0 -9
  124. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  125. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  126. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  127. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  128. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  130. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  131. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  132. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  133. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  140. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  143. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  144. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  145. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  146. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  147. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  148. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  149. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  150. package/dist/cjs/js/src/abstract/cex.js +0 -9
  151. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  152. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  153. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  154. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  155. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  156. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  157. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  160. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  161. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  162. package/dist/cjs/js/src/abstract/delta.js +0 -9
  163. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  164. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  165. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  166. package/dist/cjs/js/src/abstract/gate.js +0 -9
  167. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  168. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  169. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  170. package/dist/cjs/js/src/abstract/htx.js +0 -9
  171. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  172. package/dist/cjs/js/src/abstract/idex.js +0 -9
  173. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  174. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  175. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  176. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  177. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  178. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  179. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  180. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  181. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  182. package/dist/cjs/js/src/abstract/luno.js +0 -9
  183. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  184. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  185. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  186. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  187. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  188. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  189. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  190. package/dist/cjs/js/src/abstract/okx.js +0 -9
  191. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  192. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  193. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  194. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  195. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  196. package/dist/cjs/js/src/abstract/probit.js +0 -9
  197. package/dist/cjs/js/src/abstract/timex.js +0 -9
  198. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  199. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  200. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  201. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  202. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  203. package/dist/cjs/js/src/abstract/woo.js +0 -9
  204. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  205. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  206. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  207. package/dist/cjs/js/src/ace.js +0 -1058
  208. package/dist/cjs/js/src/alpaca.js +0 -1125
  209. package/dist/cjs/js/src/ascendex.js +0 -3365
  210. package/dist/cjs/js/src/base/Exchange.js +0 -5257
  211. package/dist/cjs/js/src/base/Precise.js +0 -263
  212. package/dist/cjs/js/src/base/errors.js +0 -299
  213. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  214. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  215. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  216. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  217. package/dist/cjs/js/src/base/functions/number.js +0 -297
  218. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  219. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  220. package/dist/cjs/js/src/base/functions/string.js +0 -48
  221. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  222. package/dist/cjs/js/src/base/functions/time.js +0 -187
  223. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  224. package/dist/cjs/js/src/base/functions/type.js +0 -162
  225. package/dist/cjs/js/src/base/functions.js +0 -157
  226. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  227. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  228. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  229. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  230. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  231. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  232. package/dist/cjs/js/src/bequant.js +0 -33
  233. package/dist/cjs/js/src/bigone.js +0 -2213
  234. package/dist/cjs/js/src/binance.js +0 -9845
  235. package/dist/cjs/js/src/binancecoinm.js +0 -45
  236. package/dist/cjs/js/src/binanceus.js +0 -92
  237. package/dist/cjs/js/src/binanceusdm.js +0 -58
  238. package/dist/cjs/js/src/bingx.js +0 -3846
  239. package/dist/cjs/js/src/bit2c.js +0 -916
  240. package/dist/cjs/js/src/bitbank.js +0 -1000
  241. package/dist/cjs/js/src/bitbay.js +0 -17
  242. package/dist/cjs/js/src/bitbns.js +0 -1220
  243. package/dist/cjs/js/src/bitcoincom.js +0 -17
  244. package/dist/cjs/js/src/bitfinex.js +0 -1670
  245. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  246. package/dist/cjs/js/src/bitflyer.js +0 -1045
  247. package/dist/cjs/js/src/bitforex.js +0 -852
  248. package/dist/cjs/js/src/bitget.js +0 -8295
  249. package/dist/cjs/js/src/bithumb.js +0 -1090
  250. package/dist/cjs/js/src/bitmart.js +0 -4454
  251. package/dist/cjs/js/src/bitmex.js +0 -2881
  252. package/dist/cjs/js/src/bitopro.js +0 -1724
  253. package/dist/cjs/js/src/bitrue.js +0 -3253
  254. package/dist/cjs/js/src/bitso.js +0 -1753
  255. package/dist/cjs/js/src/bitstamp.js +0 -2188
  256. package/dist/cjs/js/src/bitteam.js +0 -2309
  257. package/dist/cjs/js/src/bitvavo.js +0 -1968
  258. package/dist/cjs/js/src/bl3p.js +0 -447
  259. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  260. package/dist/cjs/js/src/btcalpha.js +0 -929
  261. package/dist/cjs/js/src/btcbox.js +0 -565
  262. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  263. package/dist/cjs/js/src/btcturk.js +0 -929
  264. package/dist/cjs/js/src/bybit.js +0 -7650
  265. package/dist/cjs/js/src/cex.js +0 -1693
  266. package/dist/cjs/js/src/coinbase.js +0 -3424
  267. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  268. package/dist/cjs/js/src/coincheck.js +0 -843
  269. package/dist/cjs/js/src/coinex.js +0 -5417
  270. package/dist/cjs/js/src/coinlist.js +0 -2337
  271. package/dist/cjs/js/src/coinmate.js +0 -989
  272. package/dist/cjs/js/src/coinone.js +0 -1185
  273. package/dist/cjs/js/src/coinsph.js +0 -1933
  274. package/dist/cjs/js/src/coinspot.js +0 -548
  275. package/dist/cjs/js/src/cryptocom.js +0 -3007
  276. package/dist/cjs/js/src/currencycom.js +0 -2015
  277. package/dist/cjs/js/src/delta.js +0 -3262
  278. package/dist/cjs/js/src/deribit.js +0 -3306
  279. package/dist/cjs/js/src/digifinex.js +0 -4307
  280. package/dist/cjs/js/src/exmo.js +0 -2645
  281. package/dist/cjs/js/src/fmfwio.js +0 -34
  282. package/dist/cjs/js/src/gate.js +0 -7077
  283. package/dist/cjs/js/src/gateio.js +0 -16
  284. package/dist/cjs/js/src/gemini.js +0 -1801
  285. package/dist/cjs/js/src/hitbtc.js +0 -3660
  286. package/dist/cjs/js/src/hitbtc3.js +0 -19
  287. package/dist/cjs/js/src/hollaex.js +0 -1882
  288. package/dist/cjs/js/src/htx.js +0 -9174
  289. package/dist/cjs/js/src/huobi.js +0 -16
  290. package/dist/cjs/js/src/huobijp.js +0 -1918
  291. package/dist/cjs/js/src/idex.js +0 -1770
  292. package/dist/cjs/js/src/independentreserve.js +0 -761
  293. package/dist/cjs/js/src/indodax.js +0 -1069
  294. package/dist/cjs/js/src/kraken.js +0 -2891
  295. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  296. package/dist/cjs/js/src/kucoin.js +0 -4494
  297. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  298. package/dist/cjs/js/src/kuna.js +0 -1949
  299. package/dist/cjs/js/src/latoken.js +0 -1729
  300. package/dist/cjs/js/src/lbank.js +0 -2851
  301. package/dist/cjs/js/src/luno.js +0 -1044
  302. package/dist/cjs/js/src/lykke.js +0 -1303
  303. package/dist/cjs/js/src/mercado.js +0 -897
  304. package/dist/cjs/js/src/mexc.js +0 -5407
  305. package/dist/cjs/js/src/ndax.js +0 -2450
  306. package/dist/cjs/js/src/novadax.js +0 -1556
  307. package/dist/cjs/js/src/oceanex.js +0 -964
  308. package/dist/cjs/js/src/okcoin.js +0 -3115
  309. package/dist/cjs/js/src/okx.js +0 -7331
  310. package/dist/cjs/js/src/p2b.js +0 -1243
  311. package/dist/cjs/js/src/paymium.js +0 -597
  312. package/dist/cjs/js/src/phemex.js +0 -4725
  313. package/dist/cjs/js/src/poloniex.js +0 -2356
  314. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  315. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  316. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  317. package/dist/cjs/js/src/pro/bequant.js +0 -33
  318. package/dist/cjs/js/src/pro/binance.js +0 -2796
  319. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  320. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  321. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  322. package/dist/cjs/js/src/pro/bingx.js +0 -944
  323. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  324. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  325. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  326. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  327. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  328. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  329. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  330. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  331. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  332. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  333. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  334. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  335. package/dist/cjs/js/src/pro/cex.js +0 -1510
  336. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  337. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  338. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  339. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  340. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  341. package/dist/cjs/js/src/pro/deribit.js +0 -825
  342. package/dist/cjs/js/src/pro/exmo.js +0 -658
  343. package/dist/cjs/js/src/pro/gate.js +0 -1316
  344. package/dist/cjs/js/src/pro/gateio.js +0 -16
  345. package/dist/cjs/js/src/pro/gemini.js +0 -649
  346. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  347. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  348. package/dist/cjs/js/src/pro/htx.js +0 -2388
  349. package/dist/cjs/js/src/pro/huobi.js +0 -16
  350. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  351. package/dist/cjs/js/src/pro/idex.js +0 -714
  352. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  353. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  354. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  355. package/dist/cjs/js/src/pro/kucoin.js +0 -1054
  356. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -981
  357. package/dist/cjs/js/src/pro/luno.js +0 -322
  358. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  359. package/dist/cjs/js/src/pro/ndax.js +0 -545
  360. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  361. package/dist/cjs/js/src/pro/okx.js +0 -1608
  362. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  363. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  364. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1014
  365. package/dist/cjs/js/src/pro/probit.js +0 -586
  366. package/dist/cjs/js/src/pro/upbit.js +0 -234
  367. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  368. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  369. package/dist/cjs/js/src/pro/woo.js +0 -895
  370. package/dist/cjs/js/src/probit.js +0 -1867
  371. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  372. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  373. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  374. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  375. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  376. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  377. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  378. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  386. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  387. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  388. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  389. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  390. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  391. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  392. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  396. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  397. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  398. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  399. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  400. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  401. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  402. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  407. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  408. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  409. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  410. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  411. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  412. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  413. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  419. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  420. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  421. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  422. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  423. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  424. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  425. package/dist/cjs/js/src/timex.js +0 -1562
  426. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  427. package/dist/cjs/js/src/upbit.js +0 -1844
  428. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  429. package/dist/cjs/js/src/wazirx.js +0 -953
  430. package/dist/cjs/js/src/whitebit.js +0 -2309
  431. package/dist/cjs/js/src/woo.js +0 -2769
  432. package/dist/cjs/js/src/yobit.js +0 -1314
  433. package/dist/cjs/js/src/zaif.js +0 -736
  434. package/dist/cjs/js/src/zonda.js +0 -1883
  435. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  436. package/test.ts +0 -0
  437. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  438. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
  439. /package/js/src/abstract/{bitpanda.js → onetrading.js} +0 -0
@@ -20,6 +20,7 @@ class okx extends okx$1 {
20
20
  'watchOrderBookForSymbols': true,
21
21
  'watchBalance': true,
22
22
  'watchOHLCV': true,
23
+ 'watchOHLCVForSymbols': true,
23
24
  'watchOrders': true,
24
25
  'watchMyTrades': true,
25
26
  'watchPositions': true,
@@ -356,6 +357,50 @@ class okx extends okx$1 {
356
357
  }
357
358
  return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
358
359
  }
360
+ async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
361
+ /**
362
+ * @method
363
+ * @name okx#watchOHLCVForSymbols
364
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
365
+ * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
366
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
367
+ * @param {int} [limit] the maximum amount of candles to fetch
368
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
369
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
370
+ */
371
+ const symbolsLength = symbolsAndTimeframes.length;
372
+ if (symbolsLength === 0 || !Array.isArray(symbolsAndTimeframes[0])) {
373
+ throw new errors.ArgumentsRequired(this.id + " watchOHLCVForSymbols() requires a an array of symbols and timeframes, like [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]");
374
+ }
375
+ await this.loadMarkets();
376
+ const topics = [];
377
+ const messageHashes = [];
378
+ for (let i = 0; i < symbolsAndTimeframes.length; i++) {
379
+ const symbolAndTimeframe = symbolsAndTimeframes[i];
380
+ const sym = symbolAndTimeframe[0];
381
+ const tf = symbolAndTimeframe[1];
382
+ const marketId = this.marketId(sym);
383
+ const interval = this.safeString(this.timeframes, tf, tf);
384
+ const channel = 'candle' + interval;
385
+ const topic = {
386
+ 'channel': channel,
387
+ 'instId': marketId,
388
+ };
389
+ topics.push(topic);
390
+ messageHashes.push('multi:' + channel + ':' + sym);
391
+ }
392
+ const request = {
393
+ 'op': 'subscribe',
394
+ 'args': topics,
395
+ };
396
+ const url = this.getUrl('candle', 'public');
397
+ const [symbol, timeframe, candles] = await this.watchMultiple(url, messageHashes, request, messageHashes);
398
+ if (this.newUpdates) {
399
+ limit = candles.getLimit(symbol, limit);
400
+ }
401
+ const filtered = this.filterBySinceLimit(candles, since, limit, 0, true);
402
+ return this.createOHLCVObject(symbol, timeframe, filtered);
403
+ }
359
404
  handleOHLCV(client, message) {
360
405
  //
361
406
  // {
@@ -378,7 +423,7 @@ class okx extends okx$1 {
378
423
  const data = this.safeValue(message, 'data', []);
379
424
  const marketId = this.safeString(arg, 'instId');
380
425
  const market = this.safeMarket(marketId);
381
- const symbol = market['id'];
426
+ const symbol = market['symbol'];
382
427
  const interval = channel.replace('candle', '');
383
428
  // use a reverse lookup in a static map instead
384
429
  const timeframe = this.findTimeframe(interval);
@@ -392,8 +437,13 @@ class okx extends okx$1 {
392
437
  this.ohlcvs[symbol][timeframe] = stored;
393
438
  }
394
439
  stored.append(parsed);
395
- const messageHash = channel + ':' + marketId;
440
+ const messageHash = channel + ':' + market['id'];
396
441
  client.resolve(stored, messageHash);
442
+ // for multiOHLCV we need special object, as opposed to other "multi"
443
+ // methods, because OHLCV response item does not contain symbol
444
+ // or timeframe, thus otherwise it would be unrecognizable
445
+ const messageHashForMulti = 'multi:' + channel + ':' + symbol;
446
+ client.resolve([symbol, timeframe, stored], messageHashForMulti);
397
447
  }
398
448
  }
399
449
  async watchOrderBook(symbol, limit = undefined, params = {}) {
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var bitpanda$1 = require('../bitpanda.js');
3
+ var onetrading$1 = require('../onetrading.js');
4
4
  var errors = require('../base/errors.js');
5
5
  var Cache = require('../base/ws/Cache.js');
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  // ---------------------------------------------------------------------------
9
- class bitpanda extends bitpanda$1 {
9
+ class onetrading extends onetrading$1 {
10
10
  describe() {
11
11
  return this.deepExtend(super.describe(), {
12
12
  'has': {
@@ -21,11 +21,8 @@ class bitpanda extends bitpanda$1 {
21
21
  'watchOHLCV': true,
22
22
  },
23
23
  'urls': {
24
- 'test': {
25
- 'ws': 'wss://test.bitpanda.com/ws/api/v2',
26
- },
27
24
  'api': {
28
- 'ws': 'wss://streams.exchange.bitpanda.com',
25
+ 'ws': 'wss://streams.onetrading.com/',
29
26
  },
30
27
  },
31
28
  'options': {
@@ -1338,4 +1335,4 @@ class bitpanda extends bitpanda$1 {
1338
1335
  }
1339
1336
  }
1340
1337
 
1341
- module.exports = bitpanda;
1338
+ module.exports = onetrading;
@@ -940,7 +940,7 @@ class poloniex extends poloniex$1 {
940
940
  // }
941
941
  //
942
942
  const data = this.safeValue(message, 'data', []);
943
- const newTickers = [];
943
+ const newTickers = {};
944
944
  for (let i = 0; i < data.length; i++) {
945
945
  const item = data[i];
946
946
  const marketId = this.safeString(item, 'symbol');
@@ -948,7 +948,7 @@ class poloniex extends poloniex$1 {
948
948
  const ticker = this.parseTicker(item);
949
949
  const symbol = ticker['symbol'];
950
950
  this.tickers[symbol] = ticker;
951
- newTickers.push(ticker);
951
+ newTickers[symbol] = ticker;
952
952
  }
953
953
  }
954
954
  const messageHashes = this.findMessageHashes(client, 'ticker::');
@@ -75,43 +75,51 @@ class poloniexfutures extends poloniexfutures$1 {
75
75
  async negotiateHelper(privateChannel, params = {}) {
76
76
  let response = undefined;
77
77
  const connectId = privateChannel ? 'private' : 'public';
78
- if (privateChannel) {
79
- response = await this.privatePostBulletPrivate(params);
80
- //
81
- // {
82
- // "code": "200000",
83
- // "data": {
84
- // "instanceServers": [
85
- // {
86
- // "pingInterval": 50000,
87
- // "endpoint": "wss://push-private.kucoin.com/endpoint",
88
- // "protocol": "websocket",
89
- // "encrypt": true,
90
- // "pingTimeout": 10000
91
- // }
92
- // ],
93
- // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
94
- // }
95
- // }
96
- //
78
+ try {
79
+ if (privateChannel) {
80
+ response = await this.privatePostBulletPrivate(params);
81
+ //
82
+ // {
83
+ // "code": "200000",
84
+ // "data": {
85
+ // "instanceServers": [
86
+ // {
87
+ // "pingInterval": 50000,
88
+ // "endpoint": "wss://push-private.kucoin.com/endpoint",
89
+ // "protocol": "websocket",
90
+ // "encrypt": true,
91
+ // "pingTimeout": 10000
92
+ // }
93
+ // ],
94
+ // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
95
+ // }
96
+ // }
97
+ //
98
+ }
99
+ else {
100
+ response = await this.publicPostBulletPublic(params);
101
+ }
102
+ const data = this.safeValue(response, 'data', {});
103
+ const instanceServers = this.safeValue(data, 'instanceServers', []);
104
+ const firstInstanceServer = this.safeValue(instanceServers, 0);
105
+ const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
106
+ const endpoint = this.safeString(firstInstanceServer, 'endpoint');
107
+ const token = this.safeString(data, 'token');
108
+ const result = endpoint + '?' + this.urlencode({
109
+ 'token': token,
110
+ 'privateChannel': privateChannel,
111
+ 'connectId': connectId,
112
+ });
113
+ const client = this.client(result);
114
+ client.keepAlive = pingInterval;
115
+ return result;
97
116
  }
98
- else {
99
- response = await this.publicPostBulletPublic(params);
117
+ catch (e) {
118
+ const future = this.safeValue(this.options['urls'], connectId);
119
+ future.reject(e);
120
+ delete this.options['urls'][connectId];
100
121
  }
101
- const data = this.safeValue(response, 'data', {});
102
- const instanceServers = this.safeValue(data, 'instanceServers', []);
103
- const firstInstanceServer = this.safeValue(instanceServers, 0);
104
- const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
105
- const endpoint = this.safeString(firstInstanceServer, 'endpoint');
106
- const token = this.safeString(data, 'token');
107
- const result = endpoint + '?' + this.urlencode({
108
- 'token': token,
109
- 'privateChannel': privateChannel,
110
- 'connectId': connectId,
111
- });
112
- const client = this.client(result);
113
- client.keepAlive = pingInterval;
114
- return result;
122
+ return undefined;
115
123
  }
116
124
  requestId() {
117
125
  const requestId = this.sum(this.safeInteger(this.options, 'requestId', 0), 1);
@@ -21,6 +21,7 @@ class woo extends woo$1 {
21
21
  'watchTicker': true,
22
22
  'watchTickers': true,
23
23
  'watchTrades': true,
24
+ 'watchPositions': true,
24
25
  },
25
26
  'urls': {
26
27
  'api': {
@@ -45,6 +46,10 @@ class woo extends woo$1 {
45
46
  'tradesLimit': 1000,
46
47
  'ordersLimit': 1000,
47
48
  'requestId': {},
49
+ 'watchPositions': {
50
+ 'fetchPositionsSnapshot': true,
51
+ 'awaitPositionsSnapshot': true, // whether to wait for the positions snapshot before providing updates
52
+ },
48
53
  },
49
54
  'streaming': {
50
55
  'ping': this.ping,
@@ -603,6 +608,126 @@ class woo extends woo$1 {
603
608
  client.resolve(this.orders, messageHashSymbol);
604
609
  }
605
610
  }
611
+ async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
612
+ /**
613
+ * @method
614
+ * @name woo#watchPositions
615
+ * @see https://docs.woo.org/#position-push
616
+ * @description watch all open positions
617
+ * @param {string[]|undefined} symbols list of unified market symbols
618
+ * @param {object} params extra parameters specific to the exchange API endpoint
619
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
620
+ */
621
+ await this.loadMarkets();
622
+ let messageHash = '';
623
+ symbols = this.marketSymbols(symbols);
624
+ if (!this.isEmpty(symbols)) {
625
+ messageHash = '::' + symbols.join(',');
626
+ }
627
+ messageHash = 'positions' + messageHash;
628
+ const url = this.urls['api']['ws']['private'] + '/' + this.uid;
629
+ const client = this.client(url);
630
+ this.setPositionsCache(client, symbols);
631
+ const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', true);
632
+ const awaitPositionsSnapshot = this.safeValue('watchPositions', 'awaitPositionsSnapshot', true);
633
+ if (fetchPositionsSnapshot && awaitPositionsSnapshot && this.positions === undefined) {
634
+ const snapshot = await client.future('fetchPositionsSnapshot');
635
+ return this.filterBySymbolsSinceLimit(snapshot, symbols, since, limit, true);
636
+ }
637
+ const request = {
638
+ 'event': 'subscribe',
639
+ 'topic': 'position',
640
+ };
641
+ const newPositions = await this.watchPrivate(messageHash, request, params);
642
+ if (this.newUpdates) {
643
+ return newPositions;
644
+ }
645
+ return this.filterBySymbolsSinceLimit(this.positions, symbols, since, limit, true);
646
+ }
647
+ setPositionsCache(client, type, symbols = undefined) {
648
+ const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', false);
649
+ if (fetchPositionsSnapshot) {
650
+ const messageHash = 'fetchPositionsSnapshot';
651
+ if (!(messageHash in client.futures)) {
652
+ client.future(messageHash);
653
+ this.spawn(this.loadPositionsSnapshot, client, messageHash);
654
+ }
655
+ }
656
+ else {
657
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
658
+ }
659
+ }
660
+ async loadPositionsSnapshot(client, messageHash) {
661
+ const positions = await this.fetchPositions();
662
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
663
+ const cache = this.positions;
664
+ for (let i = 0; i < positions.length; i++) {
665
+ const position = positions[i];
666
+ const contracts = this.safeNumber(position, 'contracts', 0);
667
+ if (contracts > 0) {
668
+ cache.append(position);
669
+ }
670
+ }
671
+ // don't remove the future from the .futures cache
672
+ const future = client.futures[messageHash];
673
+ future.resolve(cache);
674
+ client.resolve(cache, 'positions');
675
+ }
676
+ handlePositions(client, message) {
677
+ //
678
+ // {
679
+ // "topic":"position",
680
+ // "ts":1705292345255,
681
+ // "data":{
682
+ // "positions":{
683
+ // "PERP_LTC_USDT":{
684
+ // "holding":1,
685
+ // "pendingLongQty":0,
686
+ // "pendingShortQty":0,
687
+ // "averageOpenPrice":71.53,
688
+ // "pnl24H":0,
689
+ // "fee24H":0.07153,
690
+ // "settlePrice":71.53,
691
+ // "markPrice":71.32098452065145,
692
+ // "version":7886,
693
+ // "openingTime":1705292304267,
694
+ // "pnl24HPercentage":0,
695
+ // "adlQuantile":1,
696
+ // "positionSide":"BOTH"
697
+ // }
698
+ // }
699
+ // }
700
+ // }
701
+ //
702
+ const data = this.safeValue(message, 'data', {});
703
+ const rawPositions = this.safeValue(data, 'positions', {});
704
+ const postitionsIds = Object.keys(rawPositions);
705
+ if (this.positions === undefined) {
706
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
707
+ }
708
+ const cache = this.positions;
709
+ const newPositions = [];
710
+ for (let i = 0; i < postitionsIds.length; i++) {
711
+ const marketId = postitionsIds[i];
712
+ const market = this.safeMarket(marketId);
713
+ const rawPosition = rawPositions[marketId];
714
+ const position = this.parsePosition(rawPosition, market);
715
+ newPositions.push(position);
716
+ cache.append(position);
717
+ }
718
+ const messageHashes = this.findMessageHashes(client, 'positions::');
719
+ for (let i = 0; i < messageHashes.length; i++) {
720
+ const messageHash = messageHashes[i];
721
+ const parts = messageHash.split('::');
722
+ const symbolsString = parts[1];
723
+ const symbols = symbolsString.split(',');
724
+ const positions = this.filterByArray(newPositions, 'symbol', symbols, false);
725
+ if (!this.isEmpty(positions)) {
726
+ client.resolve(positions, messageHash);
727
+ }
728
+ }
729
+ client.resolve(newPositions, 'positions');
730
+ }
606
731
  async watchBalance(params = {}) {
607
732
  /**
608
733
  * @method
@@ -686,6 +811,7 @@ class woo extends woo$1 {
686
811
  'executionreport': this.handleOrderUpdate,
687
812
  'trade': this.handleTrade,
688
813
  'balance': this.handleBalance,
814
+ 'position': this.handlePositions,
689
815
  };
690
816
  const event = this.safeString(message, 'event');
691
817
  let method = this.safeValue(methods, event);
@@ -776,7 +776,6 @@ class probit extends probit$1 {
776
776
  const market = this.market(symbol);
777
777
  const request = {
778
778
  'market_id': market['id'],
779
- 'limit': 100,
780
779
  'start_time': '1970-01-01T00:00:00.000Z',
781
780
  'end_time': this.iso8601(this.milliseconds()),
782
781
  };
@@ -784,7 +783,10 @@ class probit extends probit$1 {
784
783
  request['start_time'] = this.iso8601(since);
785
784
  }
786
785
  if (limit !== undefined) {
787
- request['limit'] = Math.min(limit, 10000);
786
+ request['limit'] = Math.min(limit, 1000);
787
+ }
788
+ else {
789
+ request['limit'] = 1000; // required to set any value
788
790
  }
789
791
  const response = await this.publicGetTrade(this.extend(request, params));
790
792
  //
@@ -261,11 +261,11 @@ class upbit extends upbit$1 {
261
261
  else if ((locked !== undefined) && locked) {
262
262
  active = false;
263
263
  }
264
- const maxOnetimeWithdrawal = this.safeNumber(withdrawLimits, 'onetime');
265
- const maxDailyWithdrawal = this.safeNumber(withdrawLimits, 'daily', maxOnetimeWithdrawal);
266
- const remainingDailyWithdrawal = this.safeNumber(withdrawLimits, 'remaining_daily', maxDailyWithdrawal);
264
+ const maxOnetimeWithdrawal = this.safeString(withdrawLimits, 'onetime');
265
+ const maxDailyWithdrawal = this.safeString(withdrawLimits, 'daily', maxOnetimeWithdrawal);
266
+ const remainingDailyWithdrawal = this.safeString(withdrawLimits, 'remaining_daily', maxDailyWithdrawal);
267
267
  let maxWithdrawLimit = undefined;
268
- if (remainingDailyWithdrawal > 0) {
268
+ if (Precise["default"].stringGt(remainingDailyWithdrawal, '0')) {
269
269
  maxWithdrawLimit = remainingDailyWithdrawal;
270
270
  }
271
271
  else {
@@ -284,7 +284,7 @@ class upbit extends upbit$1 {
284
284
  'limits': {
285
285
  'withdraw': {
286
286
  'min': this.safeNumber(withdrawLimits, 'minimum'),
287
- 'max': maxWithdrawLimit,
287
+ 'max': this.parseNumber(maxWithdrawLimit),
288
288
  },
289
289
  },
290
290
  };
@@ -344,10 +344,10 @@ class upbit extends upbit$1 {
344
344
  const base = this.safeCurrencyCode(baseId);
345
345
  const quote = this.safeCurrencyCode(quoteId);
346
346
  const state = this.safeString(marketInfo, 'state');
347
- const bidFee = this.safeNumber(response, 'bid_fee');
348
- const askFee = this.safeNumber(response, 'ask_fee');
349
- const fee = Math.max(bidFee, askFee);
350
- return {
347
+ const bidFee = this.safeString(response, 'bid_fee');
348
+ const askFee = this.safeString(response, 'ask_fee');
349
+ const fee = this.parseNumber(Precise["default"].stringMax(bidFee, askFee));
350
+ return this.safeMarketStructure({
351
351
  'id': marketId,
352
352
  'symbol': base + '/' + quote,
353
353
  'base': base,
@@ -396,7 +396,7 @@ class upbit extends upbit$1 {
396
396
  },
397
397
  'info': response,
398
398
  },
399
- };
399
+ });
400
400
  }
401
401
  async fetchMarkets(params = {}) {
402
402
  /**
@@ -425,7 +425,7 @@ class upbit extends upbit$1 {
425
425
  const [quoteId, baseId] = id.split('-');
426
426
  const base = this.safeCurrencyCode(baseId);
427
427
  const quote = this.safeCurrencyCode(quoteId);
428
- return {
428
+ return this.safeMarketStructure({
429
429
  'id': id,
430
430
  'symbol': base + '/' + quote,
431
431
  'base': base,
@@ -475,7 +475,7 @@ class upbit extends upbit$1 {
475
475
  },
476
476
  'created': undefined,
477
477
  'info': market,
478
- };
478
+ });
479
479
  }
480
480
  parseBalance(response) {
481
481
  const result = {
@@ -2092,7 +2092,7 @@ class wavesexchange extends wavesexchange$1 {
2092
2092
  'priceAsset': market['quoteId'],
2093
2093
  };
2094
2094
  if (limit !== undefined) {
2095
- request['limit'] = limit;
2095
+ request['limit'] = Math.min(limit, 100);
2096
2096
  }
2097
2097
  if (since !== undefined) {
2098
2098
  request['timeStart'] = since;
@@ -66,6 +66,7 @@ class whitebit extends whitebit$1 {
66
66
  'fetchOrderTrades': true,
67
67
  'fetchPositionMode': false,
68
68
  'fetchPremiumIndexOHLCV': false,
69
+ 'fetchStatus': true,
69
70
  'fetchTicker': true,
70
71
  'fetchTickers': true,
71
72
  'fetchTime': true,
@@ -42,10 +42,16 @@ class woo extends woo$1 {
42
42
  'createMarketOrderWithCost': false,
43
43
  'createMarketSellOrderWithCost': false,
44
44
  'createOrder': true,
45
+ 'createOrderWithTakeProfitAndStopLoss': true,
45
46
  'createReduceOnlyOrder': true,
46
47
  'createStopLimitOrder': false,
48
+ 'createStopLossOrder': true,
47
49
  'createStopMarketOrder': false,
48
50
  'createStopOrder': false,
51
+ 'createTakeProfitOrder': true,
52
+ 'createTrailingAmountOrder': true,
53
+ 'createTrailingPercentOrder': true,
54
+ 'createTriggerOrder': true,
49
55
  'fetchAccounts': true,
50
56
  'fetchBalance': true,
51
57
  'fetchCanceledOrders': false,
@@ -761,6 +767,56 @@ class woo extends woo$1 {
761
767
  params['createMarketBuyOrderRequiresPrice'] = false;
762
768
  return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
763
769
  }
770
+ async createTrailingAmountOrder(symbol, type, side, amount, price = undefined, trailingAmount = undefined, trailingTriggerPrice = undefined, params = {}) {
771
+ /**
772
+ * @method
773
+ * @name woo#createTrailingAmountOrder
774
+ * @description create a trailing order by providing the symbol, type, side, amount, price and trailingAmount
775
+ * @param {string} symbol unified symbol of the market to create an order in
776
+ * @param {string} type 'market' or 'limit'
777
+ * @param {string} side 'buy' or 'sell'
778
+ * @param {float} amount how much you want to trade in units of the base currency, or number of contracts
779
+ * @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
780
+ * @param {float} trailingAmount the quote amount to trail away from the current market price
781
+ * @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
782
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
783
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
784
+ */
785
+ if (trailingAmount === undefined) {
786
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingAmount argument');
787
+ }
788
+ if (trailingTriggerPrice === undefined) {
789
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingTriggerPrice argument');
790
+ }
791
+ params['trailingAmount'] = trailingAmount;
792
+ params['trailingTriggerPrice'] = trailingTriggerPrice;
793
+ return await this.createOrder(symbol, type, side, amount, price, params);
794
+ }
795
+ async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
796
+ /**
797
+ * @method
798
+ * @name woo#createTrailingPercentOrder
799
+ * @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
800
+ * @param {string} symbol unified symbol of the market to create an order in
801
+ * @param {string} type 'market' or 'limit'
802
+ * @param {string} side 'buy' or 'sell'
803
+ * @param {float} amount how much you want to trade in units of the base currency, or number of contracts
804
+ * @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
805
+ * @param {float} trailingPercent the percent to trail away from the current market price
806
+ * @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
807
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
808
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
809
+ */
810
+ if (trailingPercent === undefined) {
811
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
812
+ }
813
+ if (trailingTriggerPrice === undefined) {
814
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingTriggerPrice argument');
815
+ }
816
+ params['trailingPercent'] = trailingPercent;
817
+ params['trailingTriggerPrice'] = trailingTriggerPrice;
818
+ return await this.createOrder(symbol, type, side, amount, price, params);
819
+ }
764
820
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
765
821
  /**
766
822
  * @method