ccxt 4.4.95 → 4.4.97

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 (502) hide show
  1. package/README.md +18 -18
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/alpaca.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +1 -1
  6. package/dist/cjs/src/abstract/ascendex.js +1 -1
  7. package/dist/cjs/src/abstract/bigone.js +1 -1
  8. package/dist/cjs/src/abstract/binance.js +1 -1
  9. package/dist/cjs/src/abstract/bingx.js +1 -1
  10. package/dist/cjs/src/abstract/bit2c.js +1 -1
  11. package/dist/cjs/src/abstract/bitbank.js +1 -1
  12. package/dist/cjs/src/abstract/bitbns.js +1 -1
  13. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  14. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  15. package/dist/cjs/src/abstract/bitget.js +1 -1
  16. package/dist/cjs/src/abstract/bithumb.js +1 -1
  17. package/dist/cjs/src/abstract/bitmart.js +1 -1
  18. package/dist/cjs/src/abstract/bitmex.js +1 -1
  19. package/dist/cjs/src/abstract/bitopro.js +1 -1
  20. package/dist/cjs/src/abstract/bitrue.js +1 -1
  21. package/dist/cjs/src/abstract/bitso.js +1 -1
  22. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  23. package/dist/cjs/src/abstract/bitteam.js +1 -1
  24. package/dist/cjs/src/abstract/bittrade.js +1 -1
  25. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  26. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  27. package/dist/cjs/src/abstract/blofin.js +1 -1
  28. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  29. package/dist/cjs/src/abstract/btcbox.js +1 -1
  30. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  31. package/dist/cjs/src/abstract/btcturk.js +1 -1
  32. package/dist/cjs/src/abstract/bybit.js +1 -1
  33. package/dist/cjs/src/abstract/cex.js +1 -1
  34. package/dist/cjs/src/abstract/coinbase.js +1 -1
  35. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  37. package/dist/cjs/src/abstract/coincatch.js +1 -1
  38. package/dist/cjs/src/abstract/coincheck.js +1 -1
  39. package/dist/cjs/src/abstract/coinex.js +1 -1
  40. package/dist/cjs/src/abstract/coinmate.js +1 -1
  41. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  42. package/dist/cjs/src/abstract/coinone.js +1 -1
  43. package/dist/cjs/src/abstract/coinsph.js +1 -1
  44. package/dist/cjs/src/abstract/coinspot.js +1 -1
  45. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  46. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  47. package/dist/cjs/src/abstract/defx.js +1 -1
  48. package/dist/cjs/src/abstract/delta.js +1 -1
  49. package/dist/cjs/src/abstract/deribit.js +1 -1
  50. package/dist/cjs/src/abstract/derive.js +1 -1
  51. package/dist/cjs/src/abstract/digifinex.js +1 -1
  52. package/dist/cjs/src/abstract/ellipx.js +1 -1
  53. package/dist/cjs/src/abstract/exmo.js +1 -1
  54. package/dist/cjs/src/abstract/foxbit.js +9 -0
  55. package/dist/cjs/src/abstract/gate.js +1 -1
  56. package/dist/cjs/src/abstract/gemini.js +1 -1
  57. package/dist/cjs/src/abstract/hashkey.js +1 -1
  58. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  59. package/dist/cjs/src/abstract/hollaex.js +1 -1
  60. package/dist/cjs/src/abstract/htx.js +1 -1
  61. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  62. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  63. package/dist/cjs/src/abstract/indodax.js +1 -1
  64. package/dist/cjs/src/abstract/kraken.js +1 -1
  65. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  66. package/dist/cjs/src/abstract/kucoin.js +1 -1
  67. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  68. package/dist/cjs/src/abstract/latoken.js +1 -1
  69. package/dist/cjs/src/abstract/lbank.js +1 -1
  70. package/dist/cjs/src/abstract/luno.js +1 -1
  71. package/dist/cjs/src/abstract/mercado.js +1 -1
  72. package/dist/cjs/src/abstract/mexc.js +1 -1
  73. package/dist/cjs/src/abstract/modetrade.js +1 -1
  74. package/dist/cjs/src/abstract/ndax.js +1 -1
  75. package/dist/cjs/src/abstract/novadax.js +1 -1
  76. package/dist/cjs/src/abstract/oceanex.js +1 -1
  77. package/dist/cjs/src/abstract/okcoin.js +1 -1
  78. package/dist/cjs/src/abstract/okx.js +1 -1
  79. package/dist/cjs/src/abstract/onetrading.js +1 -1
  80. package/dist/cjs/src/abstract/oxfun.js +1 -1
  81. package/dist/cjs/src/abstract/p2b.js +1 -1
  82. package/dist/cjs/src/abstract/paradex.js +1 -1
  83. package/dist/cjs/src/abstract/paymium.js +1 -1
  84. package/dist/cjs/src/abstract/phemex.js +1 -1
  85. package/dist/cjs/src/abstract/poloniex.js +1 -1
  86. package/dist/cjs/src/abstract/probit.js +1 -1
  87. package/dist/cjs/src/abstract/timex.js +1 -1
  88. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  89. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  90. package/dist/cjs/src/abstract/upbit.js +1 -1
  91. package/dist/cjs/src/abstract/vertex.js +1 -1
  92. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  93. package/dist/cjs/src/abstract/whitebit.js +1 -1
  94. package/dist/cjs/src/abstract/woo.js +1 -1
  95. package/dist/cjs/src/abstract/woofipro.js +1 -1
  96. package/dist/cjs/src/abstract/xt.js +1 -1
  97. package/dist/cjs/src/abstract/yobit.js +1 -1
  98. package/dist/cjs/src/abstract/zaif.js +1 -1
  99. package/dist/cjs/src/abstract/zonda.js +1 -1
  100. package/dist/cjs/src/alpaca.js +1 -1
  101. package/dist/cjs/src/apex.js +3 -3
  102. package/dist/cjs/src/ascendex.js +4 -4
  103. package/dist/cjs/src/base/Exchange.js +69 -17
  104. package/dist/cjs/src/base/Precise.js +6 -0
  105. package/dist/cjs/src/base/errors.js +6 -0
  106. package/dist/cjs/src/base/functions/crypto.js +1 -1
  107. package/dist/cjs/src/base/functions/encode.js +1 -1
  108. package/dist/cjs/src/base/functions/misc.js +1 -0
  109. package/dist/cjs/src/base/functions/number.js +36 -9
  110. package/dist/cjs/src/base/functions/platform.js +6 -0
  111. package/dist/cjs/src/base/functions/rsa.js +1 -0
  112. package/dist/cjs/src/base/functions/string.js +6 -0
  113. package/dist/cjs/src/base/functions/throttle.js +1 -1
  114. package/dist/cjs/src/base/functions/time.js +6 -0
  115. package/dist/cjs/src/base/functions/totp.js +1 -0
  116. package/dist/cjs/src/base/functions/type.js +6 -0
  117. package/dist/cjs/src/base/functions.js +1 -1
  118. package/dist/cjs/src/base/ws/Cache.js +6 -0
  119. package/dist/cjs/src/base/ws/Client.js +1 -0
  120. package/dist/cjs/src/base/ws/Future.js +1 -1
  121. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  122. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  123. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  124. package/dist/cjs/src/bequant.js +1 -1
  125. package/dist/cjs/src/bigone.js +1 -1
  126. package/dist/cjs/src/binance.js +96 -35
  127. package/dist/cjs/src/binancecoinm.js +6 -2
  128. package/dist/cjs/src/binanceus.js +4 -2
  129. package/dist/cjs/src/binanceusdm.js +4 -2
  130. package/dist/cjs/src/bingx.js +2 -2
  131. package/dist/cjs/src/bit2c.js +1 -1
  132. package/dist/cjs/src/bitbank.js +1 -1
  133. package/dist/cjs/src/bitbns.js +1 -1
  134. package/dist/cjs/src/bitfinex.js +1 -1
  135. package/dist/cjs/src/bitflyer.js +1 -1
  136. package/dist/cjs/src/bitget.js +32 -144
  137. package/dist/cjs/src/bithumb.js +1 -1
  138. package/dist/cjs/src/bitmart.js +3 -3
  139. package/dist/cjs/src/bitmex.js +1 -1
  140. package/dist/cjs/src/bitopro.js +1 -1
  141. package/dist/cjs/src/bitrue.js +16 -9
  142. package/dist/cjs/src/bitso.js +1 -1
  143. package/dist/cjs/src/bitstamp.js +1 -1
  144. package/dist/cjs/src/bitteam.js +1 -1
  145. package/dist/cjs/src/bittrade.js +1 -1
  146. package/dist/cjs/src/blockchaincom.js +1 -1
  147. package/dist/cjs/src/blofin.js +1 -1
  148. package/dist/cjs/src/btcalpha.js +1 -1
  149. package/dist/cjs/src/btcbox.js +1 -1
  150. package/dist/cjs/src/btcmarkets.js +1 -1
  151. package/dist/cjs/src/btcturk.js +1 -1
  152. package/dist/cjs/src/bybit.js +17 -6
  153. package/dist/cjs/src/cex.js +1 -1
  154. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  155. package/dist/cjs/src/coinbaseexchange.js +4 -2
  156. package/dist/cjs/src/coincatch.js +1 -1
  157. package/dist/cjs/src/coincheck.js +1 -1
  158. package/dist/cjs/src/coinex.js +1 -1
  159. package/dist/cjs/src/coinmate.js +1 -1
  160. package/dist/cjs/src/coinmetro.js +1 -1
  161. package/dist/cjs/src/coinone.js +1 -1
  162. package/dist/cjs/src/coinsph.js +1 -0
  163. package/dist/cjs/src/coinspot.js +37 -2
  164. package/dist/cjs/src/cryptocom.js +79 -3
  165. package/dist/cjs/src/cryptomus.js +42 -2
  166. package/dist/cjs/src/defx.js +2 -2
  167. package/dist/cjs/src/delta.js +1 -1
  168. package/dist/cjs/src/deribit.js +1 -1
  169. package/dist/cjs/src/derive.js +2 -2
  170. package/dist/cjs/src/digifinex.js +1 -1
  171. package/dist/cjs/src/ellipx.js +41 -1
  172. package/dist/cjs/src/exmo.js +2 -2
  173. package/dist/cjs/src/fmfwio.js +1 -1
  174. package/dist/cjs/src/foxbit.js +2016 -0
  175. package/dist/cjs/src/gate.js +2 -3
  176. package/dist/cjs/src/gateio.js +1 -1
  177. package/dist/cjs/src/gemini.js +1 -1
  178. package/dist/cjs/src/hashkey.js +40 -1
  179. package/dist/cjs/src/hitbtc.js +1 -0
  180. package/dist/cjs/src/hollaex.js +1 -1
  181. package/dist/cjs/src/htx.js +1 -1
  182. package/dist/cjs/src/huobi.js +1 -1
  183. package/dist/cjs/src/hyperliquid.js +45 -30
  184. package/dist/cjs/src/independentreserve.js +36 -1
  185. package/dist/cjs/src/indodax.js +35 -1
  186. package/dist/cjs/src/kraken.js +1 -1
  187. package/dist/cjs/src/krakenfutures.js +1 -1
  188. package/dist/cjs/src/kucoin.js +4 -3
  189. package/dist/cjs/src/kucoinfutures.js +4 -3
  190. package/dist/cjs/src/latoken.js +43 -1
  191. package/dist/cjs/src/lbank.js +1 -1
  192. package/dist/cjs/src/luno.js +37 -1
  193. package/dist/cjs/src/mercado.js +35 -1
  194. package/dist/cjs/src/mexc.js +32 -39
  195. package/dist/cjs/src/modetrade.js +4 -4
  196. package/dist/cjs/src/myokx.js +1 -1
  197. package/dist/cjs/src/ndax.js +1 -1
  198. package/dist/cjs/src/novadax.js +1 -1
  199. package/dist/cjs/src/oceanex.js +1 -1
  200. package/dist/cjs/src/okcoin.js +2 -2
  201. package/dist/cjs/src/okx.js +13 -4
  202. package/dist/cjs/src/okxus.js +1 -1
  203. package/dist/cjs/src/onetrading.js +2 -2
  204. package/dist/cjs/src/oxfun.js +3 -2
  205. package/dist/cjs/src/p2b.js +1 -1
  206. package/dist/cjs/src/paradex.js +3 -3
  207. package/dist/cjs/src/paymium.js +1 -1
  208. package/dist/cjs/src/phemex.js +36 -31
  209. package/dist/cjs/src/poloniex.js +1 -1
  210. package/dist/cjs/src/pro/alpaca.js +1 -1
  211. package/dist/cjs/src/pro/apex.js +1 -1
  212. package/dist/cjs/src/pro/ascendex.js +1 -1
  213. package/dist/cjs/src/pro/bequant.js +1 -1
  214. package/dist/cjs/src/pro/binancecoinm.js +4 -2
  215. package/dist/cjs/src/pro/binanceus.js +4 -2
  216. package/dist/cjs/src/pro/binanceusdm.js +4 -2
  217. package/dist/cjs/src/pro/bingx.js +1 -1
  218. package/dist/cjs/src/pro/bitfinex.js +1 -1
  219. package/dist/cjs/src/pro/bitget.js +1 -1
  220. package/dist/cjs/src/pro/bithumb.js +1 -1
  221. package/dist/cjs/src/pro/bitmart.js +1 -1
  222. package/dist/cjs/src/pro/bitmex.js +1 -1
  223. package/dist/cjs/src/pro/bitrue.js +1 -1
  224. package/dist/cjs/src/pro/bitstamp.js +1 -1
  225. package/dist/cjs/src/pro/bitvavo.js +1 -1
  226. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  227. package/dist/cjs/src/pro/blofin.js +1 -1
  228. package/dist/cjs/src/pro/bybit.js +34 -1
  229. package/dist/cjs/src/pro/cex.js +1 -1
  230. package/dist/cjs/src/pro/coinbase.js +1 -1
  231. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  232. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  233. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  234. package/dist/cjs/src/pro/coincatch.js +1 -1
  235. package/dist/cjs/src/pro/coincheck.js +1 -1
  236. package/dist/cjs/src/pro/coinex.js +1 -1
  237. package/dist/cjs/src/pro/coinone.js +1 -1
  238. package/dist/cjs/src/pro/cryptocom.js +1 -1
  239. package/dist/cjs/src/pro/defx.js +1 -1
  240. package/dist/cjs/src/pro/deribit.js +1 -1
  241. package/dist/cjs/src/pro/exmo.js +1 -1
  242. package/dist/cjs/src/pro/gate.js +1 -1
  243. package/dist/cjs/src/pro/gateio.js +1 -1
  244. package/dist/cjs/src/pro/gemini.js +1 -1
  245. package/dist/cjs/src/pro/hashkey.js +1 -1
  246. package/dist/cjs/src/pro/hitbtc.js +1 -1
  247. package/dist/cjs/src/pro/hollaex.js +1 -1
  248. package/dist/cjs/src/pro/htx.js +1 -1
  249. package/dist/cjs/src/pro/huobi.js +1 -1
  250. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  251. package/dist/cjs/src/pro/independentreserve.js +1 -1
  252. package/dist/cjs/src/pro/kraken.js +1 -1
  253. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  254. package/dist/cjs/src/pro/kucoin.js +1 -1
  255. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  256. package/dist/cjs/src/pro/lbank.js +1 -0
  257. package/dist/cjs/src/pro/luno.js +1 -1
  258. package/dist/cjs/src/pro/mexc.js +1 -1
  259. package/dist/cjs/src/pro/myokx.js +1 -1
  260. package/dist/cjs/src/pro/ndax.js +1 -1
  261. package/dist/cjs/src/pro/okcoin.js +1 -1
  262. package/dist/cjs/src/pro/okx.js +1 -1
  263. package/dist/cjs/src/pro/okxus.js +1 -1
  264. package/dist/cjs/src/pro/onetrading.js +1 -1
  265. package/dist/cjs/src/pro/oxfun.js +1 -1
  266. package/dist/cjs/src/pro/p2b.js +1 -1
  267. package/dist/cjs/src/pro/paradex.js +1 -1
  268. package/dist/cjs/src/pro/phemex.js +1 -1
  269. package/dist/cjs/src/pro/poloniex.js +1 -1
  270. package/dist/cjs/src/pro/probit.js +1 -1
  271. package/dist/cjs/src/pro/tradeogre.js +1 -1
  272. package/dist/cjs/src/pro/upbit.js +1 -1
  273. package/dist/cjs/src/pro/whitebit.js +1 -1
  274. package/dist/cjs/src/pro/xt.js +1 -1
  275. package/dist/cjs/src/probit.js +1 -1
  276. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  277. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  278. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  279. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  280. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  281. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  282. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  283. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  284. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  285. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  286. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  287. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  288. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  289. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  290. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  291. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  292. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  293. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  294. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  295. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  296. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  297. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  298. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  299. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  300. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  301. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  302. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  303. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  304. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  305. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  306. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  307. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  308. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  309. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  310. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  318. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  319. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  320. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  321. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  322. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  323. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  324. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  327. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  328. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  332. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  333. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  334. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  335. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  336. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  337. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  338. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  339. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  340. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  341. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  342. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  343. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  344. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  345. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  346. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  347. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  348. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  349. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  350. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  351. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  352. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  353. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  354. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  355. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  356. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  357. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  358. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  359. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  360. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  361. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  362. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  363. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  364. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  365. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  366. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  367. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  368. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  369. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  370. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  371. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  372. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  373. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  374. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  375. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  377. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  378. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  385. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  386. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  387. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  388. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  389. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  390. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  391. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  392. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  393. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  394. package/dist/cjs/src/timex.js +1 -0
  395. package/dist/cjs/src/tokocrypto.js +1 -1
  396. package/dist/cjs/src/tradeogre.js +1 -1
  397. package/dist/cjs/src/upbit.js +1 -1
  398. package/dist/cjs/src/vertex.js +4 -3
  399. package/dist/cjs/src/wavesexchange.js +1 -1
  400. package/dist/cjs/src/whitebit.js +1 -1
  401. package/dist/cjs/src/woo.js +9 -4
  402. package/dist/cjs/src/woofipro.js +3 -3
  403. package/dist/cjs/src/xt.js +1 -1
  404. package/dist/cjs/src/yobit.js +1 -1
  405. package/dist/cjs/src/zaif.js +1 -1
  406. package/dist/cjs/src/zonda.js +1 -1
  407. package/js/ccxt.d.ts +5 -2
  408. package/js/ccxt.js +4 -2
  409. package/js/src/abstract/binance.d.ts +3 -0
  410. package/js/src/abstract/binancecoinm.d.ts +3 -0
  411. package/js/src/abstract/binanceus.d.ts +3 -0
  412. package/js/src/abstract/binanceusdm.d.ts +3 -0
  413. package/js/src/abstract/foxbit.d.ts +29 -0
  414. package/js/src/abstract/foxbit.js +5 -0
  415. package/js/src/abstract/phemex.d.ts +1 -0
  416. package/js/src/apex.d.ts +2 -2
  417. package/js/src/apex.js +2 -2
  418. package/js/src/ascendex.d.ts +1 -1
  419. package/js/src/ascendex.js +3 -3
  420. package/js/src/base/Exchange.d.ts +20 -11
  421. package/js/src/base/Exchange.js +69 -17
  422. package/js/src/base/functions/number.js +30 -9
  423. package/js/src/binance.d.ts +1 -0
  424. package/js/src/binance.js +95 -34
  425. package/js/src/binancecoinm.js +5 -1
  426. package/js/src/binanceus.js +3 -1
  427. package/js/src/binanceusdm.js +3 -1
  428. package/js/src/bingx.js +1 -1
  429. package/js/src/bitget.js +31 -143
  430. package/js/src/bitmart.d.ts +2 -2
  431. package/js/src/bitmart.js +2 -2
  432. package/js/src/bitrue.js +15 -8
  433. package/js/src/bittrade.d.ts +1 -1
  434. package/js/src/blofin.d.ts +1 -1
  435. package/js/src/bybit.d.ts +1 -1
  436. package/js/src/bybit.js +16 -5
  437. package/js/src/coinbaseexchange.d.ts +3 -3
  438. package/js/src/coinbaseexchange.js +4 -2
  439. package/js/src/coinbaseinternational.d.ts +2 -2
  440. package/js/src/coinspot.d.ts +1 -1
  441. package/js/src/coinspot.js +36 -1
  442. package/js/src/cryptocom.d.ts +13 -2
  443. package/js/src/cryptocom.js +78 -2
  444. package/js/src/cryptomus.d.ts +1 -1
  445. package/js/src/cryptomus.js +41 -1
  446. package/js/src/defx.d.ts +2 -2
  447. package/js/src/defx.js +1 -1
  448. package/js/src/derive.d.ts +2 -2
  449. package/js/src/derive.js +1 -1
  450. package/js/src/digifinex.d.ts +1 -1
  451. package/js/src/ellipx.js +40 -0
  452. package/js/src/exmo.js +1 -1
  453. package/js/src/foxbit.d.ts +352 -0
  454. package/js/src/foxbit.js +2010 -0
  455. package/js/src/gate.js +1 -2
  456. package/js/src/hashkey.js +39 -0
  457. package/js/src/htx.d.ts +2 -2
  458. package/js/src/hyperliquid.d.ts +2 -2
  459. package/js/src/hyperliquid.js +44 -29
  460. package/js/src/independentreserve.js +35 -0
  461. package/js/src/indodax.js +34 -0
  462. package/js/src/krakenfutures.d.ts +1 -1
  463. package/js/src/kucoin.d.ts +1 -1
  464. package/js/src/kucoin.js +3 -2
  465. package/js/src/kucoinfutures.d.ts +3 -3
  466. package/js/src/kucoinfutures.js +3 -2
  467. package/js/src/latoken.js +42 -0
  468. package/js/src/luno.js +36 -0
  469. package/js/src/mercado.js +34 -0
  470. package/js/src/mexc.d.ts +1 -2
  471. package/js/src/mexc.js +31 -38
  472. package/js/src/modetrade.d.ts +2 -4
  473. package/js/src/modetrade.js +3 -3
  474. package/js/src/ndax.d.ts +1 -1
  475. package/js/src/okcoin.d.ts +1 -1
  476. package/js/src/okcoin.js +1 -1
  477. package/js/src/okx.d.ts +1 -1
  478. package/js/src/okx.js +12 -3
  479. package/js/src/onetrading.d.ts +1 -1
  480. package/js/src/onetrading.js +1 -1
  481. package/js/src/oxfun.d.ts +1 -1
  482. package/js/src/oxfun.js +2 -1
  483. package/js/src/paradex.d.ts +1 -1
  484. package/js/src/paradex.js +2 -2
  485. package/js/src/phemex.js +36 -31
  486. package/js/src/pro/binancecoinm.js +3 -1
  487. package/js/src/pro/binanceus.js +3 -1
  488. package/js/src/pro/binanceusdm.js +3 -1
  489. package/js/src/pro/bybit.d.ts +11 -1
  490. package/js/src/pro/bybit.js +33 -0
  491. package/js/src/static_dependencies/fflake/browser.d.ts +5 -5
  492. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  493. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +1 -0
  494. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
  495. package/js/src/timex.d.ts +1 -1
  496. package/js/src/vertex.d.ts +2 -2
  497. package/js/src/vertex.js +3 -2
  498. package/js/src/woo.d.ts +1 -1
  499. package/js/src/woo.js +8 -3
  500. package/js/src/woofipro.d.ts +2 -4
  501. package/js/src/woofipro.js +2 -2
  502. package/package.json +1 -2
@@ -44,6 +44,7 @@ export default class Exchange {
44
44
  'chrome100': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36',
45
45
  };
46
46
  this.headers = {};
47
+ this.returnResponseHeaders = false;
47
48
  this.origin = '*'; // CORS origin
48
49
  this.MAX_VALUE = Number.MAX_VALUE;
49
50
  //
@@ -702,6 +703,9 @@ export default class Exchange {
702
703
  if (!skipFurtherErrorHandling) {
703
704
  this.handleHttpStatusCode(response.status, response.statusText, url, method, responseBody);
704
705
  }
706
+ if (json && !Array.isArray(json) && this.returnResponseHeaders) {
707
+ json['responseHeaders'] = responseHeaders;
708
+ }
705
709
  return json || responseBody;
706
710
  });
707
711
  }
@@ -1556,6 +1560,17 @@ export default class Exchange {
1556
1560
  'watchLiquidations': undefined,
1557
1561
  'watchLiquidationsForSymbols': undefined,
1558
1562
  'watchMyLiquidations': undefined,
1563
+ 'unWatchOrders': undefined,
1564
+ 'unWatchTrades': undefined,
1565
+ 'unWatchTradesForSymbols': undefined,
1566
+ 'unWatchOHLCVForSymbols': undefined,
1567
+ 'unWatchOrderBookForSymbols': undefined,
1568
+ 'unWatchPositions': undefined,
1569
+ 'unWatchOrderBook': undefined,
1570
+ 'unWatchTickers': undefined,
1571
+ 'unWatchMyTrades': undefined,
1572
+ 'unWatchTicker': undefined,
1573
+ 'unWatchOHLCV': undefined,
1559
1574
  'watchMyLiquidationsForSymbols': undefined,
1560
1575
  'withdraw': undefined,
1561
1576
  'ws': undefined,
@@ -2117,6 +2132,9 @@ export default class Exchange {
2117
2132
  async unWatchOrderBookForSymbols(symbols, params = {}) {
2118
2133
  throw new NotSupported(this.id + ' unWatchOrderBookForSymbols() is not supported yet');
2119
2134
  }
2135
+ async unWatchPositions(symbols = undefined, params = {}) {
2136
+ throw new NotSupported(this.id + ' unWatchPositions() is not supported yet');
2137
+ }
2120
2138
  async fetchDepositAddresses(codes = undefined, params = {}) {
2121
2139
  throw new NotSupported(this.id + ' fetchDepositAddresses() is not supported yet');
2122
2140
  }
@@ -3233,19 +3251,7 @@ export default class Exchange {
3233
3251
  const symbol = (market !== undefined) ? market['symbol'] : undefined;
3234
3252
  return this.filterBySymbolSinceLimit(results, symbol, since, limit);
3235
3253
  }
3236
- calculateFee(symbol, type, side, amount, price, takerOrMaker = 'taker', params = {}) {
3237
- /**
3238
- * @method
3239
- * @description calculates the presumptive fee that would be charged for an order
3240
- * @param {string} symbol unified market symbol
3241
- * @param {string} type 'market' or 'limit'
3242
- * @param {string} side 'buy' or 'sell'
3243
- * @param {float} amount how much you want to trade, in units of the base currency on most exchanges, or number of contracts
3244
- * @param {float} price the price for the order to be filled at, in units of the quote currency
3245
- * @param {string} takerOrMaker 'taker' or 'maker'
3246
- * @param {object} params
3247
- * @returns {object} contains the rate, the percentage multiplied to the order amount to obtain the fee amount, and cost, the total value of the fee in units of the quote currency, for the order
3248
- */
3254
+ calculateFeeWithRate(symbol, type, side, amount, price, takerOrMaker = 'taker', feeRate = undefined, params = {}) {
3249
3255
  if (type === 'market' && takerOrMaker === 'maker') {
3250
3256
  throw new ArgumentsRequired(this.id + ' calculateFee() - you have provided incompatible arguments - "market" type order can not be "maker". Change either the "type" or the "takerOrMaker" argument to calculate the fee.');
3251
3257
  }
@@ -3282,7 +3288,7 @@ export default class Exchange {
3282
3288
  if (type === 'market') {
3283
3289
  takerOrMaker = 'taker';
3284
3290
  }
3285
- const rate = this.safeString(market, takerOrMaker);
3291
+ const rate = (feeRate !== undefined) ? this.numberToString(feeRate) : this.safeString(market, takerOrMaker);
3286
3292
  cost = Precise.stringMul(cost, rate);
3287
3293
  return {
3288
3294
  'type': takerOrMaker,
@@ -3291,6 +3297,21 @@ export default class Exchange {
3291
3297
  'cost': this.parseNumber(cost),
3292
3298
  };
3293
3299
  }
3300
+ calculateFee(symbol, type, side, amount, price, takerOrMaker = 'taker', params = {}) {
3301
+ /**
3302
+ * @method
3303
+ * @description calculates the presumptive fee that would be charged for an order
3304
+ * @param {string} symbol unified market symbol
3305
+ * @param {string} type 'market' or 'limit'
3306
+ * @param {string} side 'buy' or 'sell'
3307
+ * @param {float} amount how much you want to trade, in units of the base currency on most exchanges, or number of contracts
3308
+ * @param {float} price the price for the order to be filled at, in units of the quote currency
3309
+ * @param {string} takerOrMaker 'taker' or 'maker'
3310
+ * @param {object} params
3311
+ * @returns {object} contains the rate, the percentage multiplied to the order amount to obtain the fee amount, and cost, the total value of the fee in units of the quote currency, for the order
3312
+ */
3313
+ return this.calculateFeeWithRate(symbol, type, side, amount, price, takerOrMaker, undefined, params);
3314
+ }
3294
3315
  safeLiquidation(liquidation, market = undefined) {
3295
3316
  const contracts = this.safeString(liquidation, 'contracts');
3296
3317
  const contractSize = this.safeString(market, 'contractSize');
@@ -3335,6 +3356,26 @@ export default class Exchange {
3335
3356
  trade['cost'] = this.parseNumber(cost);
3336
3357
  return trade;
3337
3358
  }
3359
+ createCcxtTradeId(timestamp = undefined, side = undefined, amount = undefined, price = undefined, takerOrMaker = undefined) {
3360
+ // this approach is being used by multiple exchanges (mexc, woo, coinsbit, dydx, ...)
3361
+ let id = undefined;
3362
+ if (timestamp !== undefined) {
3363
+ id = this.numberToString(timestamp);
3364
+ if (side !== undefined) {
3365
+ id += '-' + side;
3366
+ }
3367
+ if (amount !== undefined) {
3368
+ id += '-' + this.numberToString(amount);
3369
+ }
3370
+ if (price !== undefined) {
3371
+ id += '-' + this.numberToString(price);
3372
+ }
3373
+ if (takerOrMaker !== undefined) {
3374
+ id += '-' + takerOrMaker;
3375
+ }
3376
+ }
3377
+ return id;
3378
+ }
3338
3379
  parsedFeeAndFees(container) {
3339
3380
  let fee = this.safeDict(container, 'fee');
3340
3381
  let fees = this.safeList(container, 'fees');
@@ -5492,10 +5533,10 @@ export default class Exchange {
5492
5533
  */
5493
5534
  throw new NotSupported(this.id + ' fetchDepositsWithdrawals() is not supported yet');
5494
5535
  }
5495
- async fetchDeposits(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5536
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
5496
5537
  throw new NotSupported(this.id + ' fetchDeposits() is not supported yet');
5497
5538
  }
5498
- async fetchWithdrawals(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5539
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
5499
5540
  throw new NotSupported(this.id + ' fetchWithdrawals() is not supported yet');
5500
5541
  }
5501
5542
  async fetchDepositsWs(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -6579,7 +6620,7 @@ export default class Exchange {
6579
6620
  let calls = 0;
6580
6621
  let result = [];
6581
6622
  let errors = 0;
6582
- const until = this.safeInteger2(params, 'untill', 'till'); // do not omit it from params here
6623
+ const until = this.safeIntegerN(params, ['until', 'untill', 'till']); // do not omit it from params here
6583
6624
  [maxEntriesPerRequest, params] = this.handleMaxEntriesPerRequestAndParams(method, maxEntriesPerRequest, params);
6584
6625
  if ((paginationDirection === 'forward')) {
6585
6626
  if (since === undefined) {
@@ -7273,6 +7314,17 @@ export default class Exchange {
7273
7314
  else if (topic === 'orders' && (this.orders !== undefined)) {
7274
7315
  this.orders = undefined;
7275
7316
  }
7317
+ else if (topic === 'positions' && (this.positions !== undefined)) {
7318
+ this.positions = undefined;
7319
+ const clients = Object.values(this.clients);
7320
+ for (let i = 0; i < clients.length; i++) {
7321
+ const client = clients[i];
7322
+ const futures = this.safeDict(client, 'futures');
7323
+ if ((futures !== undefined) && ('fetchPositionsSnapshot' in futures)) {
7324
+ delete futures['fetchPositionsSnapshot'];
7325
+ }
7326
+ }
7327
+ }
7276
7328
  else if (topic === 'ticker' && (this.tickers !== undefined)) {
7277
7329
  const tickerSymbols = Object.keys(this.tickers);
7278
7330
  for (let i = 0; i < tickerSymbols.length; i++) {
@@ -30,6 +30,8 @@ const precisionConstants = {
30
30
  NO_PADDING,
31
31
  PAD_WITH_ZERO,
32
32
  };
33
+ const assert = (x, y) => { if (!x)
34
+ throw new Error(y || 'assertion failed'); };
33
35
  /* ------------------------------------------------------------------------ */
34
36
  // See https://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript for discussion
35
37
  function numberToString(x) {
@@ -95,14 +97,21 @@ const decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
95
97
  return _decimalToPrecision(x, roundingMode, numPrecisionDigits, countingMode, paddingMode);
96
98
  };
97
99
  const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode = DECIMAL_PLACES, paddingMode = NO_PADDING) => {
100
+ assert(numPrecisionDigits !== undefined, 'numPrecisionDigits should not be undefined');
101
+ if (typeof numPrecisionDigits === 'string') {
102
+ numPrecisionDigits = parseFloat(numPrecisionDigits);
103
+ }
104
+ assert(Number.isFinite(numPrecisionDigits), 'numPrecisionDigits has an invalid number');
98
105
  if (countingMode === TICK_SIZE) {
99
- if (typeof numPrecisionDigits === 'string') {
100
- numPrecisionDigits = parseFloat(numPrecisionDigits);
101
- }
102
- if (numPrecisionDigits <= 0) {
103
- throw new Error('TICK_SIZE cant be used with negative or zero numPrecisionDigits');
104
- }
106
+ assert(numPrecisionDigits > 0, 'negative or zero numPrecisionDigits can not be used with TICK_SIZE precisionMode');
107
+ }
108
+ else {
109
+ assert(Number.isInteger(numPrecisionDigits), 'numPrecisionDigits must be an integer with DECIMAL_PLACES or SIGNIFICANT_DIGITS precisionMode');
105
110
  }
111
+ assert((roundingMode === ROUND) || (roundingMode === TRUNCATE), 'invalid roundingMode provided');
112
+ assert(countingMode === DECIMAL_PLACES || countingMode === SIGNIFICANT_DIGITS || countingMode === TICK_SIZE, 'invalid countingMode provided');
113
+ assert(paddingMode === NO_PADDING || paddingMode === PAD_WITH_ZERO, 'invalid paddingMode provided');
114
+ // end of checks
106
115
  if (numPrecisionDigits < 0) {
107
116
  const toNearest = Math.pow(10, -numPrecisionDigits);
108
117
  if (roundingMode === ROUND) {
@@ -116,6 +125,21 @@ const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
116
125
  if (countingMode === TICK_SIZE) {
117
126
  const precisionDigitsString = _decimalToPrecision(numPrecisionDigits, ROUND, 22, DECIMAL_PLACES, NO_PADDING);
118
127
  const newNumPrecisionDigits = precisionFromString(precisionDigitsString);
128
+ if (roundingMode === TRUNCATE) {
129
+ // First, truncate the string to avoid floating-point precision issues
130
+ const xStr = numberToString(x);
131
+ const truncatedX = truncate_to_string(xStr, Math.max(0, newNumPrecisionDigits));
132
+ const xNum = Number(truncatedX);
133
+ const scale = Math.pow(10, newNumPrecisionDigits);
134
+ const xScaled = Math.round(xNum * scale);
135
+ const tickScaled = Math.round(numPrecisionDigits * scale);
136
+ const ticks = Math.trunc(xScaled / tickScaled);
137
+ x = (ticks * tickScaled) / scale;
138
+ if (paddingMode === NO_PADDING) {
139
+ return String(Number(x.toFixed(newNumPrecisionDigits)));
140
+ }
141
+ return _decimalToPrecision(x, ROUND, newNumPrecisionDigits, DECIMAL_PLACES, paddingMode);
142
+ }
119
143
  let missing = x % numPrecisionDigits;
120
144
  // See: https://github.com/ccxt/ccxt/pull/6486
121
145
  missing = Number(_decimalToPrecision(missing, ROUND, 8, DECIMAL_PLACES, NO_PADDING));
@@ -139,9 +163,6 @@ const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
139
163
  }
140
164
  }
141
165
  }
142
- else if (roundingMode === TRUNCATE) {
143
- x = x - missing;
144
- }
145
166
  }
146
167
  return _decimalToPrecision(x, ROUND, newNumPrecisionDigits, DECIMAL_PLACES, paddingMode);
147
168
  }
@@ -169,6 +169,7 @@ export default class binance extends Exchange {
169
169
  * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
170
170
  */
171
171
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
172
+ parseTickersForRolling(response: any, symbols: any): any;
172
173
  /**
173
174
  * @method
174
175
  * @name binance#fetchMarkPrice
package/js/src/binance.js CHANGED
@@ -479,6 +479,7 @@ export default class binance extends Exchange {
479
479
  'portfolio/balance': 2,
480
480
  'portfolio/negative-balance-exchange-record': 2,
481
481
  'portfolio/pmloan-history': 5,
482
+ 'portfolio/earn-asset-balance': 150,
482
483
  // staking
483
484
  'staking/productList': 0.1,
484
485
  'staking/position': 0.1,
@@ -637,6 +638,7 @@ export default class binance extends Exchange {
637
638
  'portfolio/repay-futures-negative-balance': 150,
638
639
  'portfolio/mint': 20,
639
640
  'portfolio/redeem': 20,
641
+ 'portfolio/earn-asset-transfer': 150,
640
642
  'lending/auto-invest/plan/add': 0.1,
641
643
  'lending/auto-invest/plan/edit': 0.1,
642
644
  'lending/auto-invest/plan/edit-status': 0.1,
@@ -825,6 +827,7 @@ export default class binance extends Exchange {
825
827
  'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 },
826
828
  'lvtKlines': 1,
827
829
  'convert/exchangeInfo': 4,
830
+ 'insuranceBalance': 1,
828
831
  },
829
832
  },
830
833
  'fapiData': {
@@ -1262,12 +1265,14 @@ export default class binance extends Exchange {
1262
1265
  'options': {
1263
1266
  'sandboxMode': false,
1264
1267
  'fetchMargins': true,
1265
- 'fetchMarkets': [
1266
- 'spot',
1267
- 'linear',
1268
- 'inverse', // allows CORS in browsers
1269
- // 'option', // does not allow CORS, enable outside of the browser only
1270
- ],
1268
+ 'fetchMarkets': {
1269
+ 'types': [
1270
+ 'spot',
1271
+ 'linear',
1272
+ 'inverse', // allows CORS in browsers
1273
+ // 'option', // does not allow CORS, enable outside of the browser only
1274
+ ],
1275
+ },
1271
1276
  'loadAllOptions': false,
1272
1277
  'fetchCurrencies': true,
1273
1278
  // 'fetchTradesMethod': 'publicGetAggTrades', // publicGetTrades, publicGetHistoricalTrades, eapiPublicGetTrades
@@ -3034,7 +3039,16 @@ export default class binance extends Exchange {
3034
3039
  */
3035
3040
  async fetchMarkets(params = {}) {
3036
3041
  const promisesRaw = [];
3037
- const rawFetchMarkets = this.safeList(this.options, 'fetchMarkets', ['spot', 'linear', 'inverse']);
3042
+ let rawFetchMarkets = undefined;
3043
+ const defaultTypes = ['spot', 'linear', 'inverse'];
3044
+ const fetchMarketsOptions = this.safeDict(this.options, 'fetchMarkets');
3045
+ if (fetchMarketsOptions !== undefined) {
3046
+ rawFetchMarkets = this.safeList(fetchMarketsOptions, 'types', defaultTypes);
3047
+ }
3048
+ else {
3049
+ // for backward-compatibility
3050
+ rawFetchMarkets = this.safeList(this.options, 'fetchMarkets', defaultTypes);
3051
+ }
3038
3052
  // handle loadAllOptions option
3039
3053
  const loadAllOptions = this.safeBool(this.options, 'loadAllOptions', false);
3040
3054
  if (loadAllOptions) {
@@ -4004,29 +4018,52 @@ export default class binance extends Exchange {
4004
4018
  // "time": 1597370495002
4005
4019
  // }
4006
4020
  //
4007
- // {
4008
- // "symbol": "ETHBTC",
4009
- // "priceChange": "0.00068700",
4010
- // "priceChangePercent": "2.075",
4011
- // "weightedAvgPrice": "0.03342681",
4012
- // "prevClosePrice": "0.03310300",
4013
- // "lastPrice": "0.03378900",
4014
- // "lastQty": "0.07700000",
4015
- // "bidPrice": "0.03378900",
4016
- // "bidQty": "7.16800000",
4017
- // "askPrice": "0.03379000",
4018
- // "askQty": "24.00000000",
4019
- // "openPrice": "0.03310200",
4020
- // "highPrice": "0.03388900",
4021
- // "lowPrice": "0.03306900",
4022
- // "volume": "205478.41000000",
4023
- // "quoteVolume": "6868.48826294",
4024
- // "openTime": 1601469986932,
4025
- // "closeTime": 1601556386932,
4026
- // "firstId": 196098772,
4027
- // "lastId": 196186315,
4028
- // "count": 87544
4029
- // }
4021
+ // spot - ticker
4022
+ //
4023
+ // {
4024
+ // "symbol": "BTCUSDT",
4025
+ // "priceChange": "-188.18000000",
4026
+ // "priceChangePercent": "-0.159",
4027
+ // "weightedAvgPrice": "118356.64734074",
4028
+ // "lastPrice": "118449.03000000",
4029
+ // "prevClosePrice": "118637.22000000", // field absent in rolling ticker
4030
+ // "lastQty": "0.00731000", // field absent in rolling ticker
4031
+ // "bidPrice": "118449.02000000", // field absent in rolling ticker
4032
+ // "bidQty": "7.15931000", // field absent in rolling ticker
4033
+ // "askPrice": "118449.03000000", // field absent in rolling ticker
4034
+ // "askQty": "0.09592000", // field absent in rolling ticker
4035
+ // "openPrice": "118637.21000000",
4036
+ // "highPrice": "119273.36000000",
4037
+ // "lowPrice": "117427.50000000",
4038
+ // "volume": "14741.41491000",
4039
+ // "quoteVolume": "1744744445.80640740",
4040
+ // "openTime": "1753701474013",
4041
+ // "closeTime": "1753787874013",
4042
+ // "firstId": "5116031635",
4043
+ // "lastId": "5117964946",
4044
+ // "count": "1933312"
4045
+ // }
4046
+ //
4047
+ // usdm tickers
4048
+ //
4049
+ // {
4050
+ // "symbol": "SUSDT",
4051
+ // "priceChange": "-0.0229000",
4052
+ // "priceChangePercent": "-6.777",
4053
+ // "weightedAvgPrice": "0.3210035",
4054
+ // "lastPrice": "0.3150000",
4055
+ // "lastQty": "16",
4056
+ // "openPrice": "0.3379000",
4057
+ // "highPrice": "0.3411000",
4058
+ // "lowPrice": "0.3071000",
4059
+ // "volume": "120588225",
4060
+ // "quoteVolume": "38709237.2289000",
4061
+ // "openTime": "1753701720000",
4062
+ // "closeTime": "1753788172414",
4063
+ // "firstId": "72234973",
4064
+ // "lastId": "72423677",
4065
+ // "count": "188700"
4066
+ // }
4030
4067
  //
4031
4068
  // coinm
4032
4069
  //
@@ -4399,11 +4436,24 @@ export default class binance extends Exchange {
4399
4436
  response = await this.dapiPublicGetTicker24hr(params);
4400
4437
  }
4401
4438
  else if (type === 'spot') {
4402
- const request = {};
4403
- if (symbols !== undefined) {
4404
- request['symbols'] = this.json(this.marketIds(symbols));
4439
+ const rolling = this.safeBool(params, 'rolling', false);
4440
+ params = this.omit(params, 'rolling');
4441
+ if (rolling) {
4442
+ symbols = this.marketSymbols(symbols);
4443
+ const request = {
4444
+ 'symbols': this.json(this.marketIds(symbols)),
4445
+ };
4446
+ response = await this.publicGetTicker(this.extend(request, params));
4447
+ // parseTicker is not able to handle marketType for spot-rolling ticker fields, so we need custom parsing
4448
+ return this.parseTickersForRolling(response, symbols);
4449
+ }
4450
+ else {
4451
+ const request = {};
4452
+ if (symbols !== undefined) {
4453
+ request['symbols'] = this.json(this.marketIds(symbols));
4454
+ }
4455
+ response = await this.publicGetTicker24hr(this.extend(request, params));
4405
4456
  }
4406
- response = await this.publicGetTicker24hr(this.extend(request, params));
4407
4457
  }
4408
4458
  else if (type === 'option') {
4409
4459
  response = await this.eapiPublicGetTicker(params);
@@ -4413,6 +4463,17 @@ export default class binance extends Exchange {
4413
4463
  }
4414
4464
  return this.parseTickers(response, symbols);
4415
4465
  }
4466
+ parseTickersForRolling(response, symbols) {
4467
+ const results = [];
4468
+ for (let i = 0; i < response.length; i++) {
4469
+ const marketId = this.safeString(response[i], 'symbol');
4470
+ const tickerMarket = this.safeMarket(marketId, undefined, undefined, 'spot');
4471
+ const parsedTicker = this.parseTicker(response[i]);
4472
+ parsedTicker['symbol'] = tickerMarket['symbol'];
4473
+ results.push(parsedTicker);
4474
+ }
4475
+ return this.filterByArray(results, 'symbol', symbols);
4476
+ }
4416
4477
  /**
4417
4478
  * @method
4418
4479
  * @name binance#fetchMarkPrice
@@ -24,7 +24,11 @@ export default class binancecoinm extends binance {
24
24
  'createStopMarketOrder': true,
25
25
  },
26
26
  'options': {
27
- 'fetchMarkets': ['inverse'],
27
+ 'fetchMarkets': {
28
+ 'types': [
29
+ 'inverse',
30
+ ],
31
+ },
28
32
  'defaultSubType': 'inverse',
29
33
  'leverageBrackets': undefined,
30
34
  },
@@ -35,7 +35,9 @@ export default class binanceus extends binance {
35
35
  },
36
36
  },
37
37
  'options': {
38
- 'fetchMarkets': ['spot'],
38
+ 'fetchMarkets': {
39
+ 'types': ['spot'],
40
+ },
39
41
  'defaultType': 'spot',
40
42
  'fetchMargins': false,
41
43
  'quoteOrderQty': false,
@@ -25,7 +25,9 @@ export default class binanceusdm extends binance {
25
25
  'createStopMarketOrder': true,
26
26
  },
27
27
  'options': {
28
- 'fetchMarkets': ['linear'],
28
+ 'fetchMarkets': {
29
+ 'types': ['linear'],
30
+ },
29
31
  'defaultSubType': 'linear',
30
32
  // https://www.binance.com/en/support/faq/360033162192
31
33
  // tier amount, maintenance margin, initial margin,
package/js/src/bingx.js CHANGED
@@ -5298,7 +5298,7 @@ export default class bingx extends Exchange {
5298
5298
  const id = this.safeString(transaction, 'id', dataId);
5299
5299
  const address = this.safeString(transaction, 'address');
5300
5300
  const tag = this.safeString(transaction, 'addressTag');
5301
- let timestamp = this.safeInteger(transaction, 'insertTime');
5301
+ let timestamp = this.safeInteger2(transaction, 'insertTime', 'timestamp');
5302
5302
  let datetime = this.iso8601(timestamp);
5303
5303
  if (timestamp === undefined) {
5304
5304
  datetime = this.safeString(transaction, 'applyTime');