ccxt 4.4.80 → 4.4.85

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 (921) hide show
  1. package/README.md +5 -9
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +1 -9
  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/bitvavo.js +1 -1
  25. package/dist/cjs/src/abstract/bl3p.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/coinlist.js +1 -1
  41. package/dist/cjs/src/abstract/coinmate.js +1 -1
  42. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  43. package/dist/cjs/src/abstract/coinone.js +1 -1
  44. package/dist/cjs/src/abstract/coinsph.js +1 -1
  45. package/dist/cjs/src/abstract/coinspot.js +1 -1
  46. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  47. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  48. package/dist/cjs/src/abstract/defx.js +1 -1
  49. package/dist/cjs/src/abstract/delta.js +1 -1
  50. package/dist/cjs/src/abstract/deribit.js +1 -1
  51. package/dist/cjs/src/abstract/derive.js +1 -1
  52. package/dist/cjs/src/abstract/digifinex.js +1 -1
  53. package/dist/cjs/src/abstract/ellipx.js +1 -1
  54. package/dist/cjs/src/abstract/exmo.js +1 -1
  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/huobijp.js +1 -1
  62. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  63. package/dist/cjs/src/abstract/idex.js +1 -1
  64. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  65. package/dist/cjs/src/abstract/indodax.js +1 -1
  66. package/dist/cjs/src/abstract/kraken.js +1 -1
  67. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  68. package/dist/cjs/src/abstract/kucoin.js +1 -1
  69. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  70. package/dist/cjs/src/abstract/kuna.js +1 -1
  71. package/dist/cjs/src/abstract/latoken.js +1 -1
  72. package/dist/cjs/src/abstract/lbank.js +1 -1
  73. package/dist/cjs/src/abstract/luno.js +1 -1
  74. package/dist/cjs/src/abstract/mercado.js +1 -1
  75. package/dist/cjs/src/abstract/mexc.js +1 -1
  76. package/dist/cjs/src/abstract/ndax.js +1 -1
  77. package/dist/cjs/src/abstract/novadax.js +1 -1
  78. package/dist/cjs/src/abstract/oceanex.js +1 -1
  79. package/dist/cjs/src/abstract/okcoin.js +1 -1
  80. package/dist/cjs/src/abstract/okx.js +1 -1
  81. package/dist/cjs/src/abstract/onetrading.js +1 -1
  82. package/dist/cjs/src/abstract/oxfun.js +1 -1
  83. package/dist/cjs/src/abstract/p2b.js +1 -1
  84. package/dist/cjs/src/abstract/paradex.js +1 -1
  85. package/dist/cjs/src/abstract/paymium.js +1 -1
  86. package/dist/cjs/src/abstract/phemex.js +1 -1
  87. package/dist/cjs/src/abstract/poloniex.js +1 -1
  88. package/dist/cjs/src/abstract/probit.js +1 -1
  89. package/dist/cjs/src/abstract/timex.js +1 -1
  90. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  91. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  92. package/dist/cjs/src/abstract/upbit.js +1 -1
  93. package/dist/cjs/src/abstract/vertex.js +1 -1
  94. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  95. package/dist/cjs/src/abstract/whitebit.js +1 -1
  96. package/dist/cjs/src/abstract/woo.js +1 -1
  97. package/dist/cjs/src/abstract/woofipro.js +1 -1
  98. package/dist/cjs/src/abstract/xt.js +1 -1
  99. package/dist/cjs/src/abstract/yobit.js +1 -1
  100. package/dist/cjs/src/abstract/zaif.js +1 -1
  101. package/dist/cjs/src/abstract/zonda.js +1 -1
  102. package/dist/cjs/src/alpaca.js +1 -1
  103. package/dist/cjs/src/apex.js +22 -31
  104. package/dist/cjs/src/ascendex.js +2 -2
  105. package/dist/cjs/src/base/Exchange.js +41 -5
  106. package/dist/cjs/src/base/Precise.js +6 -0
  107. package/dist/cjs/src/base/errors.js +6 -0
  108. package/dist/cjs/src/base/functions/crypto.js +1 -1
  109. package/dist/cjs/src/base/functions/encode.js +2 -2
  110. package/dist/cjs/src/base/functions/misc.js +1 -0
  111. package/dist/cjs/src/base/functions/number.js +6 -0
  112. package/dist/cjs/src/base/functions/platform.js +6 -0
  113. package/dist/cjs/src/base/functions/rsa.js +1 -0
  114. package/dist/cjs/src/base/functions/string.js +6 -0
  115. package/dist/cjs/src/base/functions/throttle.js +1 -1
  116. package/dist/cjs/src/base/functions/time.js +6 -0
  117. package/dist/cjs/src/base/functions/totp.js +1 -0
  118. package/dist/cjs/src/base/functions/type.js +6 -0
  119. package/dist/cjs/src/base/functions.js +1 -1
  120. package/dist/cjs/src/base/ws/Cache.js +6 -0
  121. package/dist/cjs/src/base/ws/Client.js +1 -0
  122. package/dist/cjs/src/base/ws/Future.js +1 -1
  123. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  124. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  125. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  126. package/dist/cjs/src/bequant.js +1 -1
  127. package/dist/cjs/src/bigone.js +23 -15
  128. package/dist/cjs/src/binance.js +1 -1
  129. package/dist/cjs/src/binancecoinm.js +1 -1
  130. package/dist/cjs/src/binanceus.js +1 -1
  131. package/dist/cjs/src/binanceusdm.js +1 -1
  132. package/dist/cjs/src/bingx.js +14 -38
  133. package/dist/cjs/src/bit2c.js +1 -1
  134. package/dist/cjs/src/bitbank.js +1 -1
  135. package/dist/cjs/src/bitbns.js +1 -1
  136. package/dist/cjs/src/bitfinex.js +65 -53
  137. package/dist/cjs/src/bitflyer.js +1 -1
  138. package/dist/cjs/src/bitget.js +9 -7
  139. package/dist/cjs/src/bithumb.js +1 -1
  140. package/dist/cjs/src/bitmart.js +1 -1
  141. package/dist/cjs/src/bitmex.js +1 -1
  142. package/dist/cjs/src/bitopro.js +1 -1
  143. package/dist/cjs/src/bitrue.js +15 -36
  144. package/dist/cjs/src/bitso.js +34 -1
  145. package/dist/cjs/src/bitstamp.js +34 -1
  146. package/dist/cjs/src/bitteam.js +1 -1
  147. package/dist/cjs/src/bl3p.js +1 -1
  148. package/dist/cjs/src/blockchaincom.js +1 -1
  149. package/dist/cjs/src/blofin.js +155 -14
  150. package/dist/cjs/src/btcalpha.js +1 -1
  151. package/dist/cjs/src/btcbox.js +26 -6
  152. package/dist/cjs/src/btcmarkets.js +1 -1
  153. package/dist/cjs/src/btcturk.js +1 -1
  154. package/dist/cjs/src/bybit.js +21 -43
  155. package/dist/cjs/src/cex.js +3 -5
  156. package/dist/cjs/src/coinbase.js +56 -40
  157. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  158. package/dist/cjs/src/coinbaseexchange.js +142 -32
  159. package/dist/cjs/src/coincatch.js +15 -68
  160. package/dist/cjs/src/coincheck.js +1 -1
  161. package/dist/cjs/src/coinex.js +30 -33
  162. package/dist/cjs/src/coinlist.js +17 -15
  163. package/dist/cjs/src/coinmate.js +1 -1
  164. package/dist/cjs/src/coinmetro.js +23 -12
  165. package/dist/cjs/src/coinone.js +9 -11
  166. package/dist/cjs/src/coinsph.js +127 -1
  167. package/dist/cjs/src/coinspot.js +1 -1
  168. package/dist/cjs/src/cryptocom.js +112 -2
  169. package/dist/cjs/src/cryptomus.js +44 -90
  170. package/dist/cjs/src/defx.js +1 -1
  171. package/dist/cjs/src/delta.js +77 -37
  172. package/dist/cjs/src/deribit.js +1 -1
  173. package/dist/cjs/src/derive.js +47 -11
  174. package/dist/cjs/src/digifinex.js +1 -1
  175. package/dist/cjs/src/ellipx.js +176 -80
  176. package/dist/cjs/src/exmo.js +1 -1
  177. package/dist/cjs/src/fmfwio.js +1 -1
  178. package/dist/cjs/src/gate.js +2 -2
  179. package/dist/cjs/src/gateio.js +1 -1
  180. package/dist/cjs/src/gemini.js +4 -6
  181. package/dist/cjs/src/hashkey.js +1 -1
  182. package/dist/cjs/src/hitbtc.js +57 -69
  183. package/dist/cjs/src/hollaex.js +1 -1
  184. package/dist/cjs/src/htx.js +3 -3
  185. package/dist/cjs/src/huobi.js +1 -1
  186. package/dist/cjs/src/huobijp.js +1 -1
  187. package/dist/cjs/src/hyperliquid.js +18 -3
  188. package/dist/cjs/src/idex.js +1 -1
  189. package/dist/cjs/src/independentreserve.js +1 -1
  190. package/dist/cjs/src/indodax.js +1 -1
  191. package/dist/cjs/src/kraken.js +30 -25
  192. package/dist/cjs/src/krakenfutures.js +1 -1
  193. package/dist/cjs/src/kucoin.js +1 -1
  194. package/dist/cjs/src/kucoinfutures.js +7 -1
  195. package/dist/cjs/src/kuna.js +1 -1
  196. package/dist/cjs/src/latoken.js +1 -1
  197. package/dist/cjs/src/lbank.js +2 -2
  198. package/dist/cjs/src/luno.js +1 -1
  199. package/dist/cjs/src/mercado.js +1 -1
  200. package/dist/cjs/src/mexc.js +1 -1
  201. package/dist/cjs/src/myokx.js +1 -1
  202. package/dist/cjs/src/ndax.js +1 -1
  203. package/dist/cjs/src/novadax.js +1 -1
  204. package/dist/cjs/src/oceanex.js +1 -1
  205. package/dist/cjs/src/okcoin.js +1 -1
  206. package/dist/cjs/src/okx.js +2 -3
  207. package/dist/cjs/src/onetrading.js +1 -1
  208. package/dist/cjs/src/oxfun.js +22 -2
  209. package/dist/cjs/src/p2b.js +1 -1
  210. package/dist/cjs/src/paradex.js +120 -4
  211. package/dist/cjs/src/paymium.js +1 -1
  212. package/dist/cjs/src/poloniex.js +1 -1
  213. package/dist/cjs/src/pro/alpaca.js +1 -1
  214. package/dist/cjs/src/pro/apex.js +1 -1
  215. package/dist/cjs/src/pro/ascendex.js +1 -1
  216. package/dist/cjs/src/pro/bequant.js +1 -1
  217. package/dist/cjs/src/pro/binance.js +31 -33
  218. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  219. package/dist/cjs/src/pro/binanceus.js +1 -1
  220. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  221. package/dist/cjs/src/pro/bingx.js +1 -1
  222. package/dist/cjs/src/pro/bitfinex.js +1 -1
  223. package/dist/cjs/src/pro/bitget.js +1 -1
  224. package/dist/cjs/src/pro/bithumb.js +6 -4
  225. package/dist/cjs/src/pro/bitmart.js +1 -1
  226. package/dist/cjs/src/pro/bitmex.js +1 -1
  227. package/dist/cjs/src/pro/bitrue.js +1 -1
  228. package/dist/cjs/src/pro/bitstamp.js +1 -1
  229. package/dist/cjs/src/pro/bitvavo.js +1 -1
  230. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  231. package/dist/cjs/src/pro/blofin.js +1 -1
  232. package/dist/cjs/src/pro/bybit.js +1 -1
  233. package/dist/cjs/src/pro/cex.js +1 -1
  234. package/dist/cjs/src/pro/coinbase.js +2 -2
  235. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  236. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  237. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  238. package/dist/cjs/src/pro/coincatch.js +1 -1
  239. package/dist/cjs/src/pro/coincheck.js +1 -1
  240. package/dist/cjs/src/pro/coinex.js +1 -1
  241. package/dist/cjs/src/pro/coinone.js +1 -1
  242. package/dist/cjs/src/pro/cryptocom.js +1 -1
  243. package/dist/cjs/src/pro/defx.js +1 -1
  244. package/dist/cjs/src/pro/deribit.js +1 -1
  245. package/dist/cjs/src/pro/exmo.js +1 -1
  246. package/dist/cjs/src/pro/gate.js +1 -1
  247. package/dist/cjs/src/pro/gateio.js +1 -1
  248. package/dist/cjs/src/pro/gemini.js +1 -1
  249. package/dist/cjs/src/pro/hashkey.js +1 -1
  250. package/dist/cjs/src/pro/hitbtc.js +1 -1
  251. package/dist/cjs/src/pro/hollaex.js +1 -1
  252. package/dist/cjs/src/pro/htx.js +1 -1
  253. package/dist/cjs/src/pro/huobi.js +1 -1
  254. package/dist/cjs/src/pro/hyperliquid.js +11 -3
  255. package/dist/cjs/src/pro/idex.js +1 -1
  256. package/dist/cjs/src/pro/independentreserve.js +1 -1
  257. package/dist/cjs/src/pro/kraken.js +290 -80
  258. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  259. package/dist/cjs/src/pro/kucoin.js +1 -1
  260. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  261. package/dist/cjs/src/pro/lbank.js +1 -0
  262. package/dist/cjs/src/pro/luno.js +1 -1
  263. package/dist/cjs/src/pro/mexc.js +303 -9
  264. package/dist/cjs/src/pro/myokx.js +1 -1
  265. package/dist/cjs/src/pro/ndax.js +1 -1
  266. package/dist/cjs/src/pro/okcoin.js +1 -1
  267. package/dist/cjs/src/pro/okx.js +1 -1
  268. package/dist/cjs/src/pro/onetrading.js +1 -1
  269. package/dist/cjs/src/pro/oxfun.js +1 -1
  270. package/dist/cjs/src/pro/p2b.js +1 -1
  271. package/dist/cjs/src/pro/paradex.js +1 -1
  272. package/dist/cjs/src/pro/phemex.js +1 -1
  273. package/dist/cjs/src/pro/poloniex.js +7 -3
  274. package/dist/cjs/src/pro/probit.js +1 -1
  275. package/dist/cjs/src/pro/tradeogre.js +1 -1
  276. package/dist/cjs/src/pro/upbit.js +1 -1
  277. package/dist/cjs/src/pro/whitebit.js +1 -1
  278. package/dist/cjs/src/pro/xt.js +1 -1
  279. package/dist/cjs/src/probit.js +1 -1
  280. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  281. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  282. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  283. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  284. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  285. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  286. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  287. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  288. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  289. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  290. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  291. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  292. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  293. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  294. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  295. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  296. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  297. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  298. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  299. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  300. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  301. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  302. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  303. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  304. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  305. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  306. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  307. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  308. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  309. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  310. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  321. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  322. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  323. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  324. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  327. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  328. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  331. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  332. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  333. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  335. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  336. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  337. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  338. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  339. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  340. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  341. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  342. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  343. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  344. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  345. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  346. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  347. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  348. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  349. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  350. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  351. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  352. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  353. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  354. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  355. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  356. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  357. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  358. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  359. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  360. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  361. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  362. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  363. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  364. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  365. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  366. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  367. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  368. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  369. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  370. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  371. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  372. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  373. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  374. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  375. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  377. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  378. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  389. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  390. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  391. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  392. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  393. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  394. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  395. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  396. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  397. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  398. package/dist/cjs/src/timex.js +1 -0
  399. package/dist/cjs/src/tokocrypto.js +1 -1
  400. package/dist/cjs/src/tradeogre.js +1 -1
  401. package/dist/cjs/src/upbit.js +1 -1
  402. package/dist/cjs/src/vertex.js +1 -1
  403. package/dist/cjs/src/wavesexchange.js +1 -1
  404. package/dist/cjs/src/whitebit.js +1 -1
  405. package/dist/cjs/src/woo.js +1 -1
  406. package/dist/cjs/src/woofipro.js +1 -1
  407. package/dist/cjs/src/xt.js +1 -1
  408. package/dist/cjs/src/yobit.js +1 -1
  409. package/dist/cjs/src/zaif.js +1 -1
  410. package/dist/cjs/src/zonda.js +1 -1
  411. package/examples/js/cli.js +127 -13
  412. package/js/ccxt.d.ts +2 -11
  413. package/js/ccxt.js +8 -8
  414. package/js/src/abstract/alpaca.js +6 -0
  415. package/js/src/abstract/apex.js +6 -0
  416. package/js/src/abstract/ascendex.js +6 -0
  417. package/js/src/abstract/bequant.js +6 -0
  418. package/js/src/abstract/bigone.js +6 -0
  419. package/js/src/abstract/binance.js +6 -0
  420. package/js/src/abstract/binancecoinm.js +6 -0
  421. package/js/src/abstract/binanceus.js +6 -0
  422. package/js/src/abstract/binanceusdm.js +6 -0
  423. package/js/src/abstract/bingx.js +6 -0
  424. package/js/src/abstract/bit2c.js +6 -0
  425. package/js/src/abstract/bitbank.js +6 -0
  426. package/js/src/abstract/bitbns.js +6 -0
  427. package/js/src/abstract/bitfinex.js +6 -0
  428. package/js/src/abstract/bitflyer.js +6 -0
  429. package/js/src/abstract/bitget.js +6 -0
  430. package/js/src/abstract/bithumb.js +6 -0
  431. package/js/src/abstract/bitmart.js +6 -0
  432. package/js/src/abstract/bitmex.js +6 -0
  433. package/js/src/abstract/bitopro.js +6 -0
  434. package/js/src/abstract/bitrue.js +6 -0
  435. package/js/src/abstract/bitso.js +6 -0
  436. package/js/src/abstract/bitstamp.js +6 -0
  437. package/js/src/abstract/bitteam.js +6 -0
  438. package/js/src/abstract/bitvavo.js +6 -0
  439. package/js/src/abstract/blockchaincom.js +6 -0
  440. package/js/src/abstract/blofin.d.ts +8 -0
  441. package/js/src/abstract/blofin.js +6 -0
  442. package/js/src/abstract/btcalpha.js +6 -0
  443. package/js/src/abstract/btcbox.d.ts +1 -0
  444. package/js/src/abstract/btcbox.js +6 -0
  445. package/js/src/abstract/btcmarkets.js +6 -0
  446. package/js/src/abstract/btcturk.js +6 -0
  447. package/js/src/abstract/bybit.js +6 -0
  448. package/js/src/abstract/cex.js +6 -0
  449. package/js/src/abstract/coinbase.js +6 -0
  450. package/js/src/abstract/coinbaseadvanced.js +6 -0
  451. package/js/src/abstract/coinbaseexchange.js +6 -0
  452. package/js/src/abstract/coinbaseinternational.js +6 -0
  453. package/js/src/abstract/coincatch.js +6 -0
  454. package/js/src/abstract/coincheck.js +6 -0
  455. package/js/src/abstract/coinex.js +6 -0
  456. package/js/src/abstract/coinlist.js +6 -0
  457. package/js/src/abstract/coinmate.js +6 -0
  458. package/js/src/abstract/coinmetro.js +6 -0
  459. package/js/src/abstract/coinone.js +6 -0
  460. package/js/src/abstract/coinsph.js +6 -0
  461. package/js/src/abstract/coinspot.js +6 -0
  462. package/js/src/abstract/cryptocom.js +6 -0
  463. package/js/src/abstract/cryptomus.js +6 -0
  464. package/js/src/abstract/defx.js +6 -0
  465. package/js/src/abstract/delta.js +6 -0
  466. package/js/src/abstract/deribit.js +6 -0
  467. package/js/src/abstract/derive.js +6 -0
  468. package/js/src/abstract/digifinex.js +6 -0
  469. package/js/src/abstract/ellipx.js +6 -0
  470. package/js/src/abstract/exmo.js +6 -0
  471. package/js/src/abstract/fmfwio.js +6 -0
  472. package/js/src/abstract/gate.js +6 -0
  473. package/js/src/abstract/gateio.js +6 -0
  474. package/js/src/abstract/gemini.js +6 -0
  475. package/js/src/abstract/hashkey.js +6 -0
  476. package/js/src/abstract/hitbtc.js +6 -0
  477. package/js/src/abstract/hollaex.js +6 -0
  478. package/js/src/abstract/htx.js +6 -0
  479. package/js/src/abstract/huobi.js +6 -0
  480. package/js/src/abstract/huobijp.js +6 -0
  481. package/js/src/abstract/hyperliquid.js +6 -0
  482. package/js/src/abstract/independentreserve.js +6 -0
  483. package/js/src/abstract/indodax.js +6 -0
  484. package/js/src/abstract/kraken.js +6 -0
  485. package/js/src/abstract/krakenfutures.js +6 -0
  486. package/js/src/abstract/kucoin.js +6 -0
  487. package/js/src/abstract/kucoinfutures.js +6 -0
  488. package/js/src/abstract/kuna.js +6 -0
  489. package/js/src/abstract/latoken.js +6 -0
  490. package/js/src/abstract/lbank.js +6 -0
  491. package/js/src/abstract/luno.js +6 -0
  492. package/js/src/abstract/mercado.js +6 -0
  493. package/js/src/abstract/mexc.js +6 -0
  494. package/js/src/abstract/myokx.js +6 -0
  495. package/js/src/abstract/ndax.js +6 -0
  496. package/js/src/abstract/novadax.js +6 -0
  497. package/js/src/abstract/oceanex.js +6 -0
  498. package/js/src/abstract/okcoin.js +6 -0
  499. package/js/src/abstract/okx.js +6 -0
  500. package/js/src/abstract/onetrading.js +6 -0
  501. package/js/src/abstract/oxfun.js +6 -0
  502. package/js/src/abstract/p2b.js +6 -0
  503. package/js/src/abstract/paradex.js +6 -0
  504. package/js/src/abstract/paymium.js +6 -0
  505. package/js/src/abstract/phemex.js +6 -0
  506. package/js/src/abstract/poloniex.js +6 -0
  507. package/js/src/abstract/probit.js +6 -0
  508. package/js/src/abstract/timex.js +6 -0
  509. package/js/src/abstract/tokocrypto.js +6 -0
  510. package/js/src/abstract/tradeogre.js +6 -0
  511. package/js/src/abstract/upbit.js +6 -0
  512. package/js/src/abstract/vertex.js +6 -0
  513. package/js/src/abstract/wavesexchange.js +6 -0
  514. package/js/src/abstract/whitebit.js +6 -0
  515. package/js/src/abstract/woo.js +6 -0
  516. package/js/src/abstract/woofipro.js +6 -0
  517. package/js/src/abstract/xt.js +6 -0
  518. package/js/src/abstract/yobit.js +6 -0
  519. package/js/src/abstract/zaif.js +6 -0
  520. package/js/src/abstract/zonda.js +6 -0
  521. package/js/src/alpaca.js +6 -0
  522. package/js/src/apex.js +27 -30
  523. package/js/src/ascendex.js +7 -1
  524. package/js/src/base/Exchange.d.ts +17 -2
  525. package/js/src/base/Exchange.js +47 -5
  526. package/js/src/base/Precise.js +6 -0
  527. package/js/src/base/errorHierarchy.js +6 -0
  528. package/js/src/base/errors.js +6 -0
  529. package/js/src/base/functions/crypto.js +6 -0
  530. package/js/src/base/functions/encode.d.ts +1 -1
  531. package/js/src/base/functions/encode.js +7 -1
  532. package/js/src/base/functions/generic.js +6 -0
  533. package/js/src/base/functions/misc.js +6 -0
  534. package/js/src/base/functions/number.js +6 -0
  535. package/js/src/base/functions/platform.js +6 -0
  536. package/js/src/base/functions/rsa.js +6 -0
  537. package/js/src/base/functions/string.js +6 -0
  538. package/js/src/base/functions/throttle.js +6 -0
  539. package/js/src/base/functions/time.js +6 -0
  540. package/js/src/base/functions/totp.js +6 -0
  541. package/js/src/base/functions/type.js +6 -0
  542. package/js/src/base/functions.js +6 -0
  543. package/js/src/base/types.d.ts +3 -0
  544. package/js/src/base/types.js +6 -0
  545. package/js/src/base/ws/Cache.js +6 -0
  546. package/js/src/base/ws/Client.js +6 -0
  547. package/js/src/base/ws/Future.js +6 -0
  548. package/js/src/base/ws/OrderBook.js +6 -0
  549. package/js/src/base/ws/OrderBookSide.js +6 -0
  550. package/js/src/base/ws/WsClient.js +6 -0
  551. package/js/src/base/ws/functions.js +6 -0
  552. package/js/src/bequant.js +6 -0
  553. package/js/src/bigone.js +28 -14
  554. package/js/src/binance.js +6 -0
  555. package/js/src/binancecoinm.js +6 -0
  556. package/js/src/binanceus.js +6 -0
  557. package/js/src/binanceusdm.js +6 -0
  558. package/js/src/bingx.d.ts +1 -1
  559. package/js/src/bingx.js +19 -37
  560. package/js/src/bit2c.js +6 -0
  561. package/js/src/bitbank.js +6 -0
  562. package/js/src/bitbns.js +6 -0
  563. package/js/src/bitfinex.js +70 -52
  564. package/js/src/bitflyer.js +6 -0
  565. package/js/src/bitget.d.ts +1 -0
  566. package/js/src/bitget.js +14 -6
  567. package/js/src/bithumb.js +6 -0
  568. package/js/src/bitmart.js +6 -0
  569. package/js/src/bitmex.js +6 -0
  570. package/js/src/bitopro.js +6 -0
  571. package/js/src/bitrue.js +20 -35
  572. package/js/src/bitso.js +39 -0
  573. package/js/src/bitstamp.js +39 -0
  574. package/js/src/bitteam.js +6 -0
  575. package/js/src/bitvavo.js +6 -0
  576. package/js/src/blockchaincom.js +6 -0
  577. package/js/src/blofin.d.ts +42 -2
  578. package/js/src/blofin.js +160 -13
  579. package/js/src/btcalpha.js +6 -0
  580. package/js/src/btcbox.js +31 -5
  581. package/js/src/btcmarkets.js +6 -0
  582. package/js/src/btcturk.js +6 -0
  583. package/js/src/bybit.js +26 -42
  584. package/js/src/cex.js +8 -4
  585. package/js/src/coinbase.js +62 -40
  586. package/js/src/coinbaseadvanced.js +6 -0
  587. package/js/src/coinbaseexchange.js +148 -32
  588. package/js/src/coinbaseinternational.js +6 -0
  589. package/js/src/coincatch.js +20 -67
  590. package/js/src/coincheck.js +6 -0
  591. package/js/src/coinex.js +34 -29
  592. package/js/src/coinlist.js +22 -15
  593. package/js/src/coinmate.js +6 -0
  594. package/js/src/coinmetro.js +28 -11
  595. package/js/src/coinone.js +14 -10
  596. package/js/src/coinsph.d.ts +10 -1
  597. package/js/src/coinsph.js +132 -1
  598. package/js/src/coinspot.js +6 -0
  599. package/js/src/cryptocom.d.ts +10 -1
  600. package/js/src/cryptocom.js +117 -1
  601. package/js/src/cryptomus.js +49 -89
  602. package/js/src/defx.js +6 -0
  603. package/js/src/delta.js +82 -36
  604. package/js/src/deribit.js +6 -0
  605. package/js/src/derive.js +52 -10
  606. package/js/src/digifinex.js +6 -0
  607. package/js/src/ellipx.d.ts +2 -3
  608. package/js/src/ellipx.js +181 -80
  609. package/js/src/exmo.js +6 -0
  610. package/js/src/fmfwio.js +6 -0
  611. package/js/src/gate.js +7 -1
  612. package/js/src/gateio.js +6 -0
  613. package/js/src/gemini.js +9 -5
  614. package/js/src/hashkey.js +6 -0
  615. package/js/src/hitbtc.js +62 -69
  616. package/js/src/hollaex.js +6 -0
  617. package/js/src/htx.js +8 -2
  618. package/js/src/huobi.js +6 -0
  619. package/js/src/huobijp.js +6 -0
  620. package/js/src/hyperliquid.js +23 -2
  621. package/js/src/independentreserve.js +6 -0
  622. package/js/src/indodax.js +6 -0
  623. package/js/src/kraken.js +35 -24
  624. package/js/src/krakenfutures.js +6 -0
  625. package/js/src/kucoin.js +6 -0
  626. package/js/src/kucoinfutures.d.ts +1 -0
  627. package/js/src/kucoinfutures.js +12 -0
  628. package/js/src/kuna.js +6 -0
  629. package/js/src/latoken.js +6 -0
  630. package/js/src/lbank.js +7 -1
  631. package/js/src/luno.js +6 -0
  632. package/js/src/mercado.js +6 -0
  633. package/js/src/mexc.js +6 -0
  634. package/js/src/myokx.js +6 -0
  635. package/js/src/ndax.js +6 -0
  636. package/js/src/novadax.js +6 -0
  637. package/js/src/oceanex.js +6 -0
  638. package/js/src/okcoin.js +6 -0
  639. package/js/src/okx.js +7 -2
  640. package/js/src/onetrading.js +6 -0
  641. package/js/src/oxfun.d.ts +10 -0
  642. package/js/src/oxfun.js +27 -1
  643. package/js/src/p2b.js +6 -0
  644. package/js/src/paradex.d.ts +12 -1
  645. package/js/src/paradex.js +125 -3
  646. package/js/src/paymium.js +6 -0
  647. package/js/src/phemex.js +6 -0
  648. package/js/src/poloniex.js +6 -0
  649. package/js/src/pro/alpaca.js +6 -0
  650. package/js/src/pro/apex.js +6 -0
  651. package/js/src/pro/ascendex.js +6 -0
  652. package/js/src/pro/bequant.js +6 -0
  653. package/js/src/pro/binance.d.ts +26 -26
  654. package/js/src/pro/binance.js +37 -33
  655. package/js/src/pro/binancecoinm.js +6 -0
  656. package/js/src/pro/binanceus.js +6 -0
  657. package/js/src/pro/binanceusdm.js +6 -0
  658. package/js/src/pro/bingx.js +6 -0
  659. package/js/src/pro/bitfinex.js +6 -0
  660. package/js/src/pro/bitget.js +6 -0
  661. package/js/src/pro/bithumb.js +11 -3
  662. package/js/src/pro/bitmart.js +6 -0
  663. package/js/src/pro/bitmex.js +6 -0
  664. package/js/src/pro/bitopro.js +6 -0
  665. package/js/src/pro/bitrue.js +6 -0
  666. package/js/src/pro/bitstamp.js +6 -0
  667. package/js/src/pro/bitvavo.js +6 -0
  668. package/js/src/pro/blockchaincom.js +6 -0
  669. package/js/src/pro/blofin.js +6 -0
  670. package/js/src/pro/bybit.js +6 -0
  671. package/js/src/pro/cex.js +6 -0
  672. package/js/src/pro/coinbase.js +7 -1
  673. package/js/src/pro/coinbaseadvanced.js +6 -0
  674. package/js/src/pro/coinbaseexchange.js +6 -0
  675. package/js/src/pro/coinbaseinternational.js +6 -0
  676. package/js/src/pro/coincatch.js +6 -0
  677. package/js/src/pro/coincheck.js +6 -0
  678. package/js/src/pro/coinex.js +6 -0
  679. package/js/src/pro/coinone.js +6 -0
  680. package/js/src/pro/cryptocom.js +6 -0
  681. package/js/src/pro/defx.js +6 -0
  682. package/js/src/pro/deribit.js +6 -0
  683. package/js/src/pro/derive.js +6 -0
  684. package/js/src/pro/exmo.js +6 -0
  685. package/js/src/pro/gate.js +6 -0
  686. package/js/src/pro/gateio.js +6 -0
  687. package/js/src/pro/gemini.js +6 -0
  688. package/js/src/pro/hashkey.js +6 -0
  689. package/js/src/pro/hitbtc.js +6 -0
  690. package/js/src/pro/hollaex.js +6 -0
  691. package/js/src/pro/htx.js +6 -0
  692. package/js/src/pro/huobi.js +6 -0
  693. package/js/src/pro/huobijp.js +6 -0
  694. package/js/src/pro/hyperliquid.js +16 -2
  695. package/js/src/pro/independentreserve.js +6 -0
  696. package/js/src/pro/kraken.d.ts +7 -6
  697. package/js/src/pro/kraken.js +296 -80
  698. package/js/src/pro/krakenfutures.js +6 -0
  699. package/js/src/pro/kucoin.js +6 -0
  700. package/js/src/pro/kucoinfutures.js +6 -0
  701. package/js/src/pro/lbank.js +6 -0
  702. package/js/src/pro/luno.js +6 -0
  703. package/js/src/pro/mexc.d.ts +58 -0
  704. package/js/src/pro/mexc.js +308 -8
  705. package/js/src/pro/myokx.js +6 -0
  706. package/js/src/pro/ndax.js +6 -0
  707. package/js/src/pro/okcoin.js +6 -0
  708. package/js/src/pro/okx.js +6 -0
  709. package/js/src/pro/onetrading.js +6 -0
  710. package/js/src/pro/oxfun.js +6 -0
  711. package/js/src/pro/p2b.js +6 -0
  712. package/js/src/pro/paradex.js +6 -0
  713. package/js/src/pro/phemex.js +6 -0
  714. package/js/src/pro/poloniex.d.ts +1 -1
  715. package/js/src/pro/poloniex.js +12 -2
  716. package/js/src/pro/probit.js +6 -0
  717. package/js/src/pro/tradeogre.js +6 -0
  718. package/js/src/pro/upbit.js +6 -0
  719. package/js/src/pro/vertex.js +6 -0
  720. package/js/src/pro/whitebit.js +6 -0
  721. package/js/src/pro/woo.js +6 -0
  722. package/js/src/pro/woofipro.js +6 -0
  723. package/js/src/pro/xt.js +6 -0
  724. package/js/src/probit.js +6 -0
  725. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  726. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  727. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  728. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  729. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  730. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  731. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  732. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  733. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  734. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  735. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  736. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  737. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  738. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  739. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  740. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  741. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  742. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  743. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  744. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  745. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  746. package/js/src/static_dependencies/ethers/index.js +6 -0
  747. package/js/src/static_dependencies/ethers/interface.js +6 -0
  748. package/js/src/static_dependencies/ethers/typed.js +6 -0
  749. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  750. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  751. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  752. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  753. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  754. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  755. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  756. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  757. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  758. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  759. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  760. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  761. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  762. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  763. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  764. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  765. package/js/src/static_dependencies/fflake/browser.js +6 -0
  766. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  767. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  768. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  769. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  770. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  771. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  772. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  773. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  774. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  775. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  776. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  777. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  778. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  779. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  780. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  781. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  782. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  783. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  784. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  785. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  786. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  787. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  788. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  789. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  790. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  791. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  792. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  793. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  794. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  795. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  796. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  797. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  798. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  799. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  800. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  801. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  802. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  803. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  804. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  805. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  806. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  807. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  808. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  809. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  810. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  811. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  812. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  813. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  814. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  815. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  816. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  817. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  818. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  819. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  820. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  821. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  822. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  823. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  824. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  825. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  826. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  827. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  828. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  829. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  830. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  831. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  832. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  833. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  834. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  835. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  836. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  837. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  838. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  839. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  840. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  841. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  842. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  843. package/js/src/static_dependencies/qs/formats.cjs +6 -0
  844. package/js/src/static_dependencies/qs/index.cjs +6 -0
  845. package/js/src/static_dependencies/qs/parse.cjs +6 -0
  846. package/js/src/static_dependencies/qs/stringify.cjs +6 -0
  847. package/js/src/static_dependencies/qs/utils.cjs +6 -0
  848. package/js/src/static_dependencies/scure-base/index.js +6 -0
  849. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  850. package/js/src/static_dependencies/starknet/constants.js +6 -0
  851. package/js/src/static_dependencies/starknet/index.js +6 -0
  852. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  853. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  854. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  855. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  856. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  857. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  858. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  859. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  860. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  861. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  862. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  863. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  864. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  865. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  866. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  867. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  868. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  869. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  870. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  871. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  872. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  873. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  874. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  875. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  876. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  877. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  878. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  879. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  880. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  881. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  882. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  883. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  884. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  885. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  886. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  887. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  888. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  889. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  890. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  891. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  892. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  893. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  894. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  895. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  896. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  897. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  898. package/js/src/timex.js +6 -0
  899. package/js/src/tokocrypto.js +6 -0
  900. package/js/src/tradeogre.js +6 -0
  901. package/js/src/upbit.js +6 -0
  902. package/js/src/vertex.js +6 -0
  903. package/js/src/wavesexchange.js +6 -0
  904. package/js/src/whitebit.js +6 -0
  905. package/js/src/woo.js +6 -0
  906. package/js/src/woofipro.js +6 -0
  907. package/js/src/xt.js +6 -0
  908. package/js/src/yobit.js +6 -0
  909. package/js/src/zaif.js +6 -0
  910. package/js/src/zonda.js +6 -0
  911. package/package.json +1 -1
  912. package/js/src/abstract/bl3p.d.ts +0 -22
  913. package/js/src/abstract/bl3p.js +0 -5
  914. package/js/src/abstract/idex.d.ts +0 -29
  915. package/js/src/abstract/idex.js +0 -5
  916. package/js/src/bl3p.d.ts +0 -116
  917. package/js/src/bl3p.js +0 -546
  918. package/js/src/idex.d.ts +0 -312
  919. package/js/src/idex.js +0 -1955
  920. package/js/src/pro/idex.d.ts +0 -81
  921. package/js/src/pro/idex.js +0 -714
package/js/src/idex.js DELETED
@@ -1,1955 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- import Exchange from './abstract/idex.js';
3
- import { TICK_SIZE, PAD_WITH_ZERO, ROUND, TRUNCATE } from './base/functions/number.js';
4
- import { InvalidOrder, InsufficientFunds, ExchangeError, ExchangeNotAvailable, DDoSProtection, BadRequest, NotSupported, InvalidAddress, AuthenticationError } from './base/errors.js';
5
- import { Precise } from './base/Precise.js';
6
- import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
7
- import { keccak_256 as keccak } from './static_dependencies/noble-hashes/sha3.js';
8
- import { secp256k1 } from './static_dependencies/noble-curves/secp256k1.js';
9
- import { ecdsa } from './base/functions/crypto.js';
10
- // ---------------------------------------------------------------------------
11
- /**
12
- * @class idex
13
- * @augments Exchange
14
- */
15
- export default class idex extends Exchange {
16
- describe() {
17
- return this.deepExtend(super.describe(), {
18
- 'id': 'idex',
19
- 'name': 'IDEX',
20
- 'countries': ['US'],
21
- 'rateLimit': 1000,
22
- 'version': 'v3',
23
- 'pro': true,
24
- 'dex': true,
25
- 'certified': false,
26
- 'requiresWeb3': true,
27
- 'has': {
28
- 'CORS': undefined,
29
- 'spot': true,
30
- 'margin': false,
31
- 'swap': false,
32
- 'future': false,
33
- 'option': false,
34
- 'addMargin': false,
35
- 'cancelAllOrders': true,
36
- 'cancelOrder': true,
37
- 'cancelOrders': false,
38
- 'closeAllPositions': false,
39
- 'closePosition': false,
40
- 'createDepositAddress': false,
41
- 'createOrder': true,
42
- 'createReduceOnlyOrder': false,
43
- 'createStopLimitOrder': true,
44
- 'createStopMarketOrder': true,
45
- 'createStopOrder': true,
46
- 'fetchBalance': true,
47
- 'fetchBorrowRateHistories': false,
48
- 'fetchBorrowRateHistory': false,
49
- 'fetchClosedOrders': true,
50
- 'fetchCrossBorrowRate': false,
51
- 'fetchCrossBorrowRates': false,
52
- 'fetchCurrencies': true,
53
- 'fetchDeposit': true,
54
- 'fetchDepositAddress': true,
55
- 'fetchDepositAddresses': false,
56
- 'fetchDepositAddressesByNetwork': false,
57
- 'fetchDeposits': true,
58
- 'fetchFundingHistory': false,
59
- 'fetchFundingRate': false,
60
- 'fetchFundingRateHistory': false,
61
- 'fetchFundingRates': false,
62
- 'fetchIndexOHLCV': false,
63
- 'fetchIsolatedBorrowRate': false,
64
- 'fetchIsolatedBorrowRates': false,
65
- 'fetchLeverage': false,
66
- 'fetchLeverageTiers': false,
67
- 'fetchMarginMode': false,
68
- 'fetchMarkets': true,
69
- 'fetchMarkOHLCV': false,
70
- 'fetchMyTrades': true,
71
- 'fetchOHLCV': true,
72
- 'fetchOpenInterestHistory': false,
73
- 'fetchOpenOrders': true,
74
- 'fetchOrder': true,
75
- 'fetchOrderBook': true,
76
- 'fetchOrders': false,
77
- 'fetchPosition': false,
78
- 'fetchPositionHistory': false,
79
- 'fetchPositionMode': false,
80
- 'fetchPositions': false,
81
- 'fetchPositionsForSymbol': false,
82
- 'fetchPositionsHistory': false,
83
- 'fetchPositionsRisk': false,
84
- 'fetchPremiumIndexOHLCV': false,
85
- 'fetchStatus': true,
86
- 'fetchTicker': true,
87
- 'fetchTickers': true,
88
- 'fetchTime': true,
89
- 'fetchTrades': true,
90
- 'fetchTradingFee': false,
91
- 'fetchTradingFees': true,
92
- 'fetchTransactions': false,
93
- 'fetchWithdrawal': true,
94
- 'fetchWithdrawals': true,
95
- 'reduceMargin': false,
96
- 'sandbox': true,
97
- 'setLeverage': false,
98
- 'setMarginMode': false,
99
- 'setPositionMode': false,
100
- 'transfer': false,
101
- 'withdraw': true,
102
- },
103
- 'timeframes': {
104
- '1m': '1m',
105
- '5m': '5m',
106
- '15m': '15m',
107
- '30m': '30m',
108
- '1h': '1h',
109
- '6h': '6h',
110
- '1d': '1d',
111
- },
112
- 'urls': {
113
- 'test': {
114
- 'MATIC': 'https://api-sandbox-matic.idex.io',
115
- },
116
- 'logo': 'https://user-images.githubusercontent.com/51840849/94481303-2f222100-01e0-11eb-97dd-bc14c5943a86.jpg',
117
- 'api': {
118
- 'MATIC': 'https://api-matic.idex.io',
119
- },
120
- 'www': 'https://idex.io',
121
- 'doc': [
122
- 'https://api-docs-v3.idex.io/',
123
- ],
124
- },
125
- 'api': {
126
- 'public': {
127
- 'get': {
128
- 'ping': 1,
129
- 'time': 1,
130
- 'exchange': 1,
131
- 'assets': 1,
132
- 'markets': 1,
133
- 'tickers': 1,
134
- 'candles': 1,
135
- 'trades': 1,
136
- 'orderbook': 1,
137
- },
138
- },
139
- 'private': {
140
- 'get': {
141
- 'user': 1,
142
- 'wallets': 1,
143
- 'balances': 1,
144
- 'orders': 0.1,
145
- 'fills': 0.1,
146
- 'deposits': 1,
147
- 'withdrawals': 1,
148
- 'wsToken': 1,
149
- },
150
- 'post': {
151
- 'wallets': 1,
152
- 'orders': 0.1,
153
- 'orders/test': 0.1,
154
- 'withdrawals': 1,
155
- },
156
- 'delete': {
157
- 'orders': 0.1,
158
- },
159
- },
160
- },
161
- 'options': {
162
- 'defaultTimeInForce': 'gtc',
163
- 'defaultSelfTradePrevention': 'cn',
164
- 'network': 'MATIC',
165
- },
166
- 'features': {
167
- 'spot': {
168
- 'sandbox': false,
169
- 'createOrder': {
170
- 'marginMode': false,
171
- 'triggerPrice': true,
172
- // todo: revise
173
- 'triggerPriceType': {
174
- 'last': true,
175
- 'mark': true,
176
- 'index': true,
177
- },
178
- 'triggerDirection': false,
179
- 'stopLossPrice': false,
180
- 'takeProfitPrice': false,
181
- 'attachedStopLossTakeProfit': undefined,
182
- 'timeInForce': {
183
- 'IOC': true,
184
- 'FOK': true,
185
- 'PO': true,
186
- 'GTD': false,
187
- },
188
- 'hedged': false,
189
- 'selfTradePrevention': true,
190
- 'trailing': false,
191
- 'leverage': false,
192
- 'marketBuyByCost': false,
193
- 'marketBuyRequiresPrice': false,
194
- 'iceberg': false,
195
- },
196
- 'createOrders': undefined,
197
- 'fetchMyTrades': {
198
- 'marginMode': false,
199
- 'limit': 1000,
200
- 'daysBack': 100000,
201
- 'untilDays': 100000,
202
- 'symbolRequired': false,
203
- },
204
- 'fetchOrder': {
205
- 'marginMode': false,
206
- 'trigger': false,
207
- 'trailing': false,
208
- 'symbolRequired': false,
209
- },
210
- 'fetchOpenOrders': {
211
- 'marginMode': false,
212
- 'limit': 1000,
213
- 'trigger': false,
214
- 'trailing': false,
215
- 'symbolRequired': false,
216
- },
217
- 'fetchOrders': undefined,
218
- 'fetchClosedOrders': {
219
- 'marginMode': false,
220
- 'limit': 1000,
221
- 'daysBack': 1000000,
222
- 'daysBackCanceled': 1,
223
- 'untilDays': 1000000,
224
- 'trigger': false,
225
- 'trailing': false,
226
- 'symbolRequired': false,
227
- },
228
- 'fetchOHLCV': {
229
- 'limit': 1000,
230
- },
231
- },
232
- 'swap': {
233
- 'linear': undefined,
234
- 'inverse': undefined,
235
- },
236
- 'future': {
237
- 'linear': undefined,
238
- 'inverse': undefined,
239
- },
240
- },
241
- 'exceptions': {
242
- 'exact': {
243
- 'INVALID_ORDER_QUANTITY': InvalidOrder,
244
- 'INSUFFICIENT_FUNDS': InsufficientFunds,
245
- 'SERVICE_UNAVAILABLE': ExchangeNotAvailable,
246
- 'EXCEEDED_RATE_LIMIT': DDoSProtection,
247
- 'INVALID_PARAMETER': BadRequest,
248
- 'WALLET_NOT_ASSOCIATED': InvalidAddress,
249
- 'INVALID_WALLET_SIGNATURE': AuthenticationError,
250
- },
251
- },
252
- 'requiredCredentials': {
253
- 'walletAddress': true,
254
- 'privateKey': true,
255
- 'apiKey': true,
256
- 'secret': true,
257
- },
258
- 'precisionMode': TICK_SIZE,
259
- 'paddingMode': PAD_WITH_ZERO,
260
- 'commonCurrencies': {},
261
- });
262
- }
263
- priceToPrecision(symbol, price) {
264
- //
265
- // we override priceToPrecision to fix the following issue
266
- // https://github.com/ccxt/ccxt/issues/13367
267
- // {"code":"INVALID_PARAMETER","message":"invalid value provided for request parameter \"price\": all quantities and prices must be below 100 billion, above 0, need to be provided as strings, and always require 4 decimals ending with 4 zeroes"}
268
- //
269
- const market = this.market(symbol);
270
- price = this.decimalToPrecision(price, ROUND, market['precision']['price'], this.precisionMode);
271
- return this.decimalToPrecision(price, TRUNCATE, market['precision']['quote'], TICK_SIZE, PAD_WITH_ZERO);
272
- }
273
- /**
274
- * @method
275
- * @name idex#fetchMarkets
276
- * @description retrieves data on all markets for idex
277
- * @see https://api-docs-v3.idex.io/#get-markets
278
- * @param {object} [params] extra parameters specific to the exchange API endpoint
279
- * @returns {object[]} an array of objects representing market data
280
- */
281
- async fetchMarkets(params = {}) {
282
- const response = await this.publicGetMarkets(params);
283
- //
284
- // [
285
- // {
286
- // "market": "ETH-USDC",
287
- // "type": "hybrid",
288
- // "status": "activeHybrid",
289
- // "baseAsset": "ETH",
290
- // "baseAssetPrecision": "8",
291
- // "quoteAsset": "USDC",
292
- // "quoteAssetPrecision": "8",
293
- // "makerFeeRate": "0.0000",
294
- // "takerFeeRate": "0.2500",
295
- // "takerIdexFeeRate": "0.0500",
296
- // "takerLiquidityProviderFeeRate": "0.2000",
297
- // "tickSize": "0.01000000"
298
- // },
299
- // ]
300
- //
301
- const response2 = await this.publicGetExchange();
302
- //
303
- // {
304
- // "timeZone": "UTC",
305
- // "serverTime": "1654460599952",
306
- // "maticDepositContractAddress": "0x3253a7e75539edaeb1db608ce6ef9aa1ac9126b6",
307
- // "maticCustodyContractAddress": "0x3bcc4eca0a40358558ca8d1bcd2d1dbde63eb468",
308
- // "maticUsdPrice": "0.60",
309
- // "gasPrice": "180",
310
- // "volume24hUsd": "10015814.46",
311
- // "totalVolumeUsd": "1589273533.28",
312
- // "totalTrades": "1534904",
313
- // "totalValueLockedUsd": "12041929.44",
314
- // "idexStakingValueLockedUsd": "20133816.98",
315
- // "idexTokenAddress": "0x9Cb74C8032b007466865f060ad2c46145d45553D",
316
- // "idexUsdPrice": "0.07",
317
- // "idexMarketCapUsd": "48012346.00",
318
- // "makerFeeRate": "0.0000",
319
- // "takerFeeRate": "0.0025",
320
- // "takerIdexFeeRate": "0.0005",
321
- // "takerLiquidityProviderFeeRate": "0.0020",
322
- // "makerTradeMinimum": "10.00000000",
323
- // "takerTradeMinimum": "1.00000000",
324
- // "withdrawMinimum": "0.50000000",
325
- // "liquidityAdditionMinimum": "0.50000000",
326
- // "liquidityRemovalMinimum": "0.40000000",
327
- // "blockConfirmationDelay": "64"
328
- // }
329
- //
330
- const maker = this.safeNumber(response2, 'makerFeeRate');
331
- const taker = this.safeNumber(response2, 'takerFeeRate');
332
- const makerMin = this.safeString(response2, 'makerTradeMinimum');
333
- const takerMin = this.safeString(response2, 'takerTradeMinimum');
334
- const minCostETH = this.parseNumber(Precise.stringMin(makerMin, takerMin));
335
- const result = [];
336
- for (let i = 0; i < response.length; i++) {
337
- const entry = response[i];
338
- const marketId = this.safeString(entry, 'market');
339
- const baseId = this.safeString(entry, 'baseAsset');
340
- const quoteId = this.safeString(entry, 'quoteAsset');
341
- const base = this.safeCurrencyCode(baseId);
342
- const quote = this.safeCurrencyCode(quoteId);
343
- const basePrecision = this.parseNumber(this.parsePrecision(this.safeString(entry, 'baseAssetPrecision')));
344
- const quotePrecision = this.parseNumber(this.parsePrecision(this.safeString(entry, 'quoteAssetPrecision')));
345
- const status = this.safeString(entry, 'status');
346
- let minCost = undefined;
347
- if (quote === 'ETH') {
348
- minCost = minCostETH;
349
- }
350
- result.push({
351
- 'id': marketId,
352
- 'symbol': base + '/' + quote,
353
- 'base': base,
354
- 'quote': quote,
355
- 'settle': undefined,
356
- 'baseId': baseId,
357
- 'quoteId': quoteId,
358
- 'settleId': undefined,
359
- 'type': 'spot',
360
- 'spot': true,
361
- 'margin': false,
362
- 'swap': false,
363
- 'future': false,
364
- 'option': false,
365
- 'active': (status !== 'inactive'),
366
- 'contract': false,
367
- 'linear': undefined,
368
- 'inverse': undefined,
369
- 'taker': taker,
370
- 'maker': maker,
371
- 'contractSize': undefined,
372
- 'expiry': undefined,
373
- 'expiryDatetime': undefined,
374
- 'strike': undefined,
375
- 'optionType': undefined,
376
- 'precision': {
377
- 'amount': basePrecision,
378
- 'price': this.safeNumber(entry, 'tickSize'),
379
- 'base': basePrecision,
380
- 'quote': quotePrecision,
381
- },
382
- 'limits': {
383
- 'leverage': {
384
- 'min': undefined,
385
- 'max': undefined,
386
- },
387
- 'amount': {
388
- 'min': basePrecision,
389
- 'max': undefined,
390
- },
391
- 'price': {
392
- 'min': quotePrecision,
393
- 'max': undefined,
394
- },
395
- 'cost': {
396
- 'min': minCost,
397
- 'max': undefined,
398
- },
399
- },
400
- 'created': undefined,
401
- 'info': entry,
402
- });
403
- }
404
- return result;
405
- }
406
- /**
407
- * @method
408
- * @name idex#fetchTicker
409
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
410
- * @see https://api-docs-v3.idex.io/#get-tickers
411
- * @param {string} symbol unified symbol of the market to fetch the ticker for
412
- * @param {object} [params] extra parameters specific to the exchange API endpoint
413
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
414
- */
415
- async fetchTicker(symbol, params = {}) {
416
- await this.loadMarkets();
417
- const market = this.market(symbol);
418
- const request = {
419
- 'market': market['id'],
420
- };
421
- // [
422
- // {
423
- // "market": "DIL-ETH",
424
- // "time": 1598367493008,
425
- // "open": "0.09695361",
426
- // "high": "0.10245881",
427
- // "low": "0.09572507",
428
- // "close": "0.09917079",
429
- // "closeQuantity": "0.71320950",
430
- // "baseVolume": "309.17380612",
431
- // "quoteVolume": "30.57633981",
432
- // "percentChange": "2.28",
433
- // "numTrades": 205,
434
- // "ask": "0.09910476",
435
- // "bid": "0.09688340",
436
- // "sequence": 3902
437
- // }
438
- // ]
439
- const response = await this.publicGetTickers(this.extend(request, params));
440
- const ticker = this.safeDict(response, 0);
441
- return this.parseTicker(ticker, market);
442
- }
443
- /**
444
- * @method
445
- * @name idex#fetchTickers
446
- * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
447
- * @see https://api-docs-v3.idex.io/#get-tickers
448
- * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
449
- * @param {object} [params] extra parameters specific to the exchange API endpoint
450
- * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
451
- */
452
- async fetchTickers(symbols = undefined, params = {}) {
453
- await this.loadMarkets();
454
- // [
455
- // {
456
- // "market": "DIL-ETH",
457
- // "time": 1598367493008,
458
- // "open": "0.09695361",
459
- // "high": "0.10245881",
460
- // "low": "0.09572507",
461
- // "close": "0.09917079",
462
- // "closeQuantity": "0.71320950",
463
- // "baseVolume": "309.17380612",
464
- // "quoteVolume": "30.57633981",
465
- // "percentChange": "2.28",
466
- // "numTrades": 205,
467
- // "ask": "0.09910476",
468
- // "bid": "0.09688340",
469
- // "sequence": 3902
470
- // }, ...
471
- // ]
472
- const response = await this.publicGetTickers(params);
473
- return this.parseTickers(response, symbols);
474
- }
475
- parseTicker(ticker, market = undefined) {
476
- // {
477
- // "market": "DIL-ETH",
478
- // "time": 1598367493008,
479
- // "open": "0.09695361",
480
- // "high": "0.10245881",
481
- // "low": "0.09572507",
482
- // "close": "0.09917079",
483
- // "closeQuantity": "0.71320950",
484
- // "baseVolume": "309.17380612",
485
- // "quoteVolume": "30.57633981",
486
- // "percentChange": "2.28",
487
- // "numTrades": 205,
488
- // "ask": "0.09910476",
489
- // "bid": "0.09688340",
490
- // "sequence": 3902
491
- // }
492
- const marketId = this.safeString(ticker, 'market');
493
- market = this.safeMarket(marketId, market, '-');
494
- const symbol = market['symbol'];
495
- const timestamp = this.safeInteger(ticker, 'time');
496
- const close = this.safeString(ticker, 'close');
497
- return this.safeTicker({
498
- 'symbol': symbol,
499
- 'timestamp': timestamp,
500
- 'datetime': this.iso8601(timestamp),
501
- 'high': this.safeString(ticker, 'high'),
502
- 'low': this.safeString(ticker, 'low'),
503
- 'bid': this.safeString(ticker, 'bid'),
504
- 'bidVolume': undefined,
505
- 'ask': this.safeString(ticker, 'ask'),
506
- 'askVolume': undefined,
507
- 'vwap': undefined,
508
- 'open': this.safeString(ticker, 'open'),
509
- 'close': close,
510
- 'last': close,
511
- 'previousClose': undefined,
512
- 'change': undefined,
513
- 'percentage': this.safeString(ticker, 'percentChange'),
514
- 'average': undefined,
515
- 'baseVolume': this.safeString(ticker, 'baseVolume'),
516
- 'quoteVolume': this.safeString(ticker, 'quoteVolume'),
517
- 'info': ticker,
518
- }, market);
519
- }
520
- /**
521
- * @method
522
- * @name idex#fetchOHLCV
523
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
524
- * @see https://api-docs-v3.idex.io/#get-candles
525
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
526
- * @param {string} timeframe the length of time each candle represents
527
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
528
- * @param {int} [limit] the maximum amount of candles to fetch
529
- * @param {object} [params] extra parameters specific to the exchange API endpoint
530
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
531
- */
532
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
533
- await this.loadMarkets();
534
- const market = this.market(symbol);
535
- const request = {
536
- 'market': market['id'],
537
- 'interval': timeframe,
538
- };
539
- if (since !== undefined) {
540
- request['start'] = since;
541
- }
542
- if (limit !== undefined) {
543
- request['limit'] = Math.min(limit, 1000);
544
- }
545
- const response = await this.publicGetCandles(this.extend(request, params));
546
- if (Array.isArray(response)) {
547
- // [
548
- // {
549
- // "start": 1598345580000,
550
- // "open": "0.09771286",
551
- // "high": "0.09771286",
552
- // "low": "0.09771286",
553
- // "close": "0.09771286",
554
- // "volume": "1.45340410",
555
- // "sequence": 3853
556
- // }, ...
557
- // ]
558
- return this.parseOHLCVs(response, market, timeframe, since, limit);
559
- }
560
- else {
561
- // {"nextTime":1595536440000}
562
- return [];
563
- }
564
- }
565
- parseOHLCV(ohlcv, market = undefined) {
566
- // {
567
- // "start": 1598345580000,
568
- // "open": "0.09771286",
569
- // "high": "0.09771286",
570
- // "low": "0.09771286",
571
- // "close": "0.09771286",
572
- // "volume": "1.45340410",
573
- // "sequence": 3853
574
- // }
575
- const timestamp = this.safeInteger(ohlcv, 'start');
576
- const open = this.safeNumber(ohlcv, 'open');
577
- const high = this.safeNumber(ohlcv, 'high');
578
- const low = this.safeNumber(ohlcv, 'low');
579
- const close = this.safeNumber(ohlcv, 'close');
580
- const volume = this.safeNumber(ohlcv, 'volume');
581
- return [timestamp, open, high, low, close, volume];
582
- }
583
- /**
584
- * @method
585
- * @name idex#fetchTrades
586
- * @description get the list of most recent trades for a particular symbol
587
- * @see https://api-docs-v3.idex.io/#get-trades
588
- * @param {string} symbol unified symbol of the market to fetch trades for
589
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
590
- * @param {int} [limit] the maximum amount of trades to fetch
591
- * @param {object} [params] extra parameters specific to the exchange API endpoint
592
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
593
- */
594
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
595
- await this.loadMarkets();
596
- const market = this.market(symbol);
597
- const request = {
598
- 'market': market['id'],
599
- };
600
- if (since !== undefined) {
601
- request['start'] = since;
602
- }
603
- if (limit !== undefined) {
604
- request['limit'] = Math.min(limit, 1000);
605
- }
606
- // [
607
- // {
608
- // "fillId": "b5467d00-b13e-3fa9-8216-dd66735550fc",
609
- // "price": "0.09771286",
610
- // "quantity": "1.45340410",
611
- // "quoteQuantity": "0.14201627",
612
- // "time": 1598345638994,
613
- // "makerSide": "buy",
614
- // "sequence": 3853
615
- // }, ...
616
- // ]
617
- const response = await this.publicGetTrades(this.extend(request, params));
618
- return this.parseTrades(response, market, since, limit);
619
- }
620
- parseTrade(trade, market = undefined) {
621
- //
622
- // public trades
623
- // {
624
- // "fillId":"a4883704-850b-3c4b-8588-020b5e4c62f1",
625
- // "price":"0.20377008",
626
- // "quantity":"47.58448728",
627
- // "quoteQuantity":"9.69629509",
628
- // "time":1642091300873,
629
- // "makerSide":"buy",
630
- // "type":"hybrid", // one of either: "orderBook", "hybrid", or "pool"
631
- // "sequence":31876
632
- // }
633
- //
634
- // private trades
635
- // {
636
- // "fillId":"83429066-9334-3582-b710-78858b2f0d6b",
637
- // "price":"0.20717368",
638
- // "quantity":"15.00000000",
639
- // "quoteQuantity":"3.10760523",
640
- // "orderBookQuantity":"0.00000003",
641
- // "orderBookQuoteQuantity":"0.00000001",
642
- // "poolQuantity":"14.99999997",
643
- // "poolQuoteQuantity":"3.10760522",
644
- // "time":1642083351215,
645
- // "makerSide":"sell",
646
- // "sequence":31795,
647
- // "market":"IDEX-USDC",
648
- // "orderId":"4fe993f0-747b-11ec-bd08-79d4a0b6e47c",
649
- // "side":"buy",
650
- // "fee":"0.03749989",
651
- // "feeAsset":"IDEX",
652
- // "gas":"0.40507261",
653
- // "liquidity":"taker",
654
- // "type":"hybrid",
655
- // "txId":"0x69f6d82a762d12e3201efd0b3e9cc1969351e3c6ea3cf07c47c66bf24a459815",
656
- // "txStatus":"mined"
657
- // }
658
- //
659
- const id = this.safeString(trade, 'fillId');
660
- const priceString = this.safeString(trade, 'price');
661
- const amountString = this.safeString(trade, 'quantity');
662
- const costString = this.safeString(trade, 'quoteQuantity');
663
- const timestamp = this.safeInteger(trade, 'time');
664
- const marketId = this.safeString(trade, 'market');
665
- const symbol = this.safeSymbol(marketId, market, '-');
666
- // this code handles the duality of public vs private trades
667
- const makerSide = this.safeString(trade, 'makerSide');
668
- const oppositeSide = (makerSide === 'buy') ? 'sell' : 'buy';
669
- const side = this.safeString(trade, 'side', oppositeSide);
670
- const takerOrMaker = this.safeString(trade, 'liquidity', 'taker');
671
- const feeCostString = this.safeString(trade, 'fee');
672
- let fee = undefined;
673
- if (feeCostString !== undefined) {
674
- const feeCurrencyId = this.safeString(trade, 'feeAsset');
675
- fee = {
676
- 'cost': feeCostString,
677
- 'currency': this.safeCurrencyCode(feeCurrencyId),
678
- };
679
- }
680
- const orderId = this.safeString(trade, 'orderId');
681
- return this.safeTrade({
682
- 'info': trade,
683
- 'timestamp': timestamp,
684
- 'datetime': this.iso8601(timestamp),
685
- 'symbol': symbol,
686
- 'id': id,
687
- 'order': orderId,
688
- 'type': 'limit',
689
- 'side': side,
690
- 'takerOrMaker': takerOrMaker,
691
- 'price': priceString,
692
- 'amount': amountString,
693
- 'cost': costString,
694
- 'fee': fee,
695
- }, market);
696
- }
697
- /**
698
- * @method
699
- * @name idex#fetchTradingFees
700
- * @description fetch the trading fees for multiple markets
701
- * @see https://api-docs-v3.idex.io/#get-api-account
702
- * @param {object} [params] extra parameters specific to the exchange API endpoint
703
- * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
704
- */
705
- async fetchTradingFees(params = {}) {
706
- this.checkRequiredCredentials();
707
- await this.loadMarkets();
708
- const nonce = this.uuidv1();
709
- const request = {
710
- 'nonce': nonce,
711
- };
712
- let response = undefined;
713
- response = await this.privateGetUser(this.extend(request, params));
714
- //
715
- // {
716
- // "depositEnabled": true,
717
- // "orderEnabled": true,
718
- // "cancelEnabled": true,
719
- // "withdrawEnabled": true,
720
- // "totalPortfolioValueUsd": "0.00",
721
- // "makerFeeRate": "0.0000",
722
- // "takerFeeRate": "0.0025",
723
- // "takerIdexFeeRate": "0.0005",
724
- // "takerLiquidityProviderFeeRate": "0.0020"
725
- // }
726
- //
727
- const maker = this.safeNumber(response, 'makerFeeRate');
728
- const taker = this.safeNumber(response, 'takerFeeRate');
729
- const result = {};
730
- for (let i = 0; i < this.symbols.length; i++) {
731
- const symbol = this.symbols[i];
732
- result[symbol] = {
733
- 'info': response,
734
- 'symbol': symbol,
735
- 'maker': maker,
736
- 'taker': taker,
737
- 'percentage': true,
738
- 'tierBased': false,
739
- };
740
- }
741
- return result;
742
- }
743
- /**
744
- * @method
745
- * @name idex#fetchOrderBook
746
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
747
- * @see https://api-docs-v3.idex.io/#get-order-books
748
- * @param {string} symbol unified symbol of the market to fetch the order book for
749
- * @param {int} [limit] the maximum amount of order book entries to return
750
- * @param {object} [params] extra parameters specific to the exchange API endpoint
751
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
752
- */
753
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
754
- await this.loadMarkets();
755
- const market = this.market(symbol);
756
- const request = {
757
- 'market': market['id'],
758
- 'level': 2,
759
- };
760
- if (limit !== undefined) {
761
- request['limit'] = limit;
762
- }
763
- // {
764
- // "sequence": 36416753,
765
- // "bids": [
766
- // [ '0.09672815', "8.22284267", 1 ],
767
- // [ '0.09672814', "1.83685554", 1 ],
768
- // [ '0.09672143', "4.10962617", 1 ],
769
- // [ '0.09658884', "4.03863759", 1 ],
770
- // [ '0.09653781', "3.35730684", 1 ],
771
- // [ '0.09624660', "2.54163586", 1 ],
772
- // [ '0.09617490', "1.93065030", 1 ]
773
- // ],
774
- // "asks": [
775
- // [ '0.09910476', "3.22840154", 1 ],
776
- // [ '0.09940587', "3.39796593", 1 ],
777
- // [ '0.09948189', "4.25088898", 1 ],
778
- // [ '0.09958362', "2.42195784", 1 ],
779
- // [ '0.09974393', "4.25234367", 1 ],
780
- // [ '0.09995250', "3.40192141", 1 ]
781
- // ]
782
- // }
783
- const response = await this.publicGetOrderbook(this.extend(request, params));
784
- const nonce = this.safeInteger(response, 'sequence');
785
- return {
786
- 'symbol': symbol,
787
- 'timestamp': undefined,
788
- 'datetime': undefined,
789
- 'nonce': nonce,
790
- 'bids': this.parseSide(response, 'bids'),
791
- 'asks': this.parseSide(response, 'asks'),
792
- };
793
- }
794
- parseSide(book, side) {
795
- const bookSide = this.safeValue(book, side, []);
796
- const result = [];
797
- for (let i = 0; i < bookSide.length; i++) {
798
- const order = bookSide[i];
799
- const price = this.safeNumber(order, 0);
800
- const amount = this.safeNumber(order, 1);
801
- const orderCount = this.safeInteger(order, 2);
802
- result.push([price, amount, orderCount]);
803
- }
804
- const descending = side === 'bids';
805
- return this.sortBy(result, 0, descending);
806
- }
807
- /**
808
- * @method
809
- * @name idex#fetchCurrencies
810
- * @description fetches all available currencies on an exchange
811
- * @see https://api-docs-v3.idex.io/#get-assets
812
- * @param {object} [params] extra parameters specific to the exchange API endpoint
813
- * @returns {object} an associative dictionary of currencies
814
- */
815
- async fetchCurrencies(params = {}) {
816
- const response = await this.publicGetAssets(params);
817
- //
818
- // [
819
- // {
820
- // "name": "Ethereum",
821
- // "symbol": "ETH",
822
- // "contractAddress": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",
823
- // "assetDecimals": "18",
824
- // "exchangeDecimals": "8",
825
- // "maticPrice": "3029.38503483"
826
- // },
827
- // ]
828
- //
829
- const result = {};
830
- for (let i = 0; i < response.length; i++) {
831
- const entry = response[i];
832
- const name = this.safeString(entry, 'name');
833
- const currencyId = this.safeString(entry, 'symbol');
834
- const code = this.safeCurrencyCode(currencyId);
835
- const precision = this.parseNumber(this.parsePrecision(this.safeString(entry, 'exchangeDecimals')));
836
- result[code] = {
837
- 'id': currencyId,
838
- 'code': code,
839
- 'info': entry,
840
- 'type': undefined,
841
- 'name': name,
842
- 'active': undefined,
843
- 'deposit': undefined,
844
- 'withdraw': undefined,
845
- 'fee': undefined,
846
- 'precision': precision,
847
- 'limits': {
848
- 'amount': { 'min': precision, 'max': undefined },
849
- 'withdraw': { 'min': precision, 'max': undefined },
850
- },
851
- };
852
- }
853
- return result;
854
- }
855
- parseBalance(response) {
856
- const result = {
857
- 'info': response,
858
- 'timestamp': undefined,
859
- 'datetime': undefined,
860
- };
861
- for (let i = 0; i < response.length; i++) {
862
- const entry = response[i];
863
- const currencyId = this.safeString(entry, 'asset');
864
- const code = this.safeCurrencyCode(currencyId);
865
- const account = this.account();
866
- account['total'] = this.safeString(entry, 'quantity');
867
- account['free'] = this.safeString(entry, 'availableForTrade');
868
- account['used'] = this.safeString(entry, 'locked');
869
- result[code] = account;
870
- }
871
- return this.safeBalance(result);
872
- }
873
- /**
874
- * @method
875
- * @name idex#fetchBalance
876
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
877
- * @see https://api-docs-v3.idex.io/#get-balances
878
- * @param {object} [params] extra parameters specific to the exchange API endpoint
879
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
880
- */
881
- async fetchBalance(params = {}) {
882
- this.checkRequiredCredentials();
883
- await this.loadMarkets();
884
- const nonce1 = this.uuidv1();
885
- const request = {
886
- 'nonce': nonce1,
887
- 'wallet': this.walletAddress,
888
- };
889
- // [
890
- // {
891
- // "asset": "DIL",
892
- // "quantity": "0.00000000",
893
- // "availableForTrade": "0.00000000",
894
- // "locked": "0.00000000",
895
- // "usdValue": null
896
- // }, ...
897
- // ]
898
- const extendedRequest = this.extend(request, params);
899
- if (extendedRequest['wallet'] === undefined) {
900
- throw new BadRequest(this.id + ' fetchBalance() wallet is undefined, set this.walletAddress or "address" in params');
901
- }
902
- let response = undefined;
903
- try {
904
- response = await this.privateGetBalances(extendedRequest);
905
- }
906
- catch (e) {
907
- if (e instanceof InvalidAddress) {
908
- const walletAddress = extendedRequest['wallet'];
909
- await this.associateWallet(walletAddress);
910
- response = await this.privateGetBalances(extendedRequest);
911
- }
912
- else {
913
- throw e;
914
- }
915
- }
916
- return this.parseBalance(response);
917
- }
918
- /**
919
- * @method
920
- * @name idex#fetchMyTrades
921
- * @description fetch all trades made by the user
922
- * @see https://api-docs-v3.idex.io/#get-fills
923
- * @param {string} symbol unified market symbol
924
- * @param {int} [since] the earliest time in ms to fetch trades for
925
- * @param {int} [limit] the maximum number of trades structures to retrieve
926
- * @param {object} [params] extra parameters specific to the exchange API endpoint
927
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
928
- */
929
- async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
930
- this.checkRequiredCredentials();
931
- await this.loadMarkets();
932
- let market = undefined;
933
- const request = {
934
- 'nonce': this.uuidv1(),
935
- 'wallet': this.walletAddress,
936
- };
937
- if (symbol !== undefined) {
938
- market = this.market(symbol);
939
- request['market'] = market['id'];
940
- }
941
- if (since !== undefined) {
942
- request['start'] = since;
943
- }
944
- if (limit !== undefined) {
945
- request['limit'] = limit;
946
- }
947
- // [
948
- // {
949
- // "fillId": "48582d10-b9bb-3c4b-94d3-e67537cf2472",
950
- // "price": "0.09905990",
951
- // "quantity": "0.40000000",
952
- // "quoteQuantity": "0.03962396",
953
- // "time": 1598873478762,
954
- // "makerSide": "sell",
955
- // "sequence": 5053,
956
- // "market": "DIL-ETH",
957
- // "orderId": "7cdc8e90-eb7d-11ea-9e60-4118569f6e63",
958
- // "side": "buy",
959
- // "fee": "0.00080000",
960
- // "feeAsset": "DIL",
961
- // "gas": "0.00857497",
962
- // "liquidity": "taker",
963
- // "txId": "0xeaa02b112c0b8b61bc02fa1776a2b39d6c614e287c1af90df0a2e591da573e65",
964
- // "txStatus": "mined"
965
- // }
966
- // ]
967
- const extendedRequest = this.extend(request, params);
968
- if (extendedRequest['wallet'] === undefined) {
969
- throw new BadRequest(this.id + ' fetchMyTrades() walletAddress is undefined, set this.walletAddress or "address" in params');
970
- }
971
- let response = undefined;
972
- try {
973
- response = await this.privateGetFills(extendedRequest);
974
- }
975
- catch (e) {
976
- if (e instanceof InvalidAddress) {
977
- const walletAddress = extendedRequest['wallet'];
978
- await this.associateWallet(walletAddress);
979
- response = await this.privateGetFills(extendedRequest);
980
- }
981
- else {
982
- throw e;
983
- }
984
- }
985
- return this.parseTrades(response, market, since, limit);
986
- }
987
- /**
988
- * @method
989
- * @name idex#fetchOrder
990
- * @description fetches information on an order made by the user
991
- * @see https://api-docs-v3.idex.io/#get-orders
992
- * @param {string} id order id
993
- * @param {string} symbol unified symbol of the market the order was made in
994
- * @param {object} [params] extra parameters specific to the exchange API endpoint
995
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
996
- */
997
- async fetchOrder(id, symbol = undefined, params = {}) {
998
- const request = {
999
- 'orderId': id,
1000
- };
1001
- return await this.fetchOrdersHelper(symbol, undefined, undefined, this.extend(request, params));
1002
- }
1003
- /**
1004
- * @method
1005
- * @name idex#fetchOpenOrders
1006
- * @description fetch all unfilled currently open orders
1007
- * @see https://api-docs-v3.idex.io/#get-orders
1008
- * @param {string} symbol unified market symbol
1009
- * @param {int} [since] the earliest time in ms to fetch open orders for
1010
- * @param {int} [limit] the maximum number of open orders structures to retrieve
1011
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1012
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1013
- */
1014
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1015
- const request = {
1016
- 'closed': false,
1017
- };
1018
- return await this.fetchOrdersHelper(symbol, since, limit, this.extend(request, params));
1019
- }
1020
- /**
1021
- * @method
1022
- * @name idex#fetchClosedOrders
1023
- * @description fetches information on multiple closed orders made by the user
1024
- * @see https://api-docs-v3.idex.io/#get-orders
1025
- * @param {string} symbol unified market symbol of the market orders were made in
1026
- * @param {int} [since] the earliest time in ms to fetch orders for
1027
- * @param {int} [limit] the maximum number of order structures to retrieve
1028
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1029
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1030
- */
1031
- async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1032
- const request = {
1033
- 'closed': true,
1034
- };
1035
- return await this.fetchOrdersHelper(symbol, since, limit, this.extend(request, params));
1036
- }
1037
- async fetchOrdersHelper(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1038
- await this.loadMarkets();
1039
- const request = {
1040
- 'nonce': this.uuidv1(),
1041
- 'wallet': this.walletAddress,
1042
- };
1043
- let market = undefined;
1044
- if (symbol !== undefined) {
1045
- market = this.market(symbol);
1046
- request['market'] = market['id'];
1047
- }
1048
- if (since !== undefined) {
1049
- request['start'] = since;
1050
- }
1051
- if (limit !== undefined) {
1052
- request['limit'] = limit;
1053
- }
1054
- const response = await this.privateGetOrders(this.extend(request, params));
1055
- // fetchClosedOrders / fetchOpenOrders
1056
- // [
1057
- // {
1058
- // "market": "DIL-ETH",
1059
- // "orderId": "7cdc8e90-eb7d-11ea-9e60-4118569f6e63",
1060
- // "wallet": "0x0AB991497116f7F5532a4c2f4f7B1784488628e1",
1061
- // "time": 1598873478650,
1062
- // "status": "filled",
1063
- // "type": "limit",
1064
- // "side": "buy",
1065
- // "originalQuantity": "0.40000000",
1066
- // "executedQuantity": "0.40000000",
1067
- // "cumulativeQuoteQuantity": "0.03962396",
1068
- // "avgExecutionPrice": "0.09905990",
1069
- // "price": "1.00000000",
1070
- // "fills": [
1071
- // {
1072
- // "fillId": "48582d10-b9bb-3c4b-94d3-e67537cf2472",
1073
- // "price": "0.09905990",
1074
- // "quantity": "0.40000000",
1075
- // "quoteQuantity": "0.03962396",
1076
- // "time": 1598873478650,
1077
- // "makerSide": "sell",
1078
- // "sequence": 5053,
1079
- // "fee": "0.00080000",
1080
- // "feeAsset": "DIL",
1081
- // "gas": "0.00857497",
1082
- // "liquidity": "taker",
1083
- // "txId": "0xeaa02b112c0b8b61bc02fa1776a2b39d6c614e287c1af90df0a2e591da573e65",
1084
- // "txStatus": "mined"
1085
- // }
1086
- // ]
1087
- // }
1088
- // ]
1089
- // fetchOrder
1090
- // { market: "DIL-ETH",
1091
- // "orderId": "7cdc8e90-eb7d-11ea-9e60-4118569f6e63",
1092
- // "wallet": "0x0AB991497116f7F5532a4c2f4f7B1784488628e1",
1093
- // "time": 1598873478650,
1094
- // "status": "filled",
1095
- // "type": "limit",
1096
- // "side": "buy",
1097
- // "originalQuantity": "0.40000000",
1098
- // "executedQuantity": "0.40000000",
1099
- // "cumulativeQuoteQuantity": "0.03962396",
1100
- // "avgExecutionPrice": "0.09905990",
1101
- // "price": "1.00000000",
1102
- // "fills":
1103
- // [ { fillId: "48582d10-b9bb-3c4b-94d3-e67537cf2472",
1104
- // "price": "0.09905990",
1105
- // "quantity": "0.40000000",
1106
- // "quoteQuantity": "0.03962396",
1107
- // "time": 1598873478650,
1108
- // "makerSide": "sell",
1109
- // "sequence": 5053,
1110
- // "fee": "0.00080000",
1111
- // "feeAsset": "DIL",
1112
- // "gas": "0.00857497",
1113
- // "liquidity": "taker",
1114
- // "txId": "0xeaa02b112c0b8b61bc02fa1776a2b39d6c614e287c1af90df0a2e591da573e65",
1115
- // "txStatus": "mined" } ] }
1116
- if (Array.isArray(response)) {
1117
- return this.parseOrders(response, market, since, limit);
1118
- }
1119
- else {
1120
- return this.parseOrder(response, market);
1121
- }
1122
- }
1123
- parseOrderStatus(status) {
1124
- // https://docs.idex.io/#order-states-amp-lifecycle
1125
- const statuses = {
1126
- 'active': 'open',
1127
- 'partiallyFilled': 'open',
1128
- 'rejected': 'canceled',
1129
- 'filled': 'closed',
1130
- };
1131
- return this.safeString(statuses, status, status);
1132
- }
1133
- parseOrder(order, market = undefined) {
1134
- //
1135
- // {
1136
- // "market": "DIL-ETH",
1137
- // "orderId": "7cdc8e90-eb7d-11ea-9e60-4118569f6e63",
1138
- // "wallet": "0x0AB991497116f7F5532a4c2f4f7B1784488628e1",
1139
- // "time": 1598873478650,
1140
- // "status": "filled",
1141
- // "type": "limit",
1142
- // "side": "buy",
1143
- // "originalQuantity": "0.40000000",
1144
- // "executedQuantity": "0.40000000",
1145
- // "cumulativeQuoteQuantity": "0.03962396",
1146
- // "avgExecutionPrice": "0.09905990",
1147
- // "price": "1.00000000",
1148
- // "fills": [
1149
- // {
1150
- // "fillId": "48582d10-b9bb-3c4b-94d3-e67537cf2472",
1151
- // "price": "0.09905990",
1152
- // "quantity": "0.40000000",
1153
- // "quoteQuantity": "0.03962396",
1154
- // "time": 1598873478650,
1155
- // "makerSide": "sell",
1156
- // "sequence": 5053,
1157
- // "fee": "0.00080000",
1158
- // "feeAsset": "DIL",
1159
- // "gas": "0.00857497",
1160
- // "liquidity": "taker",
1161
- // "txId": "0xeaa02b112c0b8b61bc02fa1776a2b39d6c614e287c1af90df0a2e591da573e65",
1162
- // "txStatus": "mined"
1163
- // }
1164
- // ]
1165
- // }
1166
- //
1167
- const timestamp = this.safeInteger(order, 'time');
1168
- const fills = this.safeValue(order, 'fills', []);
1169
- const id = this.safeString(order, 'orderId');
1170
- const clientOrderId = this.safeString(order, 'clientOrderId');
1171
- const marketId = this.safeString(order, 'market');
1172
- const side = this.safeString(order, 'side');
1173
- const symbol = this.safeSymbol(marketId, market, '-');
1174
- const type = this.safeString(order, 'type');
1175
- const amount = this.safeString(order, 'originalQuantity');
1176
- const filled = this.safeString(order, 'executedQuantity');
1177
- const average = this.safeString(order, 'avgExecutionPrice');
1178
- const price = this.safeString(order, 'price');
1179
- const rawStatus = this.safeString(order, 'status');
1180
- const timeInForce = this.safeStringUpper(order, 'timeInForce');
1181
- const status = this.parseOrderStatus(rawStatus);
1182
- return this.safeOrder({
1183
- 'info': order,
1184
- 'id': id,
1185
- 'clientOrderId': clientOrderId,
1186
- 'timestamp': timestamp,
1187
- 'datetime': this.iso8601(timestamp),
1188
- 'lastTradeTimestamp': undefined,
1189
- 'symbol': symbol,
1190
- 'type': type,
1191
- 'timeInForce': timeInForce,
1192
- 'postOnly': undefined,
1193
- 'side': side,
1194
- 'price': price,
1195
- 'triggerPrice': undefined,
1196
- 'amount': amount,
1197
- 'cost': undefined,
1198
- 'average': average,
1199
- 'filled': filled,
1200
- 'remaining': undefined,
1201
- 'status': status,
1202
- 'fee': undefined,
1203
- 'trades': fills,
1204
- }, market);
1205
- }
1206
- async associateWallet(walletAddress, params = {}) {
1207
- const nonce = this.uuidv1();
1208
- const noPrefix = this.remove0xPrefix(walletAddress);
1209
- const byteArray = [
1210
- this.base16ToBinary(nonce),
1211
- this.base16ToBinary(noPrefix),
1212
- ];
1213
- const binary = this.binaryConcatArray(byteArray);
1214
- const hash = this.hash(binary, keccak, 'hex');
1215
- const signature = this.signMessageString(hash, this.privateKey);
1216
- // {
1217
- // "address": "0x0AB991497116f7F5532a4c2f4f7B1784488628e1",
1218
- // "totalPortfolioValueUsd": "0.00",
1219
- // "time": 1598468353626
1220
- // }
1221
- const request = {
1222
- 'parameters': {
1223
- 'nonce': nonce,
1224
- 'wallet': walletAddress,
1225
- },
1226
- 'signature': signature,
1227
- };
1228
- const result = await this.privatePostWallets(request);
1229
- return result;
1230
- }
1231
- /**
1232
- * @method
1233
- * @name idex#createOrder
1234
- * @description create a trade order, https://docs.idex.io/#create-order
1235
- * @see https://api-docs-v3.idex.io/#create-order
1236
- * @param {string} symbol unified symbol of the market to create an order in
1237
- * @param {string} type 'market' or 'limit'
1238
- * @param {string} side 'buy' or 'sell'
1239
- * @param {float} amount how much of currency you want to trade in units of base currency
1240
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1241
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1242
- * @param {bool} [params.test] set to true to test an order, no order will be created but the request will be validated
1243
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1244
- */
1245
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1246
- this.checkRequiredCredentials();
1247
- await this.loadMarkets();
1248
- const testOrder = this.safeBool(params, 'test', false);
1249
- params = this.omit(params, 'test');
1250
- const market = this.market(symbol);
1251
- const nonce = this.uuidv1();
1252
- let typeEnum = undefined;
1253
- const stopLossTypeEnums = {
1254
- 'stopLoss': 3,
1255
- 'stopLossLimit': 4,
1256
- 'takeProfit': 5,
1257
- 'takeProfitLimit': 6,
1258
- };
1259
- const triggerPrice = this.safeString(params, 'triggerPrice', 'stopPrice');
1260
- let triggerPriceString = undefined;
1261
- if ((type === 'stopLossLimit') || (type === 'takeProfitLimit')) {
1262
- if (triggerPrice === undefined) {
1263
- throw new BadRequest(this.id + ' createOrder() triggerPrice is a required parameter for ' + type + 'orders');
1264
- }
1265
- triggerPriceString = this.priceToPrecision(symbol, triggerPrice);
1266
- }
1267
- const limitTypeEnums = {
1268
- 'limit': 1,
1269
- 'limitMaker': 2,
1270
- };
1271
- let priceString = undefined;
1272
- const typeLower = type.toLowerCase();
1273
- const limitOrder = typeLower.indexOf('limit') >= 0;
1274
- if (type in limitTypeEnums) {
1275
- typeEnum = limitTypeEnums[type];
1276
- priceString = this.priceToPrecision(symbol, price);
1277
- }
1278
- else if (type in stopLossTypeEnums) {
1279
- typeEnum = stopLossTypeEnums[type];
1280
- priceString = this.priceToPrecision(symbol, price);
1281
- }
1282
- else if (type === 'market') {
1283
- typeEnum = 0;
1284
- }
1285
- else {
1286
- throw new BadRequest(this.id + ' ' + type + ' is not a valid order type');
1287
- }
1288
- let amountEnum = 0; // base quantity
1289
- if ('quoteOrderQuantity' in params) {
1290
- if (type !== 'market') {
1291
- throw new NotSupported(this.id + ' createOrder() quoteOrderQuantity is not supported for ' + type + ' orders, only supported for market orders');
1292
- }
1293
- amountEnum = 1;
1294
- amount = this.safeNumber(params, 'quoteOrderQuantity');
1295
- }
1296
- const sideEnum = (side === 'buy') ? 0 : 1;
1297
- const walletBytes = this.remove0xPrefix(this.walletAddress);
1298
- const network = this.safeString(this.options, 'network', 'ETH');
1299
- const orderVersion = this.getSupportedMapping(network, {
1300
- 'ETH': 1,
1301
- 'BSC': 2,
1302
- 'MATIC': 4,
1303
- });
1304
- const amountString = this.amountToPrecision(symbol, amount);
1305
- // https://docs.idex.io/#time-in-force
1306
- const timeInForceEnums = {
1307
- 'gtc': 0,
1308
- 'ioc': 2,
1309
- 'fok': 3,
1310
- };
1311
- const defaultTimeInForce = this.safeString(this.options, 'defaultTimeInForce', 'gtc');
1312
- const timeInForce = this.safeString(params, 'timeInForce', defaultTimeInForce);
1313
- let timeInForceEnum = undefined;
1314
- if (timeInForce in timeInForceEnums) {
1315
- timeInForceEnum = timeInForceEnums[timeInForce];
1316
- }
1317
- else {
1318
- const allOptions = Object.keys(timeInForceEnums);
1319
- const asString = allOptions.join(', ');
1320
- throw new BadRequest(this.id + ' ' + timeInForce + ' is not a valid timeInForce, please choose one of ' + asString);
1321
- }
1322
- // https://docs.idex.io/#self-trade-prevention
1323
- const selfTradePreventionEnums = {
1324
- 'dc': 0,
1325
- 'co': 1,
1326
- 'cn': 2,
1327
- 'cb': 3,
1328
- };
1329
- const defaultSelfTradePrevention = this.safeString(this.options, 'defaultSelfTradePrevention', 'cn');
1330
- const selfTradePrevention = this.safeString(params, 'selfTradePrevention', defaultSelfTradePrevention);
1331
- let selfTradePreventionEnum = undefined;
1332
- if (selfTradePrevention in selfTradePreventionEnums) {
1333
- selfTradePreventionEnum = selfTradePreventionEnums[selfTradePrevention];
1334
- }
1335
- else {
1336
- const allOptions = Object.keys(selfTradePreventionEnums);
1337
- const asString = allOptions.join(', ');
1338
- throw new BadRequest(this.id + ' ' + selfTradePrevention + ' is not a valid selfTradePrevention, please choose one of ' + asString);
1339
- }
1340
- const byteArray = [
1341
- this.numberToBE(orderVersion, 1),
1342
- this.base16ToBinary(nonce),
1343
- this.base16ToBinary(walletBytes),
1344
- this.encode(market['id']),
1345
- this.numberToBE(typeEnum, 1),
1346
- this.numberToBE(sideEnum, 1),
1347
- this.encode(amountString),
1348
- this.numberToBE(amountEnum, 1),
1349
- ];
1350
- if (limitOrder) {
1351
- const encodedPrice = this.encode(priceString);
1352
- byteArray.push(encodedPrice);
1353
- }
1354
- if (type in stopLossTypeEnums) {
1355
- const encodedPrice = this.encode(triggerPriceString || priceString);
1356
- byteArray.push(encodedPrice);
1357
- }
1358
- const clientOrderId = this.safeString(params, 'clientOrderId');
1359
- if (clientOrderId !== undefined) {
1360
- byteArray.push(this.encode(clientOrderId));
1361
- }
1362
- const after = [
1363
- this.numberToBE(timeInForceEnum, 1),
1364
- this.numberToBE(selfTradePreventionEnum, 1),
1365
- this.numberToBE(0, 8), // unused
1366
- ];
1367
- const allBytes = this.arrayConcat(byteArray, after);
1368
- const binary = this.binaryConcatArray(allBytes);
1369
- const hash = this.hash(binary, keccak, 'hex');
1370
- const signature = this.signMessageString(hash, this.privateKey);
1371
- const request = {
1372
- 'parameters': {
1373
- 'nonce': nonce,
1374
- 'market': market['id'],
1375
- 'side': side,
1376
- 'type': type,
1377
- 'wallet': this.walletAddress,
1378
- 'selfTradePrevention': selfTradePrevention,
1379
- },
1380
- 'signature': signature,
1381
- };
1382
- if (type !== 'market') {
1383
- request['parameters']['timeInForce'] = timeInForce;
1384
- }
1385
- if (limitOrder) {
1386
- request['parameters']['price'] = priceString;
1387
- }
1388
- if (type in stopLossTypeEnums) {
1389
- request['parameters']['stopPrice'] = triggerPriceString || priceString;
1390
- }
1391
- if (amountEnum === 0) {
1392
- request['parameters']['quantity'] = amountString;
1393
- }
1394
- else {
1395
- request['parameters']['quoteOrderQuantity'] = amountString;
1396
- }
1397
- if (clientOrderId !== undefined) {
1398
- request['parameters']['clientOrderId'] = clientOrderId;
1399
- }
1400
- // {
1401
- // "market": "DIL-ETH",
1402
- // "orderId": "7cdc8e90-eb7d-11ea-9e60-4118569f6e63",
1403
- // "wallet": "0x0AB991497116f7F5532a4c2f4f7B1784488628e1",
1404
- // "time": 1598873478650,
1405
- // "status": "filled",
1406
- // "type": "limit",
1407
- // "side": "buy",
1408
- // "originalQuantity": "0.40000000",
1409
- // "executedQuantity": "0.40000000",
1410
- // "cumulativeQuoteQuantity": "0.03962396",
1411
- // "price": "1.00000000",
1412
- // "fills": [
1413
- // {
1414
- // "fillId": "48582d10-b9bb-3c4b-94d3-e67537cf2472",
1415
- // "price": "0.09905990",
1416
- // "quantity": "0.40000000",
1417
- // "quoteQuantity": "0.03962396",
1418
- // "time": 1598873478650,
1419
- // "makerSide": "sell",
1420
- // "sequence": 5053,
1421
- // "fee": "0.00080000",
1422
- // "feeAsset": "DIL",
1423
- // "gas": "0.00857497",
1424
- // "liquidity": "taker",
1425
- // "txStatus": "pending"
1426
- // }
1427
- // ],
1428
- // "avgExecutionPrice": "0.09905990"
1429
- // }
1430
- // we don't use extend here because it is a signed endpoint
1431
- let response = undefined;
1432
- if (testOrder) {
1433
- response = await this.privatePostOrdersTest(request);
1434
- }
1435
- else {
1436
- response = await this.privatePostOrders(request);
1437
- }
1438
- return this.parseOrder(response, market);
1439
- }
1440
- /**
1441
- * @method
1442
- * @name idex#withdraw
1443
- * @description make a withdrawal
1444
- * @see https://api-docs-v3.idex.io/#withdraw-funds
1445
- * @param {string} code unified currency code
1446
- * @param {float} amount the amount to withdraw
1447
- * @param {string} address the address to withdraw to
1448
- * @param {string} tag
1449
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1450
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1451
- */
1452
- async withdraw(code, amount, address, tag = undefined, params = {}) {
1453
- [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1454
- this.checkRequiredCredentials();
1455
- await this.loadMarkets();
1456
- const nonce = this.uuidv1();
1457
- const amountString = this.currencyToPrecision(code, amount);
1458
- const currency = this.currency(code);
1459
- const walletBytes = this.remove0xPrefix(this.walletAddress);
1460
- const byteArray = [
1461
- this.base16ToBinary(nonce),
1462
- this.base16ToBinary(walletBytes),
1463
- this.encode(currency['id']),
1464
- this.encode(amountString),
1465
- this.numberToBE(1, 1), // bool set to true
1466
- ];
1467
- const binary = this.binaryConcatArray(byteArray);
1468
- const hash = this.hash(binary, keccak, 'hex');
1469
- const signature = this.signMessageString(hash, this.privateKey);
1470
- const request = {
1471
- 'parameters': {
1472
- 'nonce': nonce,
1473
- 'wallet': address,
1474
- 'asset': currency['id'],
1475
- 'quantity': amountString,
1476
- },
1477
- 'signature': signature,
1478
- };
1479
- const response = await this.privatePostWithdrawals(request);
1480
- //
1481
- // {
1482
- // "withdrawalId": "a61dcff0-ec4d-11ea-8b83-c78a6ecb3180",
1483
- // "asset": "ETH",
1484
- // "assetContractAddress": "0x0000000000000000000000000000000000000000",
1485
- // "quantity": "0.20000000",
1486
- // "time": 1598962883190,
1487
- // "fee": "0.00024000",
1488
- // "txStatus": "pending",
1489
- // "txId": null
1490
- // }
1491
- //
1492
- return this.parseTransaction(response, currency);
1493
- }
1494
- /**
1495
- * @method
1496
- * @name idex#cancelAllOrders
1497
- * @description cancel all open orders
1498
- * @see https://api-docs-v3.idex.io/#cancel-order
1499
- * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1500
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1501
- * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1502
- */
1503
- async cancelAllOrders(symbol = undefined, params = {}) {
1504
- this.checkRequiredCredentials();
1505
- await this.loadMarkets();
1506
- let market = undefined;
1507
- if (symbol !== undefined) {
1508
- market = this.market(symbol);
1509
- }
1510
- const nonce = this.uuidv1();
1511
- const request = {
1512
- 'parameters': {
1513
- 'nonce': nonce,
1514
- 'wallet': this.walletAddress,
1515
- },
1516
- };
1517
- const walletBytes = this.remove0xPrefix(this.walletAddress);
1518
- const byteArray = [
1519
- this.base16ToBinary(nonce),
1520
- this.base16ToBinary(walletBytes),
1521
- ];
1522
- if (market !== undefined) {
1523
- byteArray.push(this.encode(market['id']));
1524
- request['parameters']['market'] = market['id'];
1525
- }
1526
- const binary = this.binaryConcatArray(byteArray);
1527
- const hash = this.hash(binary, keccak, 'hex');
1528
- const signature = this.signMessageString(hash, this.privateKey);
1529
- request['signature'] = signature;
1530
- // [ { orderId: "688336f0-ec50-11ea-9842-b332f8a34d0e" } ]
1531
- const response = await this.privateDeleteOrders(this.extend(request, params));
1532
- return this.parseOrders(response, market);
1533
- }
1534
- /**
1535
- * @method
1536
- * @name idex#cancelOrder
1537
- * @description cancels an open order
1538
- * @see https://api-docs-v3.idex.io/#cancel-order
1539
- * @param {string} id order id
1540
- * @param {string} symbol unified symbol of the market the order was made in
1541
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1542
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1543
- */
1544
- async cancelOrder(id, symbol = undefined, params = {}) {
1545
- this.checkRequiredCredentials();
1546
- await this.loadMarkets();
1547
- let market = undefined;
1548
- if (symbol !== undefined) {
1549
- market = this.market(symbol);
1550
- }
1551
- const nonce = this.uuidv1();
1552
- const walletBytes = this.remove0xPrefix(this.walletAddress);
1553
- const byteArray = [
1554
- this.base16ToBinary(nonce),
1555
- this.base16ToBinary(walletBytes),
1556
- this.encode(id),
1557
- ];
1558
- const binary = this.binaryConcatArray(byteArray);
1559
- const hash = this.hash(binary, keccak, 'hex');
1560
- const signature = this.signMessageString(hash, this.privateKey);
1561
- const request = {
1562
- 'parameters': {
1563
- 'nonce': nonce,
1564
- 'wallet': this.walletAddress,
1565
- 'orderId': id,
1566
- },
1567
- 'signature': signature,
1568
- };
1569
- // [ { orderId: "688336f0-ec50-11ea-9842-b332f8a34d0e" } ]
1570
- const response = await this.privateDeleteOrders(this.extend(request, params));
1571
- const canceledOrder = this.safeDict(response, 0);
1572
- return this.parseOrder(canceledOrder, market);
1573
- }
1574
- handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1575
- const errorCode = this.safeString(response, 'code');
1576
- const message = this.safeString(response, 'message');
1577
- if (errorCode !== undefined) {
1578
- this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, message);
1579
- throw new ExchangeError(this.id + ' ' + message);
1580
- }
1581
- return undefined;
1582
- }
1583
- /**
1584
- * @method
1585
- * @name idex#fetchDeposit
1586
- * @description fetch information on a deposit
1587
- * @see https://api-docs-v3.idex.io/#get-deposits
1588
- * @param {string} id deposit id
1589
- * @param {string} code not used by idex fetchDeposit ()
1590
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1591
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1592
- */
1593
- async fetchDeposit(id, code = undefined, params = {}) {
1594
- await this.loadMarkets();
1595
- const nonce = this.uuidv1();
1596
- const request = {
1597
- 'nonce': nonce,
1598
- 'wallet': this.walletAddress,
1599
- 'depositId': id,
1600
- };
1601
- const response = await this.privateGetDeposits(this.extend(request, params));
1602
- return this.parseTransaction(response);
1603
- }
1604
- /**
1605
- * @method
1606
- * @name idex#fetchDeposits
1607
- * @description fetch all deposits made to an account
1608
- * @see https://api-docs-v3.idex.io/#get-deposits
1609
- * @param {string} code unified currency code
1610
- * @param {int} [since] the earliest time in ms to fetch deposits for
1611
- * @param {int} [limit] the maximum number of deposits structures to retrieve
1612
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1613
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1614
- */
1615
- async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1616
- params = this.extend({
1617
- 'method': 'privateGetDeposits',
1618
- }, params);
1619
- return await this.fetchTransactionsHelper(code, since, limit, params);
1620
- }
1621
- /**
1622
- * @method
1623
- * @name idex#fetchStatus
1624
- * @description the latest known information on the availability of the exchange API
1625
- * @see https://api-docs-v3.idex.io/#get-ping
1626
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1627
- * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
1628
- */
1629
- async fetchStatus(params = {}) {
1630
- const response = await this.publicGetPing(params);
1631
- return {
1632
- 'status': 'ok',
1633
- 'updated': undefined,
1634
- 'eta': undefined,
1635
- 'url': undefined,
1636
- 'info': response,
1637
- };
1638
- }
1639
- /**
1640
- * @method
1641
- * @name idex#fetchTime
1642
- * @description fetches the current integer timestamp in milliseconds from the exchange server
1643
- * @see https://api-docs-v3.idex.io/#get-time
1644
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1645
- * @returns {int} the current integer timestamp in milliseconds from the exchange server
1646
- */
1647
- async fetchTime(params = {}) {
1648
- const response = await this.publicGetTime(params);
1649
- //
1650
- // { serverTime: "1655258263236" }
1651
- //
1652
- return this.safeInteger(response, 'serverTime');
1653
- }
1654
- /**
1655
- * @method
1656
- * @name idex#fetchWithdrawal
1657
- * @description fetch data on a currency withdrawal via the withdrawal id
1658
- * @see https://api-docs-v3.idex.io/#get-withdrawals
1659
- * @param {string} id withdrawal id
1660
- * @param {string} code not used by idex.fetchWithdrawal
1661
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1662
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1663
- */
1664
- async fetchWithdrawal(id, code = undefined, params = {}) {
1665
- await this.loadMarkets();
1666
- const nonce = this.uuidv1();
1667
- const request = {
1668
- 'nonce': nonce,
1669
- 'wallet': this.walletAddress,
1670
- 'withdrawalId': id,
1671
- };
1672
- const response = await this.privateGetWithdrawals(this.extend(request, params));
1673
- return this.parseTransaction(response);
1674
- }
1675
- /**
1676
- * @method
1677
- * @name idex#fetchWithdrawals
1678
- * @description fetch all withdrawals made from an account
1679
- * @see https://api-docs-v3.idex.io/#get-withdrawals
1680
- * @param {string} code unified currency code
1681
- * @param {int} [since] the earliest time in ms to fetch withdrawals for
1682
- * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1683
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1684
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1685
- */
1686
- async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1687
- params = this.extend({
1688
- 'method': 'privateGetWithdrawals',
1689
- }, params);
1690
- return await this.fetchTransactionsHelper(code, since, limit, params);
1691
- }
1692
- async fetchTransactionsHelper(code = undefined, since = undefined, limit = undefined, params = {}) {
1693
- await this.loadMarkets();
1694
- const nonce = this.uuidv1();
1695
- const request = {
1696
- 'nonce': nonce,
1697
- 'wallet': this.walletAddress,
1698
- };
1699
- let currency = undefined;
1700
- if (code !== undefined) {
1701
- currency = this.currency(code);
1702
- request['asset'] = currency['id'];
1703
- }
1704
- if (since !== undefined) {
1705
- request['start'] = since;
1706
- }
1707
- if (limit !== undefined) {
1708
- request['limit'] = limit;
1709
- }
1710
- // [
1711
- // {
1712
- // "depositId": "e9970cc0-eb6b-11ea-9e89-09a5ebc1f98e",
1713
- // "asset": "ETH",
1714
- // "quantity": "1.00000000",
1715
- // "txId": "0xcd4aac3171d7131cc9e795568c67938675185ac17641553ef54c8a7c294c8142",
1716
- // "txTime": 1598865853000,
1717
- // "confirmationTime": 1598865930231
1718
- // }
1719
- // ]
1720
- const method = params['method'];
1721
- params = this.omit(params, 'method');
1722
- let response = undefined;
1723
- if (method === 'privateGetDeposits') {
1724
- response = await this.privateGetDeposits(this.extend(request, params));
1725
- }
1726
- else if (method === 'privateGetWithdrawals') {
1727
- response = await this.privateGetWithdrawals(this.extend(request, params));
1728
- }
1729
- else {
1730
- throw new NotSupported(this.id + ' fetchTransactionsHelper() not support this method');
1731
- }
1732
- return this.parseTransactions(response, currency, since, limit);
1733
- }
1734
- parseTransactionStatus(status) {
1735
- const statuses = {
1736
- 'mined': 'ok',
1737
- };
1738
- return this.safeString(statuses, status, status);
1739
- }
1740
- parseTransaction(transaction, currency = undefined) {
1741
- //
1742
- // fetchDeposits
1743
- //
1744
- // {
1745
- // "depositId": "e9970cc0-eb6b-11ea-9e89-09a5ebc1f98f",
1746
- // "asset": "ETH",
1747
- // "quantity": "1.00000000",
1748
- // "txId": "0xcd4aac3171d7131cc9e795568c67938675185ac17641553ef54c8a7c294c8142",
1749
- // "txTime": 1598865853000,
1750
- // "confirmationTime": 1598865930231
1751
- // }
1752
- //
1753
- // fetchWithdrwalas
1754
- //
1755
- // {
1756
- // "withdrawalId": "a62d8760-ec4d-11ea-9fa6-47904c19499b",
1757
- // "asset": "ETH",
1758
- // "assetContractAddress": "0x0000000000000000000000000000000000000000",
1759
- // "quantity": "0.20000000",
1760
- // "time": 1598962883288,
1761
- // "fee": "0.00024000",
1762
- // "txId": "0x305e9cdbaa85ad029f50578d13d31d777c085de573ed5334d95c19116d8c03ce",
1763
- // "txStatus": "mined"
1764
- // }
1765
- //
1766
- // withdraw
1767
- //
1768
- // {
1769
- // "withdrawalId": "a61dcff0-ec4d-11ea-8b83-c78a6ecb3180",
1770
- // "asset": "ETH",
1771
- // "assetContractAddress": "0x0000000000000000000000000000000000000000",
1772
- // "quantity": "0.20000000",
1773
- // "time": 1598962883190,
1774
- // "fee": "0.00024000",
1775
- // "txStatus": "pending",
1776
- // "txId": null
1777
- // }
1778
- //
1779
- let type = undefined;
1780
- if ('depositId' in transaction) {
1781
- type = 'deposit';
1782
- }
1783
- else if (('withdrawId' in transaction) || ('withdrawalId' in transaction)) {
1784
- type = 'withdrawal';
1785
- }
1786
- let id = this.safeString2(transaction, 'depositId', 'withdrawId');
1787
- id = this.safeString(transaction, 'withdrawalId', id);
1788
- const code = this.safeCurrencyCode(this.safeString(transaction, 'asset'), currency);
1789
- const amount = this.safeNumber(transaction, 'quantity');
1790
- const txid = this.safeString(transaction, 'txId');
1791
- const timestamp = this.safeInteger2(transaction, 'txTime', 'time');
1792
- let fee = undefined;
1793
- if ('fee' in transaction) {
1794
- fee = {
1795
- 'cost': this.safeNumber(transaction, 'fee'),
1796
- 'currency': 'ETH',
1797
- };
1798
- }
1799
- const rawStatus = this.safeString(transaction, 'txStatus');
1800
- const status = this.parseTransactionStatus(rawStatus);
1801
- const updated = this.safeInteger(transaction, 'confirmationTime');
1802
- return {
1803
- 'info': transaction,
1804
- 'id': id,
1805
- 'txid': txid,
1806
- 'timestamp': timestamp,
1807
- 'datetime': this.iso8601(timestamp),
1808
- 'network': undefined,
1809
- 'address': undefined,
1810
- 'addressTo': undefined,
1811
- 'addressFrom': undefined,
1812
- 'tag': undefined,
1813
- 'tagTo': undefined,
1814
- 'tagFrom': undefined,
1815
- 'type': type,
1816
- 'amount': amount,
1817
- 'currency': code,
1818
- 'status': status,
1819
- 'updated': updated,
1820
- 'comment': undefined,
1821
- 'internal': undefined,
1822
- 'fee': fee,
1823
- };
1824
- }
1825
- calculateRateLimiterCost(api, method, path, params, config = {}) {
1826
- const hasApiKey = (this.apiKey !== undefined);
1827
- const hasSecret = (this.secret !== undefined);
1828
- const hasWalletAddress = (this.walletAddress !== undefined);
1829
- const hasPrivateKey = (this.privateKey !== undefined);
1830
- const defaultCost = this.safeValue(config, 'cost', 1);
1831
- const authenticated = hasApiKey && hasSecret && hasWalletAddress && hasPrivateKey;
1832
- return authenticated ? (defaultCost / 2) : defaultCost;
1833
- }
1834
- /**
1835
- * @method
1836
- * @name idex#fetchDepositAddress
1837
- * @description fetch the Polygon address of the wallet
1838
- * @see https://api-docs-v3.idex.io/#get-wallets
1839
- * @param {string} code not used by idex
1840
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1841
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1842
- */
1843
- async fetchDepositAddress(code, params = {}) {
1844
- const request = {};
1845
- request['nonce'] = this.uuidv1();
1846
- const response = await this.privateGetWallets(this.extend(request, params));
1847
- //
1848
- // [
1849
- // {
1850
- // address: "0x37A1827CA64C94A26028bDCb43FBDCB0bf6DAf5B",
1851
- // totalPortfolioValueUsd: "0.00",
1852
- // time: "1678342148086"
1853
- // },
1854
- // {
1855
- // address: "0x0Ef3456E616552238B0c562d409507Ed6051A7b3",
1856
- // totalPortfolioValueUsd: "15.90",
1857
- // time: "1691697811659"
1858
- // }
1859
- // ]
1860
- //
1861
- return this.parseDepositAddress(response);
1862
- }
1863
- parseDepositAddress(depositAddress, currency = undefined) {
1864
- //
1865
- // [
1866
- // {
1867
- // address: "0x37A1827CA64C94A26028bDCb43FBDCB0bf6DAf5B",
1868
- // totalPortfolioValueUsd: "0.00",
1869
- // time: "1678342148086"
1870
- // },
1871
- // {
1872
- // address: "0x0Ef3456E616552238B0c562d409507Ed6051A7b3",
1873
- // totalPortfolioValueUsd: "15.90",
1874
- // time: "1691697811659"
1875
- // }
1876
- // ]
1877
- //
1878
- const length = depositAddress.length;
1879
- const entry = this.safeDict(depositAddress, length - 1);
1880
- const address = this.safeString(entry, 'address');
1881
- this.checkAddress(address);
1882
- return {
1883
- 'info': depositAddress,
1884
- 'currency': undefined,
1885
- 'network': 'MATIC',
1886
- 'address': address,
1887
- 'tag': undefined,
1888
- };
1889
- }
1890
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1891
- const network = this.safeString(this.options, 'network', 'ETH');
1892
- const version = this.safeString(this.options, 'version', 'v1');
1893
- let url = this.urls['api'][network] + '/' + version + '/' + path;
1894
- const keys = Object.keys(params);
1895
- const length = keys.length;
1896
- let query = undefined;
1897
- if (length > 0) {
1898
- if (method === 'GET') {
1899
- query = this.urlencode(params);
1900
- url = url + '?' + query;
1901
- }
1902
- else {
1903
- body = this.json(params);
1904
- }
1905
- }
1906
- headers = {
1907
- 'Content-Type': 'application/json',
1908
- };
1909
- if (this.apiKey !== undefined) {
1910
- headers['IDEX-API-Key'] = this.apiKey;
1911
- }
1912
- if (api === 'private') {
1913
- let payload = undefined;
1914
- if (method === 'GET') {
1915
- payload = query;
1916
- }
1917
- else {
1918
- payload = body;
1919
- }
1920
- headers['IDEX-HMAC-Signature'] = this.hmac(this.encode(payload), this.encode(this.secret), sha256, 'hex');
1921
- }
1922
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1923
- }
1924
- remove0xPrefix(hexData) {
1925
- if (hexData.slice(0, 2) === '0x') {
1926
- return hexData.slice(2);
1927
- }
1928
- else {
1929
- return hexData;
1930
- }
1931
- }
1932
- hashMessage(message) {
1933
- // takes a hex encoded message
1934
- const binaryMessage = this.base16ToBinary(this.remove0xPrefix(message));
1935
- const prefix = this.encode('\x19Ethereum Signed Message:\n' + binaryMessage.byteLength);
1936
- return '0x' + this.hash(this.binaryConcat(prefix, binaryMessage), keccak, 'hex');
1937
- }
1938
- signHash(hash, privateKey) {
1939
- const signature = ecdsa(hash.slice(-64), privateKey.slice(-64), secp256k1, undefined);
1940
- return {
1941
- 'r': '0x' + signature['r'],
1942
- 's': '0x' + signature['s'],
1943
- 'v': 27 + signature['v'],
1944
- };
1945
- }
1946
- signMessage(message, privateKey) {
1947
- return this.signHash(this.hashMessage(message), privateKey.slice(-64));
1948
- }
1949
- signMessageString(message, privateKey) {
1950
- // still takes the input as a hex string
1951
- // same as above but returns a string instead of an object
1952
- const signature = this.signMessage(message, privateKey);
1953
- return signature['r'] + this.remove0xPrefix(signature['s']) + this.binaryToBase16(this.numberToBE(signature['v'], 1));
1954
- }
1955
- }