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
@@ -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
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
7
- declare const version = "4.2.17";
7
+ declare const version = "4.2.19";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
@@ -87,6 +87,7 @@ import novadax from './src/novadax.js';
87
87
  import oceanex from './src/oceanex.js';
88
88
  import okcoin from './src/okcoin.js';
89
89
  import okx from './src/okx.js';
90
+ import onetrading from './src/onetrading.js';
90
91
  import p2b from './src/p2b.js';
91
92
  import paymium from './src/paymium.js';
92
93
  import phemex from './src/phemex.js';
@@ -148,11 +149,13 @@ import krakenPro from './src/pro/kraken.js';
148
149
  import krakenfuturesPro from './src/pro/krakenfutures.js';
149
150
  import kucoinPro from './src/pro/kucoin.js';
150
151
  import kucoinfuturesPro from './src/pro/kucoinfutures.js';
152
+ import lbankPro from './src/pro/lbank.js';
151
153
  import lunoPro from './src/pro/luno.js';
152
154
  import mexcPro from './src/pro/mexc.js';
153
155
  import ndaxPro from './src/pro/ndax.js';
154
156
  import okcoinPro from './src/pro/okcoin.js';
155
157
  import okxPro from './src/pro/okx.js';
158
+ import onetradingPro from './src/pro/onetrading.js';
156
159
  import phemexPro from './src/pro/phemex.js';
157
160
  import poloniexPro from './src/pro/poloniex.js';
158
161
  import poloniexfuturesPro from './src/pro/poloniexfutures.js';
@@ -244,6 +247,7 @@ declare const exchanges: {
244
247
  oceanex: typeof oceanex;
245
248
  okcoin: typeof okcoin;
246
249
  okx: typeof okx;
250
+ onetrading: typeof onetrading;
247
251
  p2b: typeof p2b;
248
252
  paymium: typeof paymium;
249
253
  phemex: typeof phemex;
@@ -307,11 +311,13 @@ declare const pro: {
307
311
  krakenfutures: typeof krakenfuturesPro;
308
312
  kucoin: typeof kucoinPro;
309
313
  kucoinfutures: typeof kucoinfuturesPro;
314
+ lbank: typeof lbankPro;
310
315
  luno: typeof lunoPro;
311
316
  mexc: typeof mexcPro;
312
317
  ndax: typeof ndaxPro;
313
318
  okcoin: typeof okcoinPro;
314
319
  okx: typeof okxPro;
320
+ onetrading: typeof onetradingPro;
315
321
  phemex: typeof phemexPro;
316
322
  poloniex: typeof poloniexPro;
317
323
  poloniexfutures: typeof poloniexfuturesPro;
@@ -372,11 +378,13 @@ declare const ccxt: {
372
378
  krakenfutures: typeof krakenfuturesPro;
373
379
  kucoin: typeof kucoinPro;
374
380
  kucoinfutures: typeof kucoinfuturesPro;
381
+ lbank: typeof lbankPro;
375
382
  luno: typeof lunoPro;
376
383
  mexc: typeof mexcPro;
377
384
  ndax: typeof ndaxPro;
378
385
  okcoin: typeof okcoinPro;
379
386
  okx: typeof okxPro;
387
+ onetrading: typeof onetradingPro;
380
388
  phemex: typeof phemexPro;
381
389
  poloniex: typeof poloniexPro;
382
390
  poloniexfutures: typeof poloniexfuturesPro;
@@ -469,6 +477,7 @@ declare const ccxt: {
469
477
  oceanex: typeof oceanex;
470
478
  okcoin: typeof okcoin;
471
479
  okx: typeof okx;
480
+ onetrading: typeof onetrading;
472
481
  p2b: typeof p2b;
473
482
  paymium: typeof paymium;
474
483
  phemex: typeof phemex;
@@ -486,5 +495,5 @@ declare const ccxt: {
486
495
  zaif: typeof zaif;
487
496
  zonda: typeof zonda;
488
497
  } & typeof functions & typeof errors;
489
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitforex, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbasepro, coincheck, coinex, coinlist, coinmate, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
498
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitforex, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbasepro, coincheck, coinex, coinlist, coinmate, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
490
499
  export default ccxt;