ccxt 4.2.18 → 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 (426) hide show
  1. package/README.md +8 -8
  2. package/dist/ccxt.browser.js +34202 -33193
  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 +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/hitbtc.js +5 -4
  49. package/dist/cjs/src/pro/htx.js +6 -1
  50. package/dist/cjs/src/pro/kraken.js +1 -1
  51. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  52. package/dist/cjs/src/pro/kucoin.js +46 -36
  53. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  54. package/dist/cjs/src/pro/lbank.js +881 -0
  55. package/dist/cjs/src/pro/okx.js +52 -2
  56. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  57. package/dist/cjs/src/pro/poloniex.js +2 -2
  58. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  59. package/dist/cjs/src/pro/woo.js +126 -0
  60. package/dist/cjs/src/probit.js +4 -2
  61. package/dist/cjs/src/upbit.js +12 -12
  62. package/dist/cjs/src/wavesexchange.js +1 -1
  63. package/dist/cjs/src/whitebit.js +1 -0
  64. package/dist/cjs/src/woo.js +56 -0
  65. package/js/ccxt.d.ts +11 -2
  66. package/js/ccxt.js +8 -2
  67. package/js/src/abstract/bitpanda.d.ts +4 -4
  68. package/js/src/abstract/bitstamp.d.ts +8 -0
  69. package/js/src/abstract/gate.d.ts +1 -0
  70. package/js/src/abstract/gateio.d.ts +1 -0
  71. package/js/src/abstract/htx.d.ts +3 -0
  72. package/js/src/abstract/huobi.d.ts +3 -0
  73. package/js/src/abstract/luno.d.ts +1 -0
  74. package/js/src/abstract/onetrading.d.ts +38 -0
  75. package/js/src/ascendex.js +2 -0
  76. package/js/src/bingx.js +1 -1
  77. package/js/src/bitget.js +22 -3
  78. package/js/src/bitpanda.d.ts +2 -72
  79. package/js/src/bitpanda.js +5 -1991
  80. package/js/src/bitstamp.js +8 -0
  81. package/js/src/deribit.js +11 -3
  82. package/js/src/gate.d.ts +1 -0
  83. package/js/src/gate.js +50 -110
  84. package/js/src/htx.js +3 -0
  85. package/js/src/kraken.d.ts +1 -0
  86. package/js/src/kraken.js +39 -38
  87. package/js/src/lbank.js +1 -0
  88. package/js/src/luno.d.ts +3 -1
  89. package/js/src/luno.js +84 -2
  90. package/js/src/mexc.js +1 -2
  91. package/js/src/onetrading.d.ts +74 -0
  92. package/js/src/onetrading.js +2003 -0
  93. package/js/src/poloniexfutures.js +1 -0
  94. package/js/src/pro/binance.js +6 -1
  95. package/js/src/pro/bitpanda.d.ts +2 -34
  96. package/js/src/pro/bitpanda.js +5 -1330
  97. package/js/src/pro/lbank.d.ts +29 -0
  98. package/js/src/pro/lbank.js +882 -0
  99. package/js/src/pro/onetrading.d.ts +36 -0
  100. package/js/src/pro/onetrading.js +1339 -0
  101. package/package.json +2 -2
  102. package/rollup.config.js +2 -0
  103. package/skip-tests.json +2 -1
  104. package/test-commonjs.cjs +25 -1
  105. package/dist/cjs/js/ccxt.js +0 -478
  106. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  107. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  108. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  109. package/dist/cjs/js/src/abstract/binance.js +0 -9
  110. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  111. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  112. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  113. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  114. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  115. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  116. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  117. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  118. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  119. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  120. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  121. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  122. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  123. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  124. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  125. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  126. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  127. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  128. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  129. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  130. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  131. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  132. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  133. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  134. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  135. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  136. package/dist/cjs/js/src/abstract/cex.js +0 -9
  137. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  138. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  139. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  140. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  141. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  142. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  143. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  144. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  145. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  146. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  147. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  148. package/dist/cjs/js/src/abstract/delta.js +0 -9
  149. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  150. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  151. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  152. package/dist/cjs/js/src/abstract/gate.js +0 -9
  153. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  154. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  155. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  156. package/dist/cjs/js/src/abstract/htx.js +0 -9
  157. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  158. package/dist/cjs/js/src/abstract/idex.js +0 -9
  159. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  160. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  161. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  162. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  163. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  164. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  165. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  166. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  167. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  168. package/dist/cjs/js/src/abstract/luno.js +0 -9
  169. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  170. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  171. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  172. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  173. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  174. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  175. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  176. package/dist/cjs/js/src/abstract/okx.js +0 -9
  177. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  178. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  179. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  180. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  181. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  182. package/dist/cjs/js/src/abstract/probit.js +0 -9
  183. package/dist/cjs/js/src/abstract/timex.js +0 -9
  184. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  185. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  186. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  187. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  188. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  189. package/dist/cjs/js/src/abstract/woo.js +0 -9
  190. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  191. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  192. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  193. package/dist/cjs/js/src/ace.js +0 -1058
  194. package/dist/cjs/js/src/alpaca.js +0 -1125
  195. package/dist/cjs/js/src/ascendex.js +0 -3365
  196. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  197. package/dist/cjs/js/src/base/Precise.js +0 -263
  198. package/dist/cjs/js/src/base/errors.js +0 -299
  199. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  200. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  201. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  202. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  203. package/dist/cjs/js/src/base/functions/number.js +0 -297
  204. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  205. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  206. package/dist/cjs/js/src/base/functions/string.js +0 -48
  207. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  208. package/dist/cjs/js/src/base/functions/time.js +0 -187
  209. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  210. package/dist/cjs/js/src/base/functions/type.js +0 -162
  211. package/dist/cjs/js/src/base/functions.js +0 -157
  212. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  213. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  214. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  215. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  216. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  217. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  218. package/dist/cjs/js/src/bequant.js +0 -33
  219. package/dist/cjs/js/src/bigone.js +0 -2213
  220. package/dist/cjs/js/src/binance.js +0 -9851
  221. package/dist/cjs/js/src/binancecoinm.js +0 -45
  222. package/dist/cjs/js/src/binanceus.js +0 -92
  223. package/dist/cjs/js/src/binanceusdm.js +0 -58
  224. package/dist/cjs/js/src/bingx.js +0 -3872
  225. package/dist/cjs/js/src/bit2c.js +0 -916
  226. package/dist/cjs/js/src/bitbank.js +0 -1000
  227. package/dist/cjs/js/src/bitbay.js +0 -17
  228. package/dist/cjs/js/src/bitbns.js +0 -1220
  229. package/dist/cjs/js/src/bitcoincom.js +0 -17
  230. package/dist/cjs/js/src/bitfinex.js +0 -1670
  231. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  232. package/dist/cjs/js/src/bitflyer.js +0 -1045
  233. package/dist/cjs/js/src/bitforex.js +0 -852
  234. package/dist/cjs/js/src/bitget.js +0 -8295
  235. package/dist/cjs/js/src/bithumb.js +0 -1090
  236. package/dist/cjs/js/src/bitmart.js +0 -4454
  237. package/dist/cjs/js/src/bitmex.js +0 -2881
  238. package/dist/cjs/js/src/bitopro.js +0 -1724
  239. package/dist/cjs/js/src/bitrue.js +0 -3253
  240. package/dist/cjs/js/src/bitso.js +0 -1753
  241. package/dist/cjs/js/src/bitstamp.js +0 -2188
  242. package/dist/cjs/js/src/bitteam.js +0 -2309
  243. package/dist/cjs/js/src/bitvavo.js +0 -1968
  244. package/dist/cjs/js/src/bl3p.js +0 -447
  245. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  246. package/dist/cjs/js/src/btcalpha.js +0 -929
  247. package/dist/cjs/js/src/btcbox.js +0 -565
  248. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  249. package/dist/cjs/js/src/btcturk.js +0 -929
  250. package/dist/cjs/js/src/bybit.js +0 -7624
  251. package/dist/cjs/js/src/cex.js +0 -1693
  252. package/dist/cjs/js/src/coinbase.js +0 -3424
  253. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  254. package/dist/cjs/js/src/coincheck.js +0 -844
  255. package/dist/cjs/js/src/coinex.js +0 -5417
  256. package/dist/cjs/js/src/coinlist.js +0 -2337
  257. package/dist/cjs/js/src/coinmate.js +0 -989
  258. package/dist/cjs/js/src/coinone.js +0 -1185
  259. package/dist/cjs/js/src/coinsph.js +0 -1933
  260. package/dist/cjs/js/src/coinspot.js +0 -548
  261. package/dist/cjs/js/src/cryptocom.js +0 -3007
  262. package/dist/cjs/js/src/currencycom.js +0 -2015
  263. package/dist/cjs/js/src/delta.js +0 -3262
  264. package/dist/cjs/js/src/deribit.js +0 -3310
  265. package/dist/cjs/js/src/digifinex.js +0 -4307
  266. package/dist/cjs/js/src/exmo.js +0 -2645
  267. package/dist/cjs/js/src/fmfwio.js +0 -34
  268. package/dist/cjs/js/src/gate.js +0 -7077
  269. package/dist/cjs/js/src/gateio.js +0 -16
  270. package/dist/cjs/js/src/gemini.js +0 -1801
  271. package/dist/cjs/js/src/hitbtc.js +0 -3660
  272. package/dist/cjs/js/src/hitbtc3.js +0 -19
  273. package/dist/cjs/js/src/hollaex.js +0 -1882
  274. package/dist/cjs/js/src/htx.js +0 -9174
  275. package/dist/cjs/js/src/huobi.js +0 -16
  276. package/dist/cjs/js/src/huobijp.js +0 -1918
  277. package/dist/cjs/js/src/idex.js +0 -1770
  278. package/dist/cjs/js/src/independentreserve.js +0 -761
  279. package/dist/cjs/js/src/indodax.js +0 -1069
  280. package/dist/cjs/js/src/kraken.js +0 -2891
  281. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  282. package/dist/cjs/js/src/kucoin.js +0 -4494
  283. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  284. package/dist/cjs/js/src/kuna.js +0 -1949
  285. package/dist/cjs/js/src/latoken.js +0 -1729
  286. package/dist/cjs/js/src/lbank.js +0 -2851
  287. package/dist/cjs/js/src/luno.js +0 -1044
  288. package/dist/cjs/js/src/lykke.js +0 -1303
  289. package/dist/cjs/js/src/mercado.js +0 -897
  290. package/dist/cjs/js/src/mexc.js +0 -5407
  291. package/dist/cjs/js/src/ndax.js +0 -2450
  292. package/dist/cjs/js/src/novadax.js +0 -1556
  293. package/dist/cjs/js/src/oceanex.js +0 -964
  294. package/dist/cjs/js/src/okcoin.js +0 -3115
  295. package/dist/cjs/js/src/okx.js +0 -7331
  296. package/dist/cjs/js/src/p2b.js +0 -1243
  297. package/dist/cjs/js/src/paymium.js +0 -597
  298. package/dist/cjs/js/src/phemex.js +0 -4725
  299. package/dist/cjs/js/src/poloniex.js +0 -2356
  300. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  301. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  302. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  303. package/dist/cjs/js/src/pro/bequant.js +0 -33
  304. package/dist/cjs/js/src/pro/binance.js +0 -2796
  305. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  306. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  307. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  308. package/dist/cjs/js/src/pro/bingx.js +0 -944
  309. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  310. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  311. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  312. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  313. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  314. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  315. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  316. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  317. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  318. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  319. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  320. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  321. package/dist/cjs/js/src/pro/cex.js +0 -1510
  322. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  323. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  324. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  325. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  326. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  327. package/dist/cjs/js/src/pro/deribit.js +0 -825
  328. package/dist/cjs/js/src/pro/exmo.js +0 -658
  329. package/dist/cjs/js/src/pro/gate.js +0 -1316
  330. package/dist/cjs/js/src/pro/gateio.js +0 -16
  331. package/dist/cjs/js/src/pro/gemini.js +0 -649
  332. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  333. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  334. package/dist/cjs/js/src/pro/htx.js +0 -2388
  335. package/dist/cjs/js/src/pro/huobi.js +0 -16
  336. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  337. package/dist/cjs/js/src/pro/idex.js +0 -714
  338. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  339. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  340. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  341. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  342. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  343. package/dist/cjs/js/src/pro/luno.js +0 -322
  344. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  345. package/dist/cjs/js/src/pro/ndax.js +0 -545
  346. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  347. package/dist/cjs/js/src/pro/okx.js +0 -1608
  348. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  349. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  350. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  351. package/dist/cjs/js/src/pro/probit.js +0 -586
  352. package/dist/cjs/js/src/pro/upbit.js +0 -234
  353. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  354. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  355. package/dist/cjs/js/src/pro/woo.js +0 -895
  356. package/dist/cjs/js/src/probit.js +0 -1867
  357. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  358. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  359. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  360. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  361. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  362. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  363. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  364. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  365. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  366. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  367. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  368. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  369. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  370. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  371. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  372. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  373. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  374. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  375. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  376. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  377. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  378. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  379. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  380. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  381. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  382. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  383. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  384. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  385. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  386. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  387. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  388. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  389. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  390. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  391. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  392. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  393. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  394. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  395. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  396. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  397. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  398. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  399. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  400. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  401. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  402. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  403. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  404. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  405. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  406. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  407. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  408. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  409. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  410. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  411. package/dist/cjs/js/src/timex.js +0 -1562
  412. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  413. package/dist/cjs/js/src/upbit.js +0 -1844
  414. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  415. package/dist/cjs/js/src/wazirx.js +0 -953
  416. package/dist/cjs/js/src/whitebit.js +0 -2310
  417. package/dist/cjs/js/src/woo.js +0 -2769
  418. package/dist/cjs/js/src/yobit.js +0 -1314
  419. package/dist/cjs/js/src/zaif.js +0 -736
  420. package/dist/cjs/js/src/zonda.js +0 -1883
  421. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  422. package/test.ts +0 -0
  423. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  424. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  425. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
  426. /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));