ccxt 4.2.18 → 4.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/README.md +100 -100
  2. package/dist/ccxt.browser.js +34240 -33297
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +276 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +165 -35
  10. package/dist/cjs/src/binanceus.js +25 -0
  11. package/dist/cjs/src/bingx.js +185 -42
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +84 -47
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bitteam.js +1 -1
  19. package/dist/cjs/src/bybit.js +27 -75
  20. package/dist/cjs/src/coinbase.js +176 -26
  21. package/dist/cjs/src/coincheck.js +1 -0
  22. package/dist/cjs/src/coinex.js +3 -0
  23. package/dist/cjs/src/coinlist.js +13 -6
  24. package/dist/cjs/src/coinone.js +2 -2
  25. package/dist/cjs/src/coinsph.js +4 -5
  26. package/dist/cjs/src/delta.js +7 -19
  27. package/dist/cjs/src/deribit.js +17 -4
  28. package/dist/cjs/src/gate.js +151 -194
  29. package/dist/cjs/src/gemini.js +1 -1
  30. package/dist/cjs/src/hitbtc.js +2 -3
  31. package/dist/cjs/src/htx.js +157 -7
  32. package/dist/cjs/src/huobijp.js +2 -3
  33. package/dist/cjs/src/independentreserve.js +7 -5
  34. package/dist/cjs/src/kraken.js +86 -54
  35. package/dist/cjs/src/kucoin.js +5 -0
  36. package/dist/cjs/src/kucoinfutures.js +140 -86
  37. package/dist/cjs/src/lbank.js +60 -33
  38. package/dist/cjs/src/luno.js +84 -2
  39. package/dist/cjs/src/mexc.js +3 -3
  40. package/dist/cjs/src/oceanex.js +1 -1
  41. package/dist/cjs/src/okx.js +23 -29
  42. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  43. package/dist/cjs/src/phemex.js +37 -27
  44. package/dist/cjs/src/poloniexfutures.js +1 -0
  45. package/dist/cjs/src/pro/binance.js +66 -25
  46. package/dist/cjs/src/pro/bitget.js +1 -1
  47. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  48. package/dist/cjs/src/pro/coinbase.js +4 -1
  49. package/dist/cjs/src/pro/hitbtc.js +5 -4
  50. package/dist/cjs/src/pro/htx.js +6 -1
  51. package/dist/cjs/src/pro/kraken.js +1 -1
  52. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  53. package/dist/cjs/src/pro/kucoin.js +46 -36
  54. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  55. package/dist/cjs/src/pro/lbank.js +881 -0
  56. package/dist/cjs/src/pro/okx.js +52 -2
  57. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  58. package/dist/cjs/src/pro/poloniex.js +2 -2
  59. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  60. package/dist/cjs/src/pro/woo.js +126 -0
  61. package/dist/cjs/src/probit.js +4 -2
  62. package/dist/cjs/src/upbit.js +12 -12
  63. package/dist/cjs/src/wavesexchange.js +1 -1
  64. package/dist/cjs/src/whitebit.js +1 -0
  65. package/dist/cjs/src/woo.js +56 -0
  66. package/js/ccxt.d.ts +11 -2
  67. package/js/ccxt.js +8 -2
  68. package/js/src/abstract/binance.d.ts +1 -0
  69. package/js/src/abstract/binancecoinm.d.ts +1 -0
  70. package/js/src/abstract/binanceus.d.ts +1 -0
  71. package/js/src/abstract/binanceusdm.d.ts +1 -0
  72. package/js/src/abstract/bitpanda.d.ts +4 -4
  73. package/js/src/abstract/bitpanda.js +3 -3
  74. package/js/src/abstract/bitstamp.d.ts +8 -0
  75. package/js/src/abstract/gate.d.ts +1 -0
  76. package/js/src/abstract/gateio.d.ts +1 -0
  77. package/js/src/abstract/htx.d.ts +3 -0
  78. package/js/src/abstract/huobi.d.ts +3 -0
  79. package/js/src/abstract/luno.d.ts +1 -0
  80. package/js/src/abstract/onetrading.d.ts +38 -0
  81. package/js/src/abstract/onetrading.js +11 -0
  82. package/js/src/ascendex.js +2 -0
  83. package/js/src/base/Exchange.d.ts +3 -0
  84. package/js/src/base/Exchange.js +10 -0
  85. package/js/src/binance.js +2 -1
  86. package/js/src/binanceus.js +17 -0
  87. package/js/src/bingx.js +3 -2
  88. package/js/src/bitget.d.ts +1 -1
  89. package/js/src/bitget.js +47 -34
  90. package/js/src/bitpanda.d.ts +2 -72
  91. package/js/src/bitpanda.js +5 -1991
  92. package/js/src/bitstamp.js +8 -0
  93. package/js/src/bitteam.js +1 -1
  94. package/js/src/bybit.d.ts +0 -1
  95. package/js/src/bybit.js +1 -29
  96. package/js/src/delta.d.ts +0 -1
  97. package/js/src/delta.js +0 -18
  98. package/js/src/deribit.js +11 -3
  99. package/js/src/gate.d.ts +1 -1
  100. package/js/src/gate.js +50 -135
  101. package/js/src/htx.js +3 -0
  102. package/js/src/kraken.d.ts +1 -0
  103. package/js/src/kraken.js +39 -38
  104. package/js/src/kucoinfutures.d.ts +6 -6
  105. package/js/src/kucoinfutures.js +9 -9
  106. package/js/src/lbank.js +1 -0
  107. package/js/src/luno.d.ts +3 -1
  108. package/js/src/luno.js +84 -2
  109. package/js/src/mexc.js +1 -2
  110. package/js/src/okx.d.ts +0 -1
  111. package/js/src/okx.js +0 -18
  112. package/js/src/onetrading.d.ts +74 -0
  113. package/js/src/onetrading.js +2003 -0
  114. package/js/src/poloniexfutures.js +1 -0
  115. package/js/src/pro/binance.js +6 -1
  116. package/js/src/pro/bitpanda.d.ts +2 -34
  117. package/js/src/pro/bitpanda.js +5 -1330
  118. package/js/src/pro/lbank.d.ts +29 -0
  119. package/js/src/pro/lbank.js +882 -0
  120. package/js/src/pro/onetrading.d.ts +36 -0
  121. package/js/src/pro/onetrading.js +1339 -0
  122. package/package.json +2 -2
  123. package/rollup.config.js +2 -0
  124. package/skip-tests.json +4 -2
  125. package/test-commonjs.cjs +25 -1
  126. package/dist/cjs/js/ccxt.js +0 -478
  127. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  128. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  130. package/dist/cjs/js/src/abstract/binance.js +0 -9
  131. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  132. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  133. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  140. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  143. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  144. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  145. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  146. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  147. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  148. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  149. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  150. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  151. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  152. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  153. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  154. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  155. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  156. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  157. package/dist/cjs/js/src/abstract/cex.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  160. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  161. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  162. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  163. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  164. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  165. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  166. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  167. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  168. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  169. package/dist/cjs/js/src/abstract/delta.js +0 -9
  170. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  171. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  172. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  173. package/dist/cjs/js/src/abstract/gate.js +0 -9
  174. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  175. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  176. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  177. package/dist/cjs/js/src/abstract/htx.js +0 -9
  178. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  179. package/dist/cjs/js/src/abstract/idex.js +0 -9
  180. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  181. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  182. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  183. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  184. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  185. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  186. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  187. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  188. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  189. package/dist/cjs/js/src/abstract/luno.js +0 -9
  190. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  191. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  192. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  193. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  194. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  195. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  196. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  197. package/dist/cjs/js/src/abstract/okx.js +0 -9
  198. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  199. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  200. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  201. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  202. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  203. package/dist/cjs/js/src/abstract/probit.js +0 -9
  204. package/dist/cjs/js/src/abstract/timex.js +0 -9
  205. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  206. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  207. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  208. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  209. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  210. package/dist/cjs/js/src/abstract/woo.js +0 -9
  211. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  212. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  213. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  214. package/dist/cjs/js/src/ace.js +0 -1058
  215. package/dist/cjs/js/src/alpaca.js +0 -1125
  216. package/dist/cjs/js/src/ascendex.js +0 -3365
  217. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  218. package/dist/cjs/js/src/base/Precise.js +0 -263
  219. package/dist/cjs/js/src/base/errors.js +0 -299
  220. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  221. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  222. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  223. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  224. package/dist/cjs/js/src/base/functions/number.js +0 -297
  225. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  226. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  227. package/dist/cjs/js/src/base/functions/string.js +0 -48
  228. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  229. package/dist/cjs/js/src/base/functions/time.js +0 -187
  230. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  231. package/dist/cjs/js/src/base/functions/type.js +0 -162
  232. package/dist/cjs/js/src/base/functions.js +0 -157
  233. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  234. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  235. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  236. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  237. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  238. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  239. package/dist/cjs/js/src/bequant.js +0 -33
  240. package/dist/cjs/js/src/bigone.js +0 -2213
  241. package/dist/cjs/js/src/binance.js +0 -9851
  242. package/dist/cjs/js/src/binancecoinm.js +0 -45
  243. package/dist/cjs/js/src/binanceus.js +0 -92
  244. package/dist/cjs/js/src/binanceusdm.js +0 -58
  245. package/dist/cjs/js/src/bingx.js +0 -3872
  246. package/dist/cjs/js/src/bit2c.js +0 -916
  247. package/dist/cjs/js/src/bitbank.js +0 -1000
  248. package/dist/cjs/js/src/bitbay.js +0 -17
  249. package/dist/cjs/js/src/bitbns.js +0 -1220
  250. package/dist/cjs/js/src/bitcoincom.js +0 -17
  251. package/dist/cjs/js/src/bitfinex.js +0 -1670
  252. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  253. package/dist/cjs/js/src/bitflyer.js +0 -1045
  254. package/dist/cjs/js/src/bitforex.js +0 -852
  255. package/dist/cjs/js/src/bitget.js +0 -8295
  256. package/dist/cjs/js/src/bithumb.js +0 -1090
  257. package/dist/cjs/js/src/bitmart.js +0 -4454
  258. package/dist/cjs/js/src/bitmex.js +0 -2881
  259. package/dist/cjs/js/src/bitopro.js +0 -1724
  260. package/dist/cjs/js/src/bitrue.js +0 -3253
  261. package/dist/cjs/js/src/bitso.js +0 -1753
  262. package/dist/cjs/js/src/bitstamp.js +0 -2188
  263. package/dist/cjs/js/src/bitteam.js +0 -2309
  264. package/dist/cjs/js/src/bitvavo.js +0 -1968
  265. package/dist/cjs/js/src/bl3p.js +0 -447
  266. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  267. package/dist/cjs/js/src/btcalpha.js +0 -929
  268. package/dist/cjs/js/src/btcbox.js +0 -565
  269. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  270. package/dist/cjs/js/src/btcturk.js +0 -929
  271. package/dist/cjs/js/src/bybit.js +0 -7624
  272. package/dist/cjs/js/src/cex.js +0 -1693
  273. package/dist/cjs/js/src/coinbase.js +0 -3424
  274. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  275. package/dist/cjs/js/src/coincheck.js +0 -844
  276. package/dist/cjs/js/src/coinex.js +0 -5417
  277. package/dist/cjs/js/src/coinlist.js +0 -2337
  278. package/dist/cjs/js/src/coinmate.js +0 -989
  279. package/dist/cjs/js/src/coinone.js +0 -1185
  280. package/dist/cjs/js/src/coinsph.js +0 -1933
  281. package/dist/cjs/js/src/coinspot.js +0 -548
  282. package/dist/cjs/js/src/cryptocom.js +0 -3007
  283. package/dist/cjs/js/src/currencycom.js +0 -2015
  284. package/dist/cjs/js/src/delta.js +0 -3262
  285. package/dist/cjs/js/src/deribit.js +0 -3310
  286. package/dist/cjs/js/src/digifinex.js +0 -4307
  287. package/dist/cjs/js/src/exmo.js +0 -2645
  288. package/dist/cjs/js/src/fmfwio.js +0 -34
  289. package/dist/cjs/js/src/gate.js +0 -7077
  290. package/dist/cjs/js/src/gateio.js +0 -16
  291. package/dist/cjs/js/src/gemini.js +0 -1801
  292. package/dist/cjs/js/src/hitbtc.js +0 -3660
  293. package/dist/cjs/js/src/hitbtc3.js +0 -19
  294. package/dist/cjs/js/src/hollaex.js +0 -1882
  295. package/dist/cjs/js/src/htx.js +0 -9174
  296. package/dist/cjs/js/src/huobi.js +0 -16
  297. package/dist/cjs/js/src/huobijp.js +0 -1918
  298. package/dist/cjs/js/src/idex.js +0 -1770
  299. package/dist/cjs/js/src/independentreserve.js +0 -761
  300. package/dist/cjs/js/src/indodax.js +0 -1069
  301. package/dist/cjs/js/src/kraken.js +0 -2891
  302. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  303. package/dist/cjs/js/src/kucoin.js +0 -4494
  304. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  305. package/dist/cjs/js/src/kuna.js +0 -1949
  306. package/dist/cjs/js/src/latoken.js +0 -1729
  307. package/dist/cjs/js/src/lbank.js +0 -2851
  308. package/dist/cjs/js/src/luno.js +0 -1044
  309. package/dist/cjs/js/src/lykke.js +0 -1303
  310. package/dist/cjs/js/src/mercado.js +0 -897
  311. package/dist/cjs/js/src/mexc.js +0 -5407
  312. package/dist/cjs/js/src/ndax.js +0 -2450
  313. package/dist/cjs/js/src/novadax.js +0 -1556
  314. package/dist/cjs/js/src/oceanex.js +0 -964
  315. package/dist/cjs/js/src/okcoin.js +0 -3115
  316. package/dist/cjs/js/src/okx.js +0 -7331
  317. package/dist/cjs/js/src/p2b.js +0 -1243
  318. package/dist/cjs/js/src/paymium.js +0 -597
  319. package/dist/cjs/js/src/phemex.js +0 -4725
  320. package/dist/cjs/js/src/poloniex.js +0 -2356
  321. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  322. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  323. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  324. package/dist/cjs/js/src/pro/bequant.js +0 -33
  325. package/dist/cjs/js/src/pro/binance.js +0 -2796
  326. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  327. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  328. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  329. package/dist/cjs/js/src/pro/bingx.js +0 -944
  330. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  331. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  332. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  333. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  334. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  335. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  336. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  337. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  338. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  339. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  340. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  341. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  342. package/dist/cjs/js/src/pro/cex.js +0 -1510
  343. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  344. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  345. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  346. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  347. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  348. package/dist/cjs/js/src/pro/deribit.js +0 -825
  349. package/dist/cjs/js/src/pro/exmo.js +0 -658
  350. package/dist/cjs/js/src/pro/gate.js +0 -1316
  351. package/dist/cjs/js/src/pro/gateio.js +0 -16
  352. package/dist/cjs/js/src/pro/gemini.js +0 -649
  353. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  354. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  355. package/dist/cjs/js/src/pro/htx.js +0 -2388
  356. package/dist/cjs/js/src/pro/huobi.js +0 -16
  357. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  358. package/dist/cjs/js/src/pro/idex.js +0 -714
  359. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  360. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  361. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  362. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  363. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  364. package/dist/cjs/js/src/pro/luno.js +0 -322
  365. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  366. package/dist/cjs/js/src/pro/ndax.js +0 -545
  367. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  368. package/dist/cjs/js/src/pro/okx.js +0 -1608
  369. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  370. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  371. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  372. package/dist/cjs/js/src/pro/probit.js +0 -586
  373. package/dist/cjs/js/src/pro/upbit.js +0 -234
  374. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  375. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  376. package/dist/cjs/js/src/pro/woo.js +0 -895
  377. package/dist/cjs/js/src/probit.js +0 -1867
  378. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  386. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  387. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  388. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  389. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  390. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  391. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  392. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  396. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  397. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  398. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  399. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  400. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  401. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  402. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  407. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  408. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  409. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  410. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  411. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  412. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  413. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  419. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  420. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  421. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  422. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  423. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  424. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  425. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  426. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  427. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  428. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  429. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  430. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  431. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  432. package/dist/cjs/js/src/timex.js +0 -1562
  433. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  434. package/dist/cjs/js/src/upbit.js +0 -1844
  435. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  436. package/dist/cjs/js/src/wazirx.js +0 -953
  437. package/dist/cjs/js/src/whitebit.js +0 -2310
  438. package/dist/cjs/js/src/woo.js +0 -2769
  439. package/dist/cjs/js/src/yobit.js +0 -1314
  440. package/dist/cjs/js/src/zaif.js +0 -736
  441. package/dist/cjs/js/src/zonda.js +0 -1883
  442. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  443. package/test.ts +0 -0
  444. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  445. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  446. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
package/dist/cjs/ccxt.js CHANGED
@@ -94,6 +94,7 @@ var novadax = require('./src/novadax.js');
94
94
  var oceanex = require('./src/oceanex.js');
95
95
  var okcoin = require('./src/okcoin.js');
96
96
  var okx = require('./src/okx.js');
97
+ var onetrading = require('./src/onetrading.js');
97
98
  var p2b = require('./src/p2b.js');
98
99
  var paymium = require('./src/paymium.js');
99
100
  var phemex = require('./src/phemex.js');
@@ -134,7 +135,9 @@ var bybit$1 = require('./src/pro/bybit.js');
134
135
  var cex$1 = require('./src/pro/cex.js');
135
136
  var coinbase$1 = require('./src/pro/coinbase.js');
136
137
  var coinbasepro$1 = require('./src/pro/coinbasepro.js');
138
+ var coincheck$1 = require('./src/pro/coincheck.js');
137
139
  var coinex$1 = require('./src/pro/coinex.js');
140
+ var coinone$1 = require('./src/pro/coinone.js');
138
141
  var cryptocom$1 = require('./src/pro/cryptocom.js');
139
142
  var currencycom$1 = require('./src/pro/currencycom.js');
140
143
  var deribit$1 = require('./src/pro/deribit.js');
@@ -153,11 +156,13 @@ var kraken$1 = require('./src/pro/kraken.js');
153
156
  var krakenfutures$1 = require('./src/pro/krakenfutures.js');
154
157
  var kucoin$1 = require('./src/pro/kucoin.js');
155
158
  var kucoinfutures$1 = require('./src/pro/kucoinfutures.js');
159
+ var lbank$1 = require('./src/pro/lbank.js');
156
160
  var luno$1 = require('./src/pro/luno.js');
157
161
  var mexc$1 = require('./src/pro/mexc.js');
158
162
  var ndax$1 = require('./src/pro/ndax.js');
159
163
  var okcoin$1 = require('./src/pro/okcoin.js');
160
164
  var okx$1 = require('./src/pro/okx.js');
165
+ var onetrading$1 = require('./src/pro/onetrading.js');
161
166
  var phemex$1 = require('./src/pro/phemex.js');
162
167
  var poloniex$1 = require('./src/pro/poloniex.js');
163
168
  var poloniexfutures$1 = require('./src/pro/poloniexfutures.js');
@@ -169,7 +174,7 @@ var woo$1 = require('./src/pro/woo.js');
169
174
 
170
175
  //-----------------------------------------------------------------------------
171
176
  // this is updated by vss.js when building
172
- const version = '4.2.18';
177
+ const version = '4.2.20';
173
178
  Exchange["default"].ccxtVersion = version;
174
179
  const exchanges = {
175
180
  'ace': ace,
@@ -254,6 +259,7 @@ const exchanges = {
254
259
  'oceanex': oceanex,
255
260
  'okcoin': okcoin,
256
261
  'okx': okx,
262
+ 'onetrading': onetrading,
257
263
  'p2b': p2b,
258
264
  'paymium': paymium,
259
265
  'phemex': phemex,
@@ -296,7 +302,9 @@ const pro = {
296
302
  'cex': cex$1,
297
303
  'coinbase': coinbase$1,
298
304
  'coinbasepro': coinbasepro$1,
305
+ 'coincheck': coincheck$1,
299
306
  'coinex': coinex$1,
307
+ 'coinone': coinone$1,
300
308
  'cryptocom': cryptocom$1,
301
309
  'currencycom': currencycom$1,
302
310
  'deribit': deribit$1,
@@ -315,11 +323,13 @@ const pro = {
315
323
  'krakenfutures': krakenfutures$1,
316
324
  'kucoin': kucoin$1,
317
325
  'kucoinfutures': kucoinfutures$1,
326
+ 'lbank': lbank$1,
318
327
  'luno': luno$1,
319
328
  'mexc': mexc$1,
320
329
  'ndax': ndax$1,
321
330
  'okcoin': okcoin$1,
322
331
  'okx': okx$1,
332
+ 'onetrading': onetrading$1,
323
333
  'phemex': phemex$1,
324
334
  'poloniex': poloniex$1,
325
335
  'poloniexfutures': poloniexfutures$1,
@@ -452,6 +462,7 @@ exports.novadax = novadax;
452
462
  exports.oceanex = oceanex;
453
463
  exports.okcoin = okcoin;
454
464
  exports.okx = okx;
465
+ exports.onetrading = onetrading;
455
466
  exports.p2b = p2b;
456
467
  exports.paymium = paymium;
457
468
  exports.phemex = phemex;
@@ -36,7 +36,7 @@ class alpaca extends alpaca$1 {
36
36
  'market': 'https://data.sandbox.{hostname}',
37
37
  },
38
38
  'doc': 'https://alpaca.markets/docs/',
39
- 'fees': 'https://alpaca.markets/support/what-are-the-fees-associated-with-crypto-trading/',
39
+ 'fees': 'https://docs.alpaca.markets/docs/crypto-fees',
40
40
  },
41
41
  'has': {
42
42
  'CORS': false,
@@ -207,28 +207,28 @@ class alpaca extends alpaca$1 {
207
207
  'trading': {
208
208
  'tierBased': true,
209
209
  'percentage': true,
210
- 'maker': this.parseNumber('0.003'),
211
- 'taker': this.parseNumber('0.003'),
210
+ 'maker': this.parseNumber('0.0015'),
211
+ 'taker': this.parseNumber('0.0025'),
212
212
  'tiers': {
213
213
  'taker': [
214
- [this.parseNumber('0'), this.parseNumber('0.003')],
215
- [this.parseNumber('500000'), this.parseNumber('0.0028')],
216
- [this.parseNumber('1000000'), this.parseNumber('0.0025')],
217
- [this.parseNumber('5000000'), this.parseNumber('0.002')],
218
- [this.parseNumber('10000000'), this.parseNumber('0.0018')],
219
- [this.parseNumber('25000000'), this.parseNumber('0.0015')],
220
- [this.parseNumber('50000000'), this.parseNumber('0.00125')],
214
+ [this.parseNumber('0'), this.parseNumber('0.0025')],
215
+ [this.parseNumber('100000'), this.parseNumber('0.0022')],
216
+ [this.parseNumber('500000'), this.parseNumber('0.0020')],
217
+ [this.parseNumber('1000000'), this.parseNumber('0.0018')],
218
+ [this.parseNumber('10000000'), this.parseNumber('0.0015')],
219
+ [this.parseNumber('25000000'), this.parseNumber('0.0013')],
220
+ [this.parseNumber('50000000'), this.parseNumber('0.0012')],
221
221
  [this.parseNumber('100000000'), this.parseNumber('0.001')],
222
222
  ],
223
223
  'maker': [
224
- [this.parseNumber('0'), this.parseNumber('0.003')],
225
- [this.parseNumber('500000'), this.parseNumber('0.0028')],
226
- [this.parseNumber('1000000'), this.parseNumber('0.0025')],
227
- [this.parseNumber('5000000'), this.parseNumber('0.002')],
228
- [this.parseNumber('10000000'), this.parseNumber('0.0018')],
229
- [this.parseNumber('25000000'), this.parseNumber('0.0015')],
230
- [this.parseNumber('50000000'), this.parseNumber('0.00125')],
231
- [this.parseNumber('100000000'), this.parseNumber('0.001')],
224
+ [this.parseNumber('0'), this.parseNumber('0.0015')],
225
+ [this.parseNumber('100000'), this.parseNumber('0.0012')],
226
+ [this.parseNumber('500000'), this.parseNumber('0.001')],
227
+ [this.parseNumber('1000000'), this.parseNumber('0.0008')],
228
+ [this.parseNumber('10000000'), this.parseNumber('0.0005')],
229
+ [this.parseNumber('25000000'), this.parseNumber('0.0002')],
230
+ [this.parseNumber('50000000'), this.parseNumber('0.0002')],
231
+ [this.parseNumber('100000000'), this.parseNumber('0.00')],
232
232
  ],
233
233
  },
234
234
  },
@@ -64,6 +64,8 @@ class ascendex extends ascendex$1 {
64
64
  'fetchMarkets': true,
65
65
  'fetchMarkOHLCV': false,
66
66
  'fetchOHLCV': true,
67
+ 'fetchOpenInterest': false,
68
+ 'fetchOpenInterestHistory': false,
67
69
  'fetchOpenOrders': true,
68
70
  'fetchOrder': true,
69
71
  'fetchOrderBook': true,
@@ -808,12 +810,14 @@ class ascendex extends ascendex$1 {
808
810
  */
809
811
  await this.loadMarkets();
810
812
  await this.loadAccounts();
811
- let query = undefined;
812
813
  let marketType = undefined;
813
- [marketType, query] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
814
+ let marginMode = undefined;
815
+ [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
816
+ [marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
814
817
  const isMargin = this.safeValue(params, 'margin', false);
815
- marketType = isMargin ? 'margin' : marketType;
816
- query = this.omit(query, 'margin');
818
+ const isCross = marginMode === 'cross';
819
+ marketType = (isMargin || isCross) ? 'margin' : marketType;
820
+ params = this.omit(params, 'margin');
817
821
  const accountsByType = this.safeValue(this.options, 'accountsByType', {});
818
822
  const accountCategory = this.safeString(accountsByType, marketType, 'cash');
819
823
  const account = this.safeValue(this.accounts, 0, {});
@@ -821,15 +825,18 @@ class ascendex extends ascendex$1 {
821
825
  const request = {
822
826
  'account-group': accountGroup,
823
827
  };
828
+ if ((marginMode === 'isolated') && (marketType !== 'swap')) {
829
+ throw new errors.BadRequest(this.id + ' does not supported isolated margin trading');
830
+ }
824
831
  if ((accountCategory === 'cash') || (accountCategory === 'margin')) {
825
832
  request['account-category'] = accountCategory;
826
833
  }
827
834
  let response = undefined;
828
835
  if ((marketType === 'spot') || (marketType === 'margin')) {
829
- response = await this.v1PrivateAccountCategoryGetBalance(this.extend(request, query));
836
+ response = await this.v1PrivateAccountCategoryGetBalance(this.extend(request, params));
830
837
  }
831
838
  else if (marketType === 'swap') {
832
- response = await this.v2PrivateAccountGroupGetFuturesPosition(this.extend(request, query));
839
+ response = await this.v2PrivateAccountGroupGetFuturesPosition(this.extend(request, params));
833
840
  }
834
841
  else {
835
842
  throw new errors.NotSupported(this.id + ' fetchBalance() is not currently supported for ' + marketType + ' markets');
@@ -365,11 +365,17 @@ class Exchange {
365
365
  'createMarketOrderWithCost': undefined,
366
366
  'createMarketSellOrderWithCost': undefined,
367
367
  'createOrders': undefined,
368
+ 'createOrderWithTakeProfitAndStopLoss': undefined,
368
369
  'createPostOnlyOrder': undefined,
369
370
  'createReduceOnlyOrder': undefined,
371
+ 'createStopLossOrder': undefined,
370
372
  'createStopOrder': undefined,
371
373
  'createStopLimitOrder': undefined,
372
374
  'createStopMarketOrder': undefined,
375
+ 'createTakeProfitOrder': undefined,
376
+ 'createTrailingAmountOrder': undefined,
377
+ 'createTrailingPercentOrder': undefined,
378
+ 'createTriggerOrder': undefined,
373
379
  'createOrderWs': undefined,
374
380
  'editOrderWs': undefined,
375
381
  'fetchOpenOrdersWs': undefined,
@@ -388,6 +394,7 @@ class Exchange {
388
394
  'fetchBorrowInterest': undefined,
389
395
  'fetchBorrowRateHistory': undefined,
390
396
  'fetchCanceledOrders': undefined,
397
+ 'fetchCanceledAndClosedOrders': undefined,
391
398
  'fetchClosedOrder': undefined,
392
399
  'fetchClosedOrders': undefined,
393
400
  'fetchCrossBorrowRate': undefined,
@@ -433,7 +440,7 @@ class Exchange {
433
440
  'fetchPositionsForSymbol': undefined,
434
441
  'fetchPositionsRisk': undefined,
435
442
  'fetchPremiumIndexOHLCV': undefined,
436
- 'fetchStatus': 'emulated',
443
+ 'fetchStatus': undefined,
437
444
  'fetchTicker': true,
438
445
  'fetchTickers': undefined,
439
446
  'fetchTime': undefined,
@@ -662,10 +669,28 @@ class Exchange {
662
669
  console.log(...args);
663
670
  }
664
671
  async loadProxyModules() {
672
+ if (this.proxyModulesLoaded) {
673
+ return;
674
+ }
665
675
  this.proxyModulesLoaded = true;
666
- // todo: possible sync alternatives: https://stackoverflow.com/questions/51069002/convert-import-to-synchronous
667
- this.httpProxyAgentModule = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/proxies/http-proxy-agent/index.js'); });
668
- this.httpsProxyAgentModule = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/proxies/https-proxy-agent/index.js'); });
676
+ // we have to handle it with below nested way, because of dynamic
677
+ // import issues (https://github.com/ccxt/ccxt/pull/20687)
678
+ try {
679
+ // todo: possible sync alternatives: https://stackoverflow.com/questions/51069002/convert-import-to-synchronous
680
+ this.httpProxyAgentModule = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/proxies/http-proxy-agent/index.js'); });
681
+ this.httpsProxyAgentModule = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/proxies/https-proxy-agent/index.js'); });
682
+ }
683
+ catch (e) {
684
+ // if several users are using those frameworks which cause exceptions,
685
+ // let them to be able to load modules still, by installing them
686
+ try {
687
+ // @ts-ignore
688
+ this.httpProxyAgentModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackIgnore: true */ 'http-proxy-agent')); });
689
+ // @ts-ignore
690
+ this.httpProxyAgentModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackIgnore: true */ 'https-proxy-agent')); });
691
+ }
692
+ catch { }
693
+ }
669
694
  if (this.socksProxyAgentModuleChecked === false) {
670
695
  this.socksProxyAgentModuleChecked = true;
671
696
  try {
@@ -757,11 +782,10 @@ class Exchange {
757
782
  // proxy agents
758
783
  const [httpProxy, httpsProxy, socksProxy] = this.checkProxySettings(url, method, headers, body);
759
784
  this.checkConflictingProxies(httpProxy || httpsProxy || socksProxy, proxyUrl);
785
+ // skip proxies on the browser
760
786
  if (isNode) {
761
- // skip this on the browser
762
- if (!this.proxyModulesLoaded) {
763
- await this.loadProxyModules(); // this is needed in JS, independently whether proxy properties were set or not, we have to load them because of necessity in WS, which would happen beyond 'fetch' method (WS/etc)
764
- }
787
+ // this is needed in JS, independently whether proxy properties were set or not, we have to load them because of necessity in WS, which would happen beyond 'fetch' method (WS/etc)
788
+ await this.loadProxyModules();
765
789
  }
766
790
  const chosenAgent = this.setProxyAgents(httpProxy, httpsProxy, socksProxy);
767
791
  // user-agent
@@ -783,13 +807,29 @@ class Exchange {
783
807
  // end of proxies & headers
784
808
  if (this.fetchImplementation === undefined) {
785
809
  if (isNode) {
786
- const module = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/node-fetch/index.js'); });
787
810
  if (this.agent === undefined) {
788
811
  this.agent = this.httpsAgent;
789
812
  }
790
- this.AbortError = module.AbortError;
791
- this.fetchImplementation = module.default;
792
- this.FetchError = module.FetchError;
813
+ try {
814
+ const module = await Promise.resolve().then(function () { return require(/* webpackIgnore: true */ '../static_dependencies/node-fetch/index.js'); });
815
+ this.AbortError = module.AbortError;
816
+ this.fetchImplementation = module.default;
817
+ this.FetchError = module.FetchError;
818
+ }
819
+ catch (e) {
820
+ // some users having issues with dynamic imports (https://github.com/ccxt/ccxt/pull/20687)
821
+ // so let them to fallback to node's native fetch
822
+ if (typeof fetch === 'function') {
823
+ this.fetchImplementation = fetch;
824
+ // as it's browser-compatible implementation ( https://nodejs.org/dist/latest-v20.x/docs/api/globals.html#fetch )
825
+ // it throws same error types
826
+ this.AbortError = DOMException;
827
+ this.FetchError = TypeError;
828
+ }
829
+ else {
830
+ throw new Error('Seems, "fetch" function is not available in your node-js version, please use latest node-js version');
831
+ }
832
+ }
793
833
  }
794
834
  else {
795
835
  this.fetchImplementation = self.fetch;
@@ -982,7 +1022,10 @@ class Exchange {
982
1022
  }
983
1023
  spawn(method, ...args) {
984
1024
  const future = Future.Future();
985
- method.apply(this, args).then(future.resolve).catch(future.reject);
1025
+ // using setTimeout 0 to force the execution to run after the future is returned
1026
+ setTimeout(() => {
1027
+ method.apply(this, args).then(future.resolve).catch(future.reject);
1028
+ }, 0);
986
1029
  return future;
987
1030
  }
988
1031
  delay(timeout, method, ...args) {
@@ -1413,11 +1456,11 @@ class Exchange {
1413
1456
  let httpsProxy = undefined;
1414
1457
  let socksProxy = undefined;
1415
1458
  // httpProxy
1416
- if (this.httpProxy !== undefined) {
1459
+ if (this.valueIsDefined(this.httpProxy)) {
1417
1460
  usedProxies.push('httpProxy');
1418
1461
  httpProxy = this.httpProxy;
1419
1462
  }
1420
- if (this.http_proxy !== undefined) {
1463
+ if (this.valueIsDefined(this.http_proxy)) {
1421
1464
  usedProxies.push('http_proxy');
1422
1465
  httpProxy = this.http_proxy;
1423
1466
  }
@@ -1430,11 +1473,11 @@ class Exchange {
1430
1473
  httpProxy = this.http_proxy_callback(url, method, headers, body);
1431
1474
  }
1432
1475
  // httpsProxy
1433
- if (this.httpsProxy !== undefined) {
1476
+ if (this.valueIsDefined(this.httpsProxy)) {
1434
1477
  usedProxies.push('httpsProxy');
1435
1478
  httpsProxy = this.httpsProxy;
1436
1479
  }
1437
- if (this.https_proxy !== undefined) {
1480
+ if (this.valueIsDefined(this.https_proxy)) {
1438
1481
  usedProxies.push('https_proxy');
1439
1482
  httpsProxy = this.https_proxy;
1440
1483
  }
@@ -1447,11 +1490,11 @@ class Exchange {
1447
1490
  httpsProxy = this.https_proxy_callback(url, method, headers, body);
1448
1491
  }
1449
1492
  // socksProxy
1450
- if (this.socksProxy !== undefined) {
1493
+ if (this.valueIsDefined(this.socksProxy)) {
1451
1494
  usedProxies.push('socksProxy');
1452
1495
  socksProxy = this.socksProxy;
1453
1496
  }
1454
- if (this.socks_proxy !== undefined) {
1497
+ if (this.valueIsDefined(this.socks_proxy)) {
1455
1498
  usedProxies.push('socks_proxy');
1456
1499
  socksProxy = this.socks_proxy;
1457
1500
  }
@@ -1477,29 +1520,29 @@ class Exchange {
1477
1520
  let wssProxy = undefined;
1478
1521
  let wsSocksProxy = undefined;
1479
1522
  // ws proxy
1480
- if (this.wsProxy !== undefined) {
1523
+ if (this.valueIsDefined(this.wsProxy)) {
1481
1524
  usedProxies.push('wsProxy');
1482
1525
  wsProxy = this.wsProxy;
1483
1526
  }
1484
- if (this.ws_proxy !== undefined) {
1527
+ if (this.valueIsDefined(this.ws_proxy)) {
1485
1528
  usedProxies.push('ws_proxy');
1486
1529
  wsProxy = this.ws_proxy;
1487
1530
  }
1488
1531
  // wss proxy
1489
- if (this.wssProxy !== undefined) {
1532
+ if (this.valueIsDefined(this.wssProxy)) {
1490
1533
  usedProxies.push('wssProxy');
1491
1534
  wssProxy = this.wssProxy;
1492
1535
  }
1493
- if (this.wss_proxy !== undefined) {
1536
+ if (this.valueIsDefined(this.wss_proxy)) {
1494
1537
  usedProxies.push('wss_proxy');
1495
1538
  wssProxy = this.wss_proxy;
1496
1539
  }
1497
1540
  // ws socks proxy
1498
- if (this.wsSocksProxy !== undefined) {
1541
+ if (this.valueIsDefined(this.wsSocksProxy)) {
1499
1542
  usedProxies.push('wsSocksProxy');
1500
1543
  wsSocksProxy = this.wsSocksProxy;
1501
1544
  }
1502
- if (this.ws_socks_proxy !== undefined) {
1545
+ if (this.valueIsDefined(this.ws_socks_proxy)) {
1503
1546
  usedProxies.push('ws_socks_proxy');
1504
1547
  wsSocksProxy = this.ws_socks_proxy;
1505
1548
  }
@@ -3742,6 +3785,60 @@ class Exchange {
3742
3785
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
3743
3786
  throw new errors.NotSupported(this.id + ' createOrder() is not supported yet');
3744
3787
  }
3788
+ async createTrailingAmountOrder(symbol, type, side, amount, price = undefined, trailingAmount = undefined, trailingTriggerPrice = undefined, params = {}) {
3789
+ /**
3790
+ * @method
3791
+ * @name createTrailingAmountOrder
3792
+ * @description create a trailing order by providing the symbol, type, side, amount, price and trailingAmount
3793
+ * @param {string} symbol unified symbol of the market to create an order in
3794
+ * @param {string} type 'market' or 'limit'
3795
+ * @param {string} side 'buy' or 'sell'
3796
+ * @param {float} amount how much you want to trade in units of the base currency, or number of contracts
3797
+ * @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
3798
+ * @param {float} trailingAmount the quote amount to trail away from the current market price
3799
+ * @param {float} [trailingTriggerPrice] the price to activate a trailing order, default uses the price argument
3800
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3801
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3802
+ */
3803
+ if (trailingAmount === undefined) {
3804
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingAmount argument');
3805
+ }
3806
+ params['trailingAmount'] = trailingAmount;
3807
+ if (trailingTriggerPrice !== undefined) {
3808
+ params['trailingTriggerPrice'] = trailingTriggerPrice;
3809
+ }
3810
+ if (this.has['createTrailingAmountOrder']) {
3811
+ return await this.createOrder(symbol, type, side, amount, price, params);
3812
+ }
3813
+ throw new errors.NotSupported(this.id + ' createTrailingAmountOrder() is not supported yet');
3814
+ }
3815
+ async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
3816
+ /**
3817
+ * @method
3818
+ * @name createTrailingPercentOrder
3819
+ * @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
3820
+ * @param {string} symbol unified symbol of the market to create an order in
3821
+ * @param {string} type 'market' or 'limit'
3822
+ * @param {string} side 'buy' or 'sell'
3823
+ * @param {float} amount how much you want to trade in units of the base currency, or number of contracts
3824
+ * @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
3825
+ * @param {float} trailingPercent the percent to trail away from the current market price
3826
+ * @param {float} [trailingTriggerPrice] the price to activate a trailing order, default uses the price argument
3827
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3828
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3829
+ */
3830
+ if (trailingPercent === undefined) {
3831
+ throw new errors.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
3832
+ }
3833
+ params['trailingPercent'] = trailingPercent;
3834
+ if (trailingTriggerPrice !== undefined) {
3835
+ params['trailingTriggerPrice'] = trailingTriggerPrice;
3836
+ }
3837
+ if (this.has['createTrailingPercentOrder']) {
3838
+ return await this.createOrder(symbol, type, side, amount, price, params);
3839
+ }
3840
+ throw new errors.NotSupported(this.id + ' createTrailingPercentOrder() is not supported yet');
3841
+ }
3745
3842
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
3746
3843
  /**
3747
3844
  * @method
@@ -3783,11 +3880,154 @@ class Exchange {
3783
3880
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3784
3881
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3785
3882
  */
3786
- if (this.options['createMarketSellOrderRequiresPrice'] || this.options['createMarketSellOrderWithCost']) {
3883
+ if (this.options['createMarketSellOrderRequiresPrice'] || this.has['createMarketSellOrderWithCost']) {
3787
3884
  return await this.createOrder(symbol, 'market', 'sell', cost, 1, params);
3788
3885
  }
3789
3886
  throw new errors.NotSupported(this.id + ' createMarketSellOrderWithCost() is not supported yet');
3790
3887
  }
3888
+ async createTriggerOrder(symbol, type, side, amount, price = undefined, triggerPrice = undefined, params = {}) {
3889
+ /**
3890
+ * @method
3891
+ * @name createTriggerOrder
3892
+ * @description create a trigger stop order (type 1)
3893
+ * @param {string} symbol unified symbol of the market to create an order in
3894
+ * @param {string} type 'market' or 'limit'
3895
+ * @param {string} side 'buy' or 'sell'
3896
+ * @param {float} amount how much you want to trade in units of the base currency or the number of contracts
3897
+ * @param {float} [price] the price to fulfill the order, in units of the quote currency, ignored in market orders
3898
+ * @param {float} triggerPrice the price to trigger the stop order, in units of the quote currency
3899
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3900
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3901
+ */
3902
+ if (triggerPrice === undefined) {
3903
+ throw new errors.ArgumentsRequired(this.id + ' createTriggerOrder() requires a triggerPrice argument');
3904
+ }
3905
+ params['triggerPrice'] = triggerPrice;
3906
+ if (this.has['createTriggerOrder']) {
3907
+ return await this.createOrder(symbol, type, side, amount, price, params);
3908
+ }
3909
+ throw new errors.NotSupported(this.id + ' createTriggerOrder() is not supported yet');
3910
+ }
3911
+ async createStopLossOrder(symbol, type, side, amount, price = undefined, stopLossPrice = undefined, params = {}) {
3912
+ /**
3913
+ * @method
3914
+ * @name createStopLossOrder
3915
+ * @description create a trigger stop loss order (type 2)
3916
+ * @param {string} symbol unified symbol of the market to create an order in
3917
+ * @param {string} type 'market' or 'limit'
3918
+ * @param {string} side 'buy' or 'sell'
3919
+ * @param {float} amount how much you want to trade in units of the base currency or the number of contracts
3920
+ * @param {float} [price] the price to fulfill the order, in units of the quote currency, ignored in market orders
3921
+ * @param {float} stopLossPrice the price to trigger the stop loss order, in units of the quote currency
3922
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3923
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3924
+ */
3925
+ if (stopLossPrice === undefined) {
3926
+ throw new errors.ArgumentsRequired(this.id + ' createStopLossOrder() requires a stopLossPrice argument');
3927
+ }
3928
+ params['stopLossPrice'] = stopLossPrice;
3929
+ if (this.has['createStopLossOrder']) {
3930
+ return await this.createOrder(symbol, type, side, amount, price, params);
3931
+ }
3932
+ throw new errors.NotSupported(this.id + ' createStopLossOrder() is not supported yet');
3933
+ }
3934
+ async createTakeProfitOrder(symbol, type, side, amount, price = undefined, takeProfitPrice = undefined, params = {}) {
3935
+ /**
3936
+ * @method
3937
+ * @name createTakeProfitOrder
3938
+ * @description create a trigger take profit order (type 2)
3939
+ * @param {string} symbol unified symbol of the market to create an order in
3940
+ * @param {string} type 'market' or 'limit'
3941
+ * @param {string} side 'buy' or 'sell'
3942
+ * @param {float} amount how much you want to trade in units of the base currency or the number of contracts
3943
+ * @param {float} [price] the price to fulfill the order, in units of the quote currency, ignored in market orders
3944
+ * @param {float} takeProfitPrice the price to trigger the take profit order, in units of the quote currency
3945
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3946
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3947
+ */
3948
+ if (takeProfitPrice === undefined) {
3949
+ throw new errors.ArgumentsRequired(this.id + ' createTakeProfitOrder() requires a takeProfitPrice argument');
3950
+ }
3951
+ params['takeProfitPrice'] = takeProfitPrice;
3952
+ if (this.has['createTakeProfitOrder']) {
3953
+ return await this.createOrder(symbol, type, side, amount, price, params);
3954
+ }
3955
+ throw new errors.NotSupported(this.id + ' createTakeProfitOrder() is not supported yet');
3956
+ }
3957
+ async createOrderWithTakeProfitAndStopLoss(symbol, type, side, amount, price = undefined, takeProfit = undefined, stopLoss = undefined, params = {}) {
3958
+ /**
3959
+ * @method
3960
+ * @name createOrderWithTakeProfitAndStopLoss
3961
+ * @description create an order with a stop loss or take profit attached (type 3)
3962
+ * @param {string} symbol unified symbol of the market to create an order in
3963
+ * @param {string} type 'market' or 'limit'
3964
+ * @param {string} side 'buy' or 'sell'
3965
+ * @param {float} amount how much you want to trade in units of the base currency or the number of contracts
3966
+ * @param {float} [price] the price to fulfill the order, in units of the quote currency, ignored in market orders
3967
+ * @param {float} [takeProfit] the take profit price, in units of the quote currency
3968
+ * @param {float} [stopLoss] the stop loss price, in units of the quote currency
3969
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3970
+ * @param {string} [params.takeProfitType] *not available on all exchanges* 'limit' or 'market'
3971
+ * @param {string} [params.stopLossType] *not available on all exchanges* 'limit' or 'market'
3972
+ * @param {string} [params.takeProfitPriceType] *not available on all exchanges* 'last', 'mark' or 'index'
3973
+ * @param {string} [params.stopLossPriceType] *not available on all exchanges* 'last', 'mark' or 'index'
3974
+ * @param {float} [params.takeProfitLimitPrice] *not available on all exchanges* limit price for a limit take profit order
3975
+ * @param {float} [params.stopLossLimitPrice] *not available on all exchanges* stop loss for a limit stop loss order
3976
+ * @param {float} [params.takeProfitAmount] *not available on all exchanges* the amount for a take profit
3977
+ * @param {float} [params.stopLossAmount] *not available on all exchanges* the amount for a stop loss
3978
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3979
+ */
3980
+ if ((takeProfit === undefined) && (stopLoss === undefined)) {
3981
+ throw new errors.ArgumentsRequired(this.id + ' createOrderWithTakeProfitAndStopLoss() requires either a takeProfit or stopLoss argument');
3982
+ }
3983
+ if (takeProfit !== undefined) {
3984
+ params['takeProfit'] = {
3985
+ 'triggerPrice': takeProfit,
3986
+ };
3987
+ }
3988
+ if (stopLoss !== undefined) {
3989
+ params['stopLoss'] = {
3990
+ 'triggerPrice': stopLoss,
3991
+ };
3992
+ }
3993
+ const takeProfitType = this.safeString(params, 'takeProfitType');
3994
+ const takeProfitPriceType = this.safeString(params, 'takeProfitPriceType');
3995
+ const takeProfitLimitPrice = this.safeString(params, 'takeProfitLimitPrice');
3996
+ const takeProfitAmount = this.safeString(params, 'takeProfitAmount');
3997
+ const stopLossType = this.safeString(params, 'stopLossType');
3998
+ const stopLossPriceType = this.safeString(params, 'stopLossPriceType');
3999
+ const stopLossLimitPrice = this.safeString(params, 'stopLossLimitPrice');
4000
+ const stopLossAmount = this.safeString(params, 'stopLossAmount');
4001
+ if (takeProfitType !== undefined) {
4002
+ params['takeProfit']['type'] = takeProfitType;
4003
+ }
4004
+ if (takeProfitPriceType !== undefined) {
4005
+ params['takeProfit']['priceType'] = takeProfitPriceType;
4006
+ }
4007
+ if (takeProfitLimitPrice !== undefined) {
4008
+ params['takeProfit']['price'] = this.parseToNumeric(takeProfitLimitPrice);
4009
+ }
4010
+ if (takeProfitAmount !== undefined) {
4011
+ params['takeProfit']['amount'] = this.parseToNumeric(takeProfitAmount);
4012
+ }
4013
+ if (stopLossType !== undefined) {
4014
+ params['stopLoss']['type'] = stopLossType;
4015
+ }
4016
+ if (stopLossPriceType !== undefined) {
4017
+ params['stopLoss']['priceType'] = stopLossPriceType;
4018
+ }
4019
+ if (stopLossLimitPrice !== undefined) {
4020
+ params['stopLoss']['price'] = this.parseToNumeric(stopLossLimitPrice);
4021
+ }
4022
+ if (stopLossAmount !== undefined) {
4023
+ params['stopLoss']['amount'] = this.parseToNumeric(stopLossAmount);
4024
+ }
4025
+ params = this.omit(params, ['takeProfitType', 'takeProfitPriceType', 'takeProfitLimitPrice', 'takeProfitAmount', 'stopLossType', 'stopLossPriceType', 'stopLossLimitPrice', 'stopLossAmount']);
4026
+ if (this.has['createOrderWithTakeProfitAndStopLoss']) {
4027
+ return await this.createOrder(symbol, type, side, amount, price, params);
4028
+ }
4029
+ throw new errors.NotSupported(this.id + ' createOrderWithTakeProfitAndStopLoss() is not supported yet');
4030
+ }
3791
4031
  async createOrders(orders, params = {}) {
3792
4032
  throw new errors.NotSupported(this.id + ' createOrders() is not supported yet');
3793
4033
  }
@@ -3845,6 +4085,9 @@ class Exchange {
3845
4085
  }
3846
4086
  throw new errors.NotSupported(this.id + ' fetchClosedOrders() is not supported yet');
3847
4087
  }
4088
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
4089
+ throw new errors.NotSupported(this.id + ' fetchCanceledAndClosedOrders() is not supported yet');
4090
+ }
3848
4091
  async fetchClosedOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
3849
4092
  if (this.has['fetchOrdersWs']) {
3850
4093
  const orders = await this.fetchOrdersWs(symbol, since, limit, params);
@@ -3902,7 +4145,7 @@ class Exchange {
3902
4145
  throw new errors.NotSupported(this.id + ' fetchFundingHistory() is not supported yet');
3903
4146
  }
3904
4147
  async closePosition(symbol, side = undefined, params = {}) {
3905
- throw new errors.NotSupported(this.id + ' closePositions() is not supported yet');
4148
+ throw new errors.NotSupported(this.id + ' closePosition() is not supported yet');
3906
4149
  }
3907
4150
  async closeAllPositions(params = {}) {
3908
4151
  throw new errors.NotSupported(this.id + ' closeAllPositions() is not supported yet');
@@ -3973,8 +4216,14 @@ class Exchange {
3973
4216
  }
3974
4217
  return markets[0];
3975
4218
  }
4219
+ else if ((symbol.endsWith('-C')) || (symbol.endsWith('-P')) || (symbol.startsWith('C-')) || (symbol.startsWith('P-'))) {
4220
+ return this.createExpiredOptionMarket(symbol);
4221
+ }
3976
4222
  throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
3977
4223
  }
4224
+ createExpiredOptionMarket(symbol) {
4225
+ throw new errors.NotSupported(this.id + ' createExpiredOptionMarket () is not supported yet');
4226
+ }
3978
4227
  handleWithdrawTagAndParams(tag, params) {
3979
4228
  if (typeof tag === 'object') {
3980
4229
  params = this.extend(tag, params);