ccxt 4.2.17 → 4.2.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/README.md +9 -9
  2. package/dist/ccxt.browser.js +48992 -47725
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +266 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +163 -34
  10. package/dist/cjs/src/binanceus.js +8 -0
  11. package/dist/cjs/src/bingx.js +183 -41
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +59 -16
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bybit.js +27 -47
  19. package/dist/cjs/src/coinbase.js +176 -26
  20. package/dist/cjs/src/coincheck.js +1 -0
  21. package/dist/cjs/src/coinex.js +3 -0
  22. package/dist/cjs/src/coinlist.js +13 -6
  23. package/dist/cjs/src/coinone.js +2 -2
  24. package/dist/cjs/src/coinsph.js +4 -5
  25. package/dist/cjs/src/delta.js +7 -1
  26. package/dist/cjs/src/deribit.js +17 -4
  27. package/dist/cjs/src/gate.js +151 -169
  28. package/dist/cjs/src/gemini.js +1 -1
  29. package/dist/cjs/src/hitbtc.js +2 -3
  30. package/dist/cjs/src/htx.js +157 -7
  31. package/dist/cjs/src/huobijp.js +2 -3
  32. package/dist/cjs/src/independentreserve.js +7 -5
  33. package/dist/cjs/src/kraken.js +86 -54
  34. package/dist/cjs/src/kucoin.js +5 -0
  35. package/dist/cjs/src/kucoinfutures.js +131 -77
  36. package/dist/cjs/src/lbank.js +60 -33
  37. package/dist/cjs/src/luno.js +84 -2
  38. package/dist/cjs/src/mexc.js +3 -3
  39. package/dist/cjs/src/oceanex.js +1 -1
  40. package/dist/cjs/src/okx.js +23 -11
  41. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  42. package/dist/cjs/src/phemex.js +37 -27
  43. package/dist/cjs/src/poloniexfutures.js +1 -0
  44. package/dist/cjs/src/pro/binance.js +66 -25
  45. package/dist/cjs/src/pro/bitget.js +1 -1
  46. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  47. package/dist/cjs/src/pro/coinbase.js +4 -1
  48. package/dist/cjs/src/pro/coincheck.js +208 -0
  49. package/dist/cjs/src/pro/hitbtc.js +5 -4
  50. package/dist/cjs/src/pro/htx.js +6 -1
  51. package/dist/cjs/src/pro/kraken.js +1 -1
  52. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  53. package/dist/cjs/src/pro/kucoin.js +46 -36
  54. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  55. package/dist/cjs/src/pro/lbank.js +881 -0
  56. package/dist/cjs/src/pro/okx.js +52 -2
  57. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  58. package/dist/cjs/src/pro/poloniex.js +2 -2
  59. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  60. package/dist/cjs/src/pro/woo.js +126 -0
  61. package/dist/cjs/src/probit.js +4 -2
  62. package/dist/cjs/src/upbit.js +12 -12
  63. package/dist/cjs/src/wavesexchange.js +1 -1
  64. package/dist/cjs/src/whitebit.js +1 -0
  65. package/dist/cjs/src/woo.js +56 -0
  66. package/js/ccxt.d.ts +14 -2
  67. package/js/ccxt.js +10 -2
  68. package/js/src/abstract/bitpanda.d.ts +4 -4
  69. package/js/src/abstract/bitstamp.d.ts +8 -0
  70. package/js/src/abstract/gate.d.ts +1 -0
  71. package/js/src/abstract/gateio.d.ts +1 -0
  72. package/js/src/abstract/htx.d.ts +3 -0
  73. package/js/src/abstract/huobi.d.ts +3 -0
  74. package/js/src/abstract/luno.d.ts +1 -0
  75. package/js/src/abstract/onetrading.d.ts +38 -0
  76. package/js/src/ascendex.js +2 -0
  77. package/js/src/base/Exchange.d.ts +2 -3
  78. package/js/src/base/Exchange.js +5 -2
  79. package/js/src/binance.js +7 -1
  80. package/js/src/bingx.d.ts +1 -0
  81. package/js/src/bingx.js +26 -0
  82. package/js/src/bitget.js +22 -3
  83. package/js/src/bitpanda.d.ts +2 -72
  84. package/js/src/bitpanda.js +5 -1991
  85. package/js/src/bitstamp.js +8 -0
  86. package/js/src/bybit.js +21 -47
  87. package/js/src/coincheck.js +1 -0
  88. package/js/src/deribit.js +16 -4
  89. package/js/src/gate.d.ts +1 -0
  90. package/js/src/gate.js +50 -110
  91. package/js/src/htx.js +3 -0
  92. package/js/src/kraken.d.ts +1 -0
  93. package/js/src/kraken.js +40 -39
  94. package/js/src/lbank.js +1 -0
  95. package/js/src/luno.d.ts +3 -1
  96. package/js/src/luno.js +84 -2
  97. package/js/src/mexc.js +1 -2
  98. package/js/src/onetrading.d.ts +74 -0
  99. package/js/src/onetrading.js +2003 -0
  100. package/js/src/poloniexfutures.js +1 -0
  101. package/js/src/pro/binance.js +7 -2
  102. package/js/src/pro/bitget.js +1 -1
  103. package/js/src/pro/bitpanda.d.ts +2 -34
  104. package/js/src/pro/bitpanda.js +5 -1330
  105. package/js/src/pro/coincheck.d.ts +12 -0
  106. package/js/src/pro/coincheck.js +209 -0
  107. package/js/src/pro/kucoin.js +43 -35
  108. package/js/src/pro/kucoinfutures.js +45 -37
  109. package/js/src/pro/lbank.d.ts +29 -0
  110. package/js/src/pro/lbank.js +882 -0
  111. package/js/src/pro/onetrading.d.ts +36 -0
  112. package/js/src/pro/onetrading.js +1339 -0
  113. package/js/src/pro/poloniexfutures.js +43 -35
  114. package/js/src/whitebit.js +1 -0
  115. package/package.json +2 -2
  116. package/rollup.config.js +2 -0
  117. package/skip-tests.json +14 -2
  118. package/test-commonjs.cjs +25 -1
  119. package/dist/cjs/js/ccxt.js +0 -476
  120. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  121. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  122. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  123. package/dist/cjs/js/src/abstract/binance.js +0 -9
  124. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  125. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  126. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  127. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  128. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  130. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  131. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  132. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  133. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  140. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  143. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  144. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  145. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  146. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  147. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  148. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  149. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  150. package/dist/cjs/js/src/abstract/cex.js +0 -9
  151. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  152. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  153. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  154. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  155. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  156. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  157. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  160. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  161. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  162. package/dist/cjs/js/src/abstract/delta.js +0 -9
  163. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  164. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  165. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  166. package/dist/cjs/js/src/abstract/gate.js +0 -9
  167. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  168. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  169. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  170. package/dist/cjs/js/src/abstract/htx.js +0 -9
  171. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  172. package/dist/cjs/js/src/abstract/idex.js +0 -9
  173. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  174. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  175. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  176. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  177. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  178. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  179. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  180. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  181. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  182. package/dist/cjs/js/src/abstract/luno.js +0 -9
  183. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  184. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  185. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  186. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  187. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  188. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  189. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  190. package/dist/cjs/js/src/abstract/okx.js +0 -9
  191. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  192. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  193. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  194. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  195. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  196. package/dist/cjs/js/src/abstract/probit.js +0 -9
  197. package/dist/cjs/js/src/abstract/timex.js +0 -9
  198. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  199. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  200. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  201. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  202. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  203. package/dist/cjs/js/src/abstract/woo.js +0 -9
  204. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  205. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  206. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  207. package/dist/cjs/js/src/ace.js +0 -1058
  208. package/dist/cjs/js/src/alpaca.js +0 -1125
  209. package/dist/cjs/js/src/ascendex.js +0 -3365
  210. package/dist/cjs/js/src/base/Exchange.js +0 -5257
  211. package/dist/cjs/js/src/base/Precise.js +0 -263
  212. package/dist/cjs/js/src/base/errors.js +0 -299
  213. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  214. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  215. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  216. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  217. package/dist/cjs/js/src/base/functions/number.js +0 -297
  218. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  219. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  220. package/dist/cjs/js/src/base/functions/string.js +0 -48
  221. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  222. package/dist/cjs/js/src/base/functions/time.js +0 -187
  223. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  224. package/dist/cjs/js/src/base/functions/type.js +0 -162
  225. package/dist/cjs/js/src/base/functions.js +0 -157
  226. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  227. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  228. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  229. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  230. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  231. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  232. package/dist/cjs/js/src/bequant.js +0 -33
  233. package/dist/cjs/js/src/bigone.js +0 -2213
  234. package/dist/cjs/js/src/binance.js +0 -9845
  235. package/dist/cjs/js/src/binancecoinm.js +0 -45
  236. package/dist/cjs/js/src/binanceus.js +0 -92
  237. package/dist/cjs/js/src/binanceusdm.js +0 -58
  238. package/dist/cjs/js/src/bingx.js +0 -3846
  239. package/dist/cjs/js/src/bit2c.js +0 -916
  240. package/dist/cjs/js/src/bitbank.js +0 -1000
  241. package/dist/cjs/js/src/bitbay.js +0 -17
  242. package/dist/cjs/js/src/bitbns.js +0 -1220
  243. package/dist/cjs/js/src/bitcoincom.js +0 -17
  244. package/dist/cjs/js/src/bitfinex.js +0 -1670
  245. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  246. package/dist/cjs/js/src/bitflyer.js +0 -1045
  247. package/dist/cjs/js/src/bitforex.js +0 -852
  248. package/dist/cjs/js/src/bitget.js +0 -8295
  249. package/dist/cjs/js/src/bithumb.js +0 -1090
  250. package/dist/cjs/js/src/bitmart.js +0 -4454
  251. package/dist/cjs/js/src/bitmex.js +0 -2881
  252. package/dist/cjs/js/src/bitopro.js +0 -1724
  253. package/dist/cjs/js/src/bitrue.js +0 -3253
  254. package/dist/cjs/js/src/bitso.js +0 -1753
  255. package/dist/cjs/js/src/bitstamp.js +0 -2188
  256. package/dist/cjs/js/src/bitteam.js +0 -2309
  257. package/dist/cjs/js/src/bitvavo.js +0 -1968
  258. package/dist/cjs/js/src/bl3p.js +0 -447
  259. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  260. package/dist/cjs/js/src/btcalpha.js +0 -929
  261. package/dist/cjs/js/src/btcbox.js +0 -565
  262. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  263. package/dist/cjs/js/src/btcturk.js +0 -929
  264. package/dist/cjs/js/src/bybit.js +0 -7650
  265. package/dist/cjs/js/src/cex.js +0 -1693
  266. package/dist/cjs/js/src/coinbase.js +0 -3424
  267. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  268. package/dist/cjs/js/src/coincheck.js +0 -843
  269. package/dist/cjs/js/src/coinex.js +0 -5417
  270. package/dist/cjs/js/src/coinlist.js +0 -2337
  271. package/dist/cjs/js/src/coinmate.js +0 -989
  272. package/dist/cjs/js/src/coinone.js +0 -1185
  273. package/dist/cjs/js/src/coinsph.js +0 -1933
  274. package/dist/cjs/js/src/coinspot.js +0 -548
  275. package/dist/cjs/js/src/cryptocom.js +0 -3007
  276. package/dist/cjs/js/src/currencycom.js +0 -2015
  277. package/dist/cjs/js/src/delta.js +0 -3262
  278. package/dist/cjs/js/src/deribit.js +0 -3306
  279. package/dist/cjs/js/src/digifinex.js +0 -4307
  280. package/dist/cjs/js/src/exmo.js +0 -2645
  281. package/dist/cjs/js/src/fmfwio.js +0 -34
  282. package/dist/cjs/js/src/gate.js +0 -7077
  283. package/dist/cjs/js/src/gateio.js +0 -16
  284. package/dist/cjs/js/src/gemini.js +0 -1801
  285. package/dist/cjs/js/src/hitbtc.js +0 -3660
  286. package/dist/cjs/js/src/hitbtc3.js +0 -19
  287. package/dist/cjs/js/src/hollaex.js +0 -1882
  288. package/dist/cjs/js/src/htx.js +0 -9174
  289. package/dist/cjs/js/src/huobi.js +0 -16
  290. package/dist/cjs/js/src/huobijp.js +0 -1918
  291. package/dist/cjs/js/src/idex.js +0 -1770
  292. package/dist/cjs/js/src/independentreserve.js +0 -761
  293. package/dist/cjs/js/src/indodax.js +0 -1069
  294. package/dist/cjs/js/src/kraken.js +0 -2891
  295. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  296. package/dist/cjs/js/src/kucoin.js +0 -4494
  297. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  298. package/dist/cjs/js/src/kuna.js +0 -1949
  299. package/dist/cjs/js/src/latoken.js +0 -1729
  300. package/dist/cjs/js/src/lbank.js +0 -2851
  301. package/dist/cjs/js/src/luno.js +0 -1044
  302. package/dist/cjs/js/src/lykke.js +0 -1303
  303. package/dist/cjs/js/src/mercado.js +0 -897
  304. package/dist/cjs/js/src/mexc.js +0 -5407
  305. package/dist/cjs/js/src/ndax.js +0 -2450
  306. package/dist/cjs/js/src/novadax.js +0 -1556
  307. package/dist/cjs/js/src/oceanex.js +0 -964
  308. package/dist/cjs/js/src/okcoin.js +0 -3115
  309. package/dist/cjs/js/src/okx.js +0 -7331
  310. package/dist/cjs/js/src/p2b.js +0 -1243
  311. package/dist/cjs/js/src/paymium.js +0 -597
  312. package/dist/cjs/js/src/phemex.js +0 -4725
  313. package/dist/cjs/js/src/poloniex.js +0 -2356
  314. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  315. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  316. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  317. package/dist/cjs/js/src/pro/bequant.js +0 -33
  318. package/dist/cjs/js/src/pro/binance.js +0 -2796
  319. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  320. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  321. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  322. package/dist/cjs/js/src/pro/bingx.js +0 -944
  323. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  324. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  325. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  326. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  327. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  328. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  329. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  330. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  331. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  332. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  333. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  334. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  335. package/dist/cjs/js/src/pro/cex.js +0 -1510
  336. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  337. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  338. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  339. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  340. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  341. package/dist/cjs/js/src/pro/deribit.js +0 -825
  342. package/dist/cjs/js/src/pro/exmo.js +0 -658
  343. package/dist/cjs/js/src/pro/gate.js +0 -1316
  344. package/dist/cjs/js/src/pro/gateio.js +0 -16
  345. package/dist/cjs/js/src/pro/gemini.js +0 -649
  346. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  347. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  348. package/dist/cjs/js/src/pro/htx.js +0 -2388
  349. package/dist/cjs/js/src/pro/huobi.js +0 -16
  350. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  351. package/dist/cjs/js/src/pro/idex.js +0 -714
  352. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  353. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  354. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  355. package/dist/cjs/js/src/pro/kucoin.js +0 -1054
  356. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -981
  357. package/dist/cjs/js/src/pro/luno.js +0 -322
  358. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  359. package/dist/cjs/js/src/pro/ndax.js +0 -545
  360. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  361. package/dist/cjs/js/src/pro/okx.js +0 -1608
  362. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  363. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  364. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1014
  365. package/dist/cjs/js/src/pro/probit.js +0 -586
  366. package/dist/cjs/js/src/pro/upbit.js +0 -234
  367. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  368. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  369. package/dist/cjs/js/src/pro/woo.js +0 -895
  370. package/dist/cjs/js/src/probit.js +0 -1867
  371. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  372. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  373. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  374. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  375. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  376. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  377. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  378. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  386. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  387. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  388. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  389. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  390. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  391. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  392. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  396. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  397. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  398. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  399. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  400. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  401. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  402. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  407. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  408. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  409. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  410. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  411. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  412. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  413. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  419. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  420. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  421. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  422. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  423. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  424. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  425. package/dist/cjs/js/src/timex.js +0 -1562
  426. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  427. package/dist/cjs/js/src/upbit.js +0 -1844
  428. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  429. package/dist/cjs/js/src/wazirx.js +0 -953
  430. package/dist/cjs/js/src/whitebit.js +0 -2309
  431. package/dist/cjs/js/src/woo.js +0 -2769
  432. package/dist/cjs/js/src/yobit.js +0 -1314
  433. package/dist/cjs/js/src/zaif.js +0 -736
  434. package/dist/cjs/js/src/zonda.js +0 -1883
  435. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  436. package/test.ts +0 -0
  437. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  438. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
  439. /package/js/src/abstract/{bitpanda.js → onetrading.js} +0 -0
@@ -22,7 +22,7 @@ class bingx extends bingx$1 {
22
22
  'has': {
23
23
  'CORS': undefined,
24
24
  'spot': true,
25
- 'margin': true,
25
+ 'margin': false,
26
26
  'swap': true,
27
27
  'future': false,
28
28
  'option': false,
@@ -36,6 +36,12 @@ class bingx extends bingx$1 {
36
36
  'createMarketSellOrderWithCost': true,
37
37
  'createOrder': true,
38
38
  'createOrders': true,
39
+ 'createOrderWithTakeProfitAndStopLoss': true,
40
+ 'createStopLossOrder': true,
41
+ 'createTakeProfitOrder': true,
42
+ 'createTrailingAmountOrder': true,
43
+ 'createTrailingPercentOrder': true,
44
+ 'createTriggerOrder': true,
39
45
  'fetchBalance': true,
40
46
  'fetchClosedOrders': true,
41
47
  'fetchCurrencies': true,
@@ -45,6 +51,7 @@ class bingx extends bingx$1 {
45
51
  'fetchDepositWithdrawFees': true,
46
52
  'fetchFundingRate': true,
47
53
  'fetchFundingRateHistory': true,
54
+ 'fetchFundingRates': true,
48
55
  'fetchLeverage': true,
49
56
  'fetchLiquidations': false,
50
57
  'fetchMarkets': true,
@@ -79,6 +86,9 @@ class bingx extends bingx$1 {
79
86
  'account': 'https://open-api.{hostname}/openApi',
80
87
  'copyTrading': 'https://open-api.{hostname}/openApi',
81
88
  },
89
+ 'test': {
90
+ 'swap': 'https://open-api-vst.{hostname}/openApi', // only swap is really "test" but since the API keys are the same, we want to keep all the functionalities when the user enables the sandboxmode
91
+ },
82
92
  'www': 'https://bingx.com/',
83
93
  'doc': 'https://bingx-api.github.io/docs/',
84
94
  'referral': 'https://bingx.com/invite/OHETOM',
@@ -117,6 +127,7 @@ class bingx extends bingx$1 {
117
127
  'trade/query': 3,
118
128
  'trade/openOrders': 3,
119
129
  'trade/historyOrders': 3,
130
+ 'trade/myTrades': 3,
120
131
  'user/commissionRate': 3,
121
132
  'account/balance': 3,
122
133
  },
@@ -176,6 +187,7 @@ class bingx extends bingx$1 {
176
187
  'user/positions': 3,
177
188
  'user/income': 3,
178
189
  'trade/openOrders': 3,
190
+ 'trade/openOrder': 3,
179
191
  'trade/order': 3,
180
192
  'trade/marginType': 3,
181
193
  'trade/leverage': 3,
@@ -353,6 +365,7 @@ class bingx extends bingx$1 {
353
365
  '80016': errors.OrderNotFound,
354
366
  '80017': errors.OrderNotFound,
355
367
  '100414': errors.AccountSuspended,
368
+ '100419': errors.PermissionDenied,
356
369
  '100437': errors.BadRequest, // {"code":100437,"msg":"The withdrawal amount is lower than the minimum limit, please re-enter.","timestamp":1689258588845}
357
370
  },
358
371
  'broad': {},
@@ -409,6 +422,10 @@ class bingx extends bingx$1 {
409
422
  if (!this.checkRequiredCredentials(false)) {
410
423
  return undefined;
411
424
  }
425
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
426
+ if (isSandbox) {
427
+ return undefined;
428
+ }
412
429
  const response = await this.walletsV1PrivateGetCapitalConfigGetall(params);
413
430
  //
414
431
  // {
@@ -648,7 +665,11 @@ class bingx extends bingx$1 {
648
665
  * @param {object} [params] extra parameters specific to the exchange API endpoint
649
666
  * @returns {object[]} an array of objects representing market data
650
667
  */
651
- const requests = [this.fetchSpotMarkets(params), this.fetchSwapMarkets(params)];
668
+ const requests = [this.fetchSwapMarkets(params)];
669
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
670
+ if (!isSandbox) {
671
+ requests.push(this.fetchSpotMarkets(params)); // sandbox is swap only
672
+ }
652
673
  const promises = await Promise.all(requests);
653
674
  const spotMarkets = this.safeValue(promises, 0, []);
654
675
  const swapMarkets = this.safeValue(promises, 1, []);
@@ -843,6 +864,22 @@ class bingx extends bingx$1 {
843
864
  // "buyerMaker": false
844
865
  // }
845
866
  //
867
+ // spot
868
+ // fetchMyTrades
869
+ // {
870
+ // "symbol": "LTC-USDT",
871
+ // "id": 36237072,
872
+ // "orderId": 1674069326895775744,
873
+ // "price": "85.891",
874
+ // "qty": "0.0582",
875
+ // "quoteQty": "4.9988562000000005",
876
+ // "commission": -0.00005820000000000001,
877
+ // "commissionAsset": "LTC",
878
+ // "time": 1687964205000,
879
+ // "isBuyer": true,
880
+ // "isMaker": false
881
+ // }
882
+ //
846
883
  // swap
847
884
  // fetchTrades
848
885
  //
@@ -905,7 +942,7 @@ class bingx extends bingx$1 {
905
942
  }
906
943
  const cost = this.safeString(trade, 'quoteQty');
907
944
  const type = (cost === undefined) ? 'spot' : 'swap';
908
- const currencyId = this.safeString2(trade, 'currency', 'N');
945
+ const currencyId = this.safeStringN(trade, ['currency', 'N', 'commissionAsset']);
909
946
  const currencyCode = this.safeCurrencyCode(currencyId);
910
947
  const m = this.safeValue(trade, 'm');
911
948
  const marketId = this.safeString(trade, 's');
@@ -921,6 +958,14 @@ class bingx extends bingx$1 {
921
958
  takeOrMaker = 'taker';
922
959
  }
923
960
  }
961
+ const isBuyer = this.safeValue(trade, 'isBuyer');
962
+ if (isBuyer !== undefined) {
963
+ side = isBuyer ? 'buy' : 'sell';
964
+ }
965
+ const isMaker = this.safeValue(trade, 'isMaker');
966
+ if (isMaker !== undefined) {
967
+ takeOrMaker = isMaker ? 'maker' : 'taker';
968
+ }
924
969
  return this.safeTrade({
925
970
  'id': this.safeStringN(trade, ['id', 't']),
926
971
  'info': trade,
@@ -1066,6 +1111,31 @@ class bingx extends bingx$1 {
1066
1111
  const data = this.safeValue(response, 'data', {});
1067
1112
  return this.parseFundingRate(data, market);
1068
1113
  }
1114
+ async fetchFundingRates(symbols = undefined, params = {}) {
1115
+ /**
1116
+ * @method
1117
+ * @name bingx#fetchFundingRate
1118
+ * @description fetch the current funding rate
1119
+ * @see https://bingx-api.github.io/docs/#/swapV2/market-api.html#Current%20Funding%20Rate
1120
+ * @param {string[]} [symbols] list of unified market symbols
1121
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1122
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1123
+ */
1124
+ await this.loadMarkets();
1125
+ symbols = this.marketSymbols(symbols, 'swap', true);
1126
+ const response = await this.swapV2PublicGetQuotePremiumIndex(this.extend(params));
1127
+ const data = this.safeValue(response, 'data', []);
1128
+ const filteredResponse = [];
1129
+ for (let i = 0; i < data.length; i++) {
1130
+ const item = data[i];
1131
+ const marketId = this.safeString(item, 'symbol');
1132
+ const market = this.safeMarket(marketId, undefined, undefined, 'swap');
1133
+ if ((symbols === undefined) || this.inArray(market['symbol'], symbols)) {
1134
+ filteredResponse.push(this.parseFundingRate(item, market));
1135
+ }
1136
+ }
1137
+ return filteredResponse;
1138
+ }
1069
1139
  parseFundingRate(contract, market = undefined) {
1070
1140
  //
1071
1141
  // {
@@ -2417,6 +2487,7 @@ class bingx extends bingx$1 {
2417
2487
  'symbol': market['id'],
2418
2488
  };
2419
2489
  const clientOrderIds = this.safeValue(params, 'clientOrderIds');
2490
+ params = this.omit(params, 'clientOrderIds');
2420
2491
  let idsToParse = ids;
2421
2492
  const areClientOrderIds = (clientOrderIds !== undefined);
2422
2493
  if (areClientOrderIds) {
@@ -2435,8 +2506,12 @@ class bingx extends bingx$1 {
2435
2506
  response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
2436
2507
  }
2437
2508
  else {
2438
- const swapReqKey = areClientOrderIds ? 'ClientOrderIDList' : 'orderIdList';
2439
- request[swapReqKey] = parsedIds;
2509
+ if (areClientOrderIds) {
2510
+ request['clientOrderIDList'] = this.json(parsedIds);
2511
+ }
2512
+ else {
2513
+ request['orderIdList'] = parsedIds;
2514
+ }
2440
2515
  response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
2441
2516
  }
2442
2517
  //
@@ -3050,6 +3125,21 @@ class bingx extends bingx$1 {
3050
3125
  // "txId": "0xb5ef8c13b968a406cc62a93a8bd80f9e9a906ef1b3fcf20a2e48573c17659268"
3051
3126
  // }
3052
3127
  //
3128
+ // withdraw
3129
+ //
3130
+ // {
3131
+ // "code":0,
3132
+ // "timestamp":1705274263621,
3133
+ // "data":{
3134
+ // "id":"1264246141278773252"
3135
+ // }
3136
+ // }
3137
+ //
3138
+ // parse withdraw-type output first...
3139
+ //
3140
+ const data = this.safeValue(transaction, 'data');
3141
+ const dataId = (data === undefined) ? undefined : this.safeString(data, 'id');
3142
+ const id = this.safeString(transaction, 'id', dataId);
3053
3143
  const address = this.safeString(transaction, 'address');
3054
3144
  const tag = this.safeString(transaction, 'addressTag');
3055
3145
  let timestamp = this.safeInteger(transaction, 'insertTime');
@@ -3070,7 +3160,7 @@ class bingx extends bingx$1 {
3070
3160
  const type = (rawType === '0') ? 'deposit' : 'withdrawal';
3071
3161
  return {
3072
3162
  'info': transaction,
3073
- 'id': this.safeString(transaction, 'id'),
3163
+ 'id': id,
3074
3164
  'txid': this.safeString(transaction, 'txId'),
3075
3165
  'type': type,
3076
3166
  'currency': code,
@@ -3250,57 +3340,101 @@ class bingx extends bingx$1 {
3250
3340
  * @method
3251
3341
  * @name bingx#fetchMyTrades
3252
3342
  * @description fetch all trades made by the user
3343
+ * @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20History
3253
3344
  * @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20historical%20transaction%20orders
3254
3345
  * @param {string} [symbol] unified market symbol
3255
3346
  * @param {int} [since] the earliest time in ms to fetch trades for
3256
3347
  * @param {int} [limit] the maximum number of trades structures to retrieve
3257
3348
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3349
+ * @param {int} [params.until] timestamp in ms for the ending date filter, default is undefined
3258
3350
  * @param {string} params.trandingUnit COIN (directly represent assets such as BTC and ETH) or CONT (represents the number of contract sheets)
3259
3351
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
3260
3352
  */
3261
3353
  if (symbol === undefined) {
3262
3354
  throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
3263
3355
  }
3264
- if (since === undefined) {
3265
- throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a since argument');
3266
- }
3267
- const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3268
3356
  await this.loadMarkets();
3269
3357
  const market = this.market(symbol);
3270
- if (market['spot']) {
3271
- throw new errors.BadSymbol(this.id + ' fetchMyTrades() supports swap contracts only');
3272
- }
3358
+ const now = this.milliseconds();
3359
+ let response = undefined;
3273
3360
  const request = {
3274
3361
  'symbol': market['id'],
3275
- 'tradingUnit': tradingUnit,
3276
- 'startTs': since,
3277
- 'endTs': this.nonce(),
3278
3362
  };
3279
- const query = this.omit(params, 'tradingUnit');
3280
- const response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, query));
3281
- //
3282
- // {
3283
- // "code": "0",
3284
- // "msg": '',
3285
- // "data": { fill_orders: [
3286
- // {
3287
- // "volume": "0.1",
3288
- // "price": "106.75",
3289
- // "amount": "10.6750",
3290
- // "commission": "-0.0053",
3291
- // "currency": "USDT",
3292
- // "orderId": "1676213270274379776",
3293
- // "liquidatedPrice": "0.00",
3294
- // "liquidatedMarginRatio": "0.00",
3295
- // "filledTime": "2023-07-04T20:56:01.000+0800"
3296
- // }
3297
- // ]
3298
- // }
3299
- // }
3300
- //
3301
- const data = this.safeValue(response, 'data', []);
3302
- const fillOrders = this.safeValue(data, 'fill_orders', []);
3303
- return this.parseTrades(fillOrders, market, since, limit, query);
3363
+ if (since !== undefined) {
3364
+ const startTimeReq = market['spot'] ? 'startTime' : 'startTs';
3365
+ request[startTimeReq] = since;
3366
+ }
3367
+ else if (market['swap']) {
3368
+ request['startTs'] = now - 7776000000; // 90 days
3369
+ }
3370
+ const until = this.safeInteger(params, 'until');
3371
+ params = this.omit(params, 'until');
3372
+ if (until !== undefined) {
3373
+ const endTimeReq = market['spot'] ? 'endTime' : 'endTs';
3374
+ request[endTimeReq] = until;
3375
+ }
3376
+ else if (market['swap']) {
3377
+ request['endTs'] = now;
3378
+ }
3379
+ let fills = undefined;
3380
+ if (market['spot']) {
3381
+ response = await this.spotV1PrivateGetTradeMyTrades(this.extend(request, params));
3382
+ const data = this.safeValue(response, 'data', []);
3383
+ fills = this.safeValue(data, 'fills', []);
3384
+ //
3385
+ // {
3386
+ // "code": 0,
3387
+ // "msg": "",
3388
+ // "debugMsg": "",
3389
+ // "data": {
3390
+ // "fills": [
3391
+ // {
3392
+ // "symbol": "LTC-USDT",
3393
+ // "id": 36237072,
3394
+ // "orderId": 1674069326895775744,
3395
+ // "price": "85.891",
3396
+ // "qty": "0.0582",
3397
+ // "quoteQty": "4.9988562000000005",
3398
+ // "commission": -0.00005820000000000001,
3399
+ // "commissionAsset": "LTC",
3400
+ // "time": 1687964205000,
3401
+ // "isBuyer": true,
3402
+ // "isMaker": false
3403
+ // }
3404
+ // ]
3405
+ // }
3406
+ // }
3407
+ //
3408
+ }
3409
+ else {
3410
+ const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3411
+ params = this.omit(params, 'tradingUnit');
3412
+ request['tradingUnit'] = tradingUnit;
3413
+ response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, params));
3414
+ const data = this.safeValue(response, 'data', []);
3415
+ fills = this.safeValue(data, 'fill_orders', []);
3416
+ //
3417
+ // {
3418
+ // "code": "0",
3419
+ // "msg": '',
3420
+ // "data": { fill_orders: [
3421
+ // {
3422
+ // "volume": "0.1",
3423
+ // "price": "106.75",
3424
+ // "amount": "10.6750",
3425
+ // "commission": "-0.0053",
3426
+ // "currency": "USDT",
3427
+ // "orderId": "1676213270274379776",
3428
+ // "liquidatedPrice": "0.00",
3429
+ // "liquidatedMarginRatio": "0.00",
3430
+ // "filledTime": "2023-07-04T20:56:01.000+0800"
3431
+ // }
3432
+ // ]
3433
+ // }
3434
+ // }
3435
+ //
3436
+ }
3437
+ return this.parseTrades(fills, market, since, limit, params);
3304
3438
  }
3305
3439
  parseDepositWithdrawFee(fee, currency = undefined) {
3306
3440
  //
@@ -3660,6 +3794,10 @@ class bingx extends bingx$1 {
3660
3794
  const type = section[0];
3661
3795
  const version = section[1];
3662
3796
  const access = section[2];
3797
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
3798
+ if (isSandbox && (type !== 'swap')) {
3799
+ throw new errors.NotSupported(this.id + ' does not have a testnet/sandbox URL for ' + type + ' endpoints');
3800
+ }
3663
3801
  let url = this.implodeHostname(this.urls['api'][type]);
3664
3802
  if (type === 'spot' && version === 'v3') {
3665
3803
  url += '/api';
@@ -3702,6 +3840,10 @@ class bingx extends bingx$1 {
3702
3840
  nonce() {
3703
3841
  return this.milliseconds();
3704
3842
  }
3843
+ setSandboxMode(enable) {
3844
+ super.setSandboxMode(enable);
3845
+ this.options['sandboxMode'] = enable;
3846
+ }
3705
3847
  handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
3706
3848
  if (response === undefined) {
3707
3849
  return undefined; // fallback to default error handler
@@ -789,12 +789,11 @@ class bitfinex extends bitfinex$1 {
789
789
  // "message": "0.0001 Bitcoin transfered from Margin to Exchange"
790
790
  // }
791
791
  //
792
- const timestamp = this.milliseconds();
793
792
  return {
794
793
  'info': transfer,
795
794
  'id': undefined,
796
- 'timestamp': timestamp,
797
- 'datetime': this.iso8601(timestamp),
795
+ 'timestamp': undefined,
796
+ 'datetime': undefined,
798
797
  'currency': this.safeCurrencyCode(undefined, currency),
799
798
  'amount': undefined,
800
799
  'fromAccount': undefined,
@@ -42,7 +42,12 @@ class bitget extends bitget$1 {
42
42
  'createMarketSellOrderWithCost': false,
43
43
  'createOrder': true,
44
44
  'createOrders': true,
45
+ 'createOrderWithTakeProfitAndStopLoss': true,
45
46
  'createReduceOnlyOrder': false,
47
+ 'createStopLossOrder': true,
48
+ 'createTakeProfitOrder': true,
49
+ 'createTrailingPercentOrder': true,
50
+ 'createTriggerOrder': true,
46
51
  'editOrder': true,
47
52
  'fetchAccounts': false,
48
53
  'fetchBalance': true,
@@ -2956,7 +2961,12 @@ class bitget extends bitget$1 {
2956
2961
  'symbol': market['id'],
2957
2962
  };
2958
2963
  if (limit !== undefined) {
2959
- request['limit'] = limit;
2964
+ if (market['contract']) {
2965
+ request['limit'] = Math.min(limit, 1000);
2966
+ }
2967
+ else {
2968
+ request['limit'] = limit;
2969
+ }
2960
2970
  }
2961
2971
  const options = this.safeValue(this.options, 'fetchTrades', {});
2962
2972
  let response = undefined;
@@ -3268,31 +3278,45 @@ class bitget extends bitget$1 {
3268
3278
  const marketType = market['spot'] ? 'spot' : 'swap';
3269
3279
  const timeframes = this.options['timeframes'][marketType];
3270
3280
  const selectedTimeframe = this.safeString(timeframes, timeframe, timeframe);
3271
- let request = {
3281
+ const request = {
3272
3282
  'symbol': market['id'],
3273
3283
  'granularity': selectedTimeframe,
3274
3284
  };
3275
- [request, params] = this.handleUntilOption('endTime', request, params);
3276
- if (since !== undefined) {
3277
- request['startTime'] = limit;
3278
- }
3285
+ const until = this.safeInteger2(params, 'until', 'till');
3286
+ params = this.omit(params, ['until', 'till']);
3279
3287
  if (limit !== undefined) {
3280
3288
  request['limit'] = limit;
3281
3289
  }
3282
3290
  const options = this.safeValue(this.options, 'fetchOHLCV', {});
3291
+ const spotOptions = this.safeValue(options, 'spot', {});
3292
+ const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
3293
+ const method = this.safeString(params, 'method', defaultSpotMethod);
3294
+ params = this.omit(params, 'method');
3295
+ if (method !== 'publicSpotGetV2SpotMarketHistoryCandles') {
3296
+ if (since !== undefined) {
3297
+ request['startTime'] = since;
3298
+ }
3299
+ if (until !== undefined) {
3300
+ request['endTime'] = until;
3301
+ }
3302
+ }
3283
3303
  let response = undefined;
3284
3304
  if (market['spot']) {
3285
- const spotOptions = this.safeValue(options, 'spot', {});
3286
- const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
3287
- const method = this.safeString(params, 'method', defaultSpotMethod);
3288
- params = this.omit(params, 'method');
3289
3305
  if (method === 'publicSpotGetV2SpotMarketCandles') {
3290
3306
  response = await this.publicSpotGetV2SpotMarketCandles(this.extend(request, params));
3291
3307
  }
3292
3308
  else if (method === 'publicSpotGetV2SpotMarketHistoryCandles') {
3293
- const until = this.safeInteger2(params, 'until', 'till');
3294
- params = this.omit(params, ['until', 'till']);
3295
- if (until === undefined) {
3309
+ if (since !== undefined) {
3310
+ if (limit === undefined) {
3311
+ limit = 100; // exchange default
3312
+ }
3313
+ const duration = this.parseTimeframe(timeframe) * 1000;
3314
+ request['endTime'] = this.sum(since, duration * limit);
3315
+ }
3316
+ else if (until !== undefined) {
3317
+ request['endTime'] = until;
3318
+ }
3319
+ else {
3296
3320
  request['endTime'] = this.milliseconds();
3297
3321
  }
3298
3322
  response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
@@ -6200,6 +6224,7 @@ class bitget extends bitget$1 {
6200
6224
  * @see https://www.bitget.com/api-doc/contract/position/Get-History-Position
6201
6225
  * @param {string[]|undefined} symbols list of unified market symbols
6202
6226
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6227
+ * @param {string} [params.marginCoin] the settle currency of the positions, needs to match the productType
6203
6228
  * @param {string} [params.productType] 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
6204
6229
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6205
6230
  * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
@@ -6232,10 +6257,28 @@ class bitget extends bitget$1 {
6232
6257
  let response = undefined;
6233
6258
  let isHistory = false;
6234
6259
  if (method === 'privateMixGetV2MixPositionAllPosition') {
6235
- if (symbols === undefined) {
6236
- throw new errors.ArgumentsRequired(this.id + ' fetchPositions() requires a symbols argument');
6260
+ let marginCoin = this.safeString(params, 'marginCoin', 'USDT');
6261
+ if (symbols !== undefined) {
6262
+ marginCoin = market['settleId'];
6237
6263
  }
6238
- request['marginCoin'] = market['settleId'];
6264
+ else if (productType === 'USDT-FUTURES') {
6265
+ marginCoin = 'USDT';
6266
+ }
6267
+ else if (productType === 'USDC-FUTURES') {
6268
+ marginCoin = 'USDC';
6269
+ }
6270
+ else if (productType === 'SUSDT-FUTURES') {
6271
+ marginCoin = 'SUSDT';
6272
+ }
6273
+ else if (productType === 'SUSDC-FUTURES') {
6274
+ marginCoin = 'SUSDC';
6275
+ }
6276
+ else if ((productType === 'SCOIN-FUTURES') || (productType === 'COIN-FUTURES')) {
6277
+ if (marginCoin === undefined) {
6278
+ throw new errors.ArgumentsRequired(this.id + ' fetchPositions() requires a marginCoin parameter that matches the productType');
6279
+ }
6280
+ }
6281
+ request['marginCoin'] = marginCoin;
6239
6282
  response = await this.privateMixGetV2MixPositionAllPosition(this.extend(request, params));
6240
6283
  }
6241
6284
  else {
@@ -44,6 +44,7 @@ class bitmart extends bitmart$1 {
44
44
  'createStopLimitOrder': false,
45
45
  'createStopMarketOrder': false,
46
46
  'createStopOrder': false,
47
+ 'createTrailingPercentOrder': true,
47
48
  'fetchBalance': true,
48
49
  'fetchBorrowInterest': true,
49
50
  'fetchBorrowRateHistories': false,
@@ -262,8 +263,8 @@ class bitmart extends bitmart$1 {
262
263
  'trading': {
263
264
  'tierBased': true,
264
265
  'percentage': true,
265
- 'taker': this.parseNumber('0.0025'),
266
- 'maker': this.parseNumber('0.0025'),
266
+ 'taker': this.parseNumber('0.0040'),
267
+ 'maker': this.parseNumber('0.0035'),
267
268
  'tiers': {
268
269
  'taker': [
269
270
  [this.parseNumber('0'), this.parseNumber('0.0020')],
@@ -3512,14 +3513,13 @@ class bitmart extends bitmart$1 {
3512
3513
  // "repay_id": "2afcc16d99bd4707818c5a355dc89bed",
3513
3514
  // }
3514
3515
  //
3515
- const timestamp = this.milliseconds();
3516
3516
  return {
3517
3517
  'id': this.safeString2(info, 'borrow_id', 'repay_id'),
3518
3518
  'currency': this.safeCurrencyCode(undefined, currency),
3519
3519
  'amount': undefined,
3520
3520
  'symbol': undefined,
3521
- 'timestamp': timestamp,
3522
- 'datetime': this.iso8601(timestamp),
3521
+ 'timestamp': undefined,
3522
+ 'datetime': undefined,
3523
3523
  'info': info,
3524
3524
  };
3525
3525
  }
@@ -42,6 +42,7 @@ class bitmex extends bitmex$1 {
42
42
  'closePosition': true,
43
43
  'createOrder': true,
44
44
  'createReduceOnlyOrder': true,
45
+ 'createTrailingAmountOrder': true,
45
46
  'editOrder': true,
46
47
  'fetchBalance': true,
47
48
  'fetchClosedOrders': true,
@@ -1499,8 +1500,8 @@ class bitmex extends bitmex$1 {
1499
1500
  if (fetchOHLCVOpenTimestamp) {
1500
1501
  timestamp = this.sum(timestamp, duration);
1501
1502
  }
1502
- const ymdhms = this.ymdhms(timestamp);
1503
- request['startTime'] = ymdhms; // starting date filter for results
1503
+ const startTime = this.iso8601(timestamp);
1504
+ request['startTime'] = startTime; // starting date filter for results
1504
1505
  }
1505
1506
  else {
1506
1507
  request['reverse'] = true;
@@ -2610,12 +2611,9 @@ class bitmex extends bitmex$1 {
2610
2611
  throw new errors.ArgumentsRequired(this.id + ' fetchDepositAddress requires params["network"]');
2611
2612
  }
2612
2613
  const currency = this.currency(code);
2613
- let currencyId = currency['id'];
2614
- const idLength = currencyId.length;
2615
- currencyId = currencyId.slice(0, idLength - 1) + currencyId.slice(idLength - 1, idLength).toLowerCase(); // make the last letter lowercase
2616
2614
  params = this.omit(params, 'network');
2617
2615
  const request = {
2618
- 'currency': currencyId,
2616
+ 'currency': currency['id'],
2619
2617
  'network': this.networkCodeToId(networkCode, currency['code']),
2620
2618
  };
2621
2619
  const response = await this.privateGetUserDepositAddress(this.extend(request, params));