ccxt 4.4.98 → 4.4.100

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 (1035) hide show
  1. package/README.md +7 -6
  2. package/dist/373.ccxt.browser.js +7630 -0
  3. package/dist/373.ccxt.browser.min.js +1 -0
  4. package/dist/ccxt.browser.min.js +8 -8
  5. package/dist/cjs/ccxt.js +289 -286
  6. package/dist/cjs/src/abstract/alpaca.js +4 -2
  7. package/dist/cjs/src/abstract/apex.js +4 -2
  8. package/dist/cjs/src/abstract/ascendex.js +4 -2
  9. package/dist/cjs/src/abstract/bigone.js +4 -2
  10. package/dist/cjs/src/abstract/binance.js +4 -2
  11. package/dist/cjs/src/abstract/bingx.js +4 -2
  12. package/dist/cjs/src/abstract/bit2c.js +4 -2
  13. package/dist/cjs/src/abstract/bitbank.js +4 -2
  14. package/dist/cjs/src/abstract/bitbns.js +4 -2
  15. package/dist/cjs/src/abstract/bitfinex.js +4 -2
  16. package/dist/cjs/src/abstract/bitflyer.js +4 -2
  17. package/dist/cjs/src/abstract/bitget.js +4 -2
  18. package/dist/cjs/src/abstract/bithumb.js +4 -2
  19. package/dist/cjs/src/abstract/bitmart.js +4 -2
  20. package/dist/cjs/src/abstract/bitmex.js +4 -2
  21. package/dist/cjs/src/abstract/bitopro.js +4 -2
  22. package/dist/cjs/src/abstract/bitrue.js +4 -2
  23. package/dist/cjs/src/abstract/bitso.js +4 -2
  24. package/dist/cjs/src/abstract/bitstamp.js +4 -2
  25. package/dist/cjs/src/abstract/bitteam.js +4 -2
  26. package/dist/cjs/src/abstract/bittrade.js +4 -2
  27. package/dist/cjs/src/abstract/bitvavo.js +4 -2
  28. package/dist/cjs/src/abstract/blockchaincom.js +4 -2
  29. package/dist/cjs/src/abstract/blofin.js +4 -2
  30. package/dist/cjs/src/abstract/btcalpha.js +4 -2
  31. package/dist/cjs/src/abstract/btcbox.js +4 -2
  32. package/dist/cjs/src/abstract/btcmarkets.js +4 -2
  33. package/dist/cjs/src/abstract/btcturk.js +4 -2
  34. package/dist/cjs/src/abstract/bybit.js +4 -2
  35. package/dist/cjs/src/abstract/cex.js +4 -2
  36. package/dist/cjs/src/abstract/coinbase.js +4 -2
  37. package/dist/cjs/src/abstract/coinbaseexchange.js +4 -2
  38. package/dist/cjs/src/abstract/coinbaseinternational.js +4 -2
  39. package/dist/cjs/src/abstract/coincatch.js +4 -2
  40. package/dist/cjs/src/abstract/coincheck.js +4 -2
  41. package/dist/cjs/src/abstract/coinex.js +4 -2
  42. package/dist/cjs/src/abstract/coinmate.js +4 -2
  43. package/dist/cjs/src/abstract/coinmetro.js +4 -2
  44. package/dist/cjs/src/abstract/coinone.js +4 -2
  45. package/dist/cjs/src/abstract/coinsph.js +4 -2
  46. package/dist/cjs/src/abstract/coinspot.js +4 -2
  47. package/dist/cjs/src/abstract/cryptocom.js +4 -2
  48. package/dist/cjs/src/abstract/cryptomus.js +4 -2
  49. package/dist/cjs/src/abstract/defx.js +4 -2
  50. package/dist/cjs/src/abstract/delta.js +4 -2
  51. package/dist/cjs/src/abstract/deribit.js +4 -2
  52. package/dist/cjs/src/abstract/derive.js +4 -2
  53. package/dist/cjs/src/abstract/digifinex.js +4 -2
  54. package/dist/cjs/src/abstract/ellipx.js +4 -2
  55. package/dist/cjs/src/abstract/exmo.js +4 -2
  56. package/dist/cjs/src/abstract/foxbit.js +4 -2
  57. package/dist/cjs/src/abstract/gate.js +4 -2
  58. package/dist/cjs/src/abstract/gemini.js +4 -2
  59. package/dist/cjs/src/abstract/hashkey.js +4 -2
  60. package/dist/cjs/src/abstract/hibachi.js +11 -0
  61. package/dist/cjs/src/abstract/hitbtc.js +4 -2
  62. package/dist/cjs/src/abstract/hollaex.js +4 -2
  63. package/dist/cjs/src/abstract/htx.js +4 -2
  64. package/dist/cjs/src/abstract/hyperliquid.js +4 -2
  65. package/dist/cjs/src/abstract/independentreserve.js +4 -2
  66. package/dist/cjs/src/abstract/indodax.js +4 -2
  67. package/dist/cjs/src/abstract/kraken.js +4 -2
  68. package/dist/cjs/src/abstract/krakenfutures.js +4 -2
  69. package/dist/cjs/src/abstract/kucoin.js +4 -2
  70. package/dist/cjs/src/abstract/kucoinfutures.js +5 -3
  71. package/dist/cjs/src/abstract/latoken.js +4 -2
  72. package/dist/cjs/src/abstract/lbank.js +4 -2
  73. package/dist/cjs/src/abstract/luno.js +4 -2
  74. package/dist/cjs/src/abstract/mercado.js +4 -2
  75. package/dist/cjs/src/abstract/mexc.js +4 -2
  76. package/dist/cjs/src/abstract/modetrade.js +4 -2
  77. package/dist/cjs/src/abstract/ndax.js +4 -2
  78. package/dist/cjs/src/abstract/novadax.js +4 -2
  79. package/dist/cjs/src/abstract/oceanex.js +4 -2
  80. package/dist/cjs/src/abstract/okcoin.js +4 -2
  81. package/dist/cjs/src/abstract/okx.js +4 -2
  82. package/dist/cjs/src/abstract/onetrading.js +4 -2
  83. package/dist/cjs/src/abstract/oxfun.js +4 -2
  84. package/dist/cjs/src/abstract/p2b.js +4 -2
  85. package/dist/cjs/src/abstract/paradex.js +4 -2
  86. package/dist/cjs/src/abstract/paymium.js +4 -2
  87. package/dist/cjs/src/abstract/phemex.js +4 -2
  88. package/dist/cjs/src/abstract/poloniex.js +4 -2
  89. package/dist/cjs/src/abstract/probit.js +4 -2
  90. package/dist/cjs/src/abstract/timex.js +4 -2
  91. package/dist/cjs/src/abstract/tokocrypto.js +4 -2
  92. package/dist/cjs/src/abstract/tradeogre.js +4 -2
  93. package/dist/cjs/src/abstract/upbit.js +4 -2
  94. package/dist/cjs/src/abstract/vertex.js +4 -2
  95. package/dist/cjs/src/abstract/wavesexchange.js +4 -2
  96. package/dist/cjs/src/abstract/whitebit.js +4 -2
  97. package/dist/cjs/src/abstract/woo.js +4 -2
  98. package/dist/cjs/src/abstract/woofipro.js +4 -2
  99. package/dist/cjs/src/abstract/xt.js +4 -2
  100. package/dist/cjs/src/abstract/yobit.js +4 -2
  101. package/dist/cjs/src/abstract/zaif.js +4 -2
  102. package/dist/cjs/src/abstract/zonda.js +4 -2
  103. package/dist/cjs/src/alpaca.js +5 -3
  104. package/dist/cjs/src/apex.js +5 -3
  105. package/dist/cjs/src/ascendex.js +5 -3
  106. package/dist/cjs/src/base/Exchange.js +51 -11
  107. package/dist/cjs/src/base/Precise.js +0 -6
  108. package/dist/cjs/src/base/errors.js +0 -6
  109. package/dist/cjs/src/base/functions/crypto.js +1 -1
  110. package/dist/cjs/src/base/functions/encode.js +3 -3
  111. package/dist/cjs/src/base/functions/misc.js +0 -1
  112. package/dist/cjs/src/base/functions/number.js +0 -6
  113. package/dist/cjs/src/base/functions/platform.js +0 -6
  114. package/dist/cjs/src/base/functions/rsa.js +0 -1
  115. package/dist/cjs/src/base/functions/string.js +0 -6
  116. package/dist/cjs/src/base/functions/throttle.js +1 -1
  117. package/dist/cjs/src/base/functions/time.js +0 -6
  118. package/dist/cjs/src/base/functions/totp.js +0 -1
  119. package/dist/cjs/src/base/functions/type.js +0 -6
  120. package/dist/cjs/src/base/functions.js +1 -1
  121. package/dist/cjs/src/base/ws/Cache.js +0 -6
  122. package/dist/cjs/src/base/ws/Client.js +8 -3
  123. package/dist/cjs/src/base/ws/Future.js +1 -1
  124. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  125. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  126. package/dist/cjs/src/base/ws/WsClient.js +5 -3
  127. package/dist/cjs/src/bequant.js +5 -3
  128. package/dist/cjs/src/bigone.js +5 -3
  129. package/dist/cjs/src/binance.js +14 -9
  130. package/dist/cjs/src/binancecoinm.js +5 -3
  131. package/dist/cjs/src/binanceus.js +5 -3
  132. package/dist/cjs/src/binanceusdm.js +5 -3
  133. package/dist/cjs/src/bingx.js +37 -5
  134. package/dist/cjs/src/bit2c.js +5 -3
  135. package/dist/cjs/src/bitbank.js +5 -3
  136. package/dist/cjs/src/bitbns.js +5 -3
  137. package/dist/cjs/src/bitfinex.js +8 -3
  138. package/dist/cjs/src/bitflyer.js +5 -3
  139. package/dist/cjs/src/bitget.js +2177 -552
  140. package/dist/cjs/src/bithumb.js +5 -3
  141. package/dist/cjs/src/bitmart.js +5 -3
  142. package/dist/cjs/src/bitmex.js +6 -3
  143. package/dist/cjs/src/bitopro.js +5 -3
  144. package/dist/cjs/src/bitrue.js +5 -3
  145. package/dist/cjs/src/bitso.js +5 -3
  146. package/dist/cjs/src/bitstamp.js +5 -3
  147. package/dist/cjs/src/bitteam.js +5 -3
  148. package/dist/cjs/src/bittrade.js +5 -3
  149. package/dist/cjs/src/bitvavo.js +4 -2
  150. package/dist/cjs/src/blockchaincom.js +5 -3
  151. package/dist/cjs/src/blofin.js +5 -3
  152. package/dist/cjs/src/btcalpha.js +5 -3
  153. package/dist/cjs/src/btcbox.js +5 -3
  154. package/dist/cjs/src/btcmarkets.js +5 -3
  155. package/dist/cjs/src/btcturk.js +5 -3
  156. package/dist/cjs/src/bybit.js +11 -4
  157. package/dist/cjs/src/cex.js +5 -3
  158. package/dist/cjs/src/coinbase.js +4 -2
  159. package/dist/cjs/src/coinbaseadvanced.js +5 -3
  160. package/dist/cjs/src/coinbaseexchange.js +4 -2
  161. package/dist/cjs/src/coinbaseinternational.js +4 -2
  162. package/dist/cjs/src/coincatch.js +5 -3
  163. package/dist/cjs/src/coincheck.js +5 -3
  164. package/dist/cjs/src/coinex.js +73 -7
  165. package/dist/cjs/src/coinmate.js +5 -3
  166. package/dist/cjs/src/coinmetro.js +5 -3
  167. package/dist/cjs/src/coinone.js +5 -3
  168. package/dist/cjs/src/coinsph.js +4 -3
  169. package/dist/cjs/src/coinspot.js +5 -3
  170. package/dist/cjs/src/cryptocom.js +6 -4
  171. package/dist/cjs/src/cryptomus.js +5 -3
  172. package/dist/cjs/src/defx.js +5 -3
  173. package/dist/cjs/src/delta.js +5 -3
  174. package/dist/cjs/src/deribit.js +5 -3
  175. package/dist/cjs/src/derive.js +5 -3
  176. package/dist/cjs/src/digifinex.js +5 -3
  177. package/dist/cjs/src/ellipx.js +5 -3
  178. package/dist/cjs/src/exmo.js +5 -3
  179. package/dist/cjs/src/fmfwio.js +5 -3
  180. package/dist/cjs/src/foxbit.js +8 -7
  181. package/dist/cjs/src/gate.js +27 -5
  182. package/dist/cjs/src/gateio.js +5 -3
  183. package/dist/cjs/src/gemini.js +5 -3
  184. package/dist/cjs/src/hashkey.js +5 -3
  185. package/dist/cjs/src/hibachi.js +2138 -0
  186. package/dist/cjs/src/hitbtc.js +4 -3
  187. package/dist/cjs/src/hollaex.js +5 -3
  188. package/dist/cjs/src/htx.js +6 -3
  189. package/dist/cjs/src/huobi.js +5 -3
  190. package/dist/cjs/src/hyperliquid.js +84 -31
  191. package/dist/cjs/src/independentreserve.js +5 -3
  192. package/dist/cjs/src/indodax.js +5 -3
  193. package/dist/cjs/src/kraken.js +5 -3
  194. package/dist/cjs/src/krakenfutures.js +6 -3
  195. package/dist/cjs/src/kucoin.js +5 -3
  196. package/dist/cjs/src/kucoinfutures.js +6 -3
  197. package/dist/cjs/src/latoken.js +5 -3
  198. package/dist/cjs/src/lbank.js +6 -4
  199. package/dist/cjs/src/luno.js +5 -3
  200. package/dist/cjs/src/mercado.js +5 -3
  201. package/dist/cjs/src/mexc.js +12 -3
  202. package/dist/cjs/src/modetrade.js +101 -3
  203. package/dist/cjs/src/myokx.js +5 -3
  204. package/dist/cjs/src/ndax.js +5 -3
  205. package/dist/cjs/src/novadax.js +39 -3
  206. package/dist/cjs/src/oceanex.js +5 -3
  207. package/dist/cjs/src/okcoin.js +5 -3
  208. package/dist/cjs/src/okx.js +5 -3
  209. package/dist/cjs/src/okxus.js +5 -3
  210. package/dist/cjs/src/onetrading.js +38 -3
  211. package/dist/cjs/src/oxfun.js +5 -3
  212. package/dist/cjs/src/p2b.js +37 -3
  213. package/dist/cjs/src/paradex.js +6 -3
  214. package/dist/cjs/src/paymium.js +5 -3
  215. package/dist/cjs/src/phemex.js +4 -2
  216. package/dist/cjs/src/poloniex.js +5 -3
  217. package/dist/cjs/src/pro/alpaca.js +5 -3
  218. package/dist/cjs/src/pro/apex.js +5 -3
  219. package/dist/cjs/src/pro/ascendex.js +5 -3
  220. package/dist/cjs/src/pro/bequant.js +6 -4
  221. package/dist/cjs/src/pro/binance.js +8 -8
  222. package/dist/cjs/src/pro/binancecoinm.js +6 -4
  223. package/dist/cjs/src/pro/binanceus.js +6 -4
  224. package/dist/cjs/src/pro/binanceusdm.js +5 -3
  225. package/dist/cjs/src/pro/bingx.js +5 -3
  226. package/dist/cjs/src/pro/bitfinex.js +5 -3
  227. package/dist/cjs/src/pro/bitget.js +6 -4
  228. package/dist/cjs/src/pro/bithumb.js +5 -3
  229. package/dist/cjs/src/pro/bitmart.js +5 -3
  230. package/dist/cjs/src/pro/bitmex.js +6 -4
  231. package/dist/cjs/src/pro/bitopro.js +4 -2
  232. package/dist/cjs/src/pro/bitrue.js +5 -3
  233. package/dist/cjs/src/pro/bitstamp.js +6 -4
  234. package/dist/cjs/src/pro/bittrade.js +4 -2
  235. package/dist/cjs/src/pro/bitvavo.js +8 -4
  236. package/dist/cjs/src/pro/blockchaincom.js +5 -3
  237. package/dist/cjs/src/pro/blofin.js +5 -3
  238. package/dist/cjs/src/pro/bybit.js +6 -3
  239. package/dist/cjs/src/pro/cex.js +6 -3
  240. package/dist/cjs/src/pro/coinbase.js +5 -3
  241. package/dist/cjs/src/pro/coinbaseadvanced.js +5 -3
  242. package/dist/cjs/src/pro/coinbaseexchange.js +7 -5
  243. package/dist/cjs/src/pro/coinbaseinternational.js +5 -3
  244. package/dist/cjs/src/pro/coincatch.js +5 -3
  245. package/dist/cjs/src/pro/coincheck.js +5 -3
  246. package/dist/cjs/src/pro/coinex.js +6 -4
  247. package/dist/cjs/src/pro/coinone.js +5 -3
  248. package/dist/cjs/src/pro/cryptocom.js +5 -3
  249. package/dist/cjs/src/pro/defx.js +5 -3
  250. package/dist/cjs/src/pro/deribit.js +5 -3
  251. package/dist/cjs/src/pro/derive.js +4 -2
  252. package/dist/cjs/src/pro/exmo.js +5 -3
  253. package/dist/cjs/src/pro/gate.js +6 -4
  254. package/dist/cjs/src/pro/gateio.js +5 -3
  255. package/dist/cjs/src/pro/gemini.js +5 -3
  256. package/dist/cjs/src/pro/hashkey.js +5 -3
  257. package/dist/cjs/src/pro/hitbtc.js +5 -3
  258. package/dist/cjs/src/pro/hollaex.js +5 -3
  259. package/dist/cjs/src/pro/htx.js +6 -4
  260. package/dist/cjs/src/pro/huobi.js +5 -3
  261. package/dist/cjs/src/pro/hyperliquid.js +108 -15
  262. package/dist/cjs/src/pro/independentreserve.js +5 -3
  263. package/dist/cjs/src/pro/kraken.js +5 -3
  264. package/dist/cjs/src/pro/krakenfutures.js +7 -4
  265. package/dist/cjs/src/pro/kucoin.js +7 -4
  266. package/dist/cjs/src/pro/kucoinfutures.js +7 -4
  267. package/dist/cjs/src/pro/lbank.js +4 -3
  268. package/dist/cjs/src/pro/luno.js +5 -3
  269. package/dist/cjs/src/pro/mexc.js +343 -160
  270. package/dist/cjs/src/pro/modetrade.js +4 -2
  271. package/dist/cjs/src/pro/myokx.js +5 -3
  272. package/dist/cjs/src/pro/ndax.js +5 -3
  273. package/dist/cjs/src/pro/okcoin.js +5 -3
  274. package/dist/cjs/src/pro/okx.js +10 -7
  275. package/dist/cjs/src/pro/okxus.js +5 -3
  276. package/dist/cjs/src/pro/onetrading.js +5 -3
  277. package/dist/cjs/src/pro/oxfun.js +6 -4
  278. package/dist/cjs/src/pro/p2b.js +5 -3
  279. package/dist/cjs/src/pro/paradex.js +5 -3
  280. package/dist/cjs/src/pro/phemex.js +5 -3
  281. package/dist/cjs/src/pro/poloniex.js +5 -3
  282. package/dist/cjs/src/pro/probit.js +5 -3
  283. package/dist/cjs/src/pro/tradeogre.js +5 -3
  284. package/dist/cjs/src/pro/upbit.js +5 -3
  285. package/dist/cjs/src/pro/vertex.js +4 -2
  286. package/dist/cjs/src/pro/whitebit.js +5 -3
  287. package/dist/cjs/src/pro/woo.js +4 -2
  288. package/dist/cjs/src/pro/woofipro.js +4 -2
  289. package/dist/cjs/src/pro/xt.js +5 -3
  290. package/dist/cjs/src/probit.js +40 -3
  291. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +7180 -0
  292. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -7
  293. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  294. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +2 -8
  295. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  296. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  297. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  298. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  299. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  300. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  301. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  302. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  303. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  304. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  305. package/dist/cjs/src/static_dependencies/ethers/fragments.js +2 -8
  306. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +2 -8
  307. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  308. package/dist/cjs/src/static_dependencies/ethers/interface.js +2 -8
  309. package/dist/cjs/src/static_dependencies/ethers/typed.js +2 -8
  310. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  311. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  312. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  313. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +2 -8
  314. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +2 -8
  315. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  316. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  317. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  318. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  319. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  320. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  321. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  323. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  324. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  325. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  326. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  327. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  328. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  329. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  330. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  331. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  332. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  333. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  334. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  335. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  336. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  337. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  338. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  339. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  340. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  341. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  342. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  343. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  344. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  345. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  346. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  347. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  348. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  349. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  350. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  351. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  352. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  353. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  354. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  355. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  356. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  357. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  358. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  359. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  360. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  361. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  362. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  363. package/dist/cjs/src/static_dependencies/node-fetch/index.js +14 -8
  364. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  365. package/dist/cjs/src/static_dependencies/node-fetch/response.js +8 -2
  366. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  367. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  368. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  369. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  370. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  371. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  372. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  373. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  374. package/dist/cjs/src/static_dependencies/qs/index.cjs.js +3 -1
  375. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  376. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  377. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  378. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  379. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  380. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  381. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  382. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  383. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +2 -6
  384. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  385. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  386. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  390. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  391. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  392. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +3 -2
  393. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +8 -8
  394. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  395. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  396. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  397. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +4 -3
  398. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -2
  399. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +4 -3
  400. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +4 -2
  401. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +32 -27
  402. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  403. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  404. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  405. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  406. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  407. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  408. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +3 -3
  409. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  410. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  411. package/dist/cjs/src/timex.js +4 -3
  412. package/dist/cjs/src/tokocrypto.js +5 -3
  413. package/dist/cjs/src/tradeogre.js +5 -3
  414. package/dist/cjs/src/upbit.js +5 -3
  415. package/dist/cjs/src/vertex.js +5 -3
  416. package/dist/cjs/src/wavesexchange.js +5 -3
  417. package/dist/cjs/src/whitebit.js +5 -3
  418. package/dist/cjs/src/woo.js +5 -3
  419. package/dist/cjs/src/woofipro.js +101 -3
  420. package/dist/cjs/src/xt.js +5 -3
  421. package/dist/cjs/src/yobit.js +5 -3
  422. package/dist/cjs/src/zaif.js +5 -3
  423. package/dist/cjs/src/zonda.js +5 -3
  424. package/js/ccxt.d.ts +5 -2
  425. package/js/ccxt.js +4 -8
  426. package/js/src/abstract/alpaca.js +0 -6
  427. package/js/src/abstract/apex.js +0 -6
  428. package/js/src/abstract/ascendex.js +0 -6
  429. package/js/src/abstract/bequant.js +0 -6
  430. package/js/src/abstract/bigone.js +0 -6
  431. package/js/src/abstract/binance.js +0 -6
  432. package/js/src/abstract/binancecoinm.js +0 -6
  433. package/js/src/abstract/binanceus.js +0 -6
  434. package/js/src/abstract/binanceusdm.js +0 -6
  435. package/js/src/abstract/bingx.d.ts +1 -0
  436. package/js/src/abstract/bingx.js +0 -6
  437. package/js/src/abstract/bit2c.js +0 -6
  438. package/js/src/abstract/bitbank.js +0 -6
  439. package/js/src/abstract/bitbns.js +0 -6
  440. package/js/src/abstract/bitfinex.js +0 -6
  441. package/js/src/abstract/bitflyer.js +0 -6
  442. package/js/src/abstract/bitget.d.ts +6 -0
  443. package/js/src/abstract/bitget.js +0 -6
  444. package/js/src/abstract/bithumb.js +0 -6
  445. package/js/src/abstract/bitmart.js +0 -6
  446. package/js/src/abstract/bitmex.js +0 -6
  447. package/js/src/abstract/bitopro.js +0 -6
  448. package/js/src/abstract/bitrue.js +0 -6
  449. package/js/src/abstract/bitso.js +0 -6
  450. package/js/src/abstract/bitstamp.js +0 -6
  451. package/js/src/abstract/bitteam.js +0 -6
  452. package/js/src/abstract/bittrade.js +0 -6
  453. package/js/src/abstract/bitvavo.js +0 -6
  454. package/js/src/abstract/blockchaincom.js +0 -6
  455. package/js/src/abstract/blofin.js +0 -6
  456. package/js/src/abstract/btcalpha.js +0 -6
  457. package/js/src/abstract/btcbox.js +0 -6
  458. package/js/src/abstract/btcmarkets.js +0 -6
  459. package/js/src/abstract/btcturk.js +0 -6
  460. package/js/src/abstract/bybit.js +0 -6
  461. package/js/src/abstract/cex.js +0 -6
  462. package/js/src/abstract/coinbase.js +0 -6
  463. package/js/src/abstract/coinbaseadvanced.js +0 -6
  464. package/js/src/abstract/coinbaseexchange.js +0 -6
  465. package/js/src/abstract/coinbaseinternational.js +0 -6
  466. package/js/src/abstract/coincatch.js +0 -6
  467. package/js/src/abstract/coincheck.js +0 -6
  468. package/js/src/abstract/coinex.js +0 -6
  469. package/js/src/abstract/coinmate.js +0 -6
  470. package/js/src/abstract/coinmetro.js +0 -6
  471. package/js/src/abstract/coinone.js +0 -6
  472. package/js/src/abstract/coinsph.js +0 -6
  473. package/js/src/abstract/coinspot.js +0 -6
  474. package/js/src/abstract/cryptocom.js +0 -6
  475. package/js/src/abstract/cryptomus.js +0 -6
  476. package/js/src/abstract/defx.js +0 -6
  477. package/js/src/abstract/delta.js +0 -6
  478. package/js/src/abstract/deribit.js +0 -6
  479. package/js/src/abstract/derive.js +0 -6
  480. package/js/src/abstract/digifinex.js +0 -6
  481. package/js/src/abstract/ellipx.js +0 -6
  482. package/js/src/abstract/exmo.js +0 -6
  483. package/js/src/abstract/fmfwio.js +0 -6
  484. package/js/src/abstract/foxbit.js +0 -6
  485. package/js/src/abstract/gate.js +0 -6
  486. package/js/src/abstract/gateio.js +0 -6
  487. package/js/src/abstract/gemini.js +0 -6
  488. package/js/src/abstract/hashkey.js +0 -6
  489. package/js/src/abstract/hibachi.d.ts +29 -0
  490. package/js/src/abstract/hibachi.js +5 -0
  491. package/js/src/abstract/hitbtc.js +0 -6
  492. package/js/src/abstract/hollaex.js +0 -6
  493. package/js/src/abstract/htx.js +0 -6
  494. package/js/src/abstract/huobi.js +0 -6
  495. package/js/src/abstract/hyperliquid.js +0 -6
  496. package/js/src/abstract/independentreserve.js +0 -6
  497. package/js/src/abstract/indodax.js +0 -6
  498. package/js/src/abstract/kraken.js +0 -6
  499. package/js/src/abstract/krakenfutures.js +0 -6
  500. package/js/src/abstract/kucoin.js +0 -6
  501. package/js/src/abstract/kucoinfutures.js +0 -6
  502. package/js/src/abstract/latoken.js +0 -6
  503. package/js/src/abstract/lbank.js +0 -6
  504. package/js/src/abstract/luno.js +0 -6
  505. package/js/src/abstract/mercado.js +0 -6
  506. package/js/src/abstract/mexc.js +0 -6
  507. package/js/src/abstract/modetrade.js +0 -6
  508. package/js/src/abstract/myokx.js +0 -6
  509. package/js/src/abstract/ndax.js +0 -6
  510. package/js/src/abstract/novadax.js +0 -6
  511. package/js/src/abstract/oceanex.js +0 -6
  512. package/js/src/abstract/okcoin.js +0 -6
  513. package/js/src/abstract/okx.js +0 -6
  514. package/js/src/abstract/okxus.js +0 -6
  515. package/js/src/abstract/onetrading.js +0 -6
  516. package/js/src/abstract/oxfun.js +0 -6
  517. package/js/src/abstract/p2b.js +0 -6
  518. package/js/src/abstract/paradex.js +0 -6
  519. package/js/src/abstract/paymium.js +0 -6
  520. package/js/src/abstract/phemex.js +0 -6
  521. package/js/src/abstract/poloniex.js +0 -6
  522. package/js/src/abstract/probit.js +0 -6
  523. package/js/src/abstract/timex.js +0 -6
  524. package/js/src/abstract/tokocrypto.js +0 -6
  525. package/js/src/abstract/tradeogre.js +0 -6
  526. package/js/src/abstract/upbit.js +0 -6
  527. package/js/src/abstract/vertex.js +0 -6
  528. package/js/src/abstract/wavesexchange.js +0 -6
  529. package/js/src/abstract/whitebit.js +0 -6
  530. package/js/src/abstract/woo.js +0 -6
  531. package/js/src/abstract/woofipro.js +0 -6
  532. package/js/src/abstract/xt.js +0 -6
  533. package/js/src/abstract/yobit.js +0 -6
  534. package/js/src/abstract/zaif.js +0 -6
  535. package/js/src/abstract/zonda.js +0 -6
  536. package/js/src/alpaca.d.ts +1 -1
  537. package/js/src/alpaca.js +0 -6
  538. package/js/src/apex.d.ts +1 -1
  539. package/js/src/apex.js +0 -6
  540. package/js/src/ascendex.d.ts +1 -1
  541. package/js/src/ascendex.js +0 -6
  542. package/js/src/base/Exchange.d.ts +9 -7
  543. package/js/src/base/Exchange.js +50 -16
  544. package/js/src/base/Precise.js +0 -6
  545. package/js/src/base/errorHierarchy.js +0 -6
  546. package/js/src/base/errors.js +0 -6
  547. package/js/src/base/functions/crypto.js +0 -6
  548. package/js/src/base/functions/encode.js +0 -6
  549. package/js/src/base/functions/generic.js +0 -6
  550. package/js/src/base/functions/misc.js +0 -6
  551. package/js/src/base/functions/number.js +0 -6
  552. package/js/src/base/functions/platform.js +0 -6
  553. package/js/src/base/functions/rsa.js +0 -6
  554. package/js/src/base/functions/string.js +0 -6
  555. package/js/src/base/functions/throttle.js +0 -6
  556. package/js/src/base/functions/time.js +0 -6
  557. package/js/src/base/functions/totp.js +0 -6
  558. package/js/src/base/functions/type.js +0 -6
  559. package/js/src/base/functions.js +0 -6
  560. package/js/src/base/types.d.ts +2 -1
  561. package/js/src/base/types.js +0 -6
  562. package/js/src/base/ws/Cache.js +0 -6
  563. package/js/src/base/ws/Client.d.ts +1 -0
  564. package/js/src/base/ws/Client.js +5 -7
  565. package/js/src/base/ws/Future.js +0 -6
  566. package/js/src/base/ws/OrderBook.js +0 -6
  567. package/js/src/base/ws/OrderBookSide.js +0 -6
  568. package/js/src/base/ws/WsClient.js +0 -6
  569. package/js/src/base/ws/functions.js +0 -6
  570. package/js/src/bequant.js +0 -6
  571. package/js/src/bigone.d.ts +1 -1
  572. package/js/src/bigone.js +0 -6
  573. package/js/src/binance.d.ts +2 -2
  574. package/js/src/binance.js +9 -12
  575. package/js/src/binancecoinm.js +0 -6
  576. package/js/src/binanceus.js +0 -6
  577. package/js/src/binanceusdm.js +0 -6
  578. package/js/src/bingx.d.ts +3 -2
  579. package/js/src/bingx.js +32 -8
  580. package/js/src/bit2c.js +0 -6
  581. package/js/src/bitbank.d.ts +1 -1
  582. package/js/src/bitbank.js +0 -6
  583. package/js/src/bitbns.js +0 -6
  584. package/js/src/bitfinex.d.ts +1 -1
  585. package/js/src/bitfinex.js +3 -6
  586. package/js/src/bitflyer.d.ts +1 -1
  587. package/js/src/bitflyer.js +0 -6
  588. package/js/src/bitget.d.ts +77 -9
  589. package/js/src/bitget.js +2172 -555
  590. package/js/src/bithumb.d.ts +1 -1
  591. package/js/src/bithumb.js +0 -6
  592. package/js/src/bitmart.d.ts +2 -2
  593. package/js/src/bitmart.js +0 -6
  594. package/js/src/bitmex.d.ts +2 -2
  595. package/js/src/bitmex.js +1 -6
  596. package/js/src/bitopro.d.ts +1 -1
  597. package/js/src/bitopro.js +0 -6
  598. package/js/src/bitrue.d.ts +2 -2
  599. package/js/src/bitrue.js +0 -6
  600. package/js/src/bitso.d.ts +1 -1
  601. package/js/src/bitso.js +0 -6
  602. package/js/src/bitstamp.d.ts +1 -1
  603. package/js/src/bitstamp.js +0 -6
  604. package/js/src/bitteam.js +0 -6
  605. package/js/src/bittrade.d.ts +1 -1
  606. package/js/src/bittrade.js +0 -6
  607. package/js/src/bitvavo.d.ts +1 -1
  608. package/js/src/bitvavo.js +0 -6
  609. package/js/src/blockchaincom.d.ts +1 -1
  610. package/js/src/blockchaincom.js +0 -6
  611. package/js/src/blofin.d.ts +1 -1
  612. package/js/src/blofin.js +0 -6
  613. package/js/src/btcalpha.js +0 -6
  614. package/js/src/btcbox.js +0 -6
  615. package/js/src/btcmarkets.d.ts +1 -1
  616. package/js/src/btcmarkets.js +0 -6
  617. package/js/src/btcturk.js +0 -6
  618. package/js/src/bybit.d.ts +2 -2
  619. package/js/src/bybit.js +6 -7
  620. package/js/src/cex.js +0 -6
  621. package/js/src/coinbase.d.ts +1 -1
  622. package/js/src/coinbase.js +0 -6
  623. package/js/src/coinbaseadvanced.js +0 -6
  624. package/js/src/coinbaseexchange.d.ts +1 -1
  625. package/js/src/coinbaseexchange.js +0 -6
  626. package/js/src/coinbaseinternational.d.ts +1 -1
  627. package/js/src/coinbaseinternational.js +0 -6
  628. package/js/src/coincatch.d.ts +2 -2
  629. package/js/src/coincatch.js +0 -6
  630. package/js/src/coincheck.js +0 -6
  631. package/js/src/coinex.d.ts +13 -3
  632. package/js/src/coinex.js +68 -10
  633. package/js/src/coinmate.d.ts +1 -1
  634. package/js/src/coinmate.js +0 -6
  635. package/js/src/coinmetro.js +0 -6
  636. package/js/src/coinone.js +0 -6
  637. package/js/src/coinsph.d.ts +1 -1
  638. package/js/src/coinsph.js +0 -6
  639. package/js/src/coinspot.js +0 -6
  640. package/js/src/cryptocom.d.ts +1 -1
  641. package/js/src/cryptocom.js +1 -7
  642. package/js/src/cryptomus.js +0 -6
  643. package/js/src/defx.d.ts +2 -2
  644. package/js/src/defx.js +0 -6
  645. package/js/src/delta.d.ts +1 -1
  646. package/js/src/delta.js +0 -6
  647. package/js/src/deribit.d.ts +1 -1
  648. package/js/src/deribit.js +0 -6
  649. package/js/src/derive.js +0 -6
  650. package/js/src/digifinex.d.ts +2 -2
  651. package/js/src/digifinex.js +0 -6
  652. package/js/src/ellipx.d.ts +1 -1
  653. package/js/src/ellipx.js +0 -6
  654. package/js/src/exmo.d.ts +1 -1
  655. package/js/src/exmo.js +0 -6
  656. package/js/src/fmfwio.js +0 -6
  657. package/js/src/foxbit.d.ts +1 -1
  658. package/js/src/foxbit.js +3 -9
  659. package/js/src/gate.d.ts +2 -2
  660. package/js/src/gate.js +22 -8
  661. package/js/src/gateio.js +0 -6
  662. package/js/src/gemini.d.ts +1 -1
  663. package/js/src/gemini.js +0 -6
  664. package/js/src/hashkey.d.ts +3 -3
  665. package/js/src/hashkey.js +0 -6
  666. package/js/src/hibachi.d.ts +346 -0
  667. package/js/src/hibachi.js +2131 -0
  668. package/js/src/hitbtc.d.ts +2 -2
  669. package/js/src/hitbtc.js +0 -6
  670. package/js/src/hollaex.d.ts +1 -1
  671. package/js/src/hollaex.js +0 -6
  672. package/js/src/htx.d.ts +3 -3
  673. package/js/src/htx.js +1 -6
  674. package/js/src/huobi.js +0 -6
  675. package/js/src/hyperliquid.d.ts +12 -2
  676. package/js/src/hyperliquid.js +79 -34
  677. package/js/src/independentreserve.d.ts +1 -1
  678. package/js/src/independentreserve.js +0 -6
  679. package/js/src/indodax.d.ts +1 -1
  680. package/js/src/indodax.js +0 -6
  681. package/js/src/kraken.d.ts +1 -1
  682. package/js/src/kraken.js +0 -6
  683. package/js/src/krakenfutures.d.ts +1 -1
  684. package/js/src/krakenfutures.js +1 -6
  685. package/js/src/kucoin.d.ts +2 -2
  686. package/js/src/kucoin.js +0 -6
  687. package/js/src/kucoinfutures.d.ts +3 -2
  688. package/js/src/kucoinfutures.js +1 -6
  689. package/js/src/latoken.js +0 -6
  690. package/js/src/lbank.d.ts +1 -1
  691. package/js/src/lbank.js +1 -7
  692. package/js/src/luno.js +0 -6
  693. package/js/src/mercado.d.ts +1 -1
  694. package/js/src/mercado.js +0 -6
  695. package/js/src/mexc.d.ts +2 -2
  696. package/js/src/mexc.js +7 -6
  697. package/js/src/modetrade.d.ts +26 -3
  698. package/js/src/modetrade.js +96 -6
  699. package/js/src/myokx.js +0 -6
  700. package/js/src/ndax.d.ts +1 -1
  701. package/js/src/ndax.js +0 -6
  702. package/js/src/novadax.d.ts +1 -1
  703. package/js/src/novadax.js +34 -6
  704. package/js/src/oceanex.js +0 -6
  705. package/js/src/okcoin.d.ts +1 -1
  706. package/js/src/okcoin.js +0 -6
  707. package/js/src/okx.d.ts +2 -2
  708. package/js/src/okx.js +0 -6
  709. package/js/src/okxus.js +0 -6
  710. package/js/src/onetrading.js +33 -6
  711. package/js/src/oxfun.d.ts +1 -1
  712. package/js/src/oxfun.js +0 -6
  713. package/js/src/p2b.js +32 -6
  714. package/js/src/paradex.d.ts +1 -1
  715. package/js/src/paradex.js +1 -6
  716. package/js/src/paymium.js +0 -6
  717. package/js/src/phemex.d.ts +2 -2
  718. package/js/src/phemex.js +0 -6
  719. package/js/src/poloniex.d.ts +2 -2
  720. package/js/src/poloniex.js +0 -6
  721. package/js/src/pro/alpaca.d.ts +2 -2
  722. package/js/src/pro/alpaca.js +0 -6
  723. package/js/src/pro/apex.d.ts +2 -2
  724. package/js/src/pro/apex.js +0 -6
  725. package/js/src/pro/ascendex.d.ts +2 -2
  726. package/js/src/pro/ascendex.js +0 -6
  727. package/js/src/pro/bequant.js +0 -6
  728. package/js/src/pro/binance.d.ts +2 -2
  729. package/js/src/pro/binance.js +4 -12
  730. package/js/src/pro/binancecoinm.js +0 -6
  731. package/js/src/pro/binanceus.js +0 -6
  732. package/js/src/pro/binanceusdm.js +0 -6
  733. package/js/src/pro/bingx.js +0 -6
  734. package/js/src/pro/bitfinex.js +0 -6
  735. package/js/src/pro/bitget.d.ts +2 -2
  736. package/js/src/pro/bitget.js +1 -7
  737. package/js/src/pro/bithumb.d.ts +2 -2
  738. package/js/src/pro/bithumb.js +0 -6
  739. package/js/src/pro/bitmart.d.ts +2 -2
  740. package/js/src/pro/bitmart.js +0 -6
  741. package/js/src/pro/bitmex.d.ts +3 -3
  742. package/js/src/pro/bitmex.js +1 -7
  743. package/js/src/pro/bitopro.js +0 -6
  744. package/js/src/pro/bitrue.js +0 -6
  745. package/js/src/pro/bitstamp.d.ts +2 -2
  746. package/js/src/pro/bitstamp.js +1 -7
  747. package/js/src/pro/bittrade.d.ts +2 -2
  748. package/js/src/pro/bittrade.js +0 -6
  749. package/js/src/pro/bitvavo.d.ts +2 -2
  750. package/js/src/pro/bitvavo.js +3 -7
  751. package/js/src/pro/blockchaincom.js +0 -6
  752. package/js/src/pro/blofin.js +0 -6
  753. package/js/src/pro/bybit.d.ts +4 -4
  754. package/js/src/pro/bybit.js +1 -6
  755. package/js/src/pro/cex.d.ts +2 -2
  756. package/js/src/pro/cex.js +1 -6
  757. package/js/src/pro/coinbase.js +0 -6
  758. package/js/src/pro/coinbaseadvanced.js +0 -6
  759. package/js/src/pro/coinbaseexchange.d.ts +4 -4
  760. package/js/src/pro/coinbaseexchange.js +2 -8
  761. package/js/src/pro/coinbaseinternational.d.ts +2 -2
  762. package/js/src/pro/coinbaseinternational.js +0 -6
  763. package/js/src/pro/coincatch.d.ts +2 -2
  764. package/js/src/pro/coincatch.js +0 -6
  765. package/js/src/pro/coincheck.js +0 -6
  766. package/js/src/pro/coinex.js +1 -7
  767. package/js/src/pro/coinone.d.ts +2 -2
  768. package/js/src/pro/coinone.js +0 -6
  769. package/js/src/pro/cryptocom.d.ts +2 -2
  770. package/js/src/pro/cryptocom.js +0 -6
  771. package/js/src/pro/defx.js +0 -6
  772. package/js/src/pro/deribit.js +0 -6
  773. package/js/src/pro/derive.d.ts +2 -2
  774. package/js/src/pro/derive.js +0 -6
  775. package/js/src/pro/exmo.js +0 -6
  776. package/js/src/pro/gate.d.ts +3 -3
  777. package/js/src/pro/gate.js +1 -7
  778. package/js/src/pro/gateio.js +0 -6
  779. package/js/src/pro/gemini.js +0 -6
  780. package/js/src/pro/hashkey.js +0 -6
  781. package/js/src/pro/hitbtc.js +0 -6
  782. package/js/src/pro/hollaex.d.ts +2 -2
  783. package/js/src/pro/hollaex.js +0 -6
  784. package/js/src/pro/htx.d.ts +2 -2
  785. package/js/src/pro/htx.js +1 -7
  786. package/js/src/pro/huobi.js +0 -6
  787. package/js/src/pro/hyperliquid.d.ts +28 -2
  788. package/js/src/pro/hyperliquid.js +103 -18
  789. package/js/src/pro/independentreserve.js +0 -6
  790. package/js/src/pro/kraken.d.ts +2 -2
  791. package/js/src/pro/kraken.js +0 -6
  792. package/js/src/pro/krakenfutures.d.ts +3 -3
  793. package/js/src/pro/krakenfutures.js +2 -7
  794. package/js/src/pro/kucoin.d.ts +2 -2
  795. package/js/src/pro/kucoin.js +2 -7
  796. package/js/src/pro/kucoinfutures.d.ts +2 -2
  797. package/js/src/pro/kucoinfutures.js +2 -7
  798. package/js/src/pro/lbank.js +0 -6
  799. package/js/src/pro/luno.js +0 -6
  800. package/js/src/pro/mexc.d.ts +9 -6
  801. package/js/src/pro/mexc.js +338 -163
  802. package/js/src/pro/modetrade.d.ts +2 -2
  803. package/js/src/pro/modetrade.js +0 -6
  804. package/js/src/pro/myokx.js +0 -6
  805. package/js/src/pro/ndax.js +0 -6
  806. package/js/src/pro/okcoin.d.ts +2 -2
  807. package/js/src/pro/okcoin.js +0 -6
  808. package/js/src/pro/okx.d.ts +4 -4
  809. package/js/src/pro/okx.js +5 -10
  810. package/js/src/pro/okxus.js +0 -6
  811. package/js/src/pro/onetrading.d.ts +2 -2
  812. package/js/src/pro/onetrading.js +0 -6
  813. package/js/src/pro/oxfun.js +1 -7
  814. package/js/src/pro/p2b.d.ts +2 -2
  815. package/js/src/pro/p2b.js +0 -6
  816. package/js/src/pro/paradex.d.ts +2 -2
  817. package/js/src/pro/paradex.js +0 -6
  818. package/js/src/pro/phemex.js +0 -6
  819. package/js/src/pro/poloniex.d.ts +2 -2
  820. package/js/src/pro/poloniex.js +0 -6
  821. package/js/src/pro/probit.d.ts +2 -2
  822. package/js/src/pro/probit.js +0 -6
  823. package/js/src/pro/tradeogre.js +0 -6
  824. package/js/src/pro/upbit.js +0 -6
  825. package/js/src/pro/vertex.d.ts +2 -2
  826. package/js/src/pro/vertex.js +0 -6
  827. package/js/src/pro/whitebit.d.ts +2 -2
  828. package/js/src/pro/whitebit.js +0 -6
  829. package/js/src/pro/woo.d.ts +2 -2
  830. package/js/src/pro/woo.js +0 -6
  831. package/js/src/pro/woofipro.d.ts +2 -2
  832. package/js/src/pro/woofipro.js +0 -6
  833. package/js/src/pro/xt.js +0 -6
  834. package/js/src/probit.d.ts +1 -1
  835. package/js/src/probit.js +35 -6
  836. package/js/src/protobuf/mexc/compiled.cjs +7180 -0
  837. package/js/src/protobuf/mexc/compiled.d.cts +2 -0
  838. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  839. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  840. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  841. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  842. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  843. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  844. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  845. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  846. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  847. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  848. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  849. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  850. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  851. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  852. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  853. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  854. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  855. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  856. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  857. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  858. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  859. package/js/src/static_dependencies/ethers/index.js +0 -6
  860. package/js/src/static_dependencies/ethers/interface.js +0 -6
  861. package/js/src/static_dependencies/ethers/typed.js +0 -6
  862. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  863. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  864. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  865. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  866. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  867. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  868. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  869. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  870. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  871. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  872. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  873. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  874. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  875. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  876. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  877. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  878. package/js/src/static_dependencies/fflake/browser.js +0 -6
  879. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  880. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  881. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  882. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  883. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  884. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  885. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  886. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  887. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  888. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  889. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  890. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  891. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  892. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  893. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  894. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  895. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  896. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  897. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  898. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  899. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  900. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  901. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  902. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  903. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  904. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  905. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  906. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  907. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  908. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  909. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  910. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  911. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  912. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  913. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  914. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  915. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  916. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  917. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  918. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  919. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  920. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  921. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  922. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  923. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  924. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  925. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  926. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  927. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  928. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  929. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  930. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  931. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  932. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  933. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  934. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  935. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  936. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  937. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  938. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  939. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  940. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  941. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  942. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  943. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  944. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  945. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  946. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  947. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  948. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  949. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  950. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  951. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  952. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  953. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  954. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  955. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  956. package/js/src/static_dependencies/qs/formats.cjs +0 -6
  957. package/js/src/static_dependencies/qs/index.cjs +0 -6
  958. package/js/src/static_dependencies/qs/parse.cjs +0 -6
  959. package/js/src/static_dependencies/qs/stringify.cjs +0 -6
  960. package/js/src/static_dependencies/qs/utils.cjs +0 -6
  961. package/js/src/static_dependencies/scure-base/index.js +0 -6
  962. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  963. package/js/src/static_dependencies/starknet/constants.js +0 -6
  964. package/js/src/static_dependencies/starknet/index.js +0 -6
  965. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  966. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  967. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  968. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  969. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  970. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  971. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  972. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  973. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  974. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  975. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  976. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  977. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  978. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  979. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  980. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  981. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  982. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  983. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  984. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  985. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  986. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  987. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  988. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  989. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  990. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  991. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  992. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  993. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  994. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  995. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  996. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  997. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  998. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  999. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  1000. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  1001. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  1002. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  1003. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  1004. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  1005. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  1006. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  1007. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  1008. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  1009. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  1010. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  1011. package/js/src/timex.js +0 -6
  1012. package/js/src/tokocrypto.d.ts +1 -1
  1013. package/js/src/tokocrypto.js +0 -6
  1014. package/js/src/tradeogre.js +0 -6
  1015. package/js/src/upbit.d.ts +1 -1
  1016. package/js/src/upbit.js +0 -6
  1017. package/js/src/vertex.d.ts +1 -1
  1018. package/js/src/vertex.js +0 -6
  1019. package/js/src/wavesexchange.d.ts +1 -1
  1020. package/js/src/wavesexchange.js +0 -6
  1021. package/js/src/whitebit.d.ts +2 -2
  1022. package/js/src/whitebit.js +0 -6
  1023. package/js/src/woo.d.ts +4 -4
  1024. package/js/src/woo.js +0 -6
  1025. package/js/src/woofipro.d.ts +26 -3
  1026. package/js/src/woofipro.js +96 -6
  1027. package/js/src/xt.d.ts +3 -3
  1028. package/js/src/xt.js +0 -6
  1029. package/js/src/yobit.d.ts +1 -1
  1030. package/js/src/yobit.js +0 -6
  1031. package/js/src/zaif.d.ts +1 -1
  1032. package/js/src/zaif.js +0 -6
  1033. package/js/src/zonda.d.ts +1 -1
  1034. package/js/src/zonda.js +0 -6
  1035. package/package.json +4 -3
@@ -0,0 +1,2138 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var hibachi$1 = require('./abstract/hibachi.js');
6
+ var number = require('./base/functions/number.js');
7
+ var crypto = require('./base/functions/crypto.js');
8
+ var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
9
+ var secp256k1 = require('./static_dependencies/noble-curves/secp256k1.js');
10
+ var Precise = require('./base/Precise.js');
11
+ var errors = require('./base/errors.js');
12
+
13
+ // ---------------------------------------------------------------------------
14
+ // ---------------------------------------------------------------------------
15
+ /**
16
+ * @class hibachi
17
+ * @augments Exchange
18
+ */
19
+ class hibachi extends hibachi$1["default"] {
20
+ describe() {
21
+ return this.deepExtend(super.describe(), {
22
+ 'id': 'hibachi',
23
+ 'name': 'Hibachi',
24
+ 'countries': ['US'],
25
+ 'rateLimit': 100,
26
+ 'userAgent': this.userAgents['chrome'],
27
+ 'certified': false,
28
+ 'pro': false,
29
+ 'dex': true,
30
+ 'has': {
31
+ 'CORS': undefined,
32
+ 'spot': false,
33
+ 'margin': false,
34
+ 'swap': true,
35
+ 'future': false,
36
+ 'option': false,
37
+ 'addMargin': false,
38
+ 'cancelAllOrders': true,
39
+ 'cancelOrder': true,
40
+ 'cancelOrders': true,
41
+ 'cancelWithdraw': false,
42
+ 'closeAllPositions': false,
43
+ 'closePosition': false,
44
+ 'createConvertTrade': false,
45
+ 'createDepositAddress': false,
46
+ 'createMarketBuyOrderWithCost': false,
47
+ 'createMarketOrder': false,
48
+ 'createMarketOrderWithCost': false,
49
+ 'createMarketSellOrderWithCost': false,
50
+ 'createOrder': true,
51
+ 'createOrders': true,
52
+ 'createOrderWithTakeProfitAndStopLoss': false,
53
+ 'createReduceOnlyOrder': false,
54
+ 'createStopLimitOrder': false,
55
+ 'createStopLossOrder': false,
56
+ 'createStopMarketOrder': false,
57
+ 'createStopOrder': false,
58
+ 'createTakeProfitOrder': false,
59
+ 'createTrailingAmountOrder': false,
60
+ 'createTrailingPercentOrder': false,
61
+ 'createTriggerOrder': false,
62
+ 'editOrder': true,
63
+ 'editOrders': true,
64
+ 'fetchAccounts': false,
65
+ 'fetchBalance': true,
66
+ 'fetchCanceledOrders': false,
67
+ 'fetchClosedOrder': false,
68
+ 'fetchClosedOrders': false,
69
+ 'fetchConvertCurrencies': false,
70
+ 'fetchConvertQuote': false,
71
+ 'fetchCurrencies': true,
72
+ 'fetchDepositAddress': true,
73
+ 'fetchDeposits': true,
74
+ 'fetchDepositsWithdrawals': false,
75
+ 'fetchFundingHistory': false,
76
+ 'fetchFundingInterval': false,
77
+ 'fetchFundingIntervals': false,
78
+ 'fetchFundingRate': true,
79
+ 'fetchFundingRateHistory': true,
80
+ 'fetchFundingRates': false,
81
+ 'fetchIndexOHLCV': false,
82
+ 'fetchLedger': true,
83
+ 'fetchLeverage': false,
84
+ 'fetchMarginAdjustmentHistory': false,
85
+ 'fetchMarginMode': false,
86
+ 'fetchMarkets': true,
87
+ 'fetchMyTrades': true,
88
+ 'fetchOHLCV': true,
89
+ 'fetchOpenInterest': true,
90
+ 'fetchOpenInterestHistory': false,
91
+ 'fetchOpenOrder': false,
92
+ 'fetchOpenOrders': true,
93
+ 'fetchOrder': true,
94
+ 'fetchOrderBook': true,
95
+ 'fetchOrders': false,
96
+ 'fetchOrderTrades': false,
97
+ 'fetchPosition': false,
98
+ 'fetchPositionMode': false,
99
+ 'fetchPositions': true,
100
+ 'fetchPremiumIndexOHLCV': false,
101
+ 'fetchStatus': false,
102
+ 'fetchTicker': true,
103
+ 'fetchTickers': false,
104
+ 'fetchTime': true,
105
+ 'fetchTrades': true,
106
+ 'fetchTradingFee': false,
107
+ 'fetchTradingFees': true,
108
+ 'fetchTradingLimits': false,
109
+ 'fetchTransactions': 'emulated',
110
+ 'fetchTransfers': false,
111
+ 'fetchWithdrawals': true,
112
+ 'reduceMargin': false,
113
+ 'setLeverage': false,
114
+ 'setMargin': false,
115
+ 'setPositionMode': false,
116
+ 'transfer': false,
117
+ 'withdraw': true,
118
+ },
119
+ 'timeframes': {
120
+ '1m': '1min',
121
+ '5m': '5min',
122
+ '15m': '15min',
123
+ '1h': '1h',
124
+ '4h': '4h',
125
+ '1d': '1d',
126
+ '1w': '1w',
127
+ },
128
+ 'urls': {
129
+ 'logo': 'https://github.com/user-attachments/assets/7301bbb1-4f27-4167-8a55-75f74b14e973',
130
+ 'api': {
131
+ 'public': 'https://data-api.hibachi.xyz',
132
+ 'private': 'https://api.hibachi.xyz',
133
+ },
134
+ 'www': 'https://www.hibachi.xyz/',
135
+ 'referral': {
136
+ 'url': 'hibachi.xyz/r/ZBL2YFWIHU',
137
+ },
138
+ },
139
+ 'api': {
140
+ 'public': {
141
+ 'get': {
142
+ 'market/exchange-info': 1,
143
+ 'market/data/trades': 1,
144
+ 'market/data/prices': 1,
145
+ 'market/data/stats': 1,
146
+ 'market/data/klines': 1,
147
+ 'market/data/orderbook': 1,
148
+ 'market/data/open-interest': 1,
149
+ 'market/data/funding-rates': 1,
150
+ 'exchange/utc-timestamp': 1,
151
+ },
152
+ },
153
+ 'private': {
154
+ 'get': {
155
+ 'capital/deposit-info': 1,
156
+ 'capital/history': 1,
157
+ 'trade/account/trading_history': 1,
158
+ 'trade/account/info': 1,
159
+ 'trade/order': 1,
160
+ 'trade/account/trades': 1,
161
+ 'trade/orders': 1,
162
+ },
163
+ 'put': {
164
+ 'trade/order': 1,
165
+ },
166
+ 'delete': {
167
+ 'trade/order': 1,
168
+ 'trade/orders': 1,
169
+ },
170
+ 'post': {
171
+ 'trade/order': 1,
172
+ 'trade/orders': 1,
173
+ 'capital/withdraw': 1,
174
+ },
175
+ },
176
+ },
177
+ 'requiredCredentials': {
178
+ 'apiKey': true,
179
+ 'secret': false,
180
+ 'accountId': true,
181
+ 'privateKey': true,
182
+ },
183
+ 'fees': {
184
+ 'trading': {
185
+ 'tierBased': false,
186
+ 'percentage': true,
187
+ 'maker': this.parseNumber('0.00015'),
188
+ 'taker': this.parseNumber('0.00045'),
189
+ },
190
+ },
191
+ 'options': {},
192
+ 'features': {
193
+ 'default': {
194
+ 'sandbox': false,
195
+ 'createOrder': {
196
+ 'marginMode': false,
197
+ 'triggerPrice': true,
198
+ 'triggerPriceType': undefined,
199
+ 'triggerDirection': undefined,
200
+ 'stopLossPrice': false,
201
+ 'takeProfitPrice': false,
202
+ 'attachedStopLossTakeProfit': undefined,
203
+ 'timeInForce': {
204
+ 'IOC': true,
205
+ 'FOK': false,
206
+ 'PO': true,
207
+ 'GTD': false,
208
+ },
209
+ 'hedged': false,
210
+ 'trailing': false,
211
+ 'leverage': false,
212
+ 'marketBuyByCost': false,
213
+ 'marketBuyRequiresPrice': false,
214
+ 'selfTradePrevention': false,
215
+ 'iceberg': false,
216
+ },
217
+ 'createOrders': undefined,
218
+ 'fetchMyTrades': {
219
+ 'marginMode': false,
220
+ 'limit': undefined,
221
+ 'daysBack': undefined,
222
+ 'untilDays': undefined,
223
+ 'symbolRequired': false,
224
+ },
225
+ 'fetchOrder': {
226
+ 'marginMode': false,
227
+ 'trigger': false,
228
+ 'trailing': false,
229
+ 'symbolRequired': false,
230
+ },
231
+ 'fetchOpenOrders': {
232
+ 'marginMode': false,
233
+ 'limit': undefined,
234
+ 'trigger': false,
235
+ 'trailing': false,
236
+ 'symbolRequired': false,
237
+ },
238
+ 'fetchOrders': undefined,
239
+ 'fetchClosedOrders': undefined,
240
+ 'fetchOHLCV': {
241
+ 'limit': undefined,
242
+ },
243
+ },
244
+ 'swap': {
245
+ 'linear': {
246
+ 'extends': 'default',
247
+ },
248
+ 'inverse': undefined,
249
+ },
250
+ 'future': {
251
+ 'linear': {
252
+ 'extends': 'default',
253
+ },
254
+ 'inverse': undefined,
255
+ },
256
+ },
257
+ 'commonCurrencies': {},
258
+ 'exceptions': {
259
+ 'exact': {
260
+ '2': errors.BadRequest,
261
+ '3': errors.OrderNotFound,
262
+ '4': errors.BadRequest, // {"errorCode":4,"message":"Missing accountId","status":"failed"}
263
+ },
264
+ 'broad': {},
265
+ },
266
+ 'precisionMode': number.TICK_SIZE,
267
+ });
268
+ }
269
+ getAccountId() {
270
+ this.checkRequiredCredentials();
271
+ const id = this.parseToInt(this.accountId);
272
+ return id;
273
+ }
274
+ parseMarket(market) {
275
+ const marketId = this.safeString(market, 'symbol');
276
+ const numericId = this.safeNumber(market, 'id');
277
+ const marketType = 'swap';
278
+ const baseId = this.safeString(market, 'underlyingSymbol');
279
+ const quoteId = this.safeString(market, 'settlementSymbol');
280
+ const base = this.safeCurrencyCode(baseId);
281
+ const quote = this.safeCurrencyCode(quoteId);
282
+ const settleId = this.safeString(market, 'settlementSymbol');
283
+ const settle = this.safeCurrencyCode(settleId);
284
+ const symbol = base + '/' + quote + ':' + settle;
285
+ const created = this.safeIntegerProduct(market, 'marketCreationTimestamp', 1000);
286
+ return {
287
+ 'id': marketId,
288
+ 'numericId': numericId,
289
+ 'symbol': symbol,
290
+ 'base': base,
291
+ 'quote': quote,
292
+ 'settle': settle,
293
+ 'baseId': baseId,
294
+ 'quoteId': quoteId,
295
+ 'settleId': settleId,
296
+ 'type': marketType,
297
+ 'spot': false,
298
+ 'margin': false,
299
+ 'swap': true,
300
+ 'future': false,
301
+ 'option': false,
302
+ 'active': this.safeString(market, 'status') === 'LIVE',
303
+ 'contract': true,
304
+ 'linear': true,
305
+ 'inverse': false,
306
+ 'contractSize': this.parseNumber('1'),
307
+ 'expiry': undefined,
308
+ 'expiryDatetime': undefined,
309
+ 'strike': undefined,
310
+ 'optionType': undefined,
311
+ 'precision': {
312
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'underlyingDecimals'))),
313
+ 'price': this.parseNumber(this.safeList(market, 'orderbookGranularities')[0]) / 10000.0,
314
+ },
315
+ 'limits': {
316
+ 'leverage': {
317
+ 'min': undefined,
318
+ 'max': undefined,
319
+ },
320
+ 'amount': {
321
+ 'min': undefined,
322
+ 'max': undefined,
323
+ },
324
+ 'price': {
325
+ 'min': undefined,
326
+ 'max': undefined,
327
+ },
328
+ 'cost': {
329
+ 'min': this.safeNumber(market, 'minNotional'),
330
+ 'max': undefined,
331
+ },
332
+ },
333
+ 'created': created,
334
+ 'info': market,
335
+ };
336
+ }
337
+ /**
338
+ * @method
339
+ * @name hibachi#fetchMarkets
340
+ * @description retrieves data on all markets for hibachi
341
+ * @see https://api-doc.hibachi.xyz/#183981da-8df5-40a0-a155-da15015dd536
342
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
343
+ * @returns {object[]} an array of objects representing market data
344
+ */
345
+ async fetchMarkets(params = {}) {
346
+ const response = await this.publicGetMarketExchangeInfo(params);
347
+ // {
348
+ // "displayName": "ETH/USDT Perps",
349
+ // "id": 1,
350
+ // "maintenanceFactorForPositions": "0.030000",
351
+ // "marketCloseTimestamp": null,
352
+ // "marketOpenTimestamp": null,
353
+ // "minNotional": "1",
354
+ // "minOrderSize": "0.000000001",
355
+ // "orderbookGranularities": [
356
+ // "0.01",
357
+ // "0.1",
358
+ // "1",
359
+ // "10"
360
+ // ],
361
+ // "riskFactorForOrders": "0.066667",
362
+ // "riskFactorForPositions": "0.030000",
363
+ // "settlementDecimals": 6,
364
+ // "settlementSymbol": "USDT",
365
+ // "status": "LIVE",
366
+ // "stepSize": "0.000000001",
367
+ // "symbol": "ETH/USDT-P",
368
+ // "tickSize": "0.000001",
369
+ // "underlyingDecimals": 9,
370
+ // "underlyingSymbol": "ETH"
371
+ // },
372
+ const rows = this.safeList(response, 'futureContracts');
373
+ return this.parseMarkets(rows);
374
+ }
375
+ /**
376
+ * @method
377
+ * @name hibachi#fetchCurrencies
378
+ * @description fetches all available currencies on an exchange
379
+ * @see https://api-doc.hibachi.xyz/#183981da-8df5-40a0-a155-da15015dd536
380
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
381
+ * @returns {object} an associative dictionary of currencies
382
+ */
383
+ async fetchCurrencies(params = {}) {
384
+ // Hibachi only supports USDT on Arbitrum at this time
385
+ // We don't have an API endpoint to expose this information yet
386
+ const result = {};
387
+ const networks = {};
388
+ const networkId = 'ARBITRUM';
389
+ networks[networkId] = {
390
+ 'id': networkId,
391
+ 'network': networkId,
392
+ 'limits': {
393
+ 'withdraw': {
394
+ 'min': undefined,
395
+ 'max': undefined,
396
+ },
397
+ 'deposit': {
398
+ 'min': undefined,
399
+ 'max': undefined,
400
+ },
401
+ },
402
+ 'active': undefined,
403
+ 'deposit': undefined,
404
+ 'withdraw': undefined,
405
+ 'info': {},
406
+ };
407
+ const code = this.safeCurrencyCode('USDT');
408
+ result[code] = this.safeCurrencyStructure({
409
+ 'id': 'USDT',
410
+ 'name': 'USDT',
411
+ 'type': 'fiat',
412
+ 'code': code,
413
+ 'precision': this.parseNumber('0.000001'),
414
+ 'active': true,
415
+ 'fee': undefined,
416
+ 'networks': networks,
417
+ 'deposit': true,
418
+ 'withdraw': true,
419
+ 'limits': {
420
+ 'deposit': {
421
+ 'min': undefined,
422
+ 'max': undefined,
423
+ },
424
+ 'withdraw': {
425
+ 'min': undefined,
426
+ 'max': undefined,
427
+ },
428
+ },
429
+ 'info': {},
430
+ });
431
+ return result;
432
+ }
433
+ parseBalance(response) {
434
+ const result = {
435
+ 'info': response,
436
+ };
437
+ // Hibachi only supports USDT on Arbitrum at this time
438
+ const code = this.safeCurrencyCode('USDT');
439
+ const account = this.account();
440
+ account['total'] = this.safeString(response, 'balance');
441
+ account['free'] = this.safeString(response, 'maximalWithdraw');
442
+ result[code] = account;
443
+ return this.safeBalance(result);
444
+ }
445
+ /**
446
+ * @method
447
+ * @name hibachi#fetchBalance
448
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
449
+ * @see https://api-doc.hibachi.xyz/#69aafedb-8274-4e21-bbaf-91dace8b8f31
450
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
451
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
452
+ */
453
+ async fetchBalance(params = {}) {
454
+ const request = {
455
+ 'accountId': this.getAccountId(),
456
+ };
457
+ const response = await this.privateGetTradeAccountInfo(this.extend(request, params));
458
+ //
459
+ // {
460
+ // assets: [ { quantity: '3.000000', symbol: 'USDT' } ],
461
+ // balance: '3.000000',
462
+ // maximalWithdraw: '3.000000',
463
+ // numFreeTransfersRemaining: '100',
464
+ // positions: [],
465
+ // totalOrderNotional: '0.000000',
466
+ // totalPositionNotional: '0.000000',
467
+ // totalUnrealizedFundingPnl: '0.000000',
468
+ // totalUnrealizedPnl: '0.000000',
469
+ // totalUnrealizedTradingPnl: '0.000000',
470
+ // tradeMakerFeeRate: '0.00000000',
471
+ // tradeTakerFeeRate: '0.00020000'
472
+ // }
473
+ //
474
+ return this.parseBalance(response);
475
+ }
476
+ parseTicker(ticker, market = undefined) {
477
+ const prices = this.safeDict(ticker, 'prices');
478
+ const stats = this.safeDict(ticker, 'stats');
479
+ const bid = this.safeNumber(prices, 'bidPrice');
480
+ const ask = this.safeNumber(prices, 'askPrice');
481
+ const last = this.safeNumber(prices, 'tradePrice');
482
+ const high = this.safeNumber(stats, 'high24h');
483
+ const low = this.safeNumber(stats, 'low24h');
484
+ const volume = this.safeNumber(stats, 'volume24h');
485
+ return this.safeTicker({
486
+ 'symbol': this.safeSymbol(undefined, market),
487
+ 'timestamp': undefined,
488
+ 'datetime': undefined,
489
+ 'bid': bid,
490
+ 'ask': ask,
491
+ 'last': last,
492
+ 'high': high,
493
+ 'low': low,
494
+ 'bidVolume': undefined,
495
+ 'askVolume': undefined,
496
+ 'vwap': undefined,
497
+ 'open': undefined,
498
+ 'close': last,
499
+ 'previousClose': undefined,
500
+ 'change': undefined,
501
+ 'percentage': undefined,
502
+ 'average': undefined,
503
+ 'baseVolume': undefined,
504
+ 'quoteVolume': volume,
505
+ 'info': ticker,
506
+ }, market);
507
+ }
508
+ parseTrade(trade, market = undefined) {
509
+ // public fetchTrades:
510
+ // {
511
+ // "price": "3512.431902",
512
+ // "quantity": "1.414780098",
513
+ // "takerSide": "Buy",
514
+ // "timestamp": 1712692147
515
+ // }
516
+ //
517
+ // private fetchMyTrades:
518
+ // {
519
+ // "askAccountId": 221,
520
+ // "askOrderId": 589168494921909200,
521
+ // "bidAccountId": 132,
522
+ // "bidOrderId": 589168494829895700,
523
+ // "fee": "0.000477",
524
+ // "id": 199511136,
525
+ // "orderType": "MARKET",
526
+ // "price": "119257.90000",
527
+ // "quantity": "0.0000200000",
528
+ // "realizedPnl": "-0.000352",
529
+ // "side": "Sell",
530
+ // "symbol": "BTC/USDT-P",
531
+ // "timestamp": 1752543391
532
+ // }
533
+ const marketId = this.safeString(trade, 'symbol');
534
+ market = this.safeMarket(marketId, market);
535
+ const symbol = market['symbol'];
536
+ const id = this.safeString(trade, 'id');
537
+ const price = this.safeString(trade, 'price');
538
+ const amount = this.safeString(trade, 'quantity');
539
+ const timestamp = this.safeIntegerProduct(trade, 'timestamp', 1000);
540
+ const cost = Precise["default"].stringMul(price, amount);
541
+ let side = undefined;
542
+ let fee = undefined;
543
+ let orderType = undefined;
544
+ let orderId = undefined;
545
+ let takerOrMaker = undefined;
546
+ if (id === undefined) {
547
+ // public trades
548
+ side = this.safeStringLower(trade, 'takerSide');
549
+ takerOrMaker = 'taker';
550
+ }
551
+ else {
552
+ // private trades
553
+ side = this.safeStringLower(trade, 'side');
554
+ fee = { 'cost': this.safeString(trade, 'fee'), 'currency': 'USDT' };
555
+ orderType = this.safeStringLower(trade, 'orderType');
556
+ if (side === 'buy') {
557
+ orderId = this.safeString(trade, 'bidOrderId');
558
+ }
559
+ else {
560
+ orderId = this.safeString(trade, 'askOrderId');
561
+ }
562
+ }
563
+ return this.safeTrade({
564
+ 'id': id,
565
+ 'timestamp': timestamp,
566
+ 'datetime': this.iso8601(timestamp),
567
+ 'symbol': symbol,
568
+ 'side': side,
569
+ 'price': price,
570
+ 'amount': amount,
571
+ 'cost': cost,
572
+ 'order': orderId,
573
+ 'takerOrMaker': takerOrMaker,
574
+ 'type': orderType,
575
+ 'fee': fee,
576
+ 'info': trade,
577
+ }, market);
578
+ }
579
+ /**
580
+ * @method
581
+ * @name hibachi#fetchTrades
582
+ * @description get the list of most recent trades for a particular symbol
583
+ * @see https://api-doc.hibachi.xyz/#86a53bc1-d3bb-4b93-8a11-7034d4698caa
584
+ * @param {string} symbol unified market symbol
585
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
586
+ * @param {int} [limit] the maximum amount of trades to fetch (maximum value is 100)
587
+ * @param {object} [params] extra parameters specific to the hibachi api endpoint
588
+ * @returns {object[]} a list of recent [trade structures]
589
+ */
590
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
591
+ await this.loadMarkets();
592
+ const market = this.market(symbol);
593
+ const request = {
594
+ 'symbol': market['id'],
595
+ };
596
+ const response = await this.publicGetMarketDataTrades(this.extend(request, params));
597
+ //
598
+ // {
599
+ // "trades": [
600
+ // {
601
+ // "price": "111091.38352",
602
+ // "quantity": "0.0090090093",
603
+ // "takerSide": "Buy",
604
+ // "timestamp": 1752095479
605
+ // },
606
+ // ]
607
+ // }
608
+ //
609
+ const trades = this.safeList(response, 'trades', []);
610
+ return this.parseTrades(trades, market);
611
+ }
612
+ /**
613
+ * @method
614
+ * @name hibachi#fetchTicker
615
+ * @see https://api-doc.hibachi.xyz/#4abb30c4-e5c7-4b0f-9ade-790111dbfa47
616
+ * @description fetches a price ticker and the related information for the past 24h
617
+ * @param {string} symbol unified symbol of the market
618
+ * @param {object} [params] extra parameters specific to the hibachi api endpoint
619
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
620
+ */
621
+ async fetchTicker(symbol, params = {}) {
622
+ await this.loadMarkets();
623
+ const market = this.market(symbol);
624
+ const request = {
625
+ 'symbol': market['id'],
626
+ };
627
+ const rawPromises = [
628
+ this.publicGetMarketDataPrices(this.extend(request, params)),
629
+ this.publicGetMarketDataStats(this.extend(request, params)),
630
+ ];
631
+ const promises = await Promise.all(rawPromises);
632
+ const pricesResponse = promises[0];
633
+ // {
634
+ // "askPrice": "3514.650296",
635
+ // "bidPrice": "3513.596112",
636
+ // "fundingRateEstimation": {
637
+ // "estimatedFundingRate": "0.000001",
638
+ // "nextFundingTimestamp": 1712707200
639
+ // },
640
+ // "markPrice": "3514.288858",
641
+ // "spotPrice": "3514.715000",
642
+ // "symbol": "ETH/USDT-P",
643
+ // "tradePrice": "2372.746570"
644
+ // }
645
+ const statsResponse = promises[1];
646
+ // {
647
+ // "high24h": "3819.507827",
648
+ // "low24h": "3754.474162",
649
+ // "symbol": "ETH/USDT-P",
650
+ // "volume24h": "23554.858590416"
651
+ // }
652
+ const ticker = {
653
+ 'prices': pricesResponse,
654
+ 'stats': statsResponse,
655
+ };
656
+ return this.parseTicker(ticker, market);
657
+ }
658
+ parseOrderStatus(status) {
659
+ const statuses = {
660
+ 'PENDING': 'open',
661
+ 'CHILD_PENDING': 'open',
662
+ 'SCHEDULED_TWAP': 'open',
663
+ 'PLACED': 'open',
664
+ 'PARTIALLY_FILLED': 'open',
665
+ 'FILLED': 'closed',
666
+ 'CANCELLED': 'canceled',
667
+ 'REJECTED': 'rejected',
668
+ };
669
+ return this.safeString(statuses, status, status);
670
+ }
671
+ parseOrder(order, market = undefined) {
672
+ const marketId = this.safeString(order, 'symbol');
673
+ market = this.safeMarket(marketId, market);
674
+ const status = this.safeString(order, 'status');
675
+ const type = this.safeStringLower(order, 'orderType');
676
+ const price = this.safeString(order, 'price');
677
+ const rawSide = this.safeString(order, 'side');
678
+ let side = undefined;
679
+ if (rawSide === 'BID') {
680
+ side = 'buy';
681
+ }
682
+ else if (rawSide === 'ASK') {
683
+ side = 'sell';
684
+ }
685
+ const amount = this.safeString(order, 'totalQuantity');
686
+ const remaining = this.safeString(order, 'availableQuantity');
687
+ const totalQuantity = this.safeString(order, 'totalQuantity');
688
+ const availableQuantity = this.safeString(order, 'availableQuantity');
689
+ let filled = undefined;
690
+ if (totalQuantity !== undefined && availableQuantity !== undefined) {
691
+ filled = Precise["default"].stringSub(totalQuantity, availableQuantity);
692
+ }
693
+ let timeInForce = 'GTC';
694
+ const orderFlags = this.safeValue(order, 'orderFlags');
695
+ let postOnly = false;
696
+ let reduceOnly = false;
697
+ if (orderFlags === 'POST_ONLY') {
698
+ timeInForce = 'PO';
699
+ postOnly = true;
700
+ }
701
+ else if (orderFlags === 'IOC') {
702
+ timeInForce = 'IOC';
703
+ }
704
+ else if (orderFlags === 'REDUCE_ONLY') {
705
+ reduceOnly = true;
706
+ }
707
+ return this.safeOrder({
708
+ 'info': order,
709
+ 'id': this.safeString(order, 'orderId'),
710
+ 'clientOrderId': undefined,
711
+ 'datetime': undefined,
712
+ 'timestamp': undefined,
713
+ 'lastTradeTimestamp': undefined,
714
+ 'lastUpdateTimestamp': undefined,
715
+ 'status': this.parseOrderStatus(status),
716
+ 'symbol': market['symbol'],
717
+ 'type': type,
718
+ 'timeInForce': timeInForce,
719
+ 'side': side,
720
+ 'price': price,
721
+ 'average': undefined,
722
+ 'amount': amount,
723
+ 'filled': filled,
724
+ 'remaining': remaining,
725
+ 'cost': undefined,
726
+ 'trades': undefined,
727
+ 'fee': undefined,
728
+ 'reduceOnly': reduceOnly,
729
+ 'postOnly': postOnly,
730
+ 'triggerPrice': this.safeNumber(order, 'triggerPrice'),
731
+ }, market);
732
+ }
733
+ /**
734
+ * @method
735
+ * @name hibachi#fetchOrder
736
+ * @description fetches information on an order made by the user
737
+ * @see https://api-doc.hibachi.xyz/#096a8854-b918-4de8-8731-b2a28d26b96d
738
+ * @param {string} id the order id
739
+ * @param {string} symbol unified symbol of the market the order was made in
740
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
741
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
742
+ */
743
+ async fetchOrder(id, symbol = undefined, params = {}) {
744
+ await this.loadMarkets();
745
+ let market = undefined;
746
+ if (symbol !== undefined) {
747
+ market = this.market(symbol);
748
+ }
749
+ const request = {
750
+ 'orderId': id,
751
+ 'accountId': this.getAccountId(),
752
+ };
753
+ const response = await this.privateGetTradeOrder(this.extend(request, params));
754
+ return this.parseOrder(response, market);
755
+ }
756
+ /**
757
+ * @method
758
+ * @name hibachi#fetchTradingFees
759
+ * @description fetch the trading fee
760
+ * @param params extra parameters
761
+ * @returns {object} a map of market symbols to [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
762
+ */
763
+ async fetchTradingFees(params = {}) {
764
+ await this.loadMarkets();
765
+ const request = {
766
+ 'accountId': this.getAccountId(),
767
+ };
768
+ const response = await this.privateGetTradeAccountInfo(this.extend(request, params));
769
+ // {
770
+ // "tradeMakerFeeRate": "0.00000000",
771
+ // "tradeTakerFeeRate": "0.00020000"
772
+ // },
773
+ const makerFeeRate = this.safeNumber(response, 'tradeMakerFeeRate');
774
+ const takerFeeRate = this.safeNumber(response, 'tradeTakerFeeRate');
775
+ const result = {};
776
+ for (let i = 0; i < this.symbols.length; i++) {
777
+ const symbol = this.symbols[i];
778
+ result[symbol] = {
779
+ 'info': response,
780
+ 'symbol': symbol,
781
+ 'maker': makerFeeRate,
782
+ 'taker': takerFeeRate,
783
+ 'percentage': true,
784
+ };
785
+ }
786
+ return result;
787
+ }
788
+ orderMessage(market, nonce, feeRate, type, side, amount, price = undefined) {
789
+ let sideInternal = 0;
790
+ if (side === 'sell') {
791
+ sideInternal = 0;
792
+ }
793
+ else if (side === 'buy') {
794
+ sideInternal = 1;
795
+ }
796
+ // Converting them to internal representation:
797
+ // - Quantity: Internal = External * (10^underlyingDecimals)
798
+ // - Price: Internal = External * (2^32) * (10^(settlementDecimals-underlyingDecimals))
799
+ // - FeeRate: Internal = External * (10^8)
800
+ const amountStr = this.amountToPrecision(this.safeString(market, 'symbol'), amount);
801
+ const feeRateStr = this.numberToString(feeRate);
802
+ const info = this.safeDict(market, 'info');
803
+ const underlying = '1e' + this.safeString(info, 'underlyingDecimals');
804
+ const settlement = '1e' + this.safeString(info, 'settlementDecimals');
805
+ const one = '1';
806
+ const feeRateFactor = '100000000'; // 10^8
807
+ const priceFactor = '4294967296'; // 2^32
808
+ const quantityInternal = Precise["default"].stringDiv(Precise["default"].stringMul(amountStr, underlying), one, 0);
809
+ const feeRateInternal = Precise["default"].stringDiv(Precise["default"].stringMul(feeRateStr, feeRateFactor), one, 0);
810
+ // Encoding
811
+ const nonce16 = this.intToBase16(nonce);
812
+ const noncePadded = nonce16.padStart(16, '0');
813
+ const encodedNonce = this.base16ToBinary(noncePadded);
814
+ const numericId = this.intToBase16(this.safeInteger(market, 'numericId'));
815
+ const numericIdPadded = numericId.padStart(8, '0');
816
+ const encodedMarketId = this.base16ToBinary(numericIdPadded);
817
+ const quantity16 = this.intToBase16(this.parseToInt(quantityInternal));
818
+ const quantityPadded = quantity16.padStart(16, '0');
819
+ const encodedQuantity = this.base16ToBinary(quantityPadded);
820
+ const sideInternal16 = this.intToBase16(sideInternal);
821
+ const sidePadded = sideInternal16.padStart(8, '0');
822
+ const encodedSide = this.base16ToBinary(sidePadded);
823
+ const feeRateInternal16 = this.intToBase16(this.parseToInt(feeRateInternal));
824
+ const feeRatePadded = feeRateInternal16.padStart(16, '0');
825
+ const encodedFeeRate = this.base16ToBinary(feeRatePadded);
826
+ let encodedPrice = this.binaryConcat();
827
+ if (type === 'limit') {
828
+ const priceStr = this.priceToPrecision(this.safeString(market, 'symbol'), price);
829
+ const priceInternal = Precise["default"].stringDiv(Precise["default"].stringDiv(Precise["default"].stringMul(Precise["default"].stringMul(priceStr, priceFactor), settlement), underlying), one, 0);
830
+ const price16 = this.intToBase16(this.parseToInt(priceInternal));
831
+ const pricePadded = price16.padStart(16, '0');
832
+ encodedPrice = this.base16ToBinary(pricePadded);
833
+ }
834
+ const message = this.binaryConcat(encodedNonce, encodedMarketId, encodedQuantity, encodedSide, encodedPrice, encodedFeeRate);
835
+ return message;
836
+ }
837
+ createOrderRequest(nonce, symbol, type, side, amount, price = undefined, params = {}) {
838
+ const market = this.market(symbol);
839
+ const feeRate = Math.max(this.safeNumber(market, 'taker'), this.safeNumber(market, 'maker'));
840
+ let sideInternal = '';
841
+ if (side === 'sell') {
842
+ sideInternal = 'ASK';
843
+ }
844
+ else if (side === 'buy') {
845
+ sideInternal = 'BID';
846
+ }
847
+ let priceInternal = '';
848
+ if (price) {
849
+ priceInternal = this.priceToPrecision(symbol, price);
850
+ }
851
+ const message = this.orderMessage(market, nonce, feeRate, type, side, amount, price);
852
+ const signature = this.signMessage(message, this.privateKey);
853
+ const request = {
854
+ 'symbol': this.safeString(market, 'id'),
855
+ 'nonce': nonce,
856
+ 'side': sideInternal,
857
+ 'orderType': type.toUpperCase(),
858
+ 'quantity': this.amountToPrecision(symbol, amount),
859
+ 'price': priceInternal,
860
+ 'signature': signature,
861
+ 'maxFeesPercent': this.numberToString(feeRate),
862
+ };
863
+ const postOnly = this.isPostOnly(type.toUpperCase() === 'MARKET', undefined, params);
864
+ const reduceOnly = this.safeBool2(params, 'reduceOnly', 'reduce_only');
865
+ const timeInForce = this.safeStringLower(params, 'timeInForce');
866
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
867
+ if (postOnly) {
868
+ request['orderFlags'] = 'POST_ONLY';
869
+ }
870
+ else if (timeInForce === 'ioc') {
871
+ request['orderFlags'] = 'IOC';
872
+ }
873
+ else if (reduceOnly) {
874
+ request['orderFlags'] = 'REDUCE_ONLY';
875
+ }
876
+ if (triggerPrice !== undefined) {
877
+ request['triggerPrice'] = triggerPrice;
878
+ }
879
+ params = this.omit(params, ['reduceOnly', 'reduce_only', 'postOnly', 'timeInForce', 'stopPrice', 'triggerPrice']);
880
+ return this.extend(request, params);
881
+ }
882
+ /**
883
+ * @method
884
+ * @name hibachi#createOrder
885
+ * @description create a trade order
886
+ * @see https://api-doc.hibachi.xyz/#00f6d5ad-5275-41cb-a1a8-19ed5d142124
887
+ * @param {string} symbol unified symbol of the market to create an order in
888
+ * @param {string} type 'market' or 'limit'
889
+ * @param {string} side 'buy' or 'sell'
890
+ * @param {float} amount how much of currency you want to trade in units of base currency
891
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
892
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
893
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
894
+ */
895
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
896
+ await this.loadMarkets();
897
+ const nonce = this.nonce();
898
+ const request = this.createOrderRequest(nonce, symbol, type, side, amount, price, params);
899
+ request['accountId'] = this.getAccountId();
900
+ const response = await this.privatePostTradeOrder(request);
901
+ //
902
+ // {
903
+ // "orderId": "578721673790138368"
904
+ // }
905
+ //
906
+ return this.safeOrder({
907
+ 'id': this.safeString(response, 'orderId'),
908
+ 'status': 'pending',
909
+ });
910
+ }
911
+ /**
912
+ * @method
913
+ * @name hibachi#createOrders
914
+ * @description *contract only* create a list of trade orders
915
+ * @see https://api-doc.hibachi.xyz/#c2840b9b-f02c-44ed-937d-dc2819f135b4
916
+ * @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
917
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
918
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
919
+ */
920
+ async createOrders(orders, params = {}) {
921
+ await this.loadMarkets();
922
+ const nonce = this.nonce();
923
+ const requestOrders = [];
924
+ for (let i = 0; i < orders.length; i++) {
925
+ const rawOrder = orders[i];
926
+ const symbol = this.safeString(rawOrder, 'symbol');
927
+ const type = this.safeString(rawOrder, 'type');
928
+ const side = this.safeString(rawOrder, 'side');
929
+ const amount = this.safeValue(rawOrder, 'amount');
930
+ const price = this.safeValue(rawOrder, 'price');
931
+ const orderParams = this.safeDict(rawOrder, 'params', {});
932
+ const orderRequest = this.createOrderRequest(nonce + i, symbol, type, side, amount, price, orderParams);
933
+ orderRequest['action'] = 'place';
934
+ requestOrders.push(orderRequest);
935
+ }
936
+ const request = {
937
+ 'accountId': this.getAccountId(),
938
+ 'orders': requestOrders,
939
+ };
940
+ const response = await this.privatePostTradeOrders(this.extend(request, params));
941
+ //
942
+ // { "orders": [ { nonce: '1754349993908', orderId: '589642085255349248' } ] }
943
+ //
944
+ const ret = [];
945
+ const responseOrders = this.safeList(response, 'orders');
946
+ for (let i = 0; i < responseOrders.length; i++) {
947
+ const responseOrder = responseOrders[i];
948
+ ret.push(this.safeOrder({
949
+ 'info': responseOrder,
950
+ 'id': this.safeString(responseOrder, 'orderId'),
951
+ 'status': 'pending',
952
+ }));
953
+ }
954
+ return ret;
955
+ }
956
+ editOrderRequest(nonce, id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
957
+ const market = this.market(symbol);
958
+ const feeRate = Math.max(this.safeNumber(market, 'taker'), this.safeNumber(market, 'maker'));
959
+ const message = this.orderMessage(market, nonce, feeRate, type, side, amount, price);
960
+ const signature = this.signMessage(message, this.privateKey);
961
+ const request = {
962
+ 'orderId': id,
963
+ 'nonce': nonce,
964
+ 'updatedQuantity': this.amountToPrecision(symbol, amount),
965
+ 'updatedPrice': this.priceToPrecision(symbol, price),
966
+ 'maxFeesPercent': this.numberToString(feeRate),
967
+ 'signature': signature,
968
+ };
969
+ return this.extend(request, params);
970
+ }
971
+ /**
972
+ * @method
973
+ * @name hibachi#editOrder
974
+ * @description edit a limit order that is not matched
975
+ * @see https://api-doc.hibachi.xyz/#94d2cdaf-1c71-440f-a981-da1112824810
976
+ * @param {string} id order id
977
+ * @param {string} symbol unified symbol of the market to create an order in
978
+ * @param {string} type must be 'limit'
979
+ * @param {string} side 'buy' or 'sell', should stay the same with original side
980
+ * @param {float} amount how much of currency you want to trade in units of base currency
981
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency
982
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
983
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
984
+ */
985
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
986
+ await this.loadMarkets();
987
+ const nonce = this.nonce();
988
+ const request = this.editOrderRequest(nonce, id, symbol, type, side, amount, price, params);
989
+ request['accountId'] = this.getAccountId();
990
+ await this.privatePutTradeOrder(request);
991
+ // At this time the response body is empty. A 200 response means the update request is accepted and sent to process
992
+ //
993
+ // {}
994
+ //
995
+ return this.safeOrder({
996
+ 'id': id,
997
+ 'status': 'pending',
998
+ });
999
+ }
1000
+ /**
1001
+ * @method
1002
+ * @name hibachi#editOrders
1003
+ * @description edit a list of trade orders
1004
+ * @see https://api-doc.hibachi.xyz/#c2840b9b-f02c-44ed-937d-dc2819f135b4
1005
+ * @param {Array} orders list of orders to edit, each object should contain the parameters required by editOrder, namely id, symbol, type, side, amount, price and params
1006
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1007
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1008
+ */
1009
+ async editOrders(orders, params = {}) {
1010
+ await this.loadMarkets();
1011
+ const nonce = this.nonce();
1012
+ const requestOrders = [];
1013
+ for (let i = 0; i < orders.length; i++) {
1014
+ const rawOrder = orders[i];
1015
+ const id = this.safeString(rawOrder, 'id');
1016
+ const symbol = this.safeString(rawOrder, 'symbol');
1017
+ const type = this.safeString(rawOrder, 'type');
1018
+ const side = this.safeString(rawOrder, 'side');
1019
+ const amount = this.safeValue(rawOrder, 'amount');
1020
+ const price = this.safeValue(rawOrder, 'price');
1021
+ const orderParams = this.safeDict(rawOrder, 'params', {});
1022
+ const orderRequest = this.editOrderRequest(nonce + i, id, symbol, type, side, amount, price, orderParams);
1023
+ orderRequest['action'] = 'modify';
1024
+ requestOrders.push(orderRequest);
1025
+ }
1026
+ const request = {
1027
+ 'accountId': this.getAccountId(),
1028
+ 'orders': requestOrders,
1029
+ };
1030
+ const response = await this.privatePostTradeOrders(this.extend(request, params));
1031
+ //
1032
+ // { "orders": [ { "orderId": "589636801329628160" } ] }
1033
+ //
1034
+ const ret = [];
1035
+ const responseOrders = this.safeList(response, 'orders');
1036
+ for (let i = 0; i < responseOrders.length; i++) {
1037
+ const responseOrder = responseOrders[i];
1038
+ ret.push(this.safeOrder({
1039
+ 'info': responseOrder,
1040
+ 'id': this.safeString(responseOrder, 'orderId'),
1041
+ 'status': 'pending',
1042
+ }));
1043
+ }
1044
+ return ret;
1045
+ }
1046
+ cancelOrderRequest(id) {
1047
+ const bigid = this.convertToBigInt(id);
1048
+ const idbase16 = this.intToBase16(bigid);
1049
+ const idPadded = idbase16.padStart(16, '0');
1050
+ const message = this.base16ToBinary(idPadded);
1051
+ const signature = this.signMessage(message, this.privateKey);
1052
+ return {
1053
+ 'orderId': id,
1054
+ 'signature': signature,
1055
+ };
1056
+ }
1057
+ /**
1058
+ * @method
1059
+ * @name hibachi#cancelOrder
1060
+ * @see https://api-doc.hibachi.xyz/#e99c4f48-e610-4b7c-b7f6-1b4bb7af0271
1061
+ * @description cancels an open order
1062
+ * @param {string} id order id
1063
+ * @param {string} symbol is unused
1064
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1065
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1066
+ */
1067
+ async cancelOrder(id, symbol = undefined, params = {}) {
1068
+ const request = this.cancelOrderRequest(id);
1069
+ request['accountId'] = this.getAccountId();
1070
+ const response = await this.privateDeleteTradeOrder(this.extend(request, params));
1071
+ // At this time the response body is empty. A 200 response means the cancel request is accepted and sent to cancel
1072
+ //
1073
+ // {}
1074
+ //
1075
+ return this.safeOrder({
1076
+ 'info': response,
1077
+ 'id': id,
1078
+ 'status': 'canceled',
1079
+ });
1080
+ }
1081
+ /**
1082
+ * @method
1083
+ * @name hibachi#cancelOrders
1084
+ * @description cancel multiple orders
1085
+ * @see https://api-doc.hibachi.xyz/#c2840b9b-f02c-44ed-937d-dc2819f135b4
1086
+ * @param {string[]} ids order ids
1087
+ * @param {string} [symbol] unified market symbol, unused
1088
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1089
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1090
+ */
1091
+ async cancelOrders(ids, symbol = undefined, params = {}) {
1092
+ const orders = [];
1093
+ for (let i = 0; i < ids.length; i++) {
1094
+ const orderRequest = this.cancelOrderRequest(ids[i]);
1095
+ orderRequest['action'] = 'cancel';
1096
+ orders.push(orderRequest);
1097
+ }
1098
+ const request = {
1099
+ 'accountId': this.getAccountId(),
1100
+ 'orders': orders,
1101
+ };
1102
+ const response = await this.privatePostTradeOrders(this.extend(request, params));
1103
+ //
1104
+ // { "orders": [ { "orderId": "589636801329628160" } ] }
1105
+ //
1106
+ const ret = [];
1107
+ const responseOrders = this.safeList(response, 'orders');
1108
+ for (let i = 0; i < responseOrders.length; i++) {
1109
+ const responseOrder = responseOrders[i];
1110
+ ret.push(this.safeOrder({
1111
+ 'info': responseOrder,
1112
+ 'id': this.safeString(responseOrder, 'orderId'),
1113
+ 'status': 'canceled',
1114
+ }));
1115
+ }
1116
+ return ret;
1117
+ }
1118
+ /**
1119
+ * @method
1120
+ * @name hibachi#cancelAllOrders
1121
+ * @see https://api-doc.hibachi.xyz/#8ed24695-016e-49b2-a72d-7511ca921fee
1122
+ * @description cancel all open orders in a market
1123
+ * @param {string} symbol unified market symbol
1124
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1125
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1126
+ */
1127
+ async cancelAllOrders(symbol = undefined, params = {}) {
1128
+ await this.loadMarkets();
1129
+ const nonce = this.nonce();
1130
+ const nonce16 = this.intToBase16(nonce);
1131
+ const noncePadded = nonce16.padStart(16, '0');
1132
+ const message = this.base16ToBinary(noncePadded);
1133
+ const signature = this.signMessage(message, this.privateKey);
1134
+ const request = {
1135
+ 'accountId': this.getAccountId(),
1136
+ 'nonce': nonce,
1137
+ 'signature': signature,
1138
+ };
1139
+ if (symbol !== undefined) {
1140
+ const market = this.market(symbol);
1141
+ request['contractId'] = this.safeInteger(market, 'numericId');
1142
+ }
1143
+ const response = await this.privateDeleteTradeOrders(this.extend(request, params));
1144
+ // At this time the response body is empty. A 200 response means the cancel request is accepted and sent to process
1145
+ //
1146
+ // {}
1147
+ //
1148
+ return [
1149
+ this.safeOrder({
1150
+ 'info': response,
1151
+ }),
1152
+ ];
1153
+ }
1154
+ encodeWithdrawMessage(amount, maxFees, address) {
1155
+ // Converting them to internal representation:
1156
+ // - Quantity: Internal = External * (10^6)
1157
+ // - maxFees: Internal = External * (10^6)
1158
+ // We only have USDT as our currency as this time
1159
+ const USDTAssetId = 1;
1160
+ const USDTFactor = '1000000';
1161
+ const amountStr = this.numberToString(amount);
1162
+ const maxFeesStr = this.numberToString(maxFees);
1163
+ const one = '1';
1164
+ const quantityInternal = Precise["default"].stringDiv(Precise["default"].stringMul(amountStr, USDTFactor), one, 0);
1165
+ const maxFeesInternal = Precise["default"].stringDiv(Precise["default"].stringMul(maxFeesStr, USDTFactor), one, 0);
1166
+ // Encoding
1167
+ const usdtAsset16 = this.intToBase16(USDTAssetId);
1168
+ const usdtAssetPadded = usdtAsset16.padStart(8, '0');
1169
+ const encodedAssetId = this.base16ToBinary(usdtAssetPadded);
1170
+ const quantity16 = this.intToBase16(this.parseToInt(quantityInternal));
1171
+ const quantityPadded = quantity16.padStart(16, '0');
1172
+ const encodedQuantity = this.base16ToBinary(quantityPadded);
1173
+ const maxFees16 = this.intToBase16(this.parseToInt(maxFeesInternal));
1174
+ const maxFeesPadded = maxFees16.padStart(16, '0');
1175
+ const encodedMaxFees = this.base16ToBinary(maxFeesPadded);
1176
+ const encodedAddress = this.base16ToBinary(address);
1177
+ const message = this.binaryConcat(encodedAssetId, encodedQuantity, encodedMaxFees, encodedAddress);
1178
+ return message;
1179
+ }
1180
+ /**
1181
+ * @method
1182
+ * @name hibachi#withdraw
1183
+ * @description make a withdrawal
1184
+ * @see https://api-doc.hibachi.xyz/#6421625d-3e45-45fa-be9b-d2a0e780c090
1185
+ * @param {string} code unified currency code, only support USDT
1186
+ * @param {float} amount the amount to withdraw
1187
+ * @param {string} address the address to withdraw to
1188
+ * @param {string} tag
1189
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1190
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1191
+ */
1192
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1193
+ const withdrawAddress = address.slice(-40);
1194
+ // Get the withdraw fees
1195
+ const exchangeInfo = await this.publicGetMarketExchangeInfo(params);
1196
+ // {
1197
+ // "feeConfig": {
1198
+ // "depositFees": "0.004518",
1199
+ // "tradeMakerFeeRate": "0.00000000",
1200
+ // "tradeTakerFeeRate": "0.00020000",
1201
+ // "transferFeeRate": "0.00010000",
1202
+ // "withdrawalFees": "0.012050"
1203
+ // },
1204
+ // }
1205
+ const feeConfig = this.safeDict(exchangeInfo, 'feeConfig');
1206
+ const maxFees = this.safeNumber(feeConfig, 'withdrawalFees');
1207
+ // Generate the signature
1208
+ const message = this.encodeWithdrawMessage(amount, maxFees, withdrawAddress);
1209
+ const signature = this.signMessage(message, this.privateKey);
1210
+ const request = {
1211
+ 'accountId': this.getAccountId(),
1212
+ 'coin': 'USDT',
1213
+ 'network': 'ARBITRUM',
1214
+ 'withdrawAddress': withdrawAddress,
1215
+ 'selfWithdrawal': false,
1216
+ 'quantity': this.numberToString(amount),
1217
+ 'maxFees': this.numberToString(maxFees),
1218
+ 'signature': signature,
1219
+ };
1220
+ await this.privatePostCapitalWithdraw(this.extend(request, params));
1221
+ // At this time the response body is empty. A 200 response means the withdraw request is accepted and sent to process
1222
+ //
1223
+ // {}
1224
+ //
1225
+ return {
1226
+ 'info': undefined,
1227
+ 'id': undefined,
1228
+ 'txid': undefined,
1229
+ 'timestamp': this.milliseconds(),
1230
+ 'datetime': undefined,
1231
+ 'address': undefined,
1232
+ 'addressFrom': undefined,
1233
+ 'addressTo': withdrawAddress,
1234
+ 'tag': undefined,
1235
+ 'tagFrom': undefined,
1236
+ 'tagTo': undefined,
1237
+ 'type': 'withdrawal',
1238
+ 'amount': amount,
1239
+ 'currency': code,
1240
+ 'status': 'pending',
1241
+ 'fee': { 'currency': 'USDT', 'cost': maxFees },
1242
+ 'network': 'ARBITRUM',
1243
+ 'updated': undefined,
1244
+ 'comment': undefined,
1245
+ 'internal': undefined,
1246
+ };
1247
+ }
1248
+ nonce() {
1249
+ return this.milliseconds();
1250
+ }
1251
+ signMessage(message, privateKey) {
1252
+ if (privateKey.length === 44) {
1253
+ // For Exchange Managed account, the key length is 44 and we use HMAC to sign the message
1254
+ return this.hmac(message, this.encode(privateKey), sha256.sha256, 'hex');
1255
+ }
1256
+ else {
1257
+ // For Trustless account, the key length is 66 including '0x' and we use ECDSA to sign the message
1258
+ const hash = this.hash(this.encode(message), sha256.sha256, 'hex');
1259
+ const signature = crypto.ecdsa(hash.slice(-64), privateKey.slice(-64), secp256k1.secp256k1, undefined);
1260
+ const r = signature['r'];
1261
+ const s = signature['s'];
1262
+ const v = signature['v'];
1263
+ return r.padStart(64, '0') + s.padStart(64, '0') + this.intToBase16(v).padStart(2, '0');
1264
+ }
1265
+ }
1266
+ /**
1267
+ * @method
1268
+ * @name hibachi#fetchOrderBook
1269
+ * @description fetches the state of the open orders on the orderbook
1270
+ * @see https://api-doc.hibachi.xyz/#4abb30c4-e5c7-4b0f-9ade-790111dbfa47
1271
+ * @param {string} symbol unified symbol of the market
1272
+ * @param {int} [limit] currently unused
1273
+ * @param {object} [params] extra parameters to be passed -- see documentation link above
1274
+ * @returns {object} A dictionary containg [orderbook information]{@link https://docs.ccxt.com/#/?id=order-book-structure}
1275
+ */
1276
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
1277
+ await this.loadMarkets();
1278
+ const market = this.market(symbol);
1279
+ const request = {
1280
+ 'symbol': market['id'],
1281
+ };
1282
+ const response = await this.publicGetMarketDataOrderbook(this.extend(request, params));
1283
+ const formattedResponse = {};
1284
+ formattedResponse['ask'] = this.safeList(this.safeDict(response, 'ask'), 'levels');
1285
+ formattedResponse['bid'] = this.safeList(this.safeDict(response, 'bid'), 'levels');
1286
+ // {
1287
+ // "ask": {
1288
+ // "endPrice": "3512.63",
1289
+ // "levels": [
1290
+ // {
1291
+ // "price": "3511.93",
1292
+ // "quantity": "0.284772482"
1293
+ // },
1294
+ // {
1295
+ // "price": "3512.28",
1296
+ // "quantity": "0.569544964"
1297
+ // },
1298
+ // {
1299
+ // "price": "3512.63",
1300
+ // "quantity": "0.854317446"
1301
+ // }
1302
+ // ],
1303
+ // "startPrice": "3511.93"
1304
+ // },
1305
+ // "bid": {
1306
+ // "endPrice": "3510.87",
1307
+ // "levels": [
1308
+ // {
1309
+ // "price": "3515.39",
1310
+ // "quantity": "2.345153070"
1311
+ // },
1312
+ // {
1313
+ // "price": "3511.22",
1314
+ // "quantity": "0.284772482"
1315
+ // },
1316
+ // {
1317
+ // "price": "3510.87",
1318
+ // "quantity": "0.569544964"
1319
+ // }
1320
+ // ],
1321
+ // "startPrice": "3515.39"
1322
+ // }
1323
+ // }
1324
+ return this.parseOrderBook(formattedResponse, symbol, this.milliseconds(), 'bid', 'ask', 'price', 'quantity');
1325
+ }
1326
+ /**
1327
+ * @method
1328
+ * @name hibachi#fetchMyTrades
1329
+ * @see https://api-doc.hibachi.xyz/#0adbf143-189f-40e0-afdc-88af4cba3c79
1330
+ * @description fetch all trades made by the user
1331
+ * @param {string} symbol unified market symbol
1332
+ * @param {int} [since] the earliest time in ms to fetch trades for
1333
+ * @param {int} [limit] the maximum number of trades structures to retrieve
1334
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1335
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1336
+ */
1337
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1338
+ await this.loadMarkets();
1339
+ let market = undefined;
1340
+ if (symbol !== undefined) {
1341
+ market = this.market(symbol);
1342
+ }
1343
+ const request = { 'accountId': this.getAccountId() };
1344
+ const response = await this.privateGetTradeAccountTrades(this.extend(request, params));
1345
+ //
1346
+ // {
1347
+ // "trades": [
1348
+ // {
1349
+ // "askAccountId": 221,
1350
+ // "askOrderId": 589168494921909200,
1351
+ // "bidAccountId": 132,
1352
+ // "bidOrderId": 589168494829895700,
1353
+ // "fee": "0.000477",
1354
+ // "id": 199511136,
1355
+ // "orderType": "MARKET",
1356
+ // "price": "119257.90000",
1357
+ // "quantity": "0.0000200000",
1358
+ // "realizedPnl": "-0.000352",
1359
+ // "side": "Sell",
1360
+ // "symbol": "BTC/USDT-P",
1361
+ // "timestamp": 1752543391
1362
+ // }
1363
+ // ]
1364
+ // }
1365
+ //
1366
+ const trades = this.safeList(response, 'trades');
1367
+ return this.parseTrades(trades, market, since, limit, params);
1368
+ }
1369
+ parseOHLCV(ohlcv, market = undefined) {
1370
+ //
1371
+ // [
1372
+ // {
1373
+ // "close": "3704.751036",
1374
+ // "high": "3716.530378",
1375
+ // "interval": "1h",
1376
+ // "low": "3699.627883",
1377
+ // "open": "3716.406894",
1378
+ // "timestamp": 1712628000,
1379
+ // "volumeNotional": "1637355.846362"
1380
+ // }
1381
+ // ]
1382
+ //
1383
+ return [
1384
+ this.safeIntegerProduct(ohlcv, 'timestamp', 1000),
1385
+ this.safeNumber(ohlcv, 'open'),
1386
+ this.safeNumber(ohlcv, 'high'),
1387
+ this.safeNumber(ohlcv, 'low'),
1388
+ this.safeNumber(ohlcv, 'close'),
1389
+ this.safeNumber(ohlcv, 'volumeNotional'),
1390
+ ];
1391
+ }
1392
+ /**
1393
+ * @method
1394
+ * @name hibachi#fetchOpenOrders
1395
+ * @description fetches all current open orders
1396
+ * @see https://api-doc.hibachi.xyz/#3243f8a0-086c-44c5-ab8a-71bbb7bab403
1397
+ * @param {string} [symbol] unified market symbol to filter by
1398
+ * @param {int} [since] milisecond timestamp of the earliest order
1399
+ * @param {int} [limit] the maximum number of open orders to return
1400
+ * @param {object} [params] extra parameters
1401
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1402
+ */
1403
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1404
+ await this.loadMarkets();
1405
+ let market = undefined;
1406
+ if (symbol !== undefined) {
1407
+ market = this.market(symbol);
1408
+ }
1409
+ const request = {
1410
+ 'accountId': this.getAccountId(),
1411
+ };
1412
+ const response = await this.privateGetTradeOrders(this.extend(request, params));
1413
+ // [
1414
+ // {
1415
+ // "accountId": 12452,
1416
+ // "availableQuantity": "0.0000230769",
1417
+ // "contractId": 2,
1418
+ // "creationTime": 1752684501,
1419
+ // "orderId": "589205486123876352",
1420
+ // "orderType": "LIMIT",
1421
+ // "price": "130000.00000",
1422
+ // "side": "ASK",
1423
+ // "status": "PLACED",
1424
+ // "symbol": "BTC/USDT-P",
1425
+ // "totalQuantity": "0.0000230769"
1426
+ // },
1427
+ // {
1428
+ // "accountId": 12452,
1429
+ // "availableQuantity": "1.234000000",
1430
+ // "contractId": 1,
1431
+ // "creationTime": 1752240682,
1432
+ // "orderId": "589089141754429441",
1433
+ // "orderType": "LIMIT",
1434
+ // "price": "1.234000",
1435
+ // "side": "BID",
1436
+ // "status": "PLACED",
1437
+ // "symbol": "ETH/USDT-P",
1438
+ // "totalQuantity": "1.234000000"
1439
+ // }
1440
+ // ]
1441
+ return this.parseOrders(response, market, since, limit);
1442
+ }
1443
+ /**
1444
+ * @name hibachi#fetchOHLCV
1445
+ * @see https://api-doc.hibachi.xyz/#4f0eacec-c61e-4d51-afb3-23c51c2c6bac
1446
+ * @description fetches historical candlestick data containing the close, high, low, open prices, interval and the volumeNotional
1447
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1448
+ * @param {string} timeframe the length of time each candle represents
1449
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1450
+ * @param {int} [limit] the maximum amount of candles to fetch
1451
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1452
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
1453
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1454
+ */
1455
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1456
+ await this.loadMarkets();
1457
+ const market = this.market(symbol);
1458
+ timeframe = this.safeString(this.timeframes, timeframe, timeframe);
1459
+ const request = {
1460
+ 'symbol': market['id'],
1461
+ 'interval': timeframe,
1462
+ };
1463
+ if (since !== undefined) {
1464
+ request['fromMs'] = since;
1465
+ }
1466
+ let until = undefined;
1467
+ [until, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'until');
1468
+ if (until !== undefined) {
1469
+ request['toMs'] = until;
1470
+ }
1471
+ const response = await this.publicGetMarketDataKlines(this.extend(request, params));
1472
+ //
1473
+ // [
1474
+ // {
1475
+ // "close": "3704.751036",
1476
+ // "high": "3716.530378",
1477
+ // "interval": "1h",
1478
+ // "low": "3699.627883",
1479
+ // "open": "3716.406894",
1480
+ // "timestamp": 1712628000,
1481
+ // "volumeNotional": "1637355.846362"
1482
+ // }
1483
+ // ]
1484
+ //
1485
+ const klines = this.safeList(response, 'klines', []);
1486
+ return this.parseOHLCVs(klines, market, timeframe, since, limit);
1487
+ }
1488
+ /**
1489
+ * @method
1490
+ * @name hibachi#fetchPositions
1491
+ * @description fetch all open positions
1492
+ * @see https://api-doc.hibachi.xyz/#69aafedb-8274-4e21-bbaf-91dace8b8f31
1493
+ * @param {string[]} [symbols] list of unified market symbols
1494
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1495
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1496
+ */
1497
+ async fetchPositions(symbols = undefined, params = {}) {
1498
+ await this.loadMarkets();
1499
+ symbols = this.marketSymbols(symbols);
1500
+ const request = {
1501
+ 'accountId': this.getAccountId(),
1502
+ };
1503
+ const response = await this.privateGetTradeAccountInfo(this.extend(request, params));
1504
+ //
1505
+ // {
1506
+ // "assets": [
1507
+ // {
1508
+ // "quantity": "14.130626",
1509
+ // "symbol": "USDT"
1510
+ // }
1511
+ // ],
1512
+ // "balance": "14.186087",
1513
+ // "maximalWithdraw": "4.152340",
1514
+ // "numFreeTransfersRemaining": 96,
1515
+ // "positions": [
1516
+ // {
1517
+ // "direction": "Short",
1518
+ // "entryNotional": "10.302213",
1519
+ // "notionalValue": "10.225008",
1520
+ // "quantity": "0.004310550",
1521
+ // "symbol": "ETH/USDT-P",
1522
+ // "unrealizedFundingPnl": "0.000000",
1523
+ // "unrealizedTradingPnl": "0.077204"
1524
+ // },
1525
+ // {
1526
+ // "direction": "Short",
1527
+ // "entryNotional": "2.000016",
1528
+ // "notionalValue": "1.999390",
1529
+ // "quantity": "0.0000328410",
1530
+ // "symbol": "BTC/USDT-P",
1531
+ // "unrealizedFundingPnl": "0.000000",
1532
+ // "unrealizedTradingPnl": "0.000625"
1533
+ // },
1534
+ // {
1535
+ // "direction": "Short",
1536
+ // "entryNotional": "2.000015",
1537
+ // "notionalValue": "2.022384",
1538
+ // "quantity": "0.01470600",
1539
+ // "symbol": "SOL/USDT-P",
1540
+ // "unrealizedFundingPnl": "0.000000",
1541
+ // "unrealizedTradingPnl": "-0.022369"
1542
+ // }
1543
+ // ],
1544
+ // }
1545
+ //
1546
+ const data = this.safeList(response, 'positions', []);
1547
+ return this.parsePositions(data, symbols);
1548
+ }
1549
+ parsePosition(position, market = undefined) {
1550
+ //
1551
+ // {
1552
+ // "direction": "Short",
1553
+ // "entryNotional": "10.302213",
1554
+ // "notionalValue": "10.225008",
1555
+ // "quantity": "0.004310550",
1556
+ // "symbol": "ETH/USDT-P",
1557
+ // "unrealizedFundingPnl": "0.000000",
1558
+ // "unrealizedTradingPnl": "0.077204"
1559
+ // }
1560
+ //
1561
+ const marketId = this.safeString(position, 'symbol');
1562
+ market = this.safeMarket(marketId, market);
1563
+ const symbol = market['symbol'];
1564
+ const side = this.safeStringLower(position, 'direction');
1565
+ const quantity = this.safeString(position, 'quantity');
1566
+ const unrealizedFunding = this.safeString(position, 'unrealizedFundingPnl', '0');
1567
+ const unrealizedTrading = this.safeString(position, 'unrealizedTradingPnl', '0');
1568
+ const unrealizedPnl = Precise["default"].stringAdd(unrealizedFunding, unrealizedTrading);
1569
+ return this.safePosition({
1570
+ 'info': position,
1571
+ 'id': undefined,
1572
+ 'symbol': symbol,
1573
+ 'entryPrice': this.safeString(position, 'average_entry_price'),
1574
+ 'markPrice': undefined,
1575
+ 'notional': this.safeString(position, 'notionalValue'),
1576
+ 'collateral': undefined,
1577
+ 'unrealizedPnl': unrealizedPnl,
1578
+ 'side': side,
1579
+ 'contracts': this.parseNumber(quantity),
1580
+ 'contractSize': undefined,
1581
+ 'timestamp': undefined,
1582
+ 'datetime': undefined,
1583
+ 'hedged': undefined,
1584
+ 'maintenanceMargin': undefined,
1585
+ 'maintenanceMarginPercentage': undefined,
1586
+ 'initialMargin': undefined,
1587
+ 'initialMarginPercentage': undefined,
1588
+ 'leverage': undefined,
1589
+ 'liquidationPrice': undefined,
1590
+ 'marginRatio': undefined,
1591
+ 'marginMode': undefined,
1592
+ 'percentage': undefined,
1593
+ });
1594
+ }
1595
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1596
+ const endpoint = '/' + this.implodeParams(path, params);
1597
+ let url = this.urls['api'][api] + endpoint;
1598
+ headers = {};
1599
+ if (method === 'GET') {
1600
+ const request = this.omit(params, this.extractParams(path));
1601
+ const query = this.urlencode(request);
1602
+ if (query.length !== 0) {
1603
+ url += '?' + query;
1604
+ }
1605
+ }
1606
+ if (method === 'POST' || method === 'PUT' || method === 'DELETE') {
1607
+ headers['Content-Type'] = 'application/json';
1608
+ body = this.json(params);
1609
+ }
1610
+ if (api === 'private') {
1611
+ this.checkRequiredCredentials();
1612
+ headers['Authorization'] = this.apiKey;
1613
+ }
1614
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1615
+ }
1616
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1617
+ if (response === undefined) {
1618
+ return undefined; // fallback to default error handler
1619
+ }
1620
+ if ('status' in response) {
1621
+ //
1622
+ // {"errorCode":4,"message":"Invalid input: Invalid quantity: 0","status":"failed"}
1623
+ //
1624
+ const status = this.safeString(response, 'status');
1625
+ if (status === 'failed') {
1626
+ const code = this.safeString(response, 'errorCode');
1627
+ const feedback = this.id + ' ' + body;
1628
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
1629
+ this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
1630
+ const message = this.safeString(response, 'message');
1631
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
1632
+ throw new errors.ExchangeError(feedback);
1633
+ }
1634
+ }
1635
+ return undefined;
1636
+ }
1637
+ parseTransactionType(type) {
1638
+ const types = {
1639
+ 'deposit': 'transaction',
1640
+ 'withdrawal': 'transaction',
1641
+ 'transfer-in': 'transfer',
1642
+ 'transfer-out': 'transfer',
1643
+ };
1644
+ return this.safeString(types, type, type);
1645
+ }
1646
+ parseTransactionStatus(status) {
1647
+ const statuses = {
1648
+ 'pending': 'pending',
1649
+ 'claimable': 'pending',
1650
+ 'completed': 'ok',
1651
+ 'failed': 'canceled',
1652
+ };
1653
+ return this.safeString(statuses, status, status);
1654
+ }
1655
+ parseLedgerEntry(item, currency = undefined) {
1656
+ const transactionType = this.safeString(item, 'transactionType');
1657
+ let timestamp = undefined;
1658
+ let type = undefined;
1659
+ let direction = undefined;
1660
+ let amount = undefined;
1661
+ let fee = undefined;
1662
+ let referenceId = undefined;
1663
+ let referenceAccount = undefined;
1664
+ let status = undefined;
1665
+ if (transactionType === undefined) {
1666
+ // response from TradeAccountTradingHistory
1667
+ timestamp = this.safeIntegerProduct(item, 'timestamp', 1000);
1668
+ type = 'trade';
1669
+ let amountStr = this.safeString(item, 'realizedPnl');
1670
+ if (Precise["default"].stringLt(amountStr, '0')) {
1671
+ direction = 'out';
1672
+ amountStr = Precise["default"].stringNeg(amountStr);
1673
+ }
1674
+ else {
1675
+ direction = 'in';
1676
+ }
1677
+ amount = this.parseNumber(amountStr);
1678
+ fee = { 'currency': 'USDT', 'cost': this.safeNumber(item, 'fee') };
1679
+ status = 'ok';
1680
+ }
1681
+ else {
1682
+ // response from CapitalHistory
1683
+ timestamp = this.safeIntegerProduct(item, 'timestampSec', 1000);
1684
+ amount = this.safeNumber(item, 'quantity');
1685
+ direction = (transactionType === 'deposit' || transactionType === 'transfer-in') ? 'in' : 'out';
1686
+ type = this.parseTransactionType(transactionType);
1687
+ status = this.parseTransactionStatus(this.safeString(item, 'status'));
1688
+ if (transactionType === 'transfer-in') {
1689
+ referenceAccount = this.safeString(item, 'srcAccountId');
1690
+ }
1691
+ else if (transactionType === 'transfer-out') {
1692
+ referenceAccount = this.safeString(item, 'receivingAccountId');
1693
+ }
1694
+ referenceId = this.safeString(item, 'transactionHash');
1695
+ }
1696
+ return this.safeLedgerEntry({
1697
+ 'id': this.safeString(item, 'id'),
1698
+ 'currency': this.currency('USDT'),
1699
+ 'account': this.numberToString(this.accountId),
1700
+ 'referenceAccount': referenceAccount,
1701
+ 'referenceId': referenceId,
1702
+ 'status': status,
1703
+ 'amount': amount,
1704
+ 'before': undefined,
1705
+ 'after': undefined,
1706
+ 'fee': fee,
1707
+ 'direction': direction,
1708
+ 'timestamp': timestamp,
1709
+ 'datetime': this.iso8601(timestamp),
1710
+ 'type': type,
1711
+ 'info': item,
1712
+ }, currency);
1713
+ }
1714
+ /**
1715
+ * @method
1716
+ * @name hibachi#fetchLedger
1717
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1718
+ * @see https://api-doc.hibachi.xyz/#35125e3f-d154-4bfd-8276-a48bb1c62020
1719
+ * @param {string} [code] unified currency code, default is undefined
1720
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1721
+ * @param {int} [limit] max number of ledger entries to return, default is undefined
1722
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1723
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1724
+ */
1725
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1726
+ await this.loadMarkets();
1727
+ const currency = this.currency('USDT');
1728
+ const request = { 'accountId': this.getAccountId() };
1729
+ const rawPromises = [
1730
+ this.privateGetCapitalHistory(this.extend(request, params)),
1731
+ this.privateGetTradeAccountTradingHistory(this.extend(request, params)),
1732
+ ];
1733
+ const promises = await Promise.all(rawPromises);
1734
+ const responseCapitalHistory = promises[0];
1735
+ //
1736
+ // {
1737
+ // "transactions": [
1738
+ // {
1739
+ // "assetId": 1,
1740
+ // "blockNumber": 358396669,
1741
+ // "chain": "Arbitrum",
1742
+ // "etaTsSec": null,
1743
+ // "id": 358396669,
1744
+ // "quantity": "0.999500",
1745
+ // "status": "pending",
1746
+ // "timestampSec": 1752692872,
1747
+ // "token": "USDT",
1748
+ // "transactionHash": "0x408e48881e0ba77d8638e3fe57bc06bdec513ddaa8b672e0aefa7e22e2f18b5e",
1749
+ // "transactionType": "deposit"
1750
+ // },
1751
+ // {
1752
+ // "assetId": 1,
1753
+ // "etaTsSec": null,
1754
+ // "id": 13116,
1755
+ // "instantWithdrawalChain": null,
1756
+ // "instantWithdrawalToken": null,
1757
+ // "isInstantWithdrawal": false,
1758
+ // "quantity": "0.040000",
1759
+ // "status": "completed",
1760
+ // "timestampSec": 1752542708,
1761
+ // "transactionHash": "0xe89cf90b2408d1a273dc9427654145def102d9449e5e2cfc10690ccffc3d7e28",
1762
+ // "transactionType": "withdrawal",
1763
+ // "withdrawalAddress": "0x23625d5fc6a6e32638d908eb4c3a3415e5121f76"
1764
+ // },
1765
+ // {
1766
+ // "assetId": 1,
1767
+ // "id": 167,
1768
+ // "quantity": "10.000000",
1769
+ // "srcAccountId": 175,
1770
+ // "srcAddress": "0xc2f77ce029438a3fdfe68ddee25991a9fb985a86",
1771
+ // "status": "completed",
1772
+ // "timestampSec": 1732224729,
1773
+ // "transactionType": "transfer-in"
1774
+ // },
1775
+ // {
1776
+ // "assetId": 1,
1777
+ // "id": 170,
1778
+ // "quantity": "10.000000",
1779
+ // "receivingAccountId": 175,
1780
+ // "receivingAddress": "0xc2f77ce029438a3fdfe68ddee25991a9fb985a86",
1781
+ // "status": "completed",
1782
+ // "timestampSec": 1732225631,
1783
+ // "transactionType": "transfer-out"
1784
+ // },
1785
+ // ]
1786
+ // }
1787
+ //
1788
+ const rowsCapitalHistory = this.safeList(responseCapitalHistory, 'transactions');
1789
+ const responseTradingHistory = promises[1];
1790
+ //
1791
+ // {
1792
+ // "tradingHistory": [
1793
+ // {
1794
+ // "eventType": "MARKET",
1795
+ // "fee": "0.000008",
1796
+ // "priceOrFundingRate": "119687.82481",
1797
+ // "quantity": "0.0000003727",
1798
+ // "realizedPnl": "0.004634",
1799
+ // "side": "Sell",
1800
+ // "symbol": "BTC/USDT-P",
1801
+ // "timestamp": 1752522571
1802
+ // },
1803
+ // {
1804
+ // "eventType": "FundingEvent",
1805
+ // "fee": "0",
1806
+ // "priceOrFundingRate": "0.000203",
1807
+ // "quantity": "0.0000003727",
1808
+ // "realizedPnl": "-0.000009067899008751979",
1809
+ // "side": "Long",
1810
+ // "symbol": "BTC/USDT-P",
1811
+ // "timestamp": 1752508800
1812
+ // },
1813
+ // ]
1814
+ // }
1815
+ //
1816
+ const rowsTradingHistory = this.safeList(responseTradingHistory, 'tradingHistory');
1817
+ const rows = this.arrayConcat(rowsCapitalHistory, rowsTradingHistory);
1818
+ return this.parseLedger(rows, currency, since, limit, params);
1819
+ }
1820
+ /**
1821
+ * @method
1822
+ * @name hibachi#fetchDepositAddress
1823
+ * @description fetch deposit address for given currency and chain. currently, we have a single EVM address across multiple EVM chains. Note: This method is currently only supported for trustless accounts
1824
+ * @param {string} code unified currency code
1825
+ * @param {object} [params] extra parameters for API
1826
+ * @param {string} [params.publicKey] your public key, you can get it from UI after creating API key
1827
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1828
+ */
1829
+ async fetchDepositAddress(code, params = {}) {
1830
+ const request = {
1831
+ 'publicKey': this.safeString(params, 'publicKey'),
1832
+ 'accountId': this.getAccountId(),
1833
+ };
1834
+ const response = await this.privateGetCapitalDepositInfo(this.extend(request, params));
1835
+ // {
1836
+ // "depositAddressEvm": "0x0b95d90b9345dadf1460bd38b9f4bb0d2f4ed788"
1837
+ // }
1838
+ return {
1839
+ 'info': response,
1840
+ 'currency': 'USDT',
1841
+ 'network': 'ARBITRUM',
1842
+ 'address': this.safeString(response, 'depositAddressEvm'),
1843
+ 'tag': undefined,
1844
+ };
1845
+ }
1846
+ parseTransaction(transaction, currency = undefined) {
1847
+ const timestamp = this.safeIntegerProduct(transaction, 'timestampSec', 1000);
1848
+ const address = this.safeString(transaction, 'withdrawalAddress');
1849
+ let transactionType = this.safeString(transaction, 'transactionType');
1850
+ if (transactionType !== 'deposit' && transactionType !== 'withdrawal') {
1851
+ transactionType = this.parseTransactionType(transactionType);
1852
+ }
1853
+ return {
1854
+ 'info': transaction,
1855
+ 'id': this.safeString(transaction, 'id'),
1856
+ 'txid': this.safeString(transaction, 'transactionHash'),
1857
+ 'timestamp': timestamp,
1858
+ 'datetime': this.iso8601(timestamp),
1859
+ 'network': 'ARBITRUM',
1860
+ 'address': address,
1861
+ 'addressTo': address,
1862
+ 'addressFrom': undefined,
1863
+ 'tag': undefined,
1864
+ 'tagTo': undefined,
1865
+ 'tagFrom': undefined,
1866
+ 'type': transactionType,
1867
+ 'amount': this.safeNumber(transaction, 'quantity'),
1868
+ 'currency': 'USDT',
1869
+ 'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
1870
+ 'updated': undefined,
1871
+ 'internal': undefined,
1872
+ 'comment': undefined,
1873
+ 'fee': undefined,
1874
+ };
1875
+ }
1876
+ /**
1877
+ * @method
1878
+ * @name hibachi#fetchDeposits
1879
+ * @description fetch deposits made to account
1880
+ * @see https://api-doc.hibachi.xyz/#35125e3f-d154-4bfd-8276-a48bb1c62020
1881
+ * @param {string} [code] unified currency code
1882
+ * @param {int} [since] filter by earliest timestamp (ms)
1883
+ * @param {int} [limit] maximum number of deposits to be returned
1884
+ * @param {object} [params] extra parameters to be passed to API
1885
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1886
+ */
1887
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1888
+ const currency = this.safeCurrency(code);
1889
+ const request = {
1890
+ 'accountId': this.getAccountId(),
1891
+ };
1892
+ const response = await this.privateGetCapitalHistory(this.extend(request, params));
1893
+ // {
1894
+ // "transactions": [
1895
+ // {
1896
+ // "assetId": 1,
1897
+ // "blockNumber": 0,
1898
+ // "chain": null,
1899
+ // "etaTsSec": 1752758789,
1900
+ // "id": 42688,
1901
+ // "quantity": "6.130000",
1902
+ // "status": "completed",
1903
+ // "timestampSec": 1752758788,
1904
+ // "token": null,
1905
+ // "transactionHash": "0x8dcd7bd1155b5624fb5e38a1365888f712ec633a57434340e05080c70b0e3bba",
1906
+ // "transactionType": "deposit"
1907
+ // },
1908
+ // {
1909
+ // "assetId": 1,
1910
+ // "etaTsSec": null,
1911
+ // "id": 12993,
1912
+ // "instantWithdrawalChain": null,
1913
+ // "instantWithdrawalToken": null,
1914
+ // "isInstantWithdrawal": false,
1915
+ // "quantity": "0.111930",
1916
+ // "status": "completed",
1917
+ // "timestampSec": 1752387891,
1918
+ // "transactionHash": "0x32ab5fe5b90f6d753bab83523ebc8465eb9daef54580e13cb9ff031d400c5620",
1919
+ // "transactionType": "withdrawal",
1920
+ // "withdrawalAddress": "0x43f15ef2ef2ab5e61e987ee3d652a5872aea8a6c"
1921
+ // },
1922
+ // ]
1923
+ // }
1924
+ const transactions = this.safeList(response, 'transactions');
1925
+ const deposits = [];
1926
+ for (let i = 0; i < transactions.length; i++) {
1927
+ const transaction = transactions[i];
1928
+ if (this.safeString(transaction, 'transactionType') === 'deposit') {
1929
+ deposits.push(transaction);
1930
+ }
1931
+ }
1932
+ return this.parseTransactions(deposits, currency, since, limit, params);
1933
+ }
1934
+ /**
1935
+ * @method
1936
+ * @name hibachi#fetchWithdrawals
1937
+ * @description fetch withdrawals made from account
1938
+ * @see https://api-doc.hibachi.xyz/#35125e3f-d154-4bfd-8276-a48bb1c62020
1939
+ * @param {string} [code] unified currency code
1940
+ * @param {int} [since] filter by earliest timestamp (ms)
1941
+ * @param {int} [limit] maximum number of deposits to be returned
1942
+ * @param {object} [params] extra parameters to be passed to API
1943
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1944
+ */
1945
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1946
+ const currency = this.safeCurrency(code);
1947
+ const request = {
1948
+ 'accountId': this.getAccountId(),
1949
+ };
1950
+ const response = await this.privateGetCapitalHistory(this.extend(request, params));
1951
+ // {
1952
+ // "transactions": [
1953
+ // {
1954
+ // "assetId": 1,
1955
+ // "blockNumber": 0,
1956
+ // "chain": null,
1957
+ // "etaTsSec": 1752758789,
1958
+ // "id": 42688,
1959
+ // "quantity": "6.130000",
1960
+ // "status": "completed",
1961
+ // "timestampSec": 1752758788,
1962
+ // "token": null,
1963
+ // "transactionHash": "0x8dcd7bd1155b5624fb5e38a1365888f712ec633a57434340e05080c70b0e3bba",
1964
+ // "transactionType": "deposit"
1965
+ // },
1966
+ // {
1967
+ // "assetId": 1,
1968
+ // "etaTsSec": null,
1969
+ // "id": 12993,
1970
+ // "instantWithdrawalChain": null,
1971
+ // "instantWithdrawalToken": null,
1972
+ // "isInstantWithdrawal": false,
1973
+ // "quantity": "0.111930",
1974
+ // "status": "completed",
1975
+ // "timestampSec": 1752387891,
1976
+ // "transactionHash": "0x32ab5fe5b90f6d753bab83523ebc8465eb9daef54580e13cb9ff031d400c5620",
1977
+ // "transactionType": "withdrawal",
1978
+ // "withdrawalAddress": "0x43f15ef2ef2ab5e61e987ee3d652a5872aea8a6c"
1979
+ // },
1980
+ // ]
1981
+ // }
1982
+ const transactions = this.safeList(response, 'transactions');
1983
+ const withdrawals = [];
1984
+ for (let i = 0; i < transactions.length; i++) {
1985
+ const transaction = transactions[i];
1986
+ if (this.safeString(transaction, 'transactionType') === 'withdrawal') {
1987
+ withdrawals.push(transaction);
1988
+ }
1989
+ }
1990
+ return this.parseTransactions(withdrawals, currency, since, limit, params);
1991
+ }
1992
+ /**
1993
+ * @method
1994
+ * @name hibachi#fetchTime
1995
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
1996
+ * @see http://api-doc.hibachi.xyz/#b5c6a3bc-243d-4d35-b6d4-a74c92495434
1997
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1998
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
1999
+ */
2000
+ async fetchTime(params = {}) {
2001
+ const response = await this.publicGetExchangeUtcTimestamp(params);
2002
+ //
2003
+ // { "timestampMs":1754077574040 }
2004
+ //
2005
+ return this.safeInteger(response, 'timestampMs');
2006
+ }
2007
+ /**
2008
+ * @method
2009
+ * @name hibachi#fetchOpenInterest
2010
+ * @description retrieves the open interest of a contract trading pair
2011
+ * @see https://api-doc.hibachi.xyz/#bc34e8ae-e094-4802-8d56-3efe3a7bad49
2012
+ * @param {string} symbol unified CCXT market symbol
2013
+ * @param {object} [params] exchange specific parameters
2014
+ * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
2015
+ */
2016
+ async fetchOpenInterest(symbol, params = {}) {
2017
+ await this.loadMarkets();
2018
+ const market = this.market(symbol);
2019
+ const request = {
2020
+ 'symbol': market['id'],
2021
+ };
2022
+ const response = await this.publicGetMarketDataOpenInterest(this.extend(request, params));
2023
+ //
2024
+ // { "totalQuantity" : "2.3299770166" }
2025
+ //
2026
+ const timestamp = this.milliseconds();
2027
+ return this.safeOpenInterest({
2028
+ 'symbol': symbol,
2029
+ 'openInterestAmount': this.safeString(response, 'totalQuantity'),
2030
+ 'openInterestValue': undefined,
2031
+ 'timestamp': timestamp,
2032
+ 'datetime': this.iso8601(timestamp),
2033
+ 'info': response,
2034
+ }, market);
2035
+ }
2036
+ /**
2037
+ * @method
2038
+ * @name hibachi#fetchFundingRate
2039
+ * @description fetch the current funding rate
2040
+ * @see https://api-doc.hibachi.xyz/#bca696ca-b9b2-4072-8864-5d6b8c09807e
2041
+ * @param {string} symbol unified market symbol
2042
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2043
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2044
+ */
2045
+ async fetchFundingRate(symbol, params = {}) {
2046
+ await this.loadMarkets();
2047
+ const market = this.market(symbol);
2048
+ const request = {
2049
+ 'symbol': market['id'],
2050
+ };
2051
+ const response = await this.publicGetMarketDataPrices(this.extend(request, params));
2052
+ //
2053
+ // {
2054
+ // "askPrice": "3514.650296",
2055
+ // "bidPrice": "3513.596112",
2056
+ // "fundingRateEstimation": {
2057
+ // "estimatedFundingRate": "0.000001",
2058
+ // "nextFundingTimestamp": 1712707200
2059
+ // },
2060
+ // "markPrice": "3514.288858",
2061
+ // "spotPrice": "3514.715000",
2062
+ // "symbol": "ETH/USDT-P",
2063
+ // "tradePrice": "2372.746570"
2064
+ // }
2065
+ //
2066
+ const funding = this.safeDict(response, 'fundingRateEstimation', {});
2067
+ const timestamp = this.milliseconds();
2068
+ const nextFundingTimestamp = this.safeIntegerProduct(funding, 'nextFundingTimestamp', 1000);
2069
+ return {
2070
+ 'info': funding,
2071
+ 'symbol': market['symbol'],
2072
+ 'markPrice': undefined,
2073
+ 'indexPrice': undefined,
2074
+ 'interestRate': this.parseNumber('0'),
2075
+ 'estimatedSettlePrice': undefined,
2076
+ 'timestamp': timestamp,
2077
+ 'datetime': this.iso8601(timestamp),
2078
+ 'fundingRate': this.safeNumber(funding, 'estimatedFundingRate'),
2079
+ 'fundingTimestamp': nextFundingTimestamp,
2080
+ 'fundingDatetime': this.iso8601(nextFundingTimestamp),
2081
+ 'nextFundingRate': undefined,
2082
+ 'nextFundingTimestamp': undefined,
2083
+ 'nextFundingDatetime': undefined,
2084
+ 'previousFundingRate': undefined,
2085
+ 'previousFundingTimestamp': undefined,
2086
+ 'previousFundingDatetime': undefined,
2087
+ 'interval': '8h',
2088
+ };
2089
+ }
2090
+ /**
2091
+ * @method
2092
+ * @name hibachi#fetchFundingRateHistory
2093
+ * @description fetches historical funding rate prices
2094
+ * @see https://api-doc.hibachi.xyz/#4abb30c4-e5c7-4b0f-9ade-790111dbfa47
2095
+ * @param {string} symbol unified symbol of the market to fetch the funding rate history for
2096
+ * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
2097
+ * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
2098
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2099
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
2100
+ */
2101
+ async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2102
+ await this.loadMarkets();
2103
+ const market = this.market(symbol);
2104
+ const request = {
2105
+ 'symbol': market['id'],
2106
+ };
2107
+ const response = await this.publicGetMarketDataFundingRates(this.extend(request, params));
2108
+ //
2109
+ // {
2110
+ // "data": [
2111
+ // {
2112
+ // "contractId": 2,
2113
+ // "fundingTimestamp": 1753488000,
2114
+ // "fundingRate": "0.000137",
2115
+ // "indexPrice": "117623.65010"
2116
+ // }
2117
+ // ]
2118
+ // }
2119
+ //
2120
+ const data = this.safeList(response, 'data');
2121
+ const rates = [];
2122
+ for (let i = 0; i < data.length; i++) {
2123
+ const entry = data[i];
2124
+ const timestamp = this.safeIntegerProduct(entry, 'fundingTimestamp', 1000);
2125
+ rates.push({
2126
+ 'info': entry,
2127
+ 'symbol': symbol,
2128
+ 'fundingRate': this.safeNumber(entry, 'fundingRate'),
2129
+ 'timestamp': timestamp,
2130
+ 'datetime': this.iso8601(timestamp),
2131
+ });
2132
+ }
2133
+ const sorted = this.sortBy(rates, 'timestamp');
2134
+ return this.filterBySymbolSinceLimit(sorted, symbol, since, limit);
2135
+ }
2136
+ }
2137
+
2138
+ exports["default"] = hibachi;