ccxt 4.4.98 → 4.4.99

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