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
@@ -33,10 +33,14 @@ class kucoinfutures extends kucoinfutures$1 {
33
33
  'closePositions': false,
34
34
  'createDepositAddress': true,
35
35
  'createOrder': true,
36
+ 'createOrders': true,
36
37
  'createReduceOnlyOrder': true,
37
38
  'createStopLimitOrder': true,
39
+ 'createStopLossOrder': true,
38
40
  'createStopMarketOrder': true,
39
41
  'createStopOrder': true,
42
+ 'createTakeProfitOrder': true,
43
+ 'createTriggerOrder': true,
40
44
  'fetchAccounts': true,
41
45
  'fetchBalance': true,
42
46
  'fetchBorrowRateHistories': false,
@@ -51,7 +55,7 @@ class kucoinfutures extends kucoinfutures$1 {
51
55
  'fetchDepositWithdrawFees': false,
52
56
  'fetchFundingHistory': true,
53
57
  'fetchFundingRate': true,
54
- 'fetchFundingRateHistory': false,
58
+ 'fetchFundingRateHistory': true,
55
59
  'fetchIndexOHLCV': false,
56
60
  'fetchIsolatedBorrowRate': false,
57
61
  'fetchIsolatedBorrowRates': false,
@@ -1112,6 +1116,78 @@ class kucoinfutures extends kucoinfutures$1 {
1112
1116
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1113
1117
  */
1114
1118
  await this.loadMarkets();
1119
+ const market = this.market(symbol);
1120
+ const testOrder = this.safeValue(params, 'test', false);
1121
+ params = this.omit(params, 'test');
1122
+ const orderRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
1123
+ let response = undefined;
1124
+ if (testOrder) {
1125
+ response = await this.futuresPrivatePostOrdersTest(orderRequest);
1126
+ }
1127
+ else {
1128
+ response = await this.futuresPrivatePostOrders(orderRequest);
1129
+ }
1130
+ //
1131
+ // {
1132
+ // "code": "200000",
1133
+ // "data": {
1134
+ // "orderId": "619717484f1d010001510cde",
1135
+ // },
1136
+ // }
1137
+ //
1138
+ const data = this.safeValue(response, 'data', {});
1139
+ return this.parseOrder(data, market);
1140
+ }
1141
+ async createOrders(orders, params = {}) {
1142
+ /**
1143
+ * @method
1144
+ * @name kucoinfutures#createOrders
1145
+ * @description create a list of trade orders
1146
+ * @see https://www.kucoin.com/docs/rest/futures-trading/orders/place-multiple-orders
1147
+ * @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
1148
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1149
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1150
+ */
1151
+ await this.loadMarkets();
1152
+ const ordersRequests = [];
1153
+ for (let i = 0; i < orders.length; i++) {
1154
+ const rawOrder = orders[i];
1155
+ const symbol = this.safeString(rawOrder, 'symbol');
1156
+ const market = this.market(symbol);
1157
+ const type = this.safeString(rawOrder, 'type');
1158
+ const side = this.safeString(rawOrder, 'side');
1159
+ const amount = this.safeValue(rawOrder, 'amount');
1160
+ const price = this.safeValue(rawOrder, 'price');
1161
+ const orderParams = this.safeValue(rawOrder, 'params', {});
1162
+ const orderRequest = this.createContractOrderRequest(market['id'], type, side, amount, price, orderParams);
1163
+ ordersRequests.push(orderRequest);
1164
+ }
1165
+ const response = await this.futuresPrivatePostOrdersMulti(ordersRequests);
1166
+ //
1167
+ // {
1168
+ // "code": "200000",
1169
+ // "data": [
1170
+ // {
1171
+ // "orderId": "135241412609331200",
1172
+ // "clientOid": "3d8fcc13-0b13-447f-ad30-4b3441e05213",
1173
+ // "symbol": "LTCUSDTM",
1174
+ // "code": "200000",
1175
+ // "msg": "success"
1176
+ // },
1177
+ // {
1178
+ // "orderId": "135241412747743234",
1179
+ // "clientOid": "b878c7ee-ae3e-4d63-a20b-038acbb7306f",
1180
+ // "symbol": "LTCUSDTM",
1181
+ // "code": "200000",
1182
+ // "msg": "success"
1183
+ // }
1184
+ // ]
1185
+ // }
1186
+ //
1187
+ const data = this.safeValue(response, 'data', []);
1188
+ return this.parseOrders(data);
1189
+ }
1190
+ createContractOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1115
1191
  const market = this.market(symbol);
1116
1192
  // required param, cannot be used twice
1117
1193
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId', this.uuid());
@@ -1184,48 +1260,7 @@ class kucoinfutures extends kucoinfutures$1 {
1184
1260
  }
1185
1261
  }
1186
1262
  params = this.omit(params, ['timeInForce', 'stopPrice', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice']); // Time in force only valid for limit orders, exchange error when gtc for market orders
1187
- let response = undefined;
1188
- const testOrder = this.safeValue(params, 'test', false);
1189
- params = this.omit(params, 'test');
1190
- if (testOrder) {
1191
- response = await this.futuresPrivatePostOrdersTest(this.extend(request, params));
1192
- }
1193
- else {
1194
- response = await this.futuresPrivatePostOrders(this.extend(request, params));
1195
- }
1196
- //
1197
- // {
1198
- // "code": "200000",
1199
- // "data": {
1200
- // "orderId": "619717484f1d010001510cde",
1201
- // },
1202
- // }
1203
- //
1204
- const data = this.safeValue(response, 'data', {});
1205
- return this.safeOrder({
1206
- 'id': this.safeString(data, 'orderId'),
1207
- 'clientOrderId': undefined,
1208
- 'timestamp': undefined,
1209
- 'datetime': undefined,
1210
- 'lastTradeTimestamp': undefined,
1211
- 'symbol': undefined,
1212
- 'type': undefined,
1213
- 'side': undefined,
1214
- 'price': undefined,
1215
- 'amount': undefined,
1216
- 'cost': undefined,
1217
- 'average': undefined,
1218
- 'filled': undefined,
1219
- 'remaining': undefined,
1220
- 'status': undefined,
1221
- 'fee': undefined,
1222
- 'trades': undefined,
1223
- 'timeInForce': undefined,
1224
- 'postOnly': undefined,
1225
- 'stopPrice': undefined,
1226
- 'triggerPrice': undefined,
1227
- 'info': response,
1228
- }, market);
1263
+ return this.extend(request, params);
1229
1264
  }
1230
1265
  async cancelOrder(id, symbol = undefined, params = {}) {
1231
1266
  /**
@@ -1698,10 +1733,26 @@ class kucoinfutures extends kucoinfutures$1 {
1698
1733
  // "reduceOnly": false
1699
1734
  // }
1700
1735
  //
1736
+ // createOrder
1737
+ //
1738
+ // {
1739
+ // "orderId": "619717484f1d010001510cde"
1740
+ // }
1741
+ //
1742
+ // createOrders
1743
+ //
1744
+ // {
1745
+ // "orderId": "80465574458560512",
1746
+ // "clientOid": "5c52e11203aa677f33e491",
1747
+ // "symbol": "ETHUSDTM",
1748
+ // "code": "200000",
1749
+ // "msg": "success"
1750
+ // }
1751
+ //
1701
1752
  const marketId = this.safeString(order, 'symbol');
1702
1753
  market = this.safeMarket(marketId, market);
1703
1754
  const symbol = market['symbol'];
1704
- const orderId = this.safeString(order, 'id');
1755
+ const orderId = this.safeString2(order, 'id', 'orderId');
1705
1756
  const type = this.safeString(order, 'type');
1706
1757
  const timestamp = this.safeInteger(order, 'createdAt');
1707
1758
  const datetime = this.iso8601(timestamp);
@@ -1728,9 +1779,12 @@ class kucoinfutures extends kucoinfutures$1 {
1728
1779
  // precision reported by their api is 8 d.p.
1729
1780
  // const average = Precise.stringDiv (cost, Precise.stringMul (filled, market['contractSize']));
1730
1781
  // bool
1731
- const isActive = this.safeValue(order, 'isActive', false);
1782
+ const isActive = this.safeValue(order, 'isActive');
1732
1783
  const cancelExist = this.safeValue(order, 'cancelExist', false);
1733
- let status = isActive ? 'open' : 'closed';
1784
+ let status = undefined;
1785
+ if (isActive !== undefined) {
1786
+ status = isActive ? 'open' : 'closed';
1787
+ }
1734
1788
  status = cancelExist ? 'canceled' : status;
1735
1789
  let fee = undefined;
1736
1790
  if (feeCost !== undefined) {
@@ -1777,7 +1831,7 @@ class kucoinfutures extends kucoinfutures$1 {
1777
1831
  * @method
1778
1832
  * @name kucoinfutures#fetchFundingRate
1779
1833
  * @description fetch the current funding rate
1780
- * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-current-funding-rate
1834
+ * @see https://www.kucoin.com/docs/rest/futures-trading/funding-fees/get-current-funding-rate
1781
1835
  * @param {string} symbol unified market symbol
1782
1836
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1783
1837
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -1801,7 +1855,7 @@ class kucoinfutures extends kucoinfutures$1 {
1801
1855
  // }
1802
1856
  //
1803
1857
  const data = this.safeValue(response, 'data');
1804
- const fundingTimestamp = this.safeNumber(data, 'timePoint');
1858
+ const fundingTimestamp = this.safeInteger(data, 'timePoint');
1805
1859
  // the website displayes the previous funding rate as "funding rate"
1806
1860
  return {
1807
1861
  'info': data,
@@ -1812,15 +1866,15 @@ class kucoinfutures extends kucoinfutures$1 {
1812
1866
  'estimatedSettlePrice': undefined,
1813
1867
  'timestamp': undefined,
1814
1868
  'datetime': undefined,
1815
- 'fundingRate': this.safeNumber(data, 'predictedValue'),
1816
- 'fundingTimestamp': undefined,
1817
- 'fundingDatetime': undefined,
1818
- 'nextFundingRate': undefined,
1869
+ 'fundingRate': this.safeNumber(data, 'value'),
1870
+ 'fundingTimestamp': fundingTimestamp,
1871
+ 'fundingDatetime': this.iso8601(fundingTimestamp),
1872
+ 'nextFundingRate': this.safeNumber(data, 'predictedValue'),
1819
1873
  'nextFundingTimestamp': undefined,
1820
1874
  'nextFundingDatetime': undefined,
1821
- 'previousFundingRate': this.safeNumber(data, 'value'),
1822
- 'previousFundingTimestamp': fundingTimestamp,
1823
- 'previousFundingDatetime': this.iso8601(fundingTimestamp),
1875
+ 'previousFundingRate': undefined,
1876
+ 'previousFundingTimestamp': undefined,
1877
+ 'previousFundingDatetime': undefined,
1824
1878
  };
1825
1879
  }
1826
1880
  parseBalance(response) {
@@ -2375,62 +2429,62 @@ class kucoinfutures extends kucoinfutures$1 {
2375
2429
  /**
2376
2430
  * @method
2377
2431
  * @name kucoinfutures#fetchFundingRateHistory
2432
+ * @see https://www.kucoin.com/docs/rest/futures-trading/funding-fees/get-public-funding-history#request-url
2378
2433
  * @description fetches historical funding rate prices
2379
2434
  * @param {string} symbol unified symbol of the market to fetch the funding rate history for
2380
2435
  * @param {int} [since] not used by kucuoinfutures
2381
2436
  * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
2382
2437
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2383
- * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2438
+ * @param {int} [params.until] end time in ms
2384
2439
  * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
2385
2440
  */
2386
2441
  if (symbol === undefined) {
2387
2442
  throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
2388
2443
  }
2389
2444
  await this.loadMarkets();
2390
- let paginate = false;
2391
- [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
2392
- if (paginate) {
2393
- return await this.fetchPaginatedCallDeterministic('fetchFundingRateHistory', symbol, since, limit, '8h', params);
2394
- }
2395
2445
  const market = this.market(symbol);
2396
2446
  const request = {
2397
2447
  'symbol': market['id'],
2448
+ 'from': 0,
2449
+ 'to': this.milliseconds(),
2398
2450
  };
2399
- if (limit !== undefined) {
2400
- request['maxCount'] = limit;
2451
+ const until = this.safeInteger2(params, 'until', 'till');
2452
+ params = this.omit(params, ['until', 'till']);
2453
+ if (since !== undefined) {
2454
+ request['from'] = since;
2455
+ if (until === undefined) {
2456
+ request['to'] = since + 1000 * 8 * 60 * 60 * 100;
2457
+ }
2458
+ }
2459
+ if (until !== undefined) {
2460
+ request['to'] = until;
2461
+ if (since === undefined) {
2462
+ request['to'] = until - 1000 * 8 * 60 * 60 * 100;
2463
+ }
2401
2464
  }
2402
- const response = await this.webExchangeGetContractSymbolFundingRates(this.extend(request, params));
2465
+ const response = await this.futuresPublicGetContractFundingRates(this.extend(request, params));
2403
2466
  //
2404
- // {
2405
- // "success": true,
2406
- // "code": "200",
2407
- // "msg": "success",
2408
- // "retry": false,
2409
- // "data": {
2410
- // "dataList": [
2411
- // {
2412
- // "symbol": "XBTUSDTM",
2413
- // "granularity": 28800000,
2414
- // "timePoint": 1675108800000,
2415
- // "value": 0.0001
2416
- // },
2417
- // ...
2418
- // ],
2419
- // "hasMore": true
2420
- // }
2421
- // }
2467
+ // {
2468
+ // "code": "200000",
2469
+ // "data": [
2470
+ // {
2471
+ // "symbol": "IDUSDTM",
2472
+ // "fundingRate": 2.26E-4,
2473
+ // "timepoint": 1702296000000
2474
+ // }
2475
+ // ]
2476
+ // }
2422
2477
  //
2423
2478
  const data = this.safeValue(response, 'data');
2424
- const dataList = this.safeValue(data, 'dataList');
2425
- return this.parseFundingRateHistories(dataList, market, since, limit);
2479
+ return this.parseFundingRateHistories(data, market, since, limit);
2426
2480
  }
2427
2481
  parseFundingRateHistory(info, market = undefined) {
2428
- const timestamp = this.safeInteger(info, 'timePoint');
2482
+ const timestamp = this.safeInteger(info, 'timepoint');
2429
2483
  const marketId = this.safeString(info, 'symbol');
2430
2484
  return {
2431
2485
  'info': info,
2432
2486
  'symbol': this.safeSymbol(marketId, market),
2433
- 'fundingRate': this.safeNumber(info, 'value'),
2487
+ 'fundingRate': this.safeNumber(info, 'fundingRate'),
2434
2488
  'timestamp': timestamp,
2435
2489
  'datetime': this.iso8601(timestamp),
2436
2490
  };
@@ -24,6 +24,7 @@ class lbank extends lbank$1 {
24
24
  // 50 per second for making and cancelling orders 1000ms / 50 = 20
25
25
  // 20 per second for all other requests, cost = 50 / 20 = 2.5
26
26
  'rateLimit': 20,
27
+ 'pro': true,
27
28
  'has': {
28
29
  'CORS': false,
29
30
  'spot': true,
@@ -929,13 +930,17 @@ class lbank extends lbank$1 {
929
930
  else {
930
931
  request['size'] = 600; // max
931
932
  }
932
- let method = this.safeString(params, 'method');
933
+ const options = this.safeValue(this.options, 'fetchTrades', {});
934
+ const defaultMethod = this.safeString(options, 'method', 'spotPublicGetTrades');
935
+ const method = this.safeString(params, 'method', defaultMethod);
933
936
  params = this.omit(params, 'method');
934
- if (method === undefined) {
935
- const options = this.safeValue(this.options, 'fetchTrades', {});
936
- method = this.safeString(options, 'method', 'spotPublicGetTrades');
937
+ let response = undefined;
938
+ if (method === 'spotPublicGetSupplementTrades') {
939
+ response = await this.spotPublicGetSupplementTrades(this.extend(request, params));
940
+ }
941
+ else {
942
+ response = await this.spotPublicGetTrades(this.extend(request, params));
937
943
  }
938
- const response = await this[method](this.extend(request, params));
939
944
  //
940
945
  // {
941
946
  // "result":"true",
@@ -1172,12 +1177,19 @@ class lbank extends lbank$1 {
1172
1177
  * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1173
1178
  */
1174
1179
  await this.loadMarkets();
1175
- let method = this.safeString(params, 'method');
1176
- if (method === undefined) {
1177
- const options = this.safeValue(this.options, 'fetchBalance', {});
1178
- method = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
1180
+ const options = this.safeValue(this.options, 'fetchBalance', {});
1181
+ const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
1182
+ const method = this.safeString(params, 'method', defaultMethod);
1183
+ let response = undefined;
1184
+ if (method === 'spotPrivatePostSupplementUserInfoAccount') {
1185
+ response = await this.spotPrivatePostSupplementUserInfoAccount();
1186
+ }
1187
+ else if (method === 'spotPrivatePostUserInfo') {
1188
+ response = await this.spotPrivatePostUserInfo();
1189
+ }
1190
+ else {
1191
+ response = await this.spotPrivatePostSupplementUserInfo();
1179
1192
  }
1180
- const response = await this[method]();
1181
1193
  //
1182
1194
  // {
1183
1195
  // "result": "true",
@@ -1362,14 +1374,17 @@ class lbank extends lbank$1 {
1362
1374
  if (clientOrderId !== undefined) {
1363
1375
  request['custom_id'] = clientOrderId;
1364
1376
  }
1365
- let method = undefined;
1366
- method = this.safeString(params, 'method');
1377
+ const options = this.safeValue(this.options, 'createOrder', {});
1378
+ const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
1379
+ const method = this.safeString(params, 'method', defaultMethod);
1367
1380
  params = this.omit(params, 'method');
1368
- if (method === undefined) {
1369
- const options = this.safeValue(this.options, 'createOrder', {});
1370
- method = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
1381
+ let response = undefined;
1382
+ if (method === 'spotPrivatePostCreateOrder') {
1383
+ response = await this.spotPrivatePostCreateOrder(this.extend(request, params));
1384
+ }
1385
+ else {
1386
+ response = await this.spotPrivatePostSupplementCreateOrder(this.extend(request, params));
1371
1387
  }
1372
- const response = await this[method](this.extend(request, params));
1373
1388
  //
1374
1389
  // {
1375
1390
  // "result":true,
@@ -1904,13 +1919,18 @@ class lbank extends lbank$1 {
1904
1919
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1905
1920
  */
1906
1921
  await this.loadMarkets();
1907
- let method = this.safeString(params, 'method');
1922
+ const options = this.safeValue(this.options, 'fetchDepositAddress', {});
1923
+ const defaultMethod = this.safeString(options, 'method', 'fetchDepositAddressDefault');
1924
+ const method = this.safeString(params, 'method', defaultMethod);
1908
1925
  params = this.omit(params, 'method');
1909
- if (method === undefined) {
1910
- const options = this.safeValue(this.options, 'fetchDepositAddress', {});
1911
- method = this.safeString(options, 'method', 'fetchDepositAddressDefault');
1926
+ let response = undefined;
1927
+ if (method === 'fetchDepositAddressSupplement') {
1928
+ response = await this.fetchDepositAddressSupplement(code, params);
1912
1929
  }
1913
- return await this[method](code, params);
1930
+ else {
1931
+ response = await this.fetchDepositAddressDefault(code, params);
1932
+ }
1933
+ return response;
1914
1934
  }
1915
1935
  async fetchDepositAddressDefault(code, params = {}) {
1916
1936
  await this.loadMarkets();
@@ -2282,13 +2302,16 @@ class lbank extends lbank$1 {
2282
2302
  const isAuthorized = this.checkRequiredCredentials(false);
2283
2303
  let result = undefined;
2284
2304
  if (isAuthorized === true) {
2285
- let method = this.safeString(params, 'method');
2305
+ const options = this.safeValue(this.options, 'fetchTransactionFees', {});
2306
+ const defaultMethod = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
2307
+ const method = this.safeString(params, 'method', defaultMethod);
2286
2308
  params = this.omit(params, 'method');
2287
- if (method === undefined) {
2288
- const options = this.safeValue(this.options, 'fetchTransactionFees', {});
2289
- method = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
2309
+ if (method === 'fetchPublicTransactionFees') {
2310
+ result = await this.fetchPublicTransactionFees(params);
2311
+ }
2312
+ else {
2313
+ result = await this.fetchPrivateTransactionFees(params);
2290
2314
  }
2291
- result = await this[method](params);
2292
2315
  }
2293
2316
  else {
2294
2317
  result = await this.fetchPublicTransactionFees(params);
@@ -2426,19 +2449,23 @@ class lbank extends lbank$1 {
2426
2449
  */
2427
2450
  await this.loadMarkets();
2428
2451
  const isAuthorized = this.checkRequiredCredentials(false);
2429
- let method = undefined;
2452
+ const response = undefined;
2430
2453
  if (isAuthorized === true) {
2431
- method = this.safeString(params, 'method');
2454
+ const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
2455
+ const defaultMethod = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
2456
+ const method = this.safeString(params, 'method', defaultMethod);
2432
2457
  params = this.omit(params, 'method');
2433
- if (method === undefined) {
2434
- const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
2435
- method = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
2458
+ if (method === 'fetchPublicDepositWithdrawFees') {
2459
+ await this.fetchPublicDepositWithdrawFees(codes, params);
2460
+ }
2461
+ else {
2462
+ await this.fetchPrivateDepositWithdrawFees(codes, params);
2436
2463
  }
2437
2464
  }
2438
2465
  else {
2439
- method = 'fetchPublicDepositWithdrawFees';
2466
+ await this.fetchPublicDepositWithdrawFees(codes, params);
2440
2467
  }
2441
- return await this[method](codes, params);
2468
+ return response;
2442
2469
  }
2443
2470
  async fetchPrivateDepositWithdrawFees(codes = undefined, params = {}) {
2444
2471
  // complete response
@@ -54,7 +54,7 @@ class luno extends luno$1 {
54
54
  'fetchMarkets': true,
55
55
  'fetchMarkOHLCV': false,
56
56
  'fetchMyTrades': true,
57
- 'fetchOHLCV': false,
57
+ 'fetchOHLCV': true,
58
58
  'fetchOpenInterestHistory': false,
59
59
  'fetchOpenOrders': true,
60
60
  'fetchOrder': true,
@@ -82,6 +82,7 @@ class luno extends luno$1 {
82
82
  'public': 'https://api.luno.com/api',
83
83
  'private': 'https://api.luno.com/api',
84
84
  'exchange': 'https://api.luno.com/api/exchange',
85
+ 'exchangePrivate': 'https://api.luno.com/api/exchange',
85
86
  },
86
87
  'www': 'https://www.luno.com',
87
88
  'doc': [
@@ -96,6 +97,11 @@ class luno extends luno$1 {
96
97
  'markets': 1,
97
98
  },
98
99
  },
100
+ 'exchangePrivate': {
101
+ 'get': {
102
+ 'candles': 1,
103
+ },
104
+ },
99
105
  'public': {
100
106
  'get': {
101
107
  'orderbook': 1,
@@ -148,6 +154,18 @@ class luno extends luno$1 {
148
154
  },
149
155
  },
150
156
  },
157
+ 'timeframes': {
158
+ '1m': 60,
159
+ '5m': 300,
160
+ '15m': 900,
161
+ '30m': 1800,
162
+ '1h': 3600,
163
+ '3h': 10800,
164
+ '4h': 14400,
165
+ '1d': 86400,
166
+ '3d': 259200,
167
+ '1w': 604800,
168
+ },
151
169
  'fees': {
152
170
  'trading': {
153
171
  'tierBased': true,
@@ -721,6 +739,70 @@ class luno extends luno$1 {
721
739
  const trades = this.safeValue(response, 'trades', []);
722
740
  return this.parseTrades(trades, market, since, limit);
723
741
  }
742
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
743
+ /**
744
+ * @method
745
+ * @name luno#fetchOHLCV
746
+ * @see https://www.luno.com/en/developers/api#tag/Market/operation/GetCandles
747
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
748
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
749
+ * @param {string} timeframe the length of time each candle represents
750
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
751
+ * @param {int} [limit] the maximum amount of candles to fetch
752
+ * @param {object} params extra parameters specific to the luno api endpoint
753
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
754
+ */
755
+ await this.loadMarkets();
756
+ const market = this.market(symbol);
757
+ const request = {
758
+ 'duration': this.safeValue(this.timeframes, timeframe, timeframe),
759
+ 'pair': market['id'],
760
+ };
761
+ if (since !== undefined) {
762
+ request['since'] = parseInt(since);
763
+ }
764
+ else {
765
+ const duration = 1000 * 1000 * this.parseTimeframe(timeframe);
766
+ request['since'] = this.milliseconds() - duration;
767
+ }
768
+ const response = await this.exchangePrivateGetCandles(this.extend(request, params));
769
+ //
770
+ // {
771
+ // "candles": [
772
+ // {
773
+ // "timestamp": 1664055240000,
774
+ // "open": "19612.65",
775
+ // "close": "19612.65",
776
+ // "high": "19612.65",
777
+ // "low": "19612.65",
778
+ // "volume": "0.00"
779
+ // },...
780
+ // ],
781
+ // "duration": 60,
782
+ // "pair": "XBTEUR"
783
+ // }
784
+ //
785
+ const ohlcvs = this.safeValue(response, 'candles', []);
786
+ return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
787
+ }
788
+ parseOHLCV(ohlcv, market = undefined) {
789
+ // {
790
+ // "timestamp": 1664055240000,
791
+ // "open": "19612.65",
792
+ // "close": "19612.65",
793
+ // "high": "19612.65",
794
+ // "low": "19612.65",
795
+ // "volume": "0.00"
796
+ // }
797
+ return [
798
+ this.safeInteger(ohlcv, 'timestamp'),
799
+ this.safeNumber(ohlcv, 'open'),
800
+ this.safeNumber(ohlcv, 'high'),
801
+ this.safeNumber(ohlcv, 'low'),
802
+ this.safeNumber(ohlcv, 'close'),
803
+ this.safeNumber(ohlcv, 'volume'),
804
+ ];
805
+ }
724
806
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
725
807
  /**
726
808
  * @method
@@ -1020,7 +1102,7 @@ class luno extends luno$1 {
1020
1102
  if (Object.keys(query).length) {
1021
1103
  url += '?' + this.urlencode(query);
1022
1104
  }
1023
- if (api === 'private') {
1105
+ if ((api === 'private') || (api === 'exchangePrivate')) {
1024
1106
  this.checkRequiredCredentials();
1025
1107
  const auth = this.stringToBase64(this.apiKey + ':' + this.secret);
1026
1108
  headers = {
@@ -136,8 +136,7 @@ class mexc extends mexc$1 {
136
136
  },
137
137
  'www': 'https://www.mexc.com/',
138
138
  'doc': [
139
- 'https://mexcdevelop.github.io/apidocs/spot_v3_en/',
140
- 'https://mexcdevelop.github.io/APIDoc/', // v1 & v2 : soon to be deprecated
139
+ 'https://mexcdevelop.github.io/apidocs/',
141
140
  ],
142
141
  'fees': [
143
142
  'https://www.mexc.com/fee',
@@ -1325,7 +1324,8 @@ class mexc extends mexc$1 {
1325
1324
  // ]
1326
1325
  // }
1327
1326
  //
1328
- orderbook = this.parseOrderBook(response, symbol);
1327
+ const spotTimestamp = this.safeInteger(response, 'timestamp');
1328
+ orderbook = this.parseOrderBook(response, symbol, spotTimestamp);
1329
1329
  orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
1330
1330
  }
1331
1331
  else if (market['swap']) {
@@ -472,7 +472,7 @@ class oceanex extends oceanex$1 {
472
472
  'market': market['id'],
473
473
  };
474
474
  if (limit !== undefined) {
475
- request['limit'] = limit;
475
+ request['limit'] = Math.min(limit, 1000);
476
476
  }
477
477
  const response = await this.publicGetTrades(this.extend(request, params));
478
478
  //