ccxt-ir 4.9.32 → 4.11.0

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 (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +7 -1
  4. package/dist/cjs/package.json +1 -1
  5. package/dist/cjs/src/abstract/asretether.js +11 -0
  6. package/dist/cjs/src/abstract/bidarz.js +11 -0
  7. package/dist/cjs/src/asretether.js +325 -0
  8. package/dist/cjs/src/bidarz.js +337 -0
  9. package/dist/cjs/src/bit24.js +4 -3
  10. package/dist/cjs/src/raastin.js +144 -16
  11. package/js/ccxt.d.ts +8 -2
  12. package/js/ccxt.js +6 -2
  13. package/js/src/abstract/asretether.d.ts +8 -0
  14. package/js/src/abstract/asretether.js +11 -0
  15. package/js/src/abstract/bidarz.d.ts +9 -0
  16. package/js/src/abstract/bidarz.js +11 -0
  17. package/js/src/abstract/raastin.d.ts +1 -0
  18. package/js/src/asretether.d.ts +21 -0
  19. package/js/src/asretether.js +324 -0
  20. package/js/src/bidarz.d.ts +22 -0
  21. package/js/src/bidarz.js +336 -0
  22. package/js/src/bit24.js +4 -3
  23. package/js/src/raastin.d.ts +2 -0
  24. package/js/src/raastin.js +144 -16
  25. package/js/src/src/abantether.d.ts +21 -0
  26. package/js/src/src/abantether.js +353 -0
  27. package/js/src/src/abstract/abantether.d.ts +8 -0
  28. package/js/src/src/abstract/abantether.js +11 -0
  29. package/js/src/src/abstract/afratether.d.ts +9 -0
  30. package/js/src/src/abstract/afratether.js +11 -0
  31. package/js/src/src/abstract/alpaca.d.ts +77 -0
  32. package/js/src/src/abstract/alpaca.js +11 -0
  33. package/js/src/src/abstract/apex.d.ts +34 -0
  34. package/js/src/src/abstract/apex.js +11 -0
  35. package/js/src/src/abstract/arzinja.d.ts +8 -0
  36. package/js/src/src/abstract/arzinja.js +11 -0
  37. package/js/src/src/abstract/arzplus.d.ts +11 -0
  38. package/js/src/src/abstract/arzplus.js +11 -0
  39. package/js/src/src/abstract/ascendex.d.ts +80 -0
  40. package/js/src/src/abstract/ascendex.js +11 -0
  41. package/js/src/src/abstract/asretether.d.ts +8 -0
  42. package/js/src/src/abstract/asretether.js +11 -0
  43. package/js/src/src/abstract/bidarz.d.ts +9 -0
  44. package/js/src/src/abstract/bidarz.js +11 -0
  45. package/js/src/src/abstract/bigone.d.ts +48 -0
  46. package/js/src/src/abstract/bigone.js +11 -0
  47. package/js/src/src/abstract/binance.d.ts +773 -0
  48. package/js/src/src/abstract/binance.js +11 -0
  49. package/js/src/src/abstract/bingx.d.ts +165 -0
  50. package/js/src/src/abstract/bingx.js +11 -0
  51. package/js/src/src/abstract/bit24.d.ts +9 -0
  52. package/js/src/src/abstract/bit24.js +11 -0
  53. package/js/src/src/abstract/bit2c.d.ts +30 -0
  54. package/js/src/src/abstract/bit2c.js +11 -0
  55. package/js/src/src/abstract/bitbank.d.ts +35 -0
  56. package/js/src/src/abstract/bitbank.js +11 -0
  57. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  58. package/js/src/src/abstract/bitbarg.js +11 -0
  59. package/js/src/src/abstract/bitbns.d.ts +43 -0
  60. package/js/src/src/abstract/bitbns.js +11 -0
  61. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  62. package/js/src/src/abstract/bitfinex.js +11 -0
  63. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  64. package/js/src/src/abstract/bitflyer.js +11 -0
  65. package/js/src/src/abstract/bitget.d.ts +578 -0
  66. package/js/src/src/abstract/bitget.js +11 -0
  67. package/js/src/src/abstract/bithumb.d.ts +35 -0
  68. package/js/src/src/abstract/bithumb.js +11 -0
  69. package/js/src/src/abstract/bitimen.d.ts +10 -0
  70. package/js/src/src/abstract/bitimen.js +11 -0
  71. package/js/src/src/abstract/bitir.d.ts +10 -0
  72. package/js/src/src/abstract/bitir.js +11 -0
  73. package/js/src/src/abstract/bitmart.d.ts +120 -0
  74. package/js/src/src/abstract/bitmart.js +11 -0
  75. package/js/src/src/abstract/bitmex.d.ts +100 -0
  76. package/js/src/src/abstract/bitmex.js +11 -0
  77. package/js/src/src/abstract/bitopro.d.ts +33 -0
  78. package/js/src/src/abstract/bitopro.js +11 -0
  79. package/js/src/src/abstract/bitpin.d.ts +11 -0
  80. package/js/src/src/abstract/bitpin.js +11 -0
  81. package/js/src/src/abstract/bitrue.d.ts +75 -0
  82. package/js/src/src/abstract/bitrue.js +11 -0
  83. package/js/src/src/abstract/bitso.d.ts +46 -0
  84. package/js/src/src/abstract/bitso.js +11 -0
  85. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  86. package/js/src/src/abstract/bitstamp.js +11 -0
  87. package/js/src/src/abstract/bitteam.d.ts +32 -0
  88. package/js/src/src/abstract/bitteam.js +11 -0
  89. package/js/src/src/abstract/bittrade.d.ts +117 -0
  90. package/js/src/src/abstract/bittrade.js +11 -0
  91. package/js/src/src/abstract/bitunix.d.ts +9 -0
  92. package/js/src/src/abstract/bitunix.js +11 -0
  93. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  94. package/js/src/src/abstract/bitvavo.js +11 -0
  95. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  96. package/js/src/src/abstract/blockchaincom.js +11 -0
  97. package/js/src/src/abstract/blofin.d.ts +70 -0
  98. package/js/src/src/abstract/blofin.js +11 -0
  99. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  100. package/js/src/src/abstract/btcalpha.js +11 -0
  101. package/js/src/src/abstract/btcbox.d.ts +18 -0
  102. package/js/src/src/abstract/btcbox.js +11 -0
  103. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  104. package/js/src/src/abstract/btcmarkets.js +11 -0
  105. package/js/src/src/abstract/btcturk.d.ts +23 -0
  106. package/js/src/src/abstract/btcturk.js +11 -0
  107. package/js/src/src/abstract/bybit.d.ts +316 -0
  108. package/js/src/src/abstract/bybit.js +11 -0
  109. package/js/src/src/abstract/bydfi.d.ts +11 -0
  110. package/js/src/src/abstract/bydfi.js +11 -0
  111. package/js/src/src/abstract/cafearz.d.ts +8 -0
  112. package/js/src/src/abstract/cafearz.js +11 -0
  113. package/js/src/src/abstract/cex.d.ts +35 -0
  114. package/js/src/src/abstract/cex.js +11 -0
  115. package/js/src/src/abstract/coinbase.d.ts +97 -0
  116. package/js/src/src/abstract/coinbase.js +11 -0
  117. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  118. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  119. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  120. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  121. package/js/src/src/abstract/coincatch.d.ts +97 -0
  122. package/js/src/src/abstract/coincatch.js +11 -0
  123. package/js/src/src/abstract/coincheck.d.ts +36 -0
  124. package/js/src/src/abstract/coincheck.js +11 -0
  125. package/js/src/src/abstract/coinex.d.ts +240 -0
  126. package/js/src/src/abstract/coinex.js +11 -0
  127. package/js/src/src/abstract/coinmate.d.ts +65 -0
  128. package/js/src/src/abstract/coinmate.js +11 -0
  129. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  130. package/js/src/src/abstract/coinmetro.js +11 -0
  131. package/js/src/src/abstract/coinone.d.ts +70 -0
  132. package/js/src/src/abstract/coinone.js +11 -0
  133. package/js/src/src/abstract/coinsph.d.ts +57 -0
  134. package/js/src/src/abstract/coinsph.js +11 -0
  135. package/js/src/src/abstract/coinspot.d.ts +31 -0
  136. package/js/src/src/abstract/coinspot.js +11 -0
  137. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  138. package/js/src/src/abstract/cryptocom.js +11 -0
  139. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  140. package/js/src/src/abstract/cryptomus.js +11 -0
  141. package/js/src/src/abstract/defx.d.ts +72 -0
  142. package/js/src/src/abstract/defx.js +11 -0
  143. package/js/src/src/abstract/delta.d.ts +53 -0
  144. package/js/src/src/abstract/delta.js +11 -0
  145. package/js/src/src/abstract/deribit.d.ts +129 -0
  146. package/js/src/src/abstract/deribit.js +11 -0
  147. package/js/src/src/abstract/derive.d.ts +120 -0
  148. package/js/src/src/abstract/derive.js +11 -0
  149. package/js/src/src/abstract/digifinex.d.ts +95 -0
  150. package/js/src/src/abstract/digifinex.js +11 -0
  151. package/js/src/src/abstract/ellipx.d.ts +28 -0
  152. package/js/src/src/abstract/ellipx.js +11 -0
  153. package/js/src/src/abstract/eterex.d.ts +8 -0
  154. package/js/src/src/abstract/eterex.js +11 -0
  155. package/js/src/src/abstract/excoino.d.ts +10 -0
  156. package/js/src/src/abstract/excoino.js +11 -0
  157. package/js/src/src/abstract/exir.d.ts +11 -0
  158. package/js/src/src/abstract/exir.js +11 -0
  159. package/js/src/src/abstract/exmo.d.ts +58 -0
  160. package/js/src/src/abstract/exmo.js +11 -0
  161. package/js/src/src/abstract/exnovin.d.ts +9 -0
  162. package/js/src/src/abstract/exnovin.js +11 -0
  163. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  164. package/js/src/src/abstract/farhadexchange.js +11 -0
  165. package/js/src/src/abstract/foxbit.d.ts +29 -0
  166. package/js/src/src/abstract/foxbit.js +11 -0
  167. package/js/src/src/abstract/gate.d.ts +287 -0
  168. package/js/src/src/abstract/gate.js +11 -0
  169. package/js/src/src/abstract/gemini.d.ts +62 -0
  170. package/js/src/src/abstract/gemini.js +11 -0
  171. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  172. package/js/src/src/abstract/hamtapay.js +11 -0
  173. package/js/src/src/abstract/hashkey.d.ts +70 -0
  174. package/js/src/src/abstract/hashkey.js +11 -0
  175. package/js/src/src/abstract/hibachi.d.ts +29 -0
  176. package/js/src/src/abstract/hibachi.js +11 -0
  177. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  178. package/js/src/src/abstract/hitbtc.js +11 -0
  179. package/js/src/src/abstract/hitobit.d.ts +11 -0
  180. package/js/src/src/abstract/hitobit.js +11 -0
  181. package/js/src/src/abstract/hollaex.d.ts +36 -0
  182. package/js/src/src/abstract/hollaex.js +11 -0
  183. package/js/src/src/abstract/htx.d.ts +551 -0
  184. package/js/src/src/abstract/htx.js +11 -0
  185. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  186. package/js/src/src/abstract/hyperliquid.js +11 -0
  187. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  188. package/js/src/src/abstract/independentreserve.js +11 -0
  189. package/js/src/src/abstract/indodax.d.ts +29 -0
  190. package/js/src/src/abstract/indodax.js +11 -0
  191. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  192. package/js/src/src/abstract/iranexchange.js +11 -0
  193. package/js/src/src/abstract/jibitex.d.ts +10 -0
  194. package/js/src/src/abstract/jibitex.js +11 -0
  195. package/js/src/src/abstract/kcex.d.ts +10 -0
  196. package/js/src/src/abstract/kcex.js +11 -0
  197. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  198. package/js/src/src/abstract/kifpoolme.js +11 -0
  199. package/js/src/src/abstract/kraken.d.ts +61 -0
  200. package/js/src/src/abstract/kraken.js +11 -0
  201. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  202. package/js/src/src/abstract/krakenfutures.js +11 -0
  203. package/js/src/src/abstract/kucoin.d.ts +227 -0
  204. package/js/src/src/abstract/kucoin.js +11 -0
  205. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  206. package/js/src/src/abstract/kucoinfutures.js +11 -0
  207. package/js/src/src/abstract/latoken.d.ts +59 -0
  208. package/js/src/src/abstract/latoken.js +11 -0
  209. package/js/src/src/abstract/lbank.d.ts +65 -0
  210. package/js/src/src/abstract/lbank.js +11 -0
  211. package/js/src/src/abstract/luno.d.ts +41 -0
  212. package/js/src/src/abstract/luno.js +11 -0
  213. package/js/src/src/abstract/mazdax.d.ts +11 -0
  214. package/js/src/src/abstract/mazdax.js +11 -0
  215. package/js/src/src/abstract/mercado.d.ts +28 -0
  216. package/js/src/src/abstract/mercado.js +11 -0
  217. package/js/src/src/abstract/mexc.d.ts +183 -0
  218. package/js/src/src/abstract/mexc.js +11 -0
  219. package/js/src/src/abstract/modetrade.d.ts +122 -0
  220. package/js/src/src/abstract/modetrade.js +11 -0
  221. package/js/src/src/abstract/ndax.d.ts +100 -0
  222. package/js/src/src/abstract/ndax.js +11 -0
  223. package/js/src/src/abstract/nobitex.d.ts +10 -0
  224. package/js/src/src/abstract/nobitex.js +11 -0
  225. package/js/src/src/abstract/novadax.d.ts +32 -0
  226. package/js/src/src/abstract/novadax.js +11 -0
  227. package/js/src/src/abstract/oceanex.d.ts +30 -0
  228. package/js/src/src/abstract/oceanex.js +11 -0
  229. package/js/src/src/abstract/okcoin.d.ts +77 -0
  230. package/js/src/src/abstract/okcoin.js +11 -0
  231. package/js/src/src/abstract/okexchange.d.ts +11 -0
  232. package/js/src/src/abstract/okexchange.js +11 -0
  233. package/js/src/src/abstract/okx.d.ts +352 -0
  234. package/js/src/src/abstract/okx.js +11 -0
  235. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  236. package/js/src/src/abstract/ompfinex.js +11 -0
  237. package/js/src/src/abstract/onetrading.d.ts +26 -0
  238. package/js/src/src/abstract/onetrading.js +11 -0
  239. package/js/src/src/abstract/oxfun.d.ts +37 -0
  240. package/js/src/src/abstract/oxfun.js +11 -0
  241. package/js/src/src/abstract/p2b.d.ts +25 -0
  242. package/js/src/src/abstract/p2b.js +11 -0
  243. package/js/src/src/abstract/paradex.d.ts +66 -0
  244. package/js/src/src/abstract/paradex.js +11 -0
  245. package/js/src/src/abstract/paymium.d.ts +31 -0
  246. package/js/src/src/abstract/paymium.js +11 -0
  247. package/js/src/src/abstract/phemex.d.ts +120 -0
  248. package/js/src/src/abstract/phemex.js +11 -0
  249. package/js/src/src/abstract/pingi.d.ts +9 -0
  250. package/js/src/src/abstract/pingi.js +11 -0
  251. package/js/src/src/abstract/poloniex.d.ts +108 -0
  252. package/js/src/src/abstract/poloniex.js +11 -0
  253. package/js/src/src/abstract/pooleno.d.ts +8 -0
  254. package/js/src/src/abstract/pooleno.js +11 -0
  255. package/js/src/src/abstract/probit.d.ts +26 -0
  256. package/js/src/src/abstract/probit.js +11 -0
  257. package/js/src/src/abstract/raastin.d.ts +11 -0
  258. package/js/src/src/abstract/raastin.js +11 -0
  259. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  260. package/js/src/src/abstract/ramzinex.js +11 -0
  261. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  262. package/js/src/src/abstract/sarmayex.js +11 -0
  263. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  264. package/js/src/src/abstract/sarrafex.js +11 -0
  265. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  266. package/js/src/src/abstract/tabdeal.js +11 -0
  267. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  268. package/js/src/src/abstract/tehran_exchange.js +11 -0
  269. package/js/src/src/abstract/tetherland.d.ts +8 -0
  270. package/js/src/src/abstract/tetherland.js +11 -0
  271. package/js/src/src/abstract/timex.d.ts +65 -0
  272. package/js/src/src/abstract/timex.js +11 -0
  273. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  274. package/js/src/src/abstract/tokocrypto.js +11 -0
  275. package/js/src/src/abstract/toobit.d.ts +10 -0
  276. package/js/src/src/abstract/toobit.js +11 -0
  277. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  278. package/js/src/src/abstract/tradeogre.js +11 -0
  279. package/js/src/src/abstract/twox.d.ts +8 -0
  280. package/js/src/src/abstract/twox.js +11 -0
  281. package/js/src/src/abstract/ubitex.d.ts +10 -0
  282. package/js/src/src/abstract/ubitex.js +11 -0
  283. package/js/src/src/abstract/upbit.d.ts +58 -0
  284. package/js/src/src/abstract/upbit.js +11 -0
  285. package/js/src/src/abstract/vertex.d.ts +22 -0
  286. package/js/src/src/abstract/vertex.js +11 -0
  287. package/js/src/src/abstract/wallex.d.ts +11 -0
  288. package/js/src/src/abstract/wallex.js +11 -0
  289. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  290. package/js/src/src/abstract/wavesexchange.js +11 -0
  291. package/js/src/src/abstract/whitebit.d.ts +117 -0
  292. package/js/src/src/abstract/whitebit.js +11 -0
  293. package/js/src/src/abstract/woo.d.ts +144 -0
  294. package/js/src/src/abstract/woo.js +11 -0
  295. package/js/src/src/abstract/woofipro.d.ts +122 -0
  296. package/js/src/src/abstract/woofipro.js +11 -0
  297. package/js/src/src/abstract/xt.d.ts +160 -0
  298. package/js/src/src/abstract/xt.js +11 -0
  299. package/js/src/src/abstract/yobit.d.ts +19 -0
  300. package/js/src/src/abstract/yobit.js +11 -0
  301. package/js/src/src/abstract/zaif.d.ts +41 -0
  302. package/js/src/src/abstract/zaif.js +11 -0
  303. package/js/src/src/abstract/zonda.d.ts +56 -0
  304. package/js/src/src/abstract/zonda.js +11 -0
  305. package/js/src/src/afratether.d.ts +21 -0
  306. package/js/src/src/afratether.js +356 -0
  307. package/js/src/src/alpaca.d.ts +332 -0
  308. package/js/src/src/alpaca.js +1908 -0
  309. package/js/src/src/apex.d.ts +333 -0
  310. package/js/src/src/apex.js +1942 -0
  311. package/js/src/src/arzinja.d.ts +21 -0
  312. package/js/src/src/arzinja.js +298 -0
  313. package/js/src/src/arzplus.d.ts +26 -0
  314. package/js/src/src/arzplus.js +581 -0
  315. package/js/src/src/ascendex.d.ts +424 -0
  316. package/js/src/src/ascendex.js +3699 -0
  317. package/js/src/src/asretether.d.ts +21 -0
  318. package/js/src/src/asretether.js +324 -0
  319. package/js/src/src/base/Exchange.d.ts +926 -0
  320. package/js/src/src/base/Exchange.js +7399 -0
  321. package/js/src/src/base/Precise.d.ts +42 -0
  322. package/js/src/src/base/Precise.js +275 -0
  323. package/js/src/src/base/errors.d.ts +168 -0
  324. package/js/src/src/base/errors.js +255 -0
  325. package/js/src/src/base/functions/crypto.d.ts +16 -0
  326. package/js/src/src/base/functions/crypto.js +131 -0
  327. package/js/src/src/base/functions/encode.d.ts +4 -0
  328. package/js/src/src/base/functions/encode.js +32 -0
  329. package/js/src/src/base/functions/generic.d.ts +29 -0
  330. package/js/src/src/base/functions/generic.js +203 -0
  331. package/js/src/src/base/functions/misc.d.ts +9 -0
  332. package/js/src/src/base/functions/misc.js +101 -0
  333. package/js/src/src/base/functions/number.d.ts +27 -0
  334. package/js/src/src/base/functions/number.js +313 -0
  335. package/js/src/src/base/functions/platform.d.ts +7 -0
  336. package/js/src/src/base/functions/platform.js +27 -0
  337. package/js/src/src/base/functions/rsa.d.ts +5 -0
  338. package/js/src/src/base/functions/rsa.js +49 -0
  339. package/js/src/src/base/functions/string.d.ts +7 -0
  340. package/js/src/src/base/functions/string.js +44 -0
  341. package/js/src/src/base/functions/throttle.d.ts +6 -0
  342. package/js/src/src/base/functions/throttle.js +67 -0
  343. package/js/src/src/base/functions/time.d.ts +21 -0
  344. package/js/src/src/base/functions/time.js +171 -0
  345. package/js/src/src/base/functions/totp.d.ts +3 -0
  346. package/js/src/src/base/functions/totp.js +25 -0
  347. package/js/src/src/base/functions/type.d.ts +37 -0
  348. package/js/src/src/base/functions/type.js +179 -0
  349. package/js/src/src/base/functions.d.ts +10 -0
  350. package/js/src/src/base/functions.js +18 -0
  351. package/js/src/src/base/types.d.ts +586 -0
  352. package/js/src/src/base/types.js +7 -0
  353. package/js/src/src/base/ws/Cache.d.ts +27 -0
  354. package/js/src/src/base/ws/Cache.js +260 -0
  355. package/js/src/src/base/ws/Client.d.ts +53 -0
  356. package/js/src/src/base/ws/Client.js +307 -0
  357. package/js/src/src/base/ws/Future.d.ts +8 -0
  358. package/js/src/src/base/ws/Future.js +35 -0
  359. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  360. package/js/src/src/base/ws/OrderBook.js +130 -0
  361. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  362. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  363. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  364. package/js/src/src/base/ws/WsClient.js +69 -0
  365. package/js/src/src/bequant.d.ts +4 -0
  366. package/js/src/src/bequant.js +35 -0
  367. package/js/src/src/bidarz.d.ts +16 -0
  368. package/js/src/src/bidarz.js +327 -0
  369. package/js/src/src/bigone.d.ts +296 -0
  370. package/js/src/src/bigone.js +2340 -0
  371. package/js/src/src/binance.d.ts +1667 -0
  372. package/js/src/src/binance.js +14400 -0
  373. package/js/src/src/binancecoinm.d.ts +6 -0
  374. package/js/src/src/binancecoinm.js +51 -0
  375. package/js/src/src/binanceus.d.ts +4 -0
  376. package/js/src/src/binanceus.js +225 -0
  377. package/js/src/src/binanceusdm.d.ts +6 -0
  378. package/js/src/src/binanceusdm.js +63 -0
  379. package/js/src/src/bingx.d.ts +778 -0
  380. package/js/src/src/bingx.js +6705 -0
  381. package/js/src/src/bit24.d.ts +24 -0
  382. package/js/src/src/bit24.js +520 -0
  383. package/js/src/src/bit2c.d.ts +146 -0
  384. package/js/src/src/bit2c.js +1029 -0
  385. package/js/src/src/bitbank.d.ts +181 -0
  386. package/js/src/src/bitbank.js +1146 -0
  387. package/js/src/src/bitbarg.d.ts +21 -0
  388. package/js/src/src/bitbarg.js +312 -0
  389. package/js/src/src/bitbns.d.ts +184 -0
  390. package/js/src/src/bitbns.js +1288 -0
  391. package/js/src/src/bitfinex.d.ts +516 -0
  392. package/js/src/src/bitfinex.js +3951 -0
  393. package/js/src/src/bitflyer.d.ts +229 -0
  394. package/js/src/src/bitflyer.js +1209 -0
  395. package/js/src/src/bitget.d.ts +1109 -0
  396. package/js/src/src/bitget.js +11033 -0
  397. package/js/src/src/bithumb.d.ts +165 -0
  398. package/js/src/src/bithumb.js +1257 -0
  399. package/js/src/src/bitimen.d.ts +23 -0
  400. package/js/src/src/bitimen.js +424 -0
  401. package/js/src/src/bitir.d.ts +23 -0
  402. package/js/src/src/bitir.js +521 -0
  403. package/js/src/src/bitmart.d.ts +736 -0
  404. package/js/src/src/bitmart.js +5639 -0
  405. package/js/src/src/bitmex.d.ts +395 -0
  406. package/js/src/src/bitmex.js +3088 -0
  407. package/js/src/src/bitopro.d.ts +295 -0
  408. package/js/src/src/bitopro.js +1892 -0
  409. package/js/src/src/bitpin.d.ts +23 -0
  410. package/js/src/src/bitpin.js +487 -0
  411. package/js/src/src/bitrue.d.ts +384 -0
  412. package/js/src/src/bitrue.js +3382 -0
  413. package/js/src/src/bitso.d.ts +270 -0
  414. package/js/src/src/bitso.js +1881 -0
  415. package/js/src/src/bitstamp.d.ts +355 -0
  416. package/js/src/src/bitstamp.js +2445 -0
  417. package/js/src/src/bitteam.d.ts +229 -0
  418. package/js/src/src/bitteam.js +2420 -0
  419. package/js/src/src/bittrade.d.ts +298 -0
  420. package/js/src/src/bittrade.js +2050 -0
  421. package/js/src/src/bitunix.d.ts +21 -0
  422. package/js/src/src/bitunix.js +326 -0
  423. package/js/src/src/bitvavo.d.ts +311 -0
  424. package/js/src/src/bitvavo.js +2204 -0
  425. package/js/src/src/blockchaincom.d.ts +256 -0
  426. package/js/src/src/blockchaincom.js +1259 -0
  427. package/js/src/src/blofin.d.ts +439 -0
  428. package/js/src/src/blofin.js +2576 -0
  429. package/js/src/src/btcalpha.d.ts +209 -0
  430. package/js/src/src/btcalpha.js +1056 -0
  431. package/js/src/src/btcbox.d.ts +144 -0
  432. package/js/src/src/btcbox.js +834 -0
  433. package/js/src/src/btcmarkets.d.ts +253 -0
  434. package/js/src/src/btcmarkets.js +1418 -0
  435. package/js/src/src/btcturk.d.ts +161 -0
  436. package/js/src/src/btcturk.js +1058 -0
  437. package/js/src/src/bybit.d.ts +1097 -0
  438. package/js/src/src/bybit.js +9382 -0
  439. package/js/src/src/bydfi.d.ts +23 -0
  440. package/js/src/src/bydfi.js +434 -0
  441. package/js/src/src/cafearz.d.ts +21 -0
  442. package/js/src/src/cafearz.js +346 -0
  443. package/js/src/src/cex.d.ts +286 -0
  444. package/js/src/src/cex.js +1799 -0
  445. package/js/src/src/coinbase.d.ts +623 -0
  446. package/js/src/src/coinbase.js +5220 -0
  447. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  448. package/js/src/src/coinbaseadvanced.js +18 -0
  449. package/js/src/src/coinbaseexchange.d.ts +334 -0
  450. package/js/src/src/coinbaseexchange.js +2127 -0
  451. package/js/src/src/coinbaseinternational.d.ts +443 -0
  452. package/js/src/src/coinbaseinternational.js +2336 -0
  453. package/js/src/src/coincatch.d.ts +786 -0
  454. package/js/src/src/coincatch.js +5492 -0
  455. package/js/src/src/coincheck.d.ts +147 -0
  456. package/js/src/src/coincheck.js +962 -0
  457. package/js/src/src/coinex.d.ts +719 -0
  458. package/js/src/src/coinex.js +6166 -0
  459. package/js/src/src/coinmate.d.ts +202 -0
  460. package/js/src/src/coinmate.js +1215 -0
  461. package/js/src/src/coinmetro.d.ts +244 -0
  462. package/js/src/src/coinmetro.js +2024 -0
  463. package/js/src/src/coinone.d.ts +158 -0
  464. package/js/src/src/coinone.js +1278 -0
  465. package/js/src/src/coinsph.d.ts +310 -0
  466. package/js/src/src/coinsph.js +2203 -0
  467. package/js/src/src/coinspot.d.ts +108 -0
  468. package/js/src/src/coinspot.js +653 -0
  469. package/js/src/src/cryptocom.d.ts +463 -0
  470. package/js/src/src/cryptocom.js +3549 -0
  471. package/js/src/src/cryptomus.d.ts +158 -0
  472. package/js/src/src/cryptomus.js +1169 -0
  473. package/js/src/src/defx.d.ts +348 -0
  474. package/js/src/src/defx.js +2139 -0
  475. package/js/src/src/delta.d.ts +407 -0
  476. package/js/src/src/delta.js +3654 -0
  477. package/js/src/src/deribit.d.ts +516 -0
  478. package/js/src/src/deribit.js +3790 -0
  479. package/js/src/src/derive.d.ts +324 -0
  480. package/js/src/src/derive.js +2655 -0
  481. package/js/src/src/digifinex.d.ts +544 -0
  482. package/js/src/src/digifinex.js +4453 -0
  483. package/js/src/src/ellipx.d.ts +237 -0
  484. package/js/src/src/ellipx.js +2071 -0
  485. package/js/src/src/eterex.d.ts +21 -0
  486. package/js/src/src/eterex.js +299 -0
  487. package/js/src/src/excoino.d.ts +23 -0
  488. package/js/src/src/excoino.js +426 -0
  489. package/js/src/src/exir.d.ts +23 -0
  490. package/js/src/src/exir.js +403 -0
  491. package/js/src/src/exmo.d.ts +426 -0
  492. package/js/src/src/exmo.js +2825 -0
  493. package/js/src/src/exnovin.d.ts +22 -0
  494. package/js/src/src/exnovin.js +378 -0
  495. package/js/src/src/farhadexchange.d.ts +21 -0
  496. package/js/src/src/farhadexchange.js +280 -0
  497. package/js/src/src/fmfwio.d.ts +4 -0
  498. package/js/src/src/fmfwio.js +35 -0
  499. package/js/src/src/foxbit.d.ts +352 -0
  500. package/js/src/src/foxbit.js +2016 -0
  501. package/js/src/src/gate.d.ts +1071 -0
  502. package/js/src/src/gate.js +8282 -0
  503. package/js/src/src/gateio.d.ts +4 -0
  504. package/js/src/src/gateio.js +17 -0
  505. package/js/src/src/gemini.d.ts +257 -0
  506. package/js/src/src/gemini.js +2006 -0
  507. package/js/src/src/hamtapay.d.ts +21 -0
  508. package/js/src/src/hamtapay.js +303 -0
  509. package/js/src/src/hashkey.d.ts +628 -0
  510. package/js/src/src/hashkey.js +4363 -0
  511. package/js/src/src/hibachi.d.ts +346 -0
  512. package/js/src/src/hibachi.js +2137 -0
  513. package/js/src/src/hitbtc.d.ts +558 -0
  514. package/js/src/src/hitbtc.js +3847 -0
  515. package/js/src/src/hitobit.d.ts +23 -0
  516. package/js/src/src/hitobit.js +412 -0
  517. package/js/src/src/hollaex.d.ts +305 -0
  518. package/js/src/src/hollaex.js +2046 -0
  519. package/js/src/src/htx.d.ts +961 -0
  520. package/js/src/src/htx.js +9668 -0
  521. package/js/src/src/huobi.d.ts +4 -0
  522. package/js/src/src/huobi.js +17 -0
  523. package/js/src/src/hyperliquid.d.ts +651 -0
  524. package/js/src/src/hyperliquid.js +3937 -0
  525. package/js/src/src/independentreserve.d.ts +169 -0
  526. package/js/src/src/independentreserve.js +1115 -0
  527. package/js/src/src/indodax.d.ts +217 -0
  528. package/js/src/src/indodax.js +1454 -0
  529. package/js/src/src/iranexchange.d.ts +21 -0
  530. package/js/src/src/iranexchange.js +399 -0
  531. package/js/src/src/jibitex.d.ts +23 -0
  532. package/js/src/src/jibitex.js +416 -0
  533. package/js/src/src/kcex.d.ts +21 -0
  534. package/js/src/src/kcex.js +335 -0
  535. package/js/src/src/kifpoolme.d.ts +23 -0
  536. package/js/src/src/kifpoolme.js +410 -0
  537. package/js/src/src/kraken.d.ts +484 -0
  538. package/js/src/src/kraken.js +3518 -0
  539. package/js/src/src/krakenfutures.d.ts +362 -0
  540. package/js/src/src/krakenfutures.js +2885 -0
  541. package/js/src/src/kucoin.d.ts +759 -0
  542. package/js/src/src/kucoin.js +5153 -0
  543. package/js/src/src/kucoinfutures.d.ts +521 -0
  544. package/js/src/src/kucoinfutures.js +3381 -0
  545. package/js/src/src/latoken.d.ts +274 -0
  546. package/js/src/src/latoken.js +1824 -0
  547. package/js/src/src/lbank.d.ts +350 -0
  548. package/js/src/src/lbank.js +3146 -0
  549. package/js/src/src/luno.d.ts +252 -0
  550. package/js/src/src/luno.js +1479 -0
  551. package/js/src/src/mazdax.d.ts +23 -0
  552. package/js/src/src/mazdax.js +534 -0
  553. package/js/src/src/mercado.d.ts +160 -0
  554. package/js/src/src/mercado.js +1011 -0
  555. package/js/src/src/mexc.d.ts +768 -0
  556. package/js/src/src/mexc.js +6102 -0
  557. package/js/src/src/modetrade.d.ts +496 -0
  558. package/js/src/src/modetrade.js +2936 -0
  559. package/js/src/src/myokx.d.ts +4 -0
  560. package/js/src/src/myokx.js +54 -0
  561. package/js/src/src/ndax.d.ts +285 -0
  562. package/js/src/src/ndax.js +2598 -0
  563. package/js/src/src/nobitex.d.ts +23 -0
  564. package/js/src/src/nobitex.js +454 -0
  565. package/js/src/src/novadax.d.ts +279 -0
  566. package/js/src/src/novadax.js +1676 -0
  567. package/js/src/src/oceanex.d.ts +231 -0
  568. package/js/src/src/oceanex.js +1123 -0
  569. package/js/src/src/okcoin.d.ts +346 -0
  570. package/js/src/src/okcoin.js +3211 -0
  571. package/js/src/src/okexchange.d.ts +23 -0
  572. package/js/src/src/okexchange.js +373 -0
  573. package/js/src/src/okx.d.ts +1125 -0
  574. package/js/src/src/okx.js +9009 -0
  575. package/js/src/src/okxus.d.ts +4 -0
  576. package/js/src/src/okxus.js +54 -0
  577. package/js/src/src/ompfinex.d.ts +23 -0
  578. package/js/src/src/ompfinex.js +510 -0
  579. package/js/src/src/onetrading.d.ts +228 -0
  580. package/js/src/src/onetrading.js +1769 -0
  581. package/js/src/src/oxfun.d.ts +442 -0
  582. package/js/src/src/oxfun.js +2920 -0
  583. package/js/src/src/p2b.d.ts +189 -0
  584. package/js/src/src/p2b.js +1344 -0
  585. package/js/src/src/paradex.d.ts +389 -0
  586. package/js/src/src/paradex.js +2607 -0
  587. package/js/src/src/paymium.d.ts +133 -0
  588. package/js/src/src/paymium.js +644 -0
  589. package/js/src/src/phemex.d.ts +497 -0
  590. package/js/src/src/phemex.js +5333 -0
  591. package/js/src/src/pingi.d.ts +22 -0
  592. package/js/src/src/pingi.js +446 -0
  593. package/js/src/src/poloniex.d.ts +441 -0
  594. package/js/src/src/poloniex.js +3681 -0
  595. package/js/src/src/pooleno.d.ts +21 -0
  596. package/js/src/src/pooleno.js +347 -0
  597. package/js/src/src/pro/alpaca.d.ts +95 -0
  598. package/js/src/src/pro/alpaca.js +724 -0
  599. package/js/src/src/pro/apex.d.ts +160 -0
  600. package/js/src/src/pro/apex.js +1044 -0
  601. package/js/src/src/pro/ascendex.d.ts +99 -0
  602. package/js/src/src/pro/ascendex.js +1012 -0
  603. package/js/src/src/pro/bequant.d.ts +4 -0
  604. package/js/src/src/pro/bequant.js +42 -0
  605. package/js/src/src/pro/binance.d.ts +796 -0
  606. package/js/src/src/pro/binance.js +4373 -0
  607. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  608. package/js/src/src/pro/binancecoinm.js +32 -0
  609. package/js/src/src/pro/binanceus.d.ts +4 -0
  610. package/js/src/src/pro/binanceus.js +52 -0
  611. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  612. package/js/src/src/pro/binanceusdm.js +37 -0
  613. package/js/src/src/pro/bingx.d.ts +151 -0
  614. package/js/src/src/pro/bingx.js +1568 -0
  615. package/js/src/src/pro/bitfinex.d.ts +99 -0
  616. package/js/src/src/pro/bitfinex.js +1165 -0
  617. package/js/src/src/pro/bitget.d.ts +257 -0
  618. package/js/src/src/pro/bitget.js +2327 -0
  619. package/js/src/src/pro/bithumb.d.ts +59 -0
  620. package/js/src/src/pro/bithumb.js +395 -0
  621. package/js/src/src/pro/bitmart.d.ts +168 -0
  622. package/js/src/src/pro/bitmart.js +1686 -0
  623. package/js/src/src/pro/bitmex.d.ts +170 -0
  624. package/js/src/src/pro/bitmex.js +1760 -0
  625. package/js/src/src/pro/bitopro.d.ts +69 -0
  626. package/js/src/src/pro/bitopro.js +477 -0
  627. package/js/src/src/pro/bitrue.d.ts +40 -0
  628. package/js/src/src/pro/bitrue.js +461 -0
  629. package/js/src/src/pro/bitstamp.d.ts +53 -0
  630. package/js/src/src/pro/bitstamp.js +587 -0
  631. package/js/src/src/pro/bittrade.d.ts +66 -0
  632. package/js/src/src/pro/bittrade.js +606 -0
  633. package/js/src/src/pro/bitvavo.d.ts +321 -0
  634. package/js/src/src/pro/bitvavo.js +1451 -0
  635. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  636. package/js/src/src/pro/blockchaincom.js +777 -0
  637. package/js/src/src/pro/blofin.d.ts +174 -0
  638. package/js/src/src/pro/blofin.js +743 -0
  639. package/js/src/src/pro/bybit.d.ts +397 -0
  640. package/js/src/src/pro/bybit.js +2519 -0
  641. package/js/src/src/pro/cex.d.ts +220 -0
  642. package/js/src/src/pro/cex.js +1535 -0
  643. package/js/src/src/pro/coinbase.d.ts +119 -0
  644. package/js/src/src/pro/coinbase.js +736 -0
  645. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  646. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  647. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  648. package/js/src/src/pro/coinbaseexchange.js +969 -0
  649. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  650. package/js/src/src/pro/coinbaseinternational.js +804 -0
  651. package/js/src/src/pro/coincatch.d.ts +207 -0
  652. package/js/src/src/pro/coincatch.js +1562 -0
  653. package/js/src/src/pro/coincheck.d.ts +33 -0
  654. package/js/src/src/pro/coincheck.js +210 -0
  655. package/js/src/src/pro/coinex.d.ts +147 -0
  656. package/js/src/src/pro/coinex.js +1426 -0
  657. package/js/src/src/pro/coinone.d.ts +51 -0
  658. package/js/src/src/pro/coinone.js +413 -0
  659. package/js/src/src/pro/cryptocom.d.ts +300 -0
  660. package/js/src/src/pro/cryptocom.js +1414 -0
  661. package/js/src/src/pro/defx.d.ts +236 -0
  662. package/js/src/src/pro/defx.js +865 -0
  663. package/js/src/src/pro/deribit.d.ts +163 -0
  664. package/js/src/src/pro/deribit.js +1066 -0
  665. package/js/src/src/pro/derive.d.ts +100 -0
  666. package/js/src/src/pro/derive.js +753 -0
  667. package/js/src/src/pro/exmo.d.ts +97 -0
  668. package/js/src/src/pro/exmo.js +903 -0
  669. package/js/src/src/pro/gate.d.ts +360 -0
  670. package/js/src/src/pro/gate.js +2119 -0
  671. package/js/src/src/pro/gateio.d.ts +4 -0
  672. package/js/src/src/pro/gateio.js +17 -0
  673. package/js/src/src/pro/gemini.d.ts +106 -0
  674. package/js/src/src/pro/gemini.js +932 -0
  675. package/js/src/src/pro/hashkey.d.ts +121 -0
  676. package/js/src/src/pro/hashkey.js +843 -0
  677. package/js/src/src/pro/hitbtc.d.ts +235 -0
  678. package/js/src/src/pro/hitbtc.js +1400 -0
  679. package/js/src/src/pro/hollaex.d.ts +77 -0
  680. package/js/src/src/pro/hollaex.js +604 -0
  681. package/js/src/src/pro/htx.d.ts +141 -0
  682. package/js/src/src/pro/htx.js +2415 -0
  683. package/js/src/src/pro/huobi.d.ts +4 -0
  684. package/js/src/src/pro/huobi.js +17 -0
  685. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  686. package/js/src/src/pro/hyperliquid.js +1126 -0
  687. package/js/src/src/pro/independentreserve.d.ts +36 -0
  688. package/js/src/src/pro/independentreserve.js +287 -0
  689. package/js/src/src/pro/kraken.d.ts +233 -0
  690. package/js/src/src/pro/kraken.js +1785 -0
  691. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  692. package/js/src/src/pro/krakenfutures.js +1592 -0
  693. package/js/src/src/pro/kucoin.d.ts +221 -0
  694. package/js/src/src/pro/kucoin.js +1430 -0
  695. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  696. package/js/src/src/pro/kucoinfutures.js +1295 -0
  697. package/js/src/src/pro/lbank.d.ts +134 -0
  698. package/js/src/src/pro/lbank.js +950 -0
  699. package/js/src/src/pro/luno.d.ts +44 -0
  700. package/js/src/src/pro/luno.js +322 -0
  701. package/js/src/src/pro/mexc.d.ts +210 -0
  702. package/js/src/src/pro/mexc.js +2009 -0
  703. package/js/src/src/pro/modetrade.d.ts +155 -0
  704. package/js/src/src/pro/modetrade.js +1335 -0
  705. package/js/src/src/pro/myokx.d.ts +4 -0
  706. package/js/src/src/pro/myokx.js +39 -0
  707. package/js/src/src/pro/ndax.d.ts +60 -0
  708. package/js/src/src/pro/ndax.js +545 -0
  709. package/js/src/src/pro/okcoin.d.ts +91 -0
  710. package/js/src/src/pro/okcoin.js +763 -0
  711. package/js/src/src/pro/okx.d.ts +408 -0
  712. package/js/src/src/pro/okx.js +2479 -0
  713. package/js/src/src/pro/okxus.d.ts +4 -0
  714. package/js/src/src/pro/okxus.js +39 -0
  715. package/js/src/src/pro/onetrading.d.ts +107 -0
  716. package/js/src/src/pro/onetrading.js +1343 -0
  717. package/js/src/src/pro/oxfun.d.ts +234 -0
  718. package/js/src/src/pro/oxfun.js +1112 -0
  719. package/js/src/src/pro/p2b.d.ts +104 -0
  720. package/js/src/src/pro/p2b.js +506 -0
  721. package/js/src/src/pro/paradex.d.ts +54 -0
  722. package/js/src/src/pro/paradex.js +370 -0
  723. package/js/src/src/pro/phemex.d.ts +129 -0
  724. package/js/src/src/pro/phemex.js +1569 -0
  725. package/js/src/src/pro/poloniex.d.ts +214 -0
  726. package/js/src/src/pro/poloniex.js +1318 -0
  727. package/js/src/src/pro/probit.d.ts +91 -0
  728. package/js/src/src/pro/probit.js +593 -0
  729. package/js/src/src/pro/tradeogre.d.ts +49 -0
  730. package/js/src/src/pro/tradeogre.js +284 -0
  731. package/js/src/src/pro/upbit.d.ts +124 -0
  732. package/js/src/src/pro/upbit.js +689 -0
  733. package/js/src/src/pro/vertex.d.ts +104 -0
  734. package/js/src/src/pro/vertex.js +999 -0
  735. package/js/src/src/pro/whitebit.d.ts +123 -0
  736. package/js/src/src/pro/whitebit.js +971 -0
  737. package/js/src/src/pro/woo.d.ts +161 -0
  738. package/js/src/src/pro/woo.js +1351 -0
  739. package/js/src/src/pro/woofipro.d.ts +155 -0
  740. package/js/src/src/pro/woofipro.js +1335 -0
  741. package/js/src/src/pro/xt.d.ts +165 -0
  742. package/js/src/src/pro/xt.js +1230 -0
  743. package/js/src/src/probit.d.ts +283 -0
  744. package/js/src/src/probit.js +1935 -0
  745. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  746. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  747. package/js/src/src/raastin.d.ts +24 -0
  748. package/js/src/src/raastin.js +494 -0
  749. package/js/src/src/ramzinex.d.ts +23 -0
  750. package/js/src/src/ramzinex.js +510 -0
  751. package/js/src/src/sarmayex.d.ts +21 -0
  752. package/js/src/src/sarmayex.js +376 -0
  753. package/js/src/src/sarrafex.d.ts +23 -0
  754. package/js/src/src/sarrafex.js +501 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  756. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  758. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  760. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  762. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  764. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  766. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  768. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  770. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  772. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  774. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  776. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  778. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  780. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  782. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  784. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  786. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  788. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  790. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  792. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  794. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  796. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  797. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  798. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  799. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  800. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  801. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  802. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  806. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  808. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  810. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  812. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  814. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  816. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  818. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  820. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  826. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  828. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  830. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  832. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  833. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  834. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  838. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  860. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  862. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  878. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  880. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  882. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  884. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  890. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  892. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  894. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  896. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  904. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  906. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  910. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  912. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  916. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  917. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  918. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  919. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  920. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  921. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  922. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  923. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  924. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  925. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  926. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  927. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  928. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  930. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  931. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  932. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  933. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  934. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  936. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  938. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  940. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  950. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  952. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  954. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  960. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  994. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  996. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1010. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1012. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1014. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1016. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1017. package/js/src/src/tabdeal.d.ts +23 -0
  1018. package/js/src/src/tabdeal.js +387 -0
  1019. package/js/src/src/tehran_exchange.d.ts +21 -0
  1020. package/js/src/src/tehran_exchange.js +333 -0
  1021. package/js/src/src/tetherland.d.ts +21 -0
  1022. package/js/src/src/tetherland.js +367 -0
  1023. package/js/src/src/timex.d.ts +247 -0
  1024. package/js/src/src/timex.js +1792 -0
  1025. package/js/src/src/tokocrypto.d.ts +261 -0
  1026. package/js/src/src/tokocrypto.js +2641 -0
  1027. package/js/src/src/toobit.d.ts +22 -0
  1028. package/js/src/src/toobit.js +445 -0
  1029. package/js/src/src/tradeogre.d.ts +149 -0
  1030. package/js/src/src/tradeogre.js +878 -0
  1031. package/js/src/src/twox.d.ts +21 -0
  1032. package/js/src/src/twox.js +371 -0
  1033. package/js/src/src/ubitex.d.ts +23 -0
  1034. package/js/src/src/ubitex.js +433 -0
  1035. package/js/src/src/upbit.d.ts +377 -0
  1036. package/js/src/src/upbit.js +2340 -0
  1037. package/js/src/src/vertex.d.ts +346 -0
  1038. package/js/src/src/vertex.js +3146 -0
  1039. package/js/src/src/wallex.d.ts +23 -0
  1040. package/js/src/src/wallex.js +467 -0
  1041. package/js/src/src/wavesexchange.d.ts +244 -0
  1042. package/js/src/src/wavesexchange.js +2747 -0
  1043. package/js/src/src/whitebit.d.ts +571 -0
  1044. package/js/src/src/whitebit.js +3437 -0
  1045. package/js/src/src/woo.d.ts +727 -0
  1046. package/js/src/src/woo.js +4183 -0
  1047. package/js/src/src/woofipro.d.ts +497 -0
  1048. package/js/src/src/woofipro.js +2941 -0
  1049. package/js/src/src/xt.d.ts +568 -0
  1050. package/js/src/src/xt.js +5184 -0
  1051. package/js/src/src/yobit.d.ts +197 -0
  1052. package/js/src/src/yobit.js +1453 -0
  1053. package/js/src/src/zaif.d.ts +136 -0
  1054. package/js/src/src/zaif.js +821 -0
  1055. package/js/src/src/zonda.d.ts +214 -0
  1056. package/js/src/src/zonda.js +1984 -0
  1057. package/js/test.d.ts +1 -1
  1058. package/js/test.js +33 -33
  1059. package/package.json +1 -1
@@ -0,0 +1,2920 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // ---------------------------------------------------------------------------
8
+ import Exchange from './abstract/oxfun.js';
9
+ import { AccountNotEnabled, ArgumentsRequired, AuthenticationError, BadRequest, BadSymbol, ExchangeError, InvalidOrder, InsufficientFunds, OrderNotFound, MarketClosed, NetworkError, NotSupported, OperationFailed, RateLimitExceeded, RequestTimeout } from './base/errors.js';
10
+ import { TICK_SIZE } from './base/functions/number.js';
11
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * @class oxfun
15
+ * @augments Exchange
16
+ */
17
+ export default class oxfun extends Exchange {
18
+ describe() {
19
+ return this.deepExtend(super.describe(), {
20
+ 'id': 'oxfun',
21
+ 'name': 'OXFUN',
22
+ 'countries': ['PA'],
23
+ 'version': 'v3',
24
+ 'rateLimit': 120,
25
+ 'pro': true,
26
+ 'has': {
27
+ 'CORS': undefined,
28
+ 'spot': true,
29
+ 'margin': false,
30
+ 'swap': true,
31
+ 'future': false,
32
+ 'option': false,
33
+ 'addMargin': false,
34
+ 'cancelAllOrders': true,
35
+ 'cancelOrder': true,
36
+ 'cancelOrders': true,
37
+ 'closeAllPositions': false,
38
+ 'closePosition': false,
39
+ 'createDepositAddress': false,
40
+ 'createMarketBuyOrderWithCost': true,
41
+ 'createMarketOrderWithCost': false,
42
+ 'createMarketSellOrderWithCost': false,
43
+ 'createOrder': true,
44
+ 'createOrders': true,
45
+ 'createPostOnlyOrder': true,
46
+ 'createReduceOnlyOrder': false,
47
+ 'createStopLimitOrder': true,
48
+ 'createStopMarketOrder': true,
49
+ 'createStopOrder': true,
50
+ 'deposit': false,
51
+ 'editOrder': false,
52
+ 'fetchAccounts': true,
53
+ 'fetchBalance': true,
54
+ 'fetchBidsAsks': false,
55
+ 'fetchBorrowInterest': false,
56
+ 'fetchBorrowRateHistories': false,
57
+ 'fetchBorrowRateHistory': false,
58
+ 'fetchCanceledOrders': false,
59
+ 'fetchClosedOrder': false,
60
+ 'fetchClosedOrders': false,
61
+ 'fetchCrossBorrowRate': false,
62
+ 'fetchCrossBorrowRates': false,
63
+ 'fetchCurrencies': true,
64
+ 'fetchDeposit': false,
65
+ 'fetchDepositAddress': true,
66
+ 'fetchDepositAddresses': false,
67
+ 'fetchDepositAddressesByNetwork': false,
68
+ 'fetchDeposits': true,
69
+ 'fetchDepositWithdrawFee': false,
70
+ 'fetchDepositWithdrawFees': false,
71
+ 'fetchFundingHistory': true,
72
+ 'fetchFundingRate': true,
73
+ 'fetchFundingRateHistory': true,
74
+ 'fetchFundingRates': true,
75
+ 'fetchIndexOHLCV': false,
76
+ 'fetchIsolatedBorrowRate': false,
77
+ 'fetchIsolatedBorrowRates': false,
78
+ 'fetchL3OrderBook': false,
79
+ 'fetchLedger': false,
80
+ 'fetchLeverage': false,
81
+ 'fetchLeverageTiers': true,
82
+ 'fetchMarketLeverageTiers': 'emulated',
83
+ 'fetchMarkets': true,
84
+ 'fetchMarkOHLCV': false,
85
+ 'fetchMyTrades': true,
86
+ 'fetchOHLCV': true,
87
+ 'fetchOpenInterestHistory': false,
88
+ 'fetchOpenOrder': false,
89
+ 'fetchOpenOrders': true,
90
+ 'fetchOrder': true,
91
+ 'fetchOrderBook': true,
92
+ 'fetchOrderBooks': false,
93
+ 'fetchOrders': false,
94
+ 'fetchOrderTrades': false,
95
+ 'fetchPosition': false,
96
+ 'fetchPositionHistory': false,
97
+ 'fetchPositionMode': false,
98
+ 'fetchPositions': true,
99
+ 'fetchPositionsForSymbol': false,
100
+ 'fetchPositionsHistory': false,
101
+ 'fetchPositionsRisk': false,
102
+ 'fetchPremiumIndexOHLCV': false,
103
+ 'fetchStatus': false,
104
+ 'fetchTicker': true,
105
+ 'fetchTickers': true,
106
+ 'fetchTime': false,
107
+ 'fetchTrades': true,
108
+ 'fetchTradingFee': false,
109
+ 'fetchTradingFees': false,
110
+ 'fetchTradingLimits': false,
111
+ 'fetchTransactionFee': false,
112
+ 'fetchTransactionFees': false,
113
+ 'fetchTransactions': false,
114
+ 'fetchTransfers': true,
115
+ 'fetchWithdrawal': false,
116
+ 'fetchWithdrawals': true,
117
+ 'fetchWithdrawalWhitelist': false,
118
+ 'reduceMargin': false,
119
+ 'repayCrossMargin': false,
120
+ 'repayIsolatedMargin': false,
121
+ 'sandbox': true,
122
+ 'setLeverage': false,
123
+ 'setMargin': false,
124
+ 'setMarginMode': false,
125
+ 'setPositionMode': false,
126
+ 'signIn': false,
127
+ 'transfer': true,
128
+ 'withdraw': true,
129
+ 'ws': true,
130
+ },
131
+ 'timeframes': {
132
+ '1m': '60s',
133
+ '5m': '300s',
134
+ '15m': '900s',
135
+ '30m': '1800s',
136
+ '1h': '3600s',
137
+ '2h': '7200s',
138
+ '4h': '14400s',
139
+ '1d': '86400s',
140
+ },
141
+ 'urls': {
142
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/6a196124-c1ee-4fae-8573-962071b61a85',
143
+ 'referral': 'https://ox.fun/register?shareAccountId=5ZUD4a7G',
144
+ 'api': {
145
+ 'public': 'https://api.ox.fun',
146
+ 'private': 'https://api.ox.fun',
147
+ },
148
+ 'test': {
149
+ 'public': 'https://stgapi.ox.fun',
150
+ 'private': 'https://stgapi.ox.fun',
151
+ },
152
+ 'www': 'https://ox.fun/',
153
+ 'doc': 'https://docs.ox.fun/',
154
+ 'fees': 'https://support.ox.fun/en/articles/8819866-trading-fees',
155
+ },
156
+ 'api': {
157
+ 'public': {
158
+ 'get': {
159
+ 'v3/markets': 1,
160
+ 'v3/assets': 1,
161
+ 'v3/tickers': 1,
162
+ 'v3/funding/estimates': 1,
163
+ 'v3/candles': 1,
164
+ 'v3/depth': 1,
165
+ 'v3/markets/operational': 1,
166
+ 'v3/exchange-trades': 1,
167
+ 'v3/funding/rates': 1,
168
+ 'v3/leverage/tiers': 1,
169
+ },
170
+ },
171
+ 'private': {
172
+ 'get': {
173
+ 'v3/account': 1,
174
+ 'v3/account/names': 1,
175
+ 'v3/wallet': 1,
176
+ 'v3/transfer': 1,
177
+ 'v3/balances': 1,
178
+ 'v3/positions': 1,
179
+ 'v3/funding': 1,
180
+ 'v3/deposit-addresses': 1,
181
+ 'v3/deposit': 1,
182
+ 'v3/withdrawal-addresses': 1,
183
+ 'v3/withdrawal': 1,
184
+ 'v3/withdrawal-fees': 1,
185
+ 'v3/orders/status': 1,
186
+ 'v3/orders/working': 1,
187
+ 'v3/trades': 1,
188
+ },
189
+ 'post': {
190
+ 'v3/transfer': 1,
191
+ 'v3/withdrawal': 1,
192
+ 'v3/orders/place': 1,
193
+ },
194
+ 'delete': {
195
+ 'v3/orders/cancel': 1,
196
+ 'v3/orders/cancel-all': 1,
197
+ },
198
+ },
199
+ },
200
+ 'fees': {
201
+ 'trading': {
202
+ 'tierBased': true,
203
+ 'percentage': true,
204
+ 'maker': this.parseNumber('0.00020'),
205
+ 'taker': this.parseNumber('0.00070'),
206
+ 'tiers': {
207
+ 'maker': [
208
+ [this.parseNumber('0'), this.parseNumber('0.00020')],
209
+ [this.parseNumber('2500000'), this.parseNumber('0.00010')],
210
+ [this.parseNumber('25000000'), this.parseNumber('0')],
211
+ ],
212
+ 'taker': [
213
+ [this.parseNumber('0'), this.parseNumber('0.00070')],
214
+ [this.parseNumber('2500000'), this.parseNumber('0.00050')],
215
+ [this.parseNumber('25000000'), this.parseNumber('0.00040')],
216
+ ],
217
+ },
218
+ },
219
+ },
220
+ 'precisionMode': TICK_SIZE,
221
+ // exchange-specific options
222
+ 'options': {
223
+ 'sandboxMode': false,
224
+ 'networks': {
225
+ 'BTC': 'Bitcoin',
226
+ 'ERC20': 'Ethereum',
227
+ 'AVAX': 'Avalanche',
228
+ 'SOL': 'Solana',
229
+ 'ARB': 'Arbitrum',
230
+ 'MATIC': 'Polygon',
231
+ 'FTM': 'Fantom',
232
+ 'BNB': 'BNBSmartChain',
233
+ 'OPTIMISM': 'Optimism',
234
+ },
235
+ 'networksById': {
236
+ 'Bitcoin': 'BTC',
237
+ 'Ethereum': 'ERC20',
238
+ 'Avalanche': 'AVAX',
239
+ 'Solana': 'SOL',
240
+ 'Arbitrum': 'ARB',
241
+ 'Polygon': 'MATIC',
242
+ 'Fantom': 'FTM',
243
+ 'Base': 'BASE',
244
+ 'BNBSmartChain': 'BNB',
245
+ 'Optimism': 'OPTIMISM',
246
+ },
247
+ },
248
+ 'features': {
249
+ 'default': {
250
+ 'sandbox': true,
251
+ 'createOrder': {
252
+ 'marginMode': false,
253
+ 'triggerPrice': true,
254
+ 'triggerDirection': false,
255
+ 'triggerPriceType': undefined,
256
+ 'stopLossPrice': false,
257
+ 'takeProfitPrice': false,
258
+ 'attachedStopLossTakeProfit': undefined,
259
+ 'timeInForce': {
260
+ 'IOC': true,
261
+ 'FOK': true,
262
+ 'PO': true,
263
+ 'GTD': false,
264
+ },
265
+ 'hedged': false,
266
+ 'trailing': false,
267
+ 'leverage': false,
268
+ 'marketBuyByCost': true,
269
+ 'marketBuyRequiresPrice': false,
270
+ 'selfTradePrevention': true,
271
+ 'iceberg': true, // todo
272
+ },
273
+ 'createOrders': {
274
+ 'max': 10, // todo
275
+ },
276
+ 'fetchMyTrades': {
277
+ 'marginMode': false,
278
+ 'limit': 500,
279
+ 'daysBack': 100000,
280
+ 'untilDays': 7,
281
+ 'symbolRequired': false,
282
+ },
283
+ 'fetchOrder': {
284
+ 'marginMode': false,
285
+ 'trigger': false,
286
+ 'trailing': false,
287
+ 'symbolRequired': false,
288
+ },
289
+ 'fetchOpenOrders': {
290
+ 'marginMode': false,
291
+ 'limit': undefined,
292
+ 'trigger': false,
293
+ 'trailing': false,
294
+ 'symbolRequired': false,
295
+ },
296
+ 'fetchOrders': undefined,
297
+ 'fetchClosedOrders': undefined,
298
+ 'fetchOHLCV': {
299
+ 'limit': 500,
300
+ },
301
+ },
302
+ 'spot': {
303
+ 'extends': 'default',
304
+ },
305
+ 'swap': {
306
+ 'linear': {
307
+ 'extends': 'default',
308
+ },
309
+ 'inverse': undefined,
310
+ },
311
+ 'future': {
312
+ 'linear': undefined,
313
+ 'inverse': undefined,
314
+ },
315
+ },
316
+ 'exceptions': {
317
+ 'exact': {
318
+ '-0010': OperationFailed,
319
+ '-429': RateLimitExceeded,
320
+ '-05001': AuthenticationError,
321
+ '-10001': ExchangeError,
322
+ '-20000': BadRequest,
323
+ '-20001': BadRequest,
324
+ '-20002': BadRequest,
325
+ '-20003': NotSupported,
326
+ '-20005': AuthenticationError,
327
+ '-20006': BadRequest,
328
+ '-20007': AuthenticationError,
329
+ '-20008': BadRequest,
330
+ '-20009': BadRequest,
331
+ '-20010': ArgumentsRequired,
332
+ '-20011': ArgumentsRequired,
333
+ '-20012': ArgumentsRequired,
334
+ '-20013': ArgumentsRequired,
335
+ '-20014': BadRequest,
336
+ '-20015': BadSymbol,
337
+ '-20016': BadRequest,
338
+ '-20017': BadRequest,
339
+ '-20018': BadRequest,
340
+ '-20019': BadRequest,
341
+ '-20020': BadRequest,
342
+ '-20021': BadRequest,
343
+ '-20022': ArgumentsRequired,
344
+ '-20023': ArgumentsRequired,
345
+ '-20024': ExchangeError,
346
+ '-20025': AuthenticationError,
347
+ '-20026': BadRequest,
348
+ '-20027': BadRequest,
349
+ '-20028': BadRequest,
350
+ '-20029': BadRequest,
351
+ '-20030': BadRequest,
352
+ '-20031': MarketClosed,
353
+ '-20032': NetworkError,
354
+ '-20033': BadRequest,
355
+ '-20034': BadRequest,
356
+ '-20050': ExchangeError,
357
+ '-30001': BadRequest,
358
+ '-35034': AuthenticationError,
359
+ '-35046': AuthenticationError,
360
+ '-40001': ExchangeError,
361
+ '-50001': ExchangeError,
362
+ '-300001': AccountNotEnabled,
363
+ '-300011': InvalidOrder,
364
+ '-300012': InvalidOrder,
365
+ '-100005': OrderNotFound,
366
+ '-100006': InvalidOrder,
367
+ '-100008': BadRequest,
368
+ '-100015': NetworkError,
369
+ '-710001': ExchangeError,
370
+ '-710002': BadRequest,
371
+ '-710003': BadRequest,
372
+ '-710004': BadRequest,
373
+ '-710005': InsufficientFunds,
374
+ '-710006': InsufficientFunds,
375
+ '-710007': InsufficientFunds,
376
+ '-000101': NetworkError,
377
+ '-000201': NetworkError, // Trade service is busy, try again later
378
+ },
379
+ 'broad': {
380
+ '-20001': OperationFailed,
381
+ '-200050': RequestTimeout, // The market is not active
382
+ },
383
+ },
384
+ });
385
+ }
386
+ /**
387
+ * @method
388
+ * @name oxfun#fetchMarkets
389
+ * @description retrieves data on all markets for bitmex
390
+ * @see https://docs.ox.fun/?json#get-v3-markets
391
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
392
+ * @returns {object[]} an array of objects representing market data
393
+ */
394
+ async fetchMarkets(params = {}) {
395
+ const [responseFromMarkets, responseFromTickers] = await Promise.all([this.publicGetV3Markets(params), this.publicGetV3Tickers(params)]);
396
+ const marketsFromMarkets = this.safeList(responseFromMarkets, 'data', []);
397
+ //
398
+ // {
399
+ // success: true,
400
+ // data: [
401
+ // {
402
+ // marketCode: 'OX-USD-SWAP-LIN',
403
+ // name: 'OX/USD Perp',
404
+ // referencePair: 'OX/USDT',
405
+ // base: 'OX',
406
+ // counter: 'USD',
407
+ // type: 'FUTURE',
408
+ // tickSize: '0.00001',
409
+ // minSize: '1',
410
+ // listedAt: '1704766320000',
411
+ // upperPriceBound: '0.02122',
412
+ // lowerPriceBound: '0.01142',
413
+ // markPrice: '0.01632',
414
+ // indexPrice: '0.01564',
415
+ // lastUpdatedAt: '1714762235569'
416
+ // },
417
+ // {
418
+ // marketCode: 'BTC-USD-SWAP-LIN',
419
+ // name: 'BTC/USD Perp',
420
+ // referencePair: 'BTC/USDT',
421
+ // base: 'BTC',
422
+ // counter: 'USD',
423
+ // type: 'FUTURE',
424
+ // tickSize: '1',
425
+ // minSize: '0.0001',
426
+ // listedAt: '1704686640000',
427
+ // upperPriceBound: '67983',
428
+ // lowerPriceBound: '55621',
429
+ // markPrice: '61802',
430
+ // indexPrice: '61813',
431
+ // lastUpdatedAt: '1714762234765'
432
+ // },
433
+ // {
434
+ // "marketCode": "MILK-OX",
435
+ // "name": "MILK/OX",
436
+ // "referencePair": "MILK/OX",
437
+ // "base": "MILK",
438
+ // "counter": "OX",
439
+ // "type": "SPOT",
440
+ // "tickSize": "0.0001",
441
+ // "minSize": "1",
442
+ // "listedAt": "1706608500000",
443
+ // "upperPriceBound": "1.0000",
444
+ // "lowerPriceBound": "-1.0000",
445
+ // "markPrice": "0.0269",
446
+ // "indexPrice": "0.0269",
447
+ // "lastUpdatedAt": "1714757402185"
448
+ // },
449
+ // ...
450
+ // ]
451
+ // }
452
+ //
453
+ const marketsFromTickers = this.safeList(responseFromTickers, 'data', []);
454
+ //
455
+ // {
456
+ // "success": true,
457
+ // "data": [
458
+ // {
459
+ // "marketCode": "DYM-USD-SWAP-LIN",
460
+ // "markPrice": "3.321",
461
+ // "open24h": "3.315",
462
+ // "high24h": "3.356",
463
+ // "low24h": "3.255",
464
+ // "volume24h": "0",
465
+ // "currencyVolume24h": "0",
466
+ // "openInterest": "1768.1",
467
+ // "lastTradedPrice": "3.543",
468
+ // "lastTradedQuantity": "1.0",
469
+ // "lastUpdatedAt": "1714853388102"
470
+ // },
471
+ // ...
472
+ // ]
473
+ // }
474
+ //
475
+ const markets = this.arrayConcat(marketsFromMarkets, marketsFromTickers);
476
+ return this.parseMarkets(markets);
477
+ }
478
+ parseMarkets(markets) {
479
+ const marketIds = [];
480
+ const result = [];
481
+ for (let i = 0; i < markets.length; i++) {
482
+ const market = markets[i];
483
+ const marketId = this.safeString(market, 'marketCode');
484
+ if (!(this.inArray(marketId, marketIds))) {
485
+ marketIds.push(marketId);
486
+ result.push(this.parseMarket(market));
487
+ }
488
+ }
489
+ return result;
490
+ }
491
+ parseMarket(market) {
492
+ const id = this.safeString(market, 'marketCode', '');
493
+ const parts = id.split('-');
494
+ const baseId = this.safeString(parts, 0);
495
+ const quoteId = this.safeString(parts, 1);
496
+ const base = this.safeCurrencyCode(baseId);
497
+ const quote = this.safeCurrencyCode(quoteId);
498
+ let symbol = base + '/' + quote;
499
+ let type = this.safeStringLower(market, 'type', 'spot'); // markets from v3/tickers are spot and have no type
500
+ let settleId = undefined;
501
+ let settle = undefined;
502
+ const isFuture = (type === 'future'); // the exchange has only perpetual futures
503
+ if (isFuture) {
504
+ type = 'swap';
505
+ settleId = 'OX';
506
+ settle = this.safeCurrencyCode('OX');
507
+ symbol = symbol + ':' + settle;
508
+ }
509
+ const isSpot = type === 'spot';
510
+ return this.safeMarketStructure({
511
+ 'id': id,
512
+ 'numericId': undefined,
513
+ 'symbol': symbol,
514
+ 'base': base,
515
+ 'quote': quote,
516
+ 'settle': settle,
517
+ 'baseId': baseId,
518
+ 'quoteId': quoteId,
519
+ 'settleId': settleId,
520
+ 'type': type,
521
+ 'spot': isSpot,
522
+ 'margin': false,
523
+ 'swap': isFuture,
524
+ 'future': false,
525
+ 'option': false,
526
+ 'active': true,
527
+ 'contract': isFuture,
528
+ 'linear': isFuture ? true : undefined,
529
+ 'inverse': isFuture ? false : undefined,
530
+ 'taker': this.fees['trading']['taker'],
531
+ 'maker': this.fees['trading']['maker'],
532
+ 'contractSize': isFuture ? 1 : undefined,
533
+ 'expiry': undefined,
534
+ 'expiryDatetime': undefined,
535
+ 'strike': undefined,
536
+ 'optionType': undefined,
537
+ 'precision': {
538
+ 'amount': undefined,
539
+ 'price': this.safeNumber(market, 'tickSize'),
540
+ },
541
+ 'limits': {
542
+ 'leverage': {
543
+ 'min': undefined,
544
+ 'max': undefined,
545
+ },
546
+ 'amount': {
547
+ 'min': this.safeNumber(market, 'minSize'),
548
+ 'max': undefined,
549
+ },
550
+ 'price': {
551
+ 'min': undefined,
552
+ 'max': undefined,
553
+ },
554
+ 'cost': {
555
+ 'min': undefined,
556
+ 'max': undefined,
557
+ },
558
+ },
559
+ 'created': this.safeInteger(market, 'listedAt'),
560
+ 'index': undefined,
561
+ 'info': market,
562
+ });
563
+ }
564
+ /**
565
+ * @method
566
+ * @name oxfun#fetchCurrencies
567
+ * @description fetches all available currencies on an exchange
568
+ * @see https://docs.ox.fun/?json#get-v3-assets
569
+ * @param {dict} [params] extra parameters specific to the exchange API endpoint
570
+ * @returns {dict} an associative dictionary of currencies
571
+ */
572
+ async fetchCurrencies(params = {}) {
573
+ const response = await this.publicGetV3Assets(params);
574
+ //
575
+ // {
576
+ // "success": true,
577
+ // "data": [
578
+ // {
579
+ // "asset": "OX",
580
+ // "isCollateral": true,
581
+ // "loanToValue": "1.000000000",
582
+ // "loanToValueFactor": "0.000000000",
583
+ // "networkList": [
584
+ // {
585
+ // "network": "BNBSmartChain",
586
+ // "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
587
+ // "transactionPrecision": "18",
588
+ // "isWithdrawalFeeChargedToUser": true,
589
+ // "canDeposit": true,
590
+ // "canWithdraw": false,
591
+ // "minDeposit": "0.00010",
592
+ // "minWithdrawal": "0.00010"
593
+ // },
594
+ // {
595
+ // "network": "Polygon",
596
+ // "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
597
+ // "transactionPrecision": "18",
598
+ // "isWithdrawalFeeChargedToUser": true,
599
+ // "canDeposit": true,
600
+ // "canWithdraw": false,
601
+ // "minDeposit": "0.00010",
602
+ // "minWithdrawal": "0.00010"
603
+ // },
604
+ // ...
605
+ // ]
606
+ // },
607
+ // {
608
+ // "asset": "BTC",
609
+ // "isCollateral": true,
610
+ // "loanToValue": "0.950000000",
611
+ // "loanToValueFactor": "0.000000000",
612
+ // "networkList": [
613
+ // {
614
+ // "network": "Bitcoin",
615
+ // "transactionPrecision": "8",
616
+ // "isWithdrawalFeeChargedToUser": true,
617
+ // "canDeposit": true,
618
+ // "canWithdraw": true,
619
+ // "minDeposit": "0.00010",
620
+ // "minWithdrawal": "0.00010"
621
+ // }
622
+ // ]
623
+ // },
624
+ // {
625
+ // "asset": "USDT.ARB",
626
+ // "isCollateral": true,
627
+ // "loanToValue": "0.950000000",
628
+ // "loanToValueFactor": "0.000000000",
629
+ // "networkList": [
630
+ // {
631
+ // "network": "Arbitrum",
632
+ // "tokenId": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
633
+ // "transactionPrecision": "18",
634
+ // "isWithdrawalFeeChargedToUser": true,
635
+ // "canDeposit": true,
636
+ // "canWithdraw": true,
637
+ // "minDeposit": "0.00010",
638
+ // "minWithdrawal": "0.00010"
639
+ // }
640
+ // ]
641
+ // },
642
+ // ...
643
+ // ]
644
+ // }
645
+ //
646
+ const data = this.safeList(response, 'data', []);
647
+ const result = {};
648
+ for (let i = 0; i < data.length; i++) {
649
+ const currency = data[i];
650
+ const fullId = this.safeString(currency, 'asset', '');
651
+ const parts = fullId.split('.');
652
+ const id = parts[0];
653
+ const code = this.safeCurrencyCode(id);
654
+ if (!(code in result)) {
655
+ result[code] = {
656
+ 'id': id,
657
+ 'code': code,
658
+ 'precision': undefined,
659
+ 'type': undefined,
660
+ 'name': undefined,
661
+ 'active': undefined,
662
+ 'deposit': undefined,
663
+ 'withdraw': undefined,
664
+ 'fee': undefined,
665
+ 'limits': {
666
+ 'withdraw': {
667
+ 'min': undefined,
668
+ 'max': undefined,
669
+ },
670
+ 'deposit': {
671
+ 'min': undefined,
672
+ 'max': undefined,
673
+ },
674
+ },
675
+ 'networks': {},
676
+ 'info': [],
677
+ };
678
+ }
679
+ const chains = this.safeList(currency, 'networkList', []);
680
+ for (let j = 0; j < chains.length; j++) {
681
+ const chain = chains[j];
682
+ const networkId = this.safeString(chain, 'network');
683
+ const networkCode = this.networkIdToCode(networkId);
684
+ result[code]['networks'][networkCode] = {
685
+ 'id': networkId,
686
+ 'network': networkCode,
687
+ 'margin': undefined,
688
+ 'deposit': this.safeBool(chain, 'canDeposit'),
689
+ 'withdraw': this.safeBool(chain, 'canWithdraw'),
690
+ 'active': undefined,
691
+ 'fee': undefined,
692
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(chain, 'transactionPrecision'))),
693
+ 'limits': {
694
+ 'deposit': {
695
+ 'min': this.safeNumber(chain, 'minDeposit'),
696
+ 'max': undefined,
697
+ },
698
+ 'withdraw': {
699
+ 'min': this.safeNumber(chain, 'minWithdrawal'),
700
+ 'max': undefined,
701
+ },
702
+ },
703
+ 'info': chain,
704
+ };
705
+ }
706
+ const infos = this.safeList(result[code], 'info', []);
707
+ infos.push(currency);
708
+ result[code]['info'] = infos;
709
+ }
710
+ // only after all entries are formed in currencies, restructure each entry
711
+ const allKeys = Object.keys(result);
712
+ for (let i = 0; i < allKeys.length; i++) {
713
+ const code = allKeys[i];
714
+ result[code] = this.safeCurrencyStructure(result[code]); // this is needed after adding network entry
715
+ }
716
+ return result;
717
+ }
718
+ /**
719
+ * @method
720
+ * @name oxfun#fetchTickers
721
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
722
+ * @see https://docs.ox.fun/?json#get-v3-tickers
723
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
724
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
725
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
726
+ */
727
+ async fetchTickers(symbols = undefined, params = {}) {
728
+ await this.loadMarkets();
729
+ symbols = this.marketSymbols(symbols);
730
+ const response = await this.publicGetV3Tickers(params);
731
+ //
732
+ // {
733
+ // "success": true,
734
+ // "data": [
735
+ // {
736
+ // "marketCode": "NII-USDT",
737
+ // "markPrice": "0",
738
+ // "open24h": "0",
739
+ // "high24h": "0",
740
+ // "low24h": "0",
741
+ // "volume24h": "0",
742
+ // "currencyVolume24h": "0",
743
+ // "openInterest": "0",
744
+ // "lastTradedPrice": "0",
745
+ // "lastTradedQuantity": "0",
746
+ // "lastUpdatedAt": "1714853388621"
747
+ // },
748
+ // {
749
+ // "marketCode": "GEC-USDT",
750
+ // "markPrice": "0",
751
+ // "open24h": "0",
752
+ // "high24h": "0",
753
+ // "low24h": "0",
754
+ // "volume24h": "0",
755
+ // "currencyVolume24h": "0",
756
+ // "openInterest": "0",
757
+ // "lastTradedPrice": "0",
758
+ // "lastTradedQuantity": "0",
759
+ // "lastUpdatedAt": "1714853388621"
760
+ // },
761
+ // {
762
+ // "marketCode": "DYM-USD-SWAP-LIN",
763
+ // "markPrice": "3.321",
764
+ // "open24h": "3.315",
765
+ // "high24h": "3.356",
766
+ // "low24h": "3.255",
767
+ // "volume24h": "0",
768
+ // "currencyVolume24h": "0",
769
+ // "openInterest": "1768.1",
770
+ // "lastTradedPrice": "3.543",
771
+ // "lastTradedQuantity": "1.0",
772
+ // "lastUpdatedAt": "1714853388102"
773
+ // },
774
+ // ...
775
+ // ]
776
+ // }
777
+ //
778
+ const tickers = this.safeList(response, 'data', []);
779
+ return this.parseTickers(tickers, symbols);
780
+ }
781
+ /**
782
+ * @method
783
+ * @name oxfun#fetchTicker
784
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
785
+ * @see https://docs.ox.fun/?json#get-v3-tickers
786
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
787
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
788
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
789
+ */
790
+ async fetchTicker(symbol, params = {}) {
791
+ await this.loadMarkets();
792
+ const market = this.market(symbol);
793
+ const request = {
794
+ 'marketCode': market['id'],
795
+ };
796
+ const response = await this.publicGetV3Tickers(this.extend(request, params));
797
+ //
798
+ // {
799
+ // "success": true,
800
+ // "data": [
801
+ // {
802
+ // "marketCode": "BTC-USD-SWAP-LIN",
803
+ // "markPrice": "64276",
804
+ // "open24h": "63674",
805
+ // "high24h": "64607",
806
+ // "low24h": "62933",
807
+ // "volume24h": "306317655.80000",
808
+ // "currencyVolume24h": "48.06810",
809
+ // "openInterest": "72.39250",
810
+ // "lastTradedPrice": "64300.0",
811
+ // "lastTradedQuantity": "1.0",
812
+ // "lastUpdatedAt": "1714925196034"
813
+ // }
814
+ // ]
815
+ // }
816
+ //
817
+ const data = this.safeList(response, 'data', []);
818
+ const ticker = this.safeDict(data, 0, {});
819
+ return this.parseTicker(ticker, market);
820
+ }
821
+ parseTicker(ticker, market = undefined) {
822
+ //
823
+ // {
824
+ // "marketCode": "BTC-USD-SWAP-LIN",
825
+ // "markPrice": "64276",
826
+ // "open24h": "63674",
827
+ // "high24h": "64607",
828
+ // "low24h": "62933",
829
+ // "volume24h": "306317655.80000",
830
+ // "currencyVolume24h": "48.06810",
831
+ // "openInterest": "72.39250",
832
+ // "lastTradedPrice": "64300.0",
833
+ // "lastTradedQuantity": "1.0",
834
+ // "lastUpdatedAt": "1714925196034"
835
+ // }
836
+ //
837
+ const timestamp = this.safeInteger(ticker, 'lastUpdatedAt');
838
+ const marketId = this.safeString(ticker, 'marketCode');
839
+ market = this.safeMarket(marketId, market);
840
+ const symbol = market['symbol'];
841
+ const last = this.safeString(ticker, 'lastTradedPrice');
842
+ return this.safeTicker({
843
+ 'symbol': symbol,
844
+ 'timestamp': timestamp,
845
+ 'datetime': this.iso8601(timestamp),
846
+ 'high': this.safeString(ticker, 'high24h'),
847
+ 'low': this.safeString(ticker, 'low24h'),
848
+ 'bid': undefined,
849
+ 'bidVolume': undefined,
850
+ 'ask': undefined,
851
+ 'askVolume': undefined,
852
+ 'vwap': undefined,
853
+ 'open': this.safeString(ticker, 'open24h'),
854
+ 'close': last,
855
+ 'last': last,
856
+ 'previousClose': undefined,
857
+ 'change': undefined,
858
+ 'percentage': undefined,
859
+ 'average': undefined,
860
+ 'baseVolume': this.safeString(ticker, 'currencyVolume24h'),
861
+ 'quoteVolume': undefined,
862
+ 'markPrice': this.safeString(ticker, 'markPrice'),
863
+ 'info': ticker,
864
+ }, market);
865
+ }
866
+ /**
867
+ * @method
868
+ * @name oxfun#fetchOHLCV
869
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
870
+ * @see https://docs.ox.fun/?json#get-v3-candles
871
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
872
+ * @param {string} timeframe the length of time each candle represents
873
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch (default 24 hours ago)
874
+ * @param {int} [limit] the maximum amount of candles to fetch (default 200, max 500)
875
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
876
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch (default now)
877
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
878
+ */
879
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
880
+ await this.loadMarkets();
881
+ const market = this.market(symbol);
882
+ timeframe = this.safeString(this.timeframes, timeframe, timeframe);
883
+ const request = {
884
+ 'marketCode': market['id'],
885
+ 'timeframe': timeframe,
886
+ };
887
+ if (since !== undefined) {
888
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
889
+ }
890
+ if (limit !== undefined) {
891
+ request['limit'] = limit;
892
+ }
893
+ const until = this.safeInteger(params, 'until');
894
+ if (until !== undefined) {
895
+ request['endTime'] = until;
896
+ params = this.omit(params, 'until');
897
+ }
898
+ else if (since !== undefined) {
899
+ request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
900
+ }
901
+ const response = await this.publicGetV3Candles(this.extend(request, params));
902
+ //
903
+ // {
904
+ // "success": true,
905
+ // "timeframe": "3600s",
906
+ // "data": [
907
+ // {
908
+ // "open": "0.03240000",
909
+ // "high": "0.03240000",
910
+ // "low": "0.03240000",
911
+ // "close": "0.03240000",
912
+ // "volume": "0",
913
+ // "currencyVolume": "0",
914
+ // "openedAt": "1714906800000"
915
+ // },
916
+ // {
917
+ // "open": "0.03240000",
918
+ // "high": "0.03240000",
919
+ // "low": "0.03240000",
920
+ // "close": "0.03240000",
921
+ // "volume": "0",
922
+ // "currencyVolume": "0",
923
+ // "openedAt": "1714903200000"
924
+ // },
925
+ // ...
926
+ // ]
927
+ // }
928
+ //
929
+ const result = this.safeList(response, 'data', []);
930
+ return this.parseOHLCVs(result, market, timeframe, since, limit);
931
+ }
932
+ parseOHLCV(ohlcv, market = undefined) {
933
+ //
934
+ // {
935
+ // "open": "0.03240000",
936
+ // "high": "0.03240000",
937
+ // "low": "0.03240000",
938
+ // "close": "0.03240000",
939
+ // "volume": "0",
940
+ // "currencyVolume": "0",
941
+ // "openedAt": "1714906800000"
942
+ // }
943
+ //
944
+ return [
945
+ this.safeInteger(ohlcv, 'openedAt'),
946
+ this.safeNumber(ohlcv, 'open'),
947
+ this.safeNumber(ohlcv, 'high'),
948
+ this.safeNumber(ohlcv, 'low'),
949
+ this.safeNumber(ohlcv, 'close'),
950
+ this.safeNumber(ohlcv, 'currencyVolume'),
951
+ ];
952
+ }
953
+ /**
954
+ * @method
955
+ * @name oxfun#fetchOrderBook
956
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
957
+ * @see https://docs.ox.fun/?json#get-v3-depth
958
+ * @param {string} symbol unified symbol of the market to fetch the order book for
959
+ * @param {int} [limit] the maximum amount of order book entries to return (default 5, max 100)
960
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
961
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
962
+ */
963
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
964
+ await this.loadMarkets();
965
+ const market = this.market(symbol);
966
+ const request = {
967
+ 'marketCode': market['id'],
968
+ };
969
+ if (limit !== undefined) {
970
+ request['level'] = limit;
971
+ }
972
+ const response = await this.publicGetV3Depth(this.extend(request, params));
973
+ //
974
+ // {
975
+ // "success": true,
976
+ // "level": "5",
977
+ // "data": {
978
+ // "marketCode": "BTC-USD-SWAP-LIN",
979
+ // "lastUpdatedAt": "1714933499266",
980
+ // "asks": [
981
+ // [ 64073.0, 8.4622 ],
982
+ // [ 64092.0, 8.1912 ],
983
+ // [ 64111.0, 8.0669 ],
984
+ // [ 64130.0, 11.7195 ],
985
+ // [ 64151.0, 10.1798 ]
986
+ // ],
987
+ // "bids": [
988
+ // [ 64022.0, 10.1292 ],
989
+ // [ 64003.0, 8.1619 ],
990
+ // [ 64000.0, 1.0 ],
991
+ // [ 63984.0, 12.7724 ],
992
+ // [ 63963.0, 11.0073 ]
993
+ // ]
994
+ // }
995
+ // }
996
+ //
997
+ const data = this.safeDict(response, 'data', {});
998
+ const timestamp = this.safeInteger(data, 'lastUpdatedAt');
999
+ return this.parseOrderBook(data, market['symbol'], timestamp);
1000
+ }
1001
+ /**
1002
+ * @method
1003
+ * @name oxfun#fetchFundingRates
1004
+ * @description fetch the current funding rates for multiple markets
1005
+ * @see https://docs.ox.fun/?json#get-v3-funding-estimates
1006
+ * @param {string[]} symbols unified market symbols
1007
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1008
+ * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1009
+ */
1010
+ async fetchFundingRates(symbols = undefined, params = {}) {
1011
+ await this.loadMarkets();
1012
+ symbols = this.marketSymbols(symbols);
1013
+ const response = await this.publicGetV3FundingEstimates(params);
1014
+ //
1015
+ // {
1016
+ // "success": true,
1017
+ // "data": [
1018
+ // {
1019
+ // "marketCode": "OX-USD-SWAP-LIN",
1020
+ // "fundingAt": "1715515200000",
1021
+ // "estFundingRate": "0.000200000"
1022
+ // },
1023
+ // {
1024
+ // "marketCode": "BTC-USD-SWAP-LIN",
1025
+ // "fundingAt": "1715515200000",
1026
+ // "estFundingRate": "0.000003"
1027
+ // },
1028
+ // ...
1029
+ // ]
1030
+ // }
1031
+ //
1032
+ const data = this.safeList(response, 'data', []);
1033
+ return this.parseFundingRates(data, symbols);
1034
+ }
1035
+ /**
1036
+ * @method
1037
+ * @name oxfun#fetchFundingRate
1038
+ * @description fetch the current funding rates for a symbol
1039
+ * @see https://docs.ox.fun/?json#get-v3-funding-estimates
1040
+ * @param {string} symbol unified market symbols
1041
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1042
+ * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1043
+ */
1044
+ async fetchFundingRate(symbol, params = {}) {
1045
+ await this.loadMarkets();
1046
+ const request = {
1047
+ 'marketCode': this.marketId(symbol),
1048
+ };
1049
+ const response = await this.publicGetV3FundingEstimates(this.extend(request, params));
1050
+ //
1051
+ const data = this.safeList(response, 'data', []);
1052
+ const first = this.safeDict(data, 0, {});
1053
+ return this.parseFundingRate(first, this.market(symbol));
1054
+ }
1055
+ parseFundingRate(fundingRate, market = undefined) {
1056
+ //
1057
+ // {
1058
+ // "marketCode": "OX-USD-SWAP-LIN",
1059
+ // "fundingAt": "1715515200000",
1060
+ // "estFundingRate": "0.000200000"
1061
+ // }
1062
+ //
1063
+ const symbol = this.safeString(fundingRate, 'marketCode');
1064
+ market = this.market(symbol);
1065
+ const estFundingRateTimestamp = this.safeInteger(fundingRate, 'fundingAt');
1066
+ return {
1067
+ 'info': fundingRate,
1068
+ 'symbol': market['symbol'],
1069
+ 'markPrice': undefined,
1070
+ 'indexPrice': undefined,
1071
+ 'interestRate': this.parseNumber('0'),
1072
+ 'estimatedSettlePrice': undefined,
1073
+ 'timestamp': estFundingRateTimestamp,
1074
+ 'datetime': this.iso8601(estFundingRateTimestamp),
1075
+ 'fundingRate': this.safeNumber(fundingRate, 'estFundingRate'),
1076
+ 'fundingTimestamp': undefined,
1077
+ 'fundingDatetime': undefined,
1078
+ 'nextFundingRate': undefined,
1079
+ 'nextFundingTimestamp': undefined,
1080
+ 'nextFundingDatetime': undefined,
1081
+ 'previousFundingRate': undefined,
1082
+ 'previousFundingTimestamp': undefined,
1083
+ 'previousFundingDatetime': undefined,
1084
+ 'interval': undefined,
1085
+ };
1086
+ }
1087
+ /**
1088
+ * @method
1089
+ * @name oxfun#fetchFundingRateHistory
1090
+ * @description Fetches the history of funding rates
1091
+ * @see https://docs.ox.fun/?json#get-v3-funding-rates
1092
+ * @param {string} symbol unified symbol of the market to fetch trades for
1093
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1094
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1095
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1096
+ * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1097
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1098
+ */
1099
+ async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1100
+ await this.loadMarkets();
1101
+ const market = this.market(symbol);
1102
+ const request = {
1103
+ 'marketCode': market['id'],
1104
+ };
1105
+ if (since !== undefined) {
1106
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1107
+ }
1108
+ if (limit !== undefined) {
1109
+ request['limit'] = limit;
1110
+ }
1111
+ const until = this.safeInteger(params, 'until');
1112
+ if (until !== undefined) {
1113
+ request['endTime'] = until;
1114
+ params = this.omit(params, 'until');
1115
+ }
1116
+ const response = await this.publicGetV3FundingRates(this.extend(request, params));
1117
+ //
1118
+ // {
1119
+ // success: true,
1120
+ // data: [
1121
+ // {
1122
+ // marketCode: 'NEAR-USD-SWAP-LIN',
1123
+ // fundingRate: '-0.000010000',
1124
+ // createdAt: '1715428870755'
1125
+ // },
1126
+ // {
1127
+ // marketCode: 'ENA-USD-SWAP-LIN',
1128
+ // fundingRate: '0.000150000',
1129
+ // createdAt: '1715428868616'
1130
+ // },
1131
+ // ...
1132
+ // }
1133
+ //
1134
+ const data = this.safeList(response, 'data', []);
1135
+ return this.parseFundingRateHistories(data, market, since, limit);
1136
+ }
1137
+ parseFundingRateHistory(info, market = undefined) {
1138
+ //
1139
+ // {
1140
+ // success: true,
1141
+ // data: [
1142
+ // {
1143
+ // marketCode: 'NEAR-USD-SWAP-LIN',
1144
+ // fundingRate: '-0.000010000',
1145
+ // createdAt: '1715428870755'
1146
+ // },
1147
+ // {
1148
+ // marketCode: 'ENA-USD-SWAP-LIN',
1149
+ // fundingRate: '0.000150000',
1150
+ // createdAt: '1715428868616'
1151
+ // },
1152
+ // ...
1153
+ // }
1154
+ //
1155
+ const marketId = this.safeString(info, 'marketCode');
1156
+ market = this.safeMarket(marketId, market);
1157
+ const symbol = market['symbol'];
1158
+ const timestamp = this.safeInteger(info, 'createdAt');
1159
+ return {
1160
+ 'info': info,
1161
+ 'symbol': symbol,
1162
+ 'fundingRate': this.safeNumber(info, 'fundingRate'),
1163
+ 'timestamp': timestamp,
1164
+ 'datetime': this.iso8601(timestamp),
1165
+ };
1166
+ }
1167
+ /**
1168
+ * @method
1169
+ * @name oxfun#fetchFundingHistory
1170
+ * @description fetches the history of funding payments
1171
+ * @see https://docs.ox.fun/?json#get-v3-funding
1172
+ * @param {string} symbol unified symbol of the market to fetch trades for
1173
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1174
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1175
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1176
+ * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1177
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1178
+ */
1179
+ async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1180
+ await this.loadMarkets();
1181
+ const market = this.market(symbol);
1182
+ const request = {
1183
+ 'marketCode': market['id'],
1184
+ };
1185
+ if (since !== undefined) {
1186
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1187
+ }
1188
+ if (limit !== undefined) {
1189
+ request['limit'] = limit;
1190
+ }
1191
+ const until = this.safeInteger(params, 'until');
1192
+ if (until !== undefined) {
1193
+ request['endTime'] = until;
1194
+ params = this.omit(params, 'until');
1195
+ }
1196
+ const response = await this.privateGetV3Funding(this.extend(request, params));
1197
+ //
1198
+ // {
1199
+ // success: true,
1200
+ // data: [
1201
+ // {
1202
+ // id: '966709913041305605',
1203
+ // marketCode: 'ETH-USD-SWAP-LIN',
1204
+ // payment: '-0.00430822',
1205
+ // fundingRate: '0.000014',
1206
+ // position: '0.001',
1207
+ // indexPrice: '3077.3',
1208
+ // createdAt: '1715086852890'
1209
+ // },
1210
+ // {
1211
+ // id: '966698111997509637',
1212
+ // marketCode: 'ETH-USD-SWAP-LIN',
1213
+ // payment: '-0.0067419',
1214
+ // fundingRate: '0.000022',
1215
+ // position: '0.001',
1216
+ // indexPrice: '3064.5',
1217
+ // createdAt: '1715083251516'
1218
+ // },
1219
+ // ...
1220
+ // ]
1221
+ // }
1222
+ //
1223
+ const result = this.safeList(response, 'data', []);
1224
+ return this.parseIncomes(result, market, since, limit);
1225
+ }
1226
+ parseIncome(income, market = undefined) {
1227
+ //
1228
+ // {
1229
+ // id: '966709913041305605',
1230
+ // marketCode: 'ETH-USD-SWAP-LIN',
1231
+ // payment: '-0.00430822',
1232
+ // fundingRate: '0.000014',
1233
+ // position: '0.001',
1234
+ // indexPrice: '3077.3',
1235
+ // createdAt: '1715086852890'
1236
+ // },
1237
+ //
1238
+ const marketId = this.safeString(income, 'marketCode');
1239
+ const symbol = this.safeSymbol(marketId, market);
1240
+ const amount = this.safeNumber(income, 'payment');
1241
+ const code = this.safeCurrencyCode('OX');
1242
+ const id = this.safeString(income, 'id');
1243
+ const timestamp = this.safeTimestamp(income, 'createdAt');
1244
+ const rate = this.safeNumber(income, 'fundingRate');
1245
+ return {
1246
+ 'info': income,
1247
+ 'symbol': symbol,
1248
+ 'code': code,
1249
+ 'timestamp': timestamp,
1250
+ 'datetime': this.iso8601(timestamp),
1251
+ 'id': id,
1252
+ 'amount': amount,
1253
+ 'rate': rate,
1254
+ };
1255
+ }
1256
+ /**
1257
+ * @method
1258
+ * @name oxfun#fetchLeverageTiers
1259
+ * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes, if a market has a leverage tier of 0, then the leverage tiers cannot be obtained for this market
1260
+ * @see https://docs.ox.fun/?json#get-v3-leverage-tiers
1261
+ * @param {string[]} [symbols] list of unified market symbols
1262
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1263
+ * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
1264
+ */
1265
+ async fetchLeverageTiers(symbols = undefined, params = {}) {
1266
+ await this.loadMarkets();
1267
+ const response = await this.publicGetV3LeverageTiers(params);
1268
+ //
1269
+ // {
1270
+ // success: true,
1271
+ // data: [
1272
+ // {
1273
+ // marketCode: 'SOL-USD-SWAP-LIN',
1274
+ // tiers: [
1275
+ // {
1276
+ // tier: '1',
1277
+ // leverage: '10',
1278
+ // positionFloor: '0',
1279
+ // positionCap: '200000000',
1280
+ // initialMargin: '0.1',
1281
+ // maintenanceMargin: '0.05',
1282
+ // maintenanceAmount: '0'
1283
+ // },
1284
+ // {
1285
+ // tier: '2',
1286
+ // leverage: '5',
1287
+ // positionFloor: '200000000',
1288
+ // positionCap: '280000000',
1289
+ // initialMargin: '0.2',
1290
+ // maintenanceMargin: '0.1',
1291
+ // maintenanceAmount: '7000000'
1292
+ // },
1293
+ // {
1294
+ // tier: '3',
1295
+ // leverage: '4',
1296
+ // positionFloor: '280000000',
1297
+ // positionCap: '460000000',
1298
+ // initialMargin: '0.25',
1299
+ // maintenanceMargin: '0.125',
1300
+ // maintenanceAmount: '14000000'
1301
+ // },
1302
+ // ...
1303
+ // ]
1304
+ // },
1305
+ // ...
1306
+ // ]
1307
+ // }
1308
+ //
1309
+ const data = this.safeList(response, 'data', []);
1310
+ return this.parseLeverageTiers(data, symbols, 'marketCode');
1311
+ }
1312
+ parseMarketLeverageTiers(info, market = undefined) {
1313
+ //
1314
+ // {
1315
+ // marketCode: 'SOL-USD-SWAP-LIN',
1316
+ // tiers: [
1317
+ // {
1318
+ // tier: '1',
1319
+ // leverage: '10',
1320
+ // positionFloor: '0',
1321
+ // positionCap: '200000000',
1322
+ // initialMargin: '0.1',
1323
+ // maintenanceMargin: '0.05',
1324
+ // maintenanceAmount: '0'
1325
+ // ...
1326
+ // ]
1327
+ // },
1328
+ //
1329
+ const marketId = this.safeString(info, 'marketCode');
1330
+ market = this.safeMarket(marketId, market);
1331
+ const listOfTiers = this.safeList(info, 'tiers', []);
1332
+ const tiers = [];
1333
+ for (let j = 0; j < listOfTiers.length; j++) {
1334
+ const tier = listOfTiers[j];
1335
+ tiers.push({
1336
+ 'tier': this.safeNumber(tier, 'tier'),
1337
+ 'symbol': this.safeSymbol(marketId, market),
1338
+ 'currency': market['settle'],
1339
+ 'minNotional': this.safeNumber(tier, 'positionFloor'),
1340
+ 'maxNotional': this.safeNumber(tier, 'positionCap'),
1341
+ 'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMargin'),
1342
+ 'maxLeverage': this.safeNumber(tier, 'leverage'),
1343
+ 'info': tier,
1344
+ });
1345
+ }
1346
+ return tiers;
1347
+ }
1348
+ /**
1349
+ * @method
1350
+ * @name oxfun#fetchTrades
1351
+ * @description get the list of most recent trades for a particular symbol
1352
+ * @see https://docs.ox.fun/?json#get-v3-exchange-trades
1353
+ * @param {string} symbol unified symbol of the market to fetch trades for
1354
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch (default 24 hours ago)
1355
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1356
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1357
+ * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1358
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1359
+ */
1360
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1361
+ await this.loadMarkets();
1362
+ const market = this.market(symbol);
1363
+ const request = {
1364
+ 'marketCode': market['id'],
1365
+ };
1366
+ if (since !== undefined) {
1367
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1368
+ }
1369
+ if (limit !== undefined) {
1370
+ request['limit'] = limit;
1371
+ }
1372
+ const until = this.safeInteger(params, 'until');
1373
+ if (until !== undefined) {
1374
+ request['endTime'] = until;
1375
+ params = this.omit(params, 'until');
1376
+ }
1377
+ else if (since !== undefined) {
1378
+ request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1379
+ }
1380
+ const response = await this.publicGetV3ExchangeTrades(this.extend(request, params));
1381
+ //
1382
+ // {
1383
+ // "success": true,
1384
+ // "data": [
1385
+ // {
1386
+ // "marketCode": "BTC-USD-SWAP-LIN",
1387
+ // "matchPrice": "63900",
1388
+ // "matchQuantity": "1",
1389
+ // "side": "SELL",
1390
+ // "matchType": "TAKER",
1391
+ // "matchedAt": "1714934112352"
1392
+ // },
1393
+ // ...
1394
+ // ]
1395
+ // }
1396
+ //
1397
+ const data = this.safeList(response, 'data', []);
1398
+ return this.parseTrades(data, market, since, limit);
1399
+ }
1400
+ /**
1401
+ * @method
1402
+ * @name oxfun#fetchMyTrades
1403
+ * @description fetch all trades made by the user
1404
+ * @see https://docs.ox.fun/?json#get-v3-trades
1405
+ * @param {string} symbol unified market symbol
1406
+ * @param {int} [since] the earliest time in ms to fetch trades for
1407
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
1408
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1409
+ * @param {int} [params.until] timestamp in ms of the latest trade to fetch (default now)
1410
+ * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
1411
+ */
1412
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1413
+ await this.loadMarkets();
1414
+ const request = {};
1415
+ let market = undefined;
1416
+ if (symbol !== undefined) {
1417
+ market = this.market(symbol);
1418
+ request['marketCode'] = market['id'];
1419
+ }
1420
+ if (since !== undefined) { // startTime and endTime must be within 7 days of each other
1421
+ request['startTime'] = since;
1422
+ }
1423
+ if (limit !== undefined) {
1424
+ request['limit'] = limit;
1425
+ }
1426
+ const until = this.safeInteger(params, 'until');
1427
+ if (until !== undefined) {
1428
+ request['endTime'] = until;
1429
+ params = this.omit(params, 'until');
1430
+ }
1431
+ else if (since !== undefined) {
1432
+ request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1433
+ }
1434
+ const response = await this.privateGetV3Trades(this.extend(request, params));
1435
+ //
1436
+ // {
1437
+ // "success": true,
1438
+ // "data": [
1439
+ // {
1440
+ // "orderId": "1000104903698",
1441
+ // "clientOrderId": "1715000260094",
1442
+ // "matchId": "400017129522773178",
1443
+ // "marketCode": "ETH-USD-SWAP-LIN",
1444
+ // "side": "BUY",
1445
+ // "matchedQuantity": "0.001",
1446
+ // "matchPrice": "3100.2",
1447
+ // "total": "310.02",
1448
+ // "orderMatchType": "MAKER",
1449
+ // "feeAsset": "OX",
1450
+ // "fee": "0.062004",
1451
+ // "source": "0",
1452
+ // "matchedAt": "1715000267420"
1453
+ // }
1454
+ // ]
1455
+ // }
1456
+ //
1457
+ const result = this.safeList(response, 'data', []);
1458
+ return this.parseTrades(result, market, since, limit);
1459
+ }
1460
+ parseTrade(trade, market = undefined) {
1461
+ //
1462
+ // public fetchTrades
1463
+ //
1464
+ // {
1465
+ // "marketCode": "BTC-USD-SWAP-LIN",
1466
+ // "matchPrice": "63900",
1467
+ // "matchQuantity": "1",
1468
+ // "side": "SELL",
1469
+ // "matchType": "TAKER",
1470
+ // "matchedAt": "1714934112352"
1471
+ // }
1472
+ //
1473
+ //
1474
+ // private fetchMyTrades
1475
+ //
1476
+ // {
1477
+ // "orderId": "1000104903698",
1478
+ // "clientOrderId": "1715000260094",
1479
+ // "matchId": "400017129522773178",
1480
+ // "marketCode": "ETH-USD-SWAP-LIN",
1481
+ // "side": "BUY",
1482
+ // "matchedQuantity": "0.001",
1483
+ // "matchPrice": "3100.2",
1484
+ // "total": "310.02",
1485
+ // "orderMatchType": "MAKER",
1486
+ // "feeAsset": "OX",
1487
+ // "fee": "0.062004",
1488
+ // "source": "0",
1489
+ // "matchedAt": "1715000267420"
1490
+ // }
1491
+ //
1492
+ const marketId = this.safeString(trade, 'marketCode');
1493
+ market = this.safeMarket(marketId, market);
1494
+ const symbol = market['symbol'];
1495
+ const timestamp = this.safeInteger(trade, 'matchedAt');
1496
+ const fee = {
1497
+ 'cost': this.safeString(trade, 'fee'),
1498
+ 'currency': this.safeCurrencyCode(this.safeString(trade, 'feeAsset')),
1499
+ };
1500
+ return this.safeTrade({
1501
+ 'id': this.safeString(trade, 'matchId'),
1502
+ 'timestamp': timestamp,
1503
+ 'datetime': this.iso8601(timestamp),
1504
+ 'symbol': symbol,
1505
+ 'type': undefined,
1506
+ 'order': this.safeString(trade, 'orderId'),
1507
+ 'side': this.safeStringLower(trade, 'side'),
1508
+ 'takerOrMaker': this.safeStringLower2(trade, 'matchType', 'orderMatchType'),
1509
+ 'price': this.safeString(trade, 'matchPrice'),
1510
+ 'amount': this.safeString2(trade, 'matchQuantity', 'matchedQuantity'),
1511
+ 'cost': undefined,
1512
+ 'fee': fee,
1513
+ 'info': trade,
1514
+ }, market);
1515
+ }
1516
+ /**
1517
+ * @method
1518
+ * @name oxfun#fetchBalance
1519
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1520
+ * @see https://docs.ox.fun/?json#get-v3-balances
1521
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1522
+ * @param {string} [params.asset] currency id, if empty the exchange returns info about all currencies
1523
+ * @param {string} [params.subAcc] Name of sub account. If no subAcc is given, then the response contains only the account linked to the API-Key.
1524
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1525
+ */
1526
+ async fetchBalance(params = {}) {
1527
+ await this.loadMarkets();
1528
+ const response = await this.privateGetV3Balances(params);
1529
+ //
1530
+ // {
1531
+ // "success": true,
1532
+ // "data": [
1533
+ // {
1534
+ // "accountId": "106490",
1535
+ // "name": "main",
1536
+ // "balances": [
1537
+ // {
1538
+ // "asset": "OX",
1539
+ // "total": "-7.55145065000",
1540
+ // "available": "-71.16445065000",
1541
+ // "reserved": "0",
1542
+ // "lastUpdatedAt": "1715000448946"
1543
+ // },
1544
+ // {
1545
+ // "asset": "ETH",
1546
+ // "total": "0.01",
1547
+ // "available": "0.01",
1548
+ // "reserved": "0",
1549
+ // "lastUpdatedAt": "1714914512750"
1550
+ // },
1551
+ // ...
1552
+ // ]
1553
+ // },
1554
+ // ...
1555
+ // ]
1556
+ // }
1557
+ //
1558
+ const data = this.safeList(response, 'data', []);
1559
+ let balance = data[0];
1560
+ const subAcc = this.safeString(params, 'subAcc');
1561
+ if (subAcc !== undefined) {
1562
+ for (let i = 0; i < data.length; i++) {
1563
+ const b = data[i];
1564
+ const name = this.safeString(b, 'name');
1565
+ if (name === subAcc) {
1566
+ balance = b;
1567
+ break;
1568
+ }
1569
+ }
1570
+ }
1571
+ return this.parseBalance(balance);
1572
+ }
1573
+ parseBalance(balance) {
1574
+ //
1575
+ // {
1576
+ // "accountId": "106490",
1577
+ // "name": "main",
1578
+ // "balances": [
1579
+ // {
1580
+ // "asset": "OX",
1581
+ // "total": "-7.55145065000",
1582
+ // "available": "-71.16445065000",
1583
+ // "reserved": "0",
1584
+ // "lastUpdatedAt": "1715000448946"
1585
+ // },
1586
+ // {
1587
+ // "asset": "ETH",
1588
+ // "total": "0.01",
1589
+ // "available": "0.01",
1590
+ // "reserved": "0",
1591
+ // "lastUpdatedAt": "1714914512750"
1592
+ // },
1593
+ // ...
1594
+ // ]
1595
+ // }
1596
+ //
1597
+ const result = {
1598
+ 'info': balance,
1599
+ };
1600
+ const balances = this.safeList(balance, 'balances', []);
1601
+ for (let i = 0; i < balances.length; i++) {
1602
+ const balanceEntry = balances[i];
1603
+ const currencyId = this.safeString(balanceEntry, 'asset');
1604
+ const code = this.safeCurrencyCode(currencyId);
1605
+ const account = this.account();
1606
+ account['total'] = this.safeString(balanceEntry, 'total');
1607
+ account['free'] = this.safeString(balanceEntry, 'available');
1608
+ account['used'] = this.safeString(balanceEntry, 'reserved');
1609
+ result[code] = account;
1610
+ }
1611
+ return this.safeBalance(result);
1612
+ }
1613
+ /**
1614
+ * @method
1615
+ * @name oxfun#fetchAccounts
1616
+ * @description fetch subaccounts associated with a profile
1617
+ * @see https://docs.ox.fun/?json#get-v3-account-names
1618
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1619
+ * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
1620
+ */
1621
+ async fetchAccounts(params = {}) {
1622
+ await this.loadMarkets();
1623
+ // this endpoint can only be called using API keys paired with the parent account! Returns all active subaccounts.
1624
+ const response = await this.privateGetV3AccountNames(params);
1625
+ //
1626
+ // {
1627
+ // "success": true,
1628
+ // "data": [
1629
+ // {
1630
+ // "accountId": "106526",
1631
+ // "name": "testSubAccount"
1632
+ // },
1633
+ // ...
1634
+ // ]
1635
+ // }
1636
+ //
1637
+ const data = this.safeList(response, 'data', []);
1638
+ return this.parseAccounts(data, params);
1639
+ }
1640
+ parseAccount(account) {
1641
+ //
1642
+ // {
1643
+ // "accountId": "106526",
1644
+ // "name": "testSubAccount"
1645
+ // },
1646
+ //
1647
+ return {
1648
+ 'id': this.safeString(account, 'accountId'),
1649
+ 'type': undefined,
1650
+ 'code': undefined,
1651
+ 'info': account,
1652
+ };
1653
+ }
1654
+ /**
1655
+ * @method
1656
+ * @name oxfun#transfer
1657
+ * @description transfer currency internally between wallets on the same account
1658
+ * @see https://docs.ox.fun/?json#post-v3-transfer
1659
+ * @param {string} code unified currency code
1660
+ * @param {float} amount amount to transfer
1661
+ * @param {string} fromAccount account id to transfer from
1662
+ * @param {string} toAccount account id to transfer to
1663
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1664
+ * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
1665
+ */
1666
+ async transfer(code, amount, fromAccount, toAccount, params = {}) {
1667
+ // transferring funds between sub-accounts is restricted to API keys linked to the parent account.
1668
+ await this.loadMarkets();
1669
+ const currency = this.currency(code);
1670
+ const request = {
1671
+ 'asset': currency['id'],
1672
+ 'quantity': this.currencyToPrecision(code, amount),
1673
+ 'fromAccount': fromAccount,
1674
+ 'toAccount': toAccount,
1675
+ };
1676
+ const response = await this.privatePostV3Transfer(this.extend(request, params));
1677
+ //
1678
+ // {
1679
+ // timestamp: 1715430036267,
1680
+ // datetime: '2024-05-11T12:20:36.267Z',
1681
+ // currency: 'OX',
1682
+ // amount: 10,
1683
+ // fromAccount: '106464',
1684
+ // toAccount: '106570',
1685
+ // info: {
1686
+ // asset: 'OX',
1687
+ // quantity: '10',
1688
+ // fromAccount: '106464',
1689
+ // toAccount: '106570',
1690
+ // transferredAt: '1715430036267'
1691
+ // }
1692
+ // }
1693
+ //
1694
+ const data = this.safeDict(response, 'data', {});
1695
+ return this.parseTransfer(data, currency);
1696
+ }
1697
+ /**
1698
+ * @method
1699
+ * @name oxfun#fetchTransfers
1700
+ * @description fetch a history of internal transfers made on an account
1701
+ * @see https://docs.ox.fun/?json#get-v3-transfer
1702
+ * @param {string} code unified currency code of the currency transferred
1703
+ * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1704
+ * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1705
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1706
+ * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1707
+ * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/#/?id=transfer-structure}
1708
+ */
1709
+ async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
1710
+ // API keys linked to the parent account can get all account transfers, while API keys linked to a sub-account can only see transfers where the sub-account is either the "fromAccount" or "toAccount"
1711
+ await this.loadMarkets();
1712
+ const request = {};
1713
+ let currency = undefined;
1714
+ if (code !== undefined) {
1715
+ currency = this.currency(code);
1716
+ request['asset'] = currency['id'];
1717
+ }
1718
+ if (since !== undefined) {
1719
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1720
+ }
1721
+ if (limit !== undefined) {
1722
+ request['limit'] = limit;
1723
+ }
1724
+ const until = this.safeInteger(params, 'until');
1725
+ if (until !== undefined) {
1726
+ request['endTime'] = until;
1727
+ params = this.omit(params, 'until');
1728
+ }
1729
+ else if (since !== undefined) {
1730
+ request['endTime'] = this.sum(since, 7 * 24 * 60 * 60 * 1000); // for the exchange not to throw an exception if since is younger than 7 days
1731
+ }
1732
+ const response = await this.privateGetV3Transfer(this.extend(request, params));
1733
+ //
1734
+ // {
1735
+ // "success": true,
1736
+ // "data": [
1737
+ // {
1738
+ // "asset": "USDT",
1739
+ // "quantity": "5",
1740
+ // "fromAccount": "106490",
1741
+ // "toAccount": "106526",
1742
+ // "id": "966706320886267905",
1743
+ // "status": "COMPLETED",
1744
+ // "transferredAt": "1715085756708"
1745
+ // },
1746
+ // ...
1747
+ // ]
1748
+ // }
1749
+ //
1750
+ const data = this.safeList(response, 'data', []);
1751
+ return this.parseTransfers(data, currency, since, limit);
1752
+ }
1753
+ parseTransfer(transfer, currency = undefined) {
1754
+ //
1755
+ // fetchTransfers
1756
+ //
1757
+ // {
1758
+ // "asset": "USDT",
1759
+ // "quantity": "5",
1760
+ // "fromAccount": "106490",
1761
+ // "toAccount": "106526",
1762
+ // "id": "966706320886267905",
1763
+ // "status": "COMPLETED",
1764
+ // "transferredAt": "1715085756708"
1765
+ // }
1766
+ //
1767
+ const timestamp = this.safeInteger(transfer, 'transferredAt');
1768
+ const currencyId = this.safeString(transfer, 'asset');
1769
+ return {
1770
+ 'id': this.safeString(transfer, 'id'),
1771
+ 'timestamp': timestamp,
1772
+ 'datetime': this.iso8601(timestamp),
1773
+ 'currency': this.safeCurrencyCode(currencyId, currency),
1774
+ 'amount': this.safeNumber(transfer, 'quantity'),
1775
+ 'fromAccount': this.safeString(transfer, 'fromAccount'),
1776
+ 'toAccount': this.safeString(transfer, 'toAccount'),
1777
+ 'status': this.parseTransferStatus(this.safeString(transfer, 'status')),
1778
+ 'info': transfer,
1779
+ };
1780
+ }
1781
+ parseTransferStatus(status) {
1782
+ const statuses = {
1783
+ 'COMPLETED': 'ok',
1784
+ };
1785
+ return this.safeString(statuses, status, status);
1786
+ }
1787
+ /**
1788
+ * @method
1789
+ * @name oxfun#fetchDepositAddress
1790
+ * @description fetch the deposit address for a currency associated with this account
1791
+ * @see https://docs.ox.fun/?json#get-v3-deposit-addresses
1792
+ * @param {string} code unified currency code
1793
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1794
+ * @param {string} [params.network] network for fetch deposit address
1795
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1796
+ */
1797
+ async fetchDepositAddress(code, params = {}) {
1798
+ const networkCode = this.safeString(params, 'network');
1799
+ const networkId = this.networkCodeToId(networkCode, code);
1800
+ if (networkId === undefined) {
1801
+ throw new BadRequest(this.id + ' fetchDepositAddress() require network parameter');
1802
+ }
1803
+ await this.loadMarkets();
1804
+ const currency = this.currency(code);
1805
+ const request = {
1806
+ 'asset': currency['id'],
1807
+ 'network': networkId,
1808
+ };
1809
+ params = this.omit(params, 'network');
1810
+ const response = await this.privateGetV3DepositAddresses(this.extend(request, params));
1811
+ //
1812
+ // {"success":true,"data":{"address":"0x998dEc76151FB723963Bd8AFD517687b38D33dE8"}}
1813
+ //
1814
+ const data = this.safeDict(response, 'data', {});
1815
+ return this.parseDepositAddress(data, currency);
1816
+ }
1817
+ parseDepositAddress(depositAddress, currency = undefined) {
1818
+ //
1819
+ // {"address":"0x998dEc76151FB723963Bd8AFD517687b38D33dE8"}
1820
+ //
1821
+ const address = this.safeString(depositAddress, 'address');
1822
+ this.checkAddress(address);
1823
+ return {
1824
+ 'info': depositAddress,
1825
+ 'currency': currency['code'],
1826
+ 'network': undefined,
1827
+ 'address': address,
1828
+ 'tag': undefined,
1829
+ };
1830
+ }
1831
+ /**
1832
+ * @method
1833
+ * @name oxfun#fetchDeposits
1834
+ * @description fetch all deposits made to an account
1835
+ * @see https://docs.ox.fun/?json#get-v3-deposit
1836
+ * @param {string} code unified currency code of the currency transferred
1837
+ * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1838
+ * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1839
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1840
+ * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1841
+ * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/#/?id=transfer-structure}
1842
+ */
1843
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1844
+ await this.loadMarkets();
1845
+ const request = {};
1846
+ let currency = undefined;
1847
+ if (code !== undefined) {
1848
+ currency = this.currency(code);
1849
+ request['asset'] = currency['id'];
1850
+ }
1851
+ if (since !== undefined) {
1852
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1853
+ }
1854
+ if (limit !== undefined) {
1855
+ request['limit'] = limit;
1856
+ }
1857
+ const until = this.safeInteger(params, 'until');
1858
+ if (until !== undefined) {
1859
+ request['endTime'] = until;
1860
+ params = this.omit(params, 'until');
1861
+ }
1862
+ const response = await this.privateGetV3Deposit(this.extend(request, params));
1863
+ //
1864
+ // {
1865
+ // "success": true,
1866
+ // "data": [
1867
+ // {
1868
+ // "asset":"USDC",
1869
+ // "network":"Ethereum",
1870
+ // "address": "0x998dEc76151FB723963Bd8AFD517687b38D33dE8",
1871
+ // "quantity":"50",
1872
+ // "id":"5914",
1873
+ // "status": "COMPLETED",
1874
+ // "txId":"0xf5e79663830a0c6f94d46638dcfbc134566c12facf1832396f81ecb55d3c75dc",
1875
+ // "creditedAt":"1714821645154"
1876
+ // }
1877
+ // ]
1878
+ // }
1879
+ //
1880
+ const data = this.safeList(response, 'data', []);
1881
+ for (let i = 0; i < data.length; i++) {
1882
+ data[i]['type'] = 'deposit';
1883
+ }
1884
+ return this.parseTransactions(data, currency, since, limit);
1885
+ }
1886
+ /**
1887
+ * @method
1888
+ * @name oxfun#fetchWithdrawals
1889
+ * @description fetch all withdrawals made from an account
1890
+ * @see https://docs.ox.fun/?json#get-v3-withdrawal
1891
+ * @param {string} code unified currency code of the currency transferred
1892
+ * @param {int} [since] the earliest time in ms to fetch transfers for (default 24 hours ago)
1893
+ * @param {int} [limit] the maximum number of transfer structures to retrieve (default 50, max 200)
1894
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1895
+ * @param {int} [params.until] the latest time in ms to fetch transfers for (default time now)
1896
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1897
+ */
1898
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1899
+ await this.loadMarkets();
1900
+ const request = {};
1901
+ let currency = undefined;
1902
+ if (code !== undefined) {
1903
+ currency = this.currency(code);
1904
+ request['asset'] = currency['id'];
1905
+ }
1906
+ if (since !== undefined) {
1907
+ request['startTime'] = since; // startTime and endTime must be within 7 days of each other
1908
+ }
1909
+ if (limit !== undefined) {
1910
+ request['limit'] = limit;
1911
+ }
1912
+ const until = this.safeInteger(params, 'until');
1913
+ if (until !== undefined) {
1914
+ request['endTime'] = until;
1915
+ params = this.omit(params, 'until');
1916
+ }
1917
+ const response = await this.privateGetV3Withdrawal(this.extend(request, params));
1918
+ //
1919
+ // {
1920
+ // success: true,
1921
+ // data: [
1922
+ // {
1923
+ // id: '968163212989431811',
1924
+ // asset: 'OX',
1925
+ // network: 'Arbitrum',
1926
+ // address: '0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9',
1927
+ // quantity: '11.7444',
1928
+ // fee: '1.744400000',
1929
+ // status: 'COMPLETED',
1930
+ // txId: '0xe96b2d128b737fdbca927edf355cff42202e65b0fb960e64ffb9bd68c121f69f',
1931
+ // requestedAt: '1715530365450',
1932
+ // completedAt: '1715530527000'
1933
+ // }
1934
+ // ]
1935
+ // }
1936
+ //
1937
+ const data = this.safeList(response, 'data', []);
1938
+ for (let i = 0; i < data.length; i++) {
1939
+ data[i]['type'] = 'withdrawal';
1940
+ }
1941
+ return this.parseTransactions(data, currency, since, limit);
1942
+ }
1943
+ parseTransactions(transactions, currency = undefined, since = undefined, limit = undefined, params = {}) {
1944
+ let result = [];
1945
+ for (let i = 0; i < transactions.length; i++) {
1946
+ transactions[i] = this.extend(transactions[i], params);
1947
+ const transaction = this.parseTransaction(transactions[i], currency);
1948
+ result.push(transaction);
1949
+ }
1950
+ result = this.sortBy(result, 'timestamp');
1951
+ const code = (currency !== undefined) ? currency['code'] : undefined;
1952
+ return this.filterByCurrencySinceLimit(result, code, since, limit);
1953
+ }
1954
+ parseTransaction(transaction, currency = undefined) {
1955
+ //
1956
+ // fetchDeposits
1957
+ // {
1958
+ // "asset":"USDC",
1959
+ // "network":"Ethereum",
1960
+ // "address": "0x998dEc76151FB723963Bd8AFD517687b38D33dE8",
1961
+ // "quantity":"50",
1962
+ // "id":"5914",
1963
+ // "status": "COMPLETED",
1964
+ // "txId":"0xf5e79663830a0c6f94d46638dcfbc134566c12facf1832396f81ecb55d3c75dc",
1965
+ // "creditedAt":"1714821645154"
1966
+ // }
1967
+ //
1968
+ // fetchWithdrawals
1969
+ // {
1970
+ // id: '968163212989431811',
1971
+ // asset: 'OX',
1972
+ // network: 'Arbitrum',
1973
+ // address: '0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9',
1974
+ // quantity: '11.7444',
1975
+ // fee: '1.744400000',
1976
+ // status: 'COMPLETED',
1977
+ // txId: '0xe96b2d128b737fdbca927edf355cff42202e65b0fb960e64ffb9bd68c121f69f',
1978
+ // requestedAt: '1715530365450',
1979
+ // completedAt: '1715530527000'
1980
+ // }
1981
+ //
1982
+ // withdraw
1983
+ // {
1984
+ // "id": "968364664449302529",
1985
+ // "asset": "OX",
1986
+ // "network": "Arbitrum",
1987
+ // "address": "0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9",
1988
+ // "quantity": "10",
1989
+ // "externalFee": false,
1990
+ // "fee": "1.6728",
1991
+ // "status": "PENDING",
1992
+ // "requestedAt": "1715591843616"
1993
+ // }
1994
+ //
1995
+ const id = this.safeString(transaction, 'id');
1996
+ const type = this.safeString(transaction, 'type');
1997
+ transaction = this.omit(transaction, 'type');
1998
+ let address = undefined;
1999
+ let addressTo = undefined;
2000
+ let status = undefined;
2001
+ if (type === 'deposit') {
2002
+ address = this.safeString(transaction, 'address');
2003
+ status = this.parseDepositStatus(this.safeString(transaction, 'status'));
2004
+ }
2005
+ else if (type === 'withdrawal') {
2006
+ addressTo = this.safeString(transaction, 'address');
2007
+ status = this.parseWithdrawalStatus(this.safeString(transaction, 'status'));
2008
+ }
2009
+ const txid = this.safeString(transaction, 'txId');
2010
+ const currencyId = this.safeString(transaction, 'asset');
2011
+ const code = this.safeCurrencyCode(currencyId, currency);
2012
+ const network = this.safeString(transaction, 'network');
2013
+ const networkCode = this.networkIdToCode(network);
2014
+ const timestamp = this.safeInteger2(transaction, 'creditedAt', 'requestedAt');
2015
+ const amount = this.safeNumber(transaction, 'quantity');
2016
+ const feeCost = this.safeNumber(transaction, 'fee');
2017
+ let fee = undefined;
2018
+ if (feeCost !== undefined) {
2019
+ fee = {
2020
+ 'cost': feeCost,
2021
+ 'currency': code,
2022
+ };
2023
+ }
2024
+ return {
2025
+ 'info': transaction,
2026
+ 'id': id,
2027
+ 'txid': txid,
2028
+ 'timestamp': timestamp,
2029
+ 'datetime': this.iso8601(timestamp),
2030
+ 'network': networkCode,
2031
+ 'address': address,
2032
+ 'addressTo': addressTo,
2033
+ 'addressFrom': undefined,
2034
+ 'tag': undefined,
2035
+ 'tagTo': undefined,
2036
+ 'tagFrom': undefined,
2037
+ 'type': type,
2038
+ 'amount': amount,
2039
+ 'currency': code,
2040
+ 'status': status,
2041
+ 'updated': undefined,
2042
+ 'internal': undefined,
2043
+ 'comment': undefined,
2044
+ 'fee': fee,
2045
+ };
2046
+ }
2047
+ parseDepositStatus(status) {
2048
+ const statuses = {
2049
+ 'COMPLETED': 'ok',
2050
+ };
2051
+ return this.safeString(statuses, status, status);
2052
+ }
2053
+ parseWithdrawalStatus(status) {
2054
+ const statuses = {
2055
+ 'COMPLETED': 'ok',
2056
+ 'PROCESSING': 'pending',
2057
+ 'IN SWEEPING': 'pending',
2058
+ 'PENDING': 'pending',
2059
+ 'ON HOLD': 'pending',
2060
+ 'CANCELED': 'canceled',
2061
+ 'FAILED': 'failed',
2062
+ };
2063
+ return this.safeString(statuses, status, status);
2064
+ }
2065
+ /**
2066
+ * @method
2067
+ * @name oxfun#withdraw
2068
+ * @description make a withdrawal
2069
+ * @see https://docs.ox.fun/?json#post-v3-withdrawal
2070
+ * @param {string} code unified currency code
2071
+ * @param {float} amount the amount to withdraw
2072
+ * @param {string} address the address to withdraw to
2073
+ * @param {string} tag
2074
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2075
+ * @param {string} [params.network] network for withdraw
2076
+ * @param {bool} [params.externalFee] if false, then the fee is taken from the quantity, also with the burn fee for asset SOLO
2077
+ *
2078
+ * EXCHANGE SPECIFIC PARAMETERS
2079
+ * @param {string} [params.tfaType] GOOGLE, or AUTHY_SECRET, or YUBIKEY, for 2FA
2080
+ * @param {string} [params.code] 2FA code
2081
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2082
+ */
2083
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
2084
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2085
+ await this.loadMarkets();
2086
+ const currency = this.currency(code);
2087
+ const stringAmount = this.currencyToPrecision(code, amount);
2088
+ const request = {
2089
+ 'asset': currency['id'],
2090
+ 'address': address,
2091
+ 'quantity': stringAmount,
2092
+ };
2093
+ if (tag !== undefined) {
2094
+ request['memo'] = tag;
2095
+ }
2096
+ let networkCode = undefined;
2097
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
2098
+ if (networkCode !== undefined) {
2099
+ request['network'] = this.networkCodeToId(networkCode);
2100
+ }
2101
+ request['externalFee'] = false;
2102
+ const response = await this.privatePostV3Withdrawal(this.extend(request, params));
2103
+ //
2104
+ // {
2105
+ // "success": true,
2106
+ // "data": {
2107
+ // "id": "968364664449302529",
2108
+ // "asset": "OX",
2109
+ // "network": "Arbitrum",
2110
+ // "address": "0x90fc1fB49a4ED8f485dd02A2a1Cf576897f6Bfc9",
2111
+ // "quantity": "10",
2112
+ // "externalFee": false,
2113
+ // "fee": "1.6728",
2114
+ // "status": "PENDING",
2115
+ // "requestedAt": "1715591843616"
2116
+ // }
2117
+ // }
2118
+ //
2119
+ const data = this.safeDict(response, 'data', {});
2120
+ data['type'] = 'withdrawal';
2121
+ return this.parseTransaction(data, currency);
2122
+ }
2123
+ /**
2124
+ * @method
2125
+ * @name oxfun#fetchPositions
2126
+ * @description fetch all open positions
2127
+ * @see https://docs.ox.fun/?json#get-v3-positions
2128
+ * @param {string[]|undefined} symbols list of unified market symbols
2129
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2130
+ * @param {boolean} [params.subAcc]
2131
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
2132
+ */
2133
+ async fetchPositions(symbols = undefined, params = {}) {
2134
+ // Calling this endpoint using an API key pair linked to the parent account with the parameter "subAcc"
2135
+ // allows the caller to include positions of additional sub-accounts in the response.
2136
+ // This feature does not work when using API key pairs linked to a sub-account
2137
+ await this.loadMarkets();
2138
+ symbols = this.marketSymbols(symbols);
2139
+ const response = await this.privateGetV3Positions(params);
2140
+ //
2141
+ // {
2142
+ // "success": true,
2143
+ // "data": [
2144
+ // {
2145
+ // "accountId": "106490",
2146
+ // "name": "main",
2147
+ // "positions": [
2148
+ // {
2149
+ // "marketCode": "BTC-USD-SWAP-LIN",
2150
+ // "baseAsset": "BTC",
2151
+ // "counterAsset": "USD",
2152
+ // "position": "0.00010",
2153
+ // "entryPrice": "64300.0",
2154
+ // "markPrice": "63278",
2155
+ // "positionPnl": "-10.1900",
2156
+ // "estLiquidationPrice": "0",
2157
+ // "lastUpdatedAt": "1714915841448"
2158
+ // },
2159
+ // ...
2160
+ // ]
2161
+ // },
2162
+ // {
2163
+ // "accountId": "106526",
2164
+ // "name": "testSubAccount",
2165
+ // "positions": [
2166
+ // {
2167
+ // "marketCode": "ETH-USD-SWAP-LIN",
2168
+ // "baseAsset": "ETH",
2169
+ // "counterAsset": "USD",
2170
+ // "position": "0.001",
2171
+ // "entryPrice": "3080.5",
2172
+ // "markPrice": "3062.0",
2173
+ // "positionPnl": "-1.8500",
2174
+ // "estLiquidationPrice": "0",
2175
+ // "lastUpdatedAt": "1715089678013"
2176
+ // },
2177
+ // ...
2178
+ // ]
2179
+ // }
2180
+ // ]
2181
+ // }
2182
+ //
2183
+ const data = this.safeList(response, 'data', []);
2184
+ let allPositions = [];
2185
+ for (let i = 0; i < data.length; i++) {
2186
+ const account = data[i];
2187
+ const positions = this.safeList(account, 'positions', []);
2188
+ allPositions = this.arrayConcat(allPositions, positions);
2189
+ }
2190
+ return this.parsePositions(allPositions, symbols);
2191
+ }
2192
+ parsePosition(position, market = undefined) {
2193
+ //
2194
+ // {
2195
+ // "marketCode": "ETH-USD-SWAP-LIN",
2196
+ // "baseAsset": "ETH",
2197
+ // "counterAsset": "USD",
2198
+ // "position": "0.001",
2199
+ // "entryPrice": "3080.5",
2200
+ // "markPrice": "3062.0",
2201
+ // "positionPnl": "-1.8500",
2202
+ // "estLiquidationPrice": "0",
2203
+ // "lastUpdatedAt": "1715089678013"
2204
+ // }
2205
+ //
2206
+ const marketId = this.safeString(position, 'marketCode');
2207
+ market = this.safeMarket(marketId, market);
2208
+ return this.safePosition({
2209
+ 'info': position,
2210
+ 'id': undefined,
2211
+ 'symbol': market['symbol'],
2212
+ 'notional': undefined,
2213
+ 'marginMode': 'cross',
2214
+ 'liquidationPrice': this.safeNumber(position, 'estLiquidationPrice'),
2215
+ 'entryPrice': this.safeNumber(position, 'entryPrice'),
2216
+ 'unrealizedPnl': this.safeNumber(position, 'positionPnl'),
2217
+ 'realizedPnl': undefined,
2218
+ 'percentage': undefined,
2219
+ 'contracts': this.safeNumber(position, 'position'),
2220
+ 'contractSize': undefined,
2221
+ 'markPrice': this.safeNumber(position, 'markPrice'),
2222
+ 'lastPrice': undefined,
2223
+ 'side': undefined,
2224
+ 'hedged': undefined,
2225
+ 'timestamp': undefined,
2226
+ 'datetime': undefined,
2227
+ 'lastUpdateTimestamp': this.safeInteger(position, 'lastUpdatedAt'),
2228
+ 'maintenanceMargin': undefined,
2229
+ 'maintenanceMarginPercentage': undefined,
2230
+ 'collateral': undefined,
2231
+ 'initialMargin': undefined,
2232
+ 'initialMarginPercentage': undefined,
2233
+ 'leverage': undefined,
2234
+ 'marginRatio': undefined,
2235
+ 'stopLossPrice': undefined,
2236
+ 'takeProfitPrice': undefined,
2237
+ });
2238
+ }
2239
+ /**
2240
+ * @method
2241
+ * @name oxfun#createOrder
2242
+ * @description create a trade order
2243
+ * @see https://docs.ox.fun/?json#post-v3-orders-place
2244
+ * @param {string} symbol unified symbol of the market to create an order in
2245
+ * @param {string} type 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2246
+ * @param {string} side 'buy' or 'sell'
2247
+ * @param {float} amount how much of currency you want to trade in units of base currency
2248
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2249
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2250
+ * @param {int} [params.clientOrderId] a unique id for the order
2251
+ * @param {int} [params.timestamp] in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
2252
+ * @param {int} [params.recvWindow] in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
2253
+ * @param {string} [params.responseType] FULL or ACK
2254
+ * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount for market buy orders
2255
+ * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
2256
+ * @param {float} [params.limitPrice] Limit price for the STOP_LIMIT order
2257
+ * @param {bool} [params.postOnly] if true, the order will only be posted if it will be a maker order
2258
+ * @param {string} [params.timeInForce] GTC (default), IOC, FOK, PO, MAKER_ONLY or MAKER_ONLY_REPRICE (reprices order to the best maker only price if the specified price were to lead to a taker trade)
2259
+ * @param {string} [params.selfTradePreventionMode] NONE, EXPIRE_MAKER, EXPIRE_TAKER or EXPIRE_BOTH for more info check here {@link https://docs.ox.fun/?json#self-trade-prevention-modes}
2260
+ * @param {string} [params.displayQuantity] for an iceberg order, pass both quantity and displayQuantity fields in the order request
2261
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2262
+ */
2263
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
2264
+ await this.loadMarkets();
2265
+ const request = {
2266
+ 'responseType': this.safeString(params, 'responseType', 'FULL'),
2267
+ 'timestamp': this.safeInteger(params, 'timestamp', this.milliseconds()),
2268
+ };
2269
+ params = this.omit(params, ['responseType', 'timestamp']);
2270
+ const recvWindow = this.safeInteger(params, 'recvWindow');
2271
+ if (recvWindow !== undefined) {
2272
+ request['recvWindow'] = recvWindow;
2273
+ params = this.omit(params, 'recvWindow');
2274
+ }
2275
+ const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, params);
2276
+ request['orders'] = [orderRequest];
2277
+ const response = await this.privatePostV3OrdersPlace(request);
2278
+ //
2279
+ // accepted market order responseType FULL
2280
+ // {
2281
+ // "success": true,
2282
+ // "data": [
2283
+ // {
2284
+ // "notice": "OrderMatched",
2285
+ // "accountId": "106490",
2286
+ // "orderId": "1000109901865",
2287
+ // "submitted": true,
2288
+ // "clientOrderId": "0",
2289
+ // "marketCode": "OX-USDT",
2290
+ // "status": "FILLED",
2291
+ // "side": "SELL",
2292
+ // "isTriggered": false,
2293
+ // "quantity": "150.0",
2294
+ // "amount": "0.0",
2295
+ // "remainQuantity": "0.0",
2296
+ // "matchId": "100017047880451399",
2297
+ // "matchPrice": "0.01465",
2298
+ // "matchQuantity": "150.0",
2299
+ // "feeInstrumentId": "USDT",
2300
+ // "fees": "0.0015382500",
2301
+ // "orderType": "MARKET",
2302
+ // "createdAt": "1715592472236",
2303
+ // "lastMatchedAt": "1715592472200",
2304
+ // "displayQuantity": "150.0"
2305
+ // }
2306
+ // ]
2307
+ // }
2308
+ //
2309
+ // accepted limit order responseType FULL
2310
+ // {
2311
+ // "success": true,
2312
+ // "data": [
2313
+ // {
2314
+ // "notice": "OrderOpened",
2315
+ // "accountId": "106490",
2316
+ // "orderId": "1000111482406",
2317
+ // "submitted": true,
2318
+ // "clientOrderId": "0",
2319
+ // "marketCode": "ETH-USD-SWAP-LIN",
2320
+ // "status": "OPEN",
2321
+ // "side": "SELL",
2322
+ // "price": "4000.0",
2323
+ // "isTriggered": false,
2324
+ // "quantity": "0.01",
2325
+ // "amount": "0.0",
2326
+ // "orderType": "LIMIT",
2327
+ // "timeInForce": "GTC",
2328
+ // "createdAt": "1715763507682",
2329
+ // "displayQuantity": "0.01"
2330
+ // }
2331
+ // ]
2332
+ // }
2333
+ //
2334
+ // accepted order responseType ACK
2335
+ // {
2336
+ // "success": true,
2337
+ // "data": [
2338
+ // {
2339
+ // "accountId": "106490",
2340
+ // "orderId": "1000109892193",
2341
+ // "submitted": true,
2342
+ // "marketCode": "OX-USDT",
2343
+ // "side": "BUY",
2344
+ // "price": "0.01961",
2345
+ // "isTriggered": false,
2346
+ // "quantity": "100",
2347
+ // "orderType": "MARKET",
2348
+ // "timeInForce": "IOC",
2349
+ // "createdAt": "1715591529057",
2350
+ // "selfTradePreventionMode": "NONE"
2351
+ // }
2352
+ // ]
2353
+ // }
2354
+ //
2355
+ // rejected order (balance insufficient)
2356
+ // {
2357
+ // "success": true,
2358
+ // "data": [
2359
+ // {
2360
+ // "code": "710001",
2361
+ // "message": "System failure, exception thrown -> null",
2362
+ // "submitted": false,
2363
+ // "marketCode": "OX-USDT",
2364
+ // "side": "BUY",
2365
+ // "price": "0.01961",
2366
+ // "amount": "100",
2367
+ // "orderType": "MARKET",
2368
+ // "timeInForce": "IOC",
2369
+ // "createdAt": "1715591678835",
2370
+ // "source": 11,
2371
+ // "selfTradePreventionMode": "NONE"
2372
+ // }
2373
+ // ]
2374
+ // }
2375
+ //
2376
+ // rejected order (bad request)
2377
+ // {
2378
+ // "success": true,
2379
+ // "data": [
2380
+ // {
2381
+ // "code": "20044",
2382
+ // "message": "Amount is not supported for this order type",
2383
+ // "submitted": false,
2384
+ // "marketCode": "OX-USDT",
2385
+ // "side": "SELL",
2386
+ // "amount": "200",
2387
+ // "orderType": "MARKET",
2388
+ // "createdAt": "1715592079986",
2389
+ // "source": 11
2390
+ // }
2391
+ // ]
2392
+ // }
2393
+ //
2394
+ const data = this.safeList(response, 'data', []);
2395
+ const order = this.safeDict(data, 0, {});
2396
+ return this.parseOrder(order);
2397
+ }
2398
+ /**
2399
+ * @method
2400
+ * @name oxfun#createOrders
2401
+ * @description create a list of trade orders
2402
+ * @see https://docs.ox.fun/?json#post-v3-orders-place
2403
+ * @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
2404
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2405
+ * @param {int} [params.timestamp] *for all orders* in milliseconds. If orders reach the matching engine and the current timestamp exceeds timestamp + recvWindow, then all orders will be rejected.
2406
+ * @param {int} [params.recvWindow] *for all orders* in milliseconds. If orders reach the matching engine and the current timestamp exceeds timestamp + recvWindow, then all orders will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
2407
+ * @param {string} [params.responseType] *for all orders* FULL or ACK
2408
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2409
+ */
2410
+ async createOrders(orders, params = {}) {
2411
+ await this.loadMarkets();
2412
+ const ordersRequests = [];
2413
+ for (let i = 0; i < orders.length; i++) {
2414
+ const rawOrder = orders[i];
2415
+ const symbol = this.safeString(rawOrder, 'symbol');
2416
+ const type = this.safeString(rawOrder, 'type');
2417
+ const side = this.safeString(rawOrder, 'side');
2418
+ const amount = this.safeNumber(rawOrder, 'amount');
2419
+ const price = this.safeNumber(rawOrder, 'price');
2420
+ const orderParams = this.safeDict(rawOrder, 'params', {});
2421
+ const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, orderParams);
2422
+ ordersRequests.push(orderRequest);
2423
+ }
2424
+ const request = {
2425
+ 'responseType': 'FULL',
2426
+ 'timestamp': this.milliseconds(),
2427
+ 'orders': ordersRequests,
2428
+ };
2429
+ const response = await this.privatePostV3OrdersPlace(this.extend(request, params));
2430
+ const data = this.safeList(response, 'data', []);
2431
+ return this.parseOrders(data);
2432
+ }
2433
+ createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
2434
+ /**
2435
+ * @param {string} symbol unified symbol of the market to create an order in
2436
+ * @param {string} type 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2437
+ * @param {string} side 'buy' or 'sell'
2438
+ * @param {float} amount how much of currency you want to trade in units of base currency
2439
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2440
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2441
+ * @param {int} [params.clientOrderId] a unique id for the order
2442
+ * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount for market buy orders
2443
+ * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
2444
+ * @param {float} [params.limitPrice] Limit price for the STOP_LIMIT order
2445
+ * @param {bool} [params.postOnly] if true, the order will only be posted if it will be a maker order
2446
+ * @param {string} [params.timeInForce] GTC (default), IOC, FOK, PO, MAKER_ONLY or MAKER_ONLY_REPRICE (reprices order to the best maker only price if the specified price were to lead to a taker trade)
2447
+ * @param {string} [params.selfTradePreventionMode] NONE, EXPIRE_MAKER, EXPIRE_TAKER or EXPIRE_BOTH for more info check here {@link https://docs.ox.fun/?json#self-trade-prevention-modes}
2448
+ * @param {string} [params.displayQuantity] for an iceberg order, pass both quantity and displayQuantity fields in the order request
2449
+ */
2450
+ const market = this.market(symbol);
2451
+ const request = {
2452
+ 'marketCode': market['id'],
2453
+ 'side': side.toUpperCase(),
2454
+ 'source': 1000,
2455
+ };
2456
+ const cost = this.safeString2(params, 'cost', 'amount');
2457
+ if (cost !== undefined) {
2458
+ request['amount'] = cost; // todo costToPrecision
2459
+ params = this.omit(params, ['cost', 'amount']);
2460
+ }
2461
+ else {
2462
+ request['quantity'] = amount; // todo amountToPrecision
2463
+ }
2464
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
2465
+ let orderType = type.toUpperCase();
2466
+ if (triggerPrice !== undefined) {
2467
+ if (orderType === 'MARKET') {
2468
+ orderType = 'STOP_MARKET';
2469
+ }
2470
+ else if (orderType === 'LIMIT') {
2471
+ orderType = 'STOP_LIMIT';
2472
+ }
2473
+ request['stopPrice'] = triggerPrice; // todo priceToPrecision
2474
+ params = this.omit(params, ['triggerPrice', 'stopPrice']);
2475
+ }
2476
+ request['orderType'] = orderType;
2477
+ if (orderType === 'STOP_LIMIT') {
2478
+ request['limitPrice'] = price; // todo priceToPrecision
2479
+ }
2480
+ else if (price !== undefined) {
2481
+ request['price'] = price; // todo priceToPrecision
2482
+ }
2483
+ let postOnly = undefined;
2484
+ const isMarketOrder = (orderType === 'MARKET') || (orderType === 'STOP_MARKET');
2485
+ [postOnly, params] = this.handlePostOnly(isMarketOrder, false, params);
2486
+ const timeInForce = this.safeStringUpper(params, 'timeInForce');
2487
+ if (postOnly && (timeInForce !== 'MAKER_ONLY_REPRICE')) {
2488
+ request['timeInForce'] = 'MAKER_ONLY';
2489
+ }
2490
+ return this.extend(request, params);
2491
+ }
2492
+ /**
2493
+ * @method
2494
+ * @name oxfun#createMarketBuyOrderWithCost
2495
+ * @description create a market buy order by providing the symbol and cost
2496
+ * @see https://open.big.one/docs/spot_orders.html#create-order
2497
+ * @param {string} symbol unified symbol of the market to create an order in
2498
+ * @param {float} cost how much you want to trade in units of the quote currency
2499
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2500
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2501
+ */
2502
+ async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
2503
+ await this.loadMarkets();
2504
+ const market = this.market(symbol);
2505
+ if (!market['spot']) {
2506
+ throw new NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2507
+ }
2508
+ const request = {
2509
+ 'cost': cost,
2510
+ };
2511
+ return await this.createOrder(symbol, 'market', 'buy', undefined, undefined, this.extend(request, params));
2512
+ }
2513
+ /**
2514
+ * @method
2515
+ * @name oxfun#fetchOrder
2516
+ * @see https://docs.ox.fun/?json#get-v3-orders-status
2517
+ * @description fetches information on an order made by the user
2518
+ * @param {string} id a unique id for the order
2519
+ * @param {string} [symbol] not used by oxfun fetchOrder
2520
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2521
+ * @param {int} [params.clientOrderId] the client order id of the order
2522
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2523
+ */
2524
+ async fetchOrder(id, symbol = undefined, params = {}) {
2525
+ await this.loadMarkets();
2526
+ const request = {
2527
+ 'orderId': id,
2528
+ };
2529
+ const response = await this.privateGetV3OrdersStatus(this.extend(request, params));
2530
+ //
2531
+ // {
2532
+ // "success": true,
2533
+ // "data": {
2534
+ // "orderId": "1000111762980",
2535
+ // "clientOrderId": "0",
2536
+ // "marketCode": "ETH-USD-SWAP-LIN",
2537
+ // "status": "OPEN",
2538
+ // "side": "BUY",
2539
+ // "price": "2700.0",
2540
+ // "isTriggered": false,
2541
+ // "remainQuantity": "0.01",
2542
+ // "totalQuantity": "0.01",
2543
+ // "amount": "0",
2544
+ // "displayQuantity": "0.01",
2545
+ // "cumulativeMatchedQuantity": "0",
2546
+ // "orderType": "STOP_LIMIT",
2547
+ // "timeInForce": "GTC",
2548
+ // "source": "11",
2549
+ // "createdAt": "1715794191277"
2550
+ // }
2551
+ // }
2552
+ //
2553
+ const data = this.safeDict(response, 'data', {});
2554
+ return this.parseOrder(data);
2555
+ }
2556
+ /**
2557
+ * @method
2558
+ * @name oxfun#fetchOpenOrders
2559
+ * @description fetch all unfilled currently open orders
2560
+ * @see https://docs.ox.fun/?json#get-v3-orders-working
2561
+ * @param {string} symbol unified market symbol
2562
+ * @param {int} [since] the earliest time in ms to fetch open orders for
2563
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
2564
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2565
+ * @param {int} [params.orderId] a unique id for the order
2566
+ * @param {int} [params.clientOrderId] the client order id of the order
2567
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2568
+ */
2569
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2570
+ await this.loadMarkets();
2571
+ const request = {};
2572
+ let market = undefined;
2573
+ if (symbol !== undefined) {
2574
+ market = this.market(symbol);
2575
+ }
2576
+ const response = await this.privateGetV3OrdersWorking(this.extend(request, params));
2577
+ const data = this.safeList(response, 'data', []);
2578
+ return this.parseOrders(data, market, since, limit);
2579
+ }
2580
+ /**
2581
+ * @method
2582
+ * @name oxfun#cancelOrder
2583
+ * @description cancels an open order
2584
+ * @see https://docs.ox.fun/?json#delete-v3-orders-cancel
2585
+ * @param {string} id order id
2586
+ * @param {string} symbol unified symbol of the market the order was made in
2587
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2588
+ * @param {int} [params.clientOrderId] a unique id for the order
2589
+ * @param {int} [params.timestamp] in milliseconds
2590
+ * @param {int} [params.recvWindow] in milliseconds
2591
+ * @param {string} [params.responseType] 'FULL' or 'ACK'
2592
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2593
+ */
2594
+ async cancelOrder(id, symbol = undefined, params = {}) {
2595
+ if (symbol === undefined) {
2596
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
2597
+ }
2598
+ const market = this.market(symbol);
2599
+ const marketId = market['id'];
2600
+ const request = {
2601
+ 'timestamp': this.milliseconds(),
2602
+ 'responseType': 'FULL',
2603
+ };
2604
+ const orderRequest = {
2605
+ 'marketCode': marketId,
2606
+ 'orderId': id,
2607
+ };
2608
+ const clientOrderId = this.safeInteger(params, 'clientOrderId');
2609
+ if (clientOrderId !== undefined) {
2610
+ orderRequest['clientOrderId'] = clientOrderId;
2611
+ }
2612
+ request['orders'] = [orderRequest];
2613
+ const response = await this.privateDeleteV3OrdersCancel(this.extend(request, params));
2614
+ const data = this.safeList(response, 'data', []);
2615
+ const order = this.safeDict(data, 0, {});
2616
+ return this.parseOrder(order);
2617
+ }
2618
+ /**
2619
+ * @method
2620
+ * @name oxfun#cancelAllOrders
2621
+ * @description cancel all open orders
2622
+ * @see https://docs.ox.fun/?json#delete-v3-orders-cancel-all
2623
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
2624
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2625
+ * @returns {object} response from exchange
2626
+ */
2627
+ async cancelAllOrders(symbol = undefined, params = {}) {
2628
+ const request = {};
2629
+ if (symbol !== undefined) {
2630
+ const market = this.market(symbol);
2631
+ request['marketCode'] = market['id'];
2632
+ }
2633
+ //
2634
+ // {
2635
+ // "success": true,
2636
+ // "data": { "notice": "Orders queued for cancelation" }
2637
+ // }
2638
+ //
2639
+ // {
2640
+ // "success": true,
2641
+ // "data": { "notice": "No working orders found" }
2642
+ // }
2643
+ //
2644
+ const response = await this.privateDeleteV3OrdersCancelAll(this.extend(request, params));
2645
+ return [this.safeOrder({ 'info': response })];
2646
+ }
2647
+ /**
2648
+ * @method
2649
+ * @name oxfun#cancelOrders
2650
+ * @description cancel multiple orders
2651
+ * @see https://docs.ox.fun/?json#delete-v3-orders-cancel
2652
+ * @param {string[]} ids order ids
2653
+ * @param {string} [symbol] unified market symbol
2654
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2655
+ * @param {int} [params.timestamp] in milliseconds
2656
+ * @param {int} [params.recvWindow] in milliseconds
2657
+ * @param {string} [params.responseType] 'FULL' or 'ACK'
2658
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2659
+ */
2660
+ async cancelOrders(ids, symbol = undefined, params = {}) {
2661
+ if (symbol === undefined) {
2662
+ throw new ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
2663
+ }
2664
+ await this.loadMarkets();
2665
+ const market = this.market(symbol);
2666
+ const marketId = market['id'];
2667
+ const request = {
2668
+ 'timestamp': this.milliseconds(),
2669
+ 'responseType': 'FULL',
2670
+ };
2671
+ const orders = [];
2672
+ for (let i = 0; i < ids.length; i++) {
2673
+ const order = {
2674
+ 'marketCode': marketId,
2675
+ 'orderId': ids[i],
2676
+ };
2677
+ orders.push(order);
2678
+ }
2679
+ request['orders'] = orders;
2680
+ const response = await this.privateDeleteV3OrdersCancel(this.extend(request, params));
2681
+ const data = this.safeList(response, 'data', []);
2682
+ return this.parseOrders(data, market);
2683
+ }
2684
+ parseOrder(order, market = undefined) {
2685
+ //
2686
+ // accepted market order responseType FULL
2687
+ // {
2688
+ // "notice": "OrderMatched",
2689
+ // "accountId": "106490",
2690
+ // "orderId": "1000109901865",
2691
+ // "submitted": true,
2692
+ // "clientOrderId": "0",
2693
+ // "marketCode": "OX-USDT",
2694
+ // "status": "FILLED",
2695
+ // "side": "SELL",
2696
+ // "isTriggered": false,
2697
+ // "quantity": "150.0",
2698
+ // "amount": "0.0",
2699
+ // "remainQuantity": "0.0",
2700
+ // "matchId": "100017047880451399",
2701
+ // "matchPrice": "0.01465",
2702
+ // "matchQuantity": "150.0",
2703
+ // "feeInstrumentId": "USDT",
2704
+ // "fees": "0.0015382500",
2705
+ // "orderType": "MARKET",
2706
+ // "createdAt": "1715592472236",
2707
+ // "lastMatchedAt": "1715592472200",
2708
+ // "displayQuantity": "150.0"
2709
+ // }
2710
+ //
2711
+ // accepted limit order responseType FULL
2712
+ // {
2713
+ // "notice": "OrderOpened",
2714
+ // "accountId": "106490",
2715
+ // "orderId": "1000111482406",
2716
+ // "submitted": true,
2717
+ // "clientOrderId": "0",
2718
+ // "marketCode": "ETH-USD-SWAP-LIN",
2719
+ // "status": "OPEN",
2720
+ // "side": "SELL",
2721
+ // "price": "4000.0",
2722
+ // "isTriggered": false,
2723
+ // "quantity": "0.01",
2724
+ // "amount": "0.0",
2725
+ // "orderType": "LIMIT",
2726
+ // "timeInForce": "GTC",
2727
+ // "createdAt": "1715763507682",
2728
+ // "displayQuantity": "0.01"
2729
+ // }
2730
+ //
2731
+ // accepted order responseType ACK
2732
+ // {
2733
+ // "accountId": "106490",
2734
+ // "orderId": "1000109892193",
2735
+ // "submitted": true,
2736
+ // "marketCode": "OX-USDT",
2737
+ // "side": "BUY",
2738
+ // "price": "0.01961",
2739
+ // "isTriggered": false,
2740
+ // "quantity": "100",
2741
+ // "orderType": "MARKET",
2742
+ // "timeInForce": "IOC",
2743
+ // "createdAt": "1715591529057",
2744
+ // "selfTradePreventionMode": "NONE"
2745
+ // }
2746
+ //
2747
+ // rejected order (balance insufficient)
2748
+ // {
2749
+ // "code": "710001",
2750
+ // "message": "System failure, exception thrown -> null",
2751
+ // "submitted": false,
2752
+ // "marketCode": "OX-USDT",
2753
+ // "side": "BUY",
2754
+ // "price": "0.01961",
2755
+ // "amount": "100",
2756
+ // "orderType": "MARKET",
2757
+ // "timeInForce": "IOC",
2758
+ // "createdAt": "1715591678835",
2759
+ // "source": 11,
2760
+ // "selfTradePreventionMode": "NONE"
2761
+ // }
2762
+ //
2763
+ // rejected order (bad request)
2764
+ // {
2765
+ // "code": "20044",
2766
+ // "message": "Amount is not supported for this order type",
2767
+ // "submitted": false,
2768
+ // "marketCode": "OX-USDT",
2769
+ // "side": "SELL",
2770
+ // "amount": "200",
2771
+ // "orderType": "MARKET",
2772
+ // "createdAt": "1715592079986",
2773
+ // "source": 11
2774
+ // }
2775
+ //
2776
+ // fetchOrder
2777
+ // {
2778
+ // "orderId": "1000111762980",
2779
+ // "clientOrderId": "0",
2780
+ // "marketCode": "ETH-USD-SWAP-LIN",
2781
+ // "status": "OPEN",
2782
+ // "side": "BUY",
2783
+ // "price": "2700.0",
2784
+ // "isTriggered": false,
2785
+ // "remainQuantity": "0.01",
2786
+ // "totalQuantity": "0.01",
2787
+ // "amount": "0",
2788
+ // "displayQuantity": "0.01",
2789
+ // "cumulativeMatchedQuantity": "0",
2790
+ // "orderType": "STOP_LIMIT",
2791
+ // "timeInForce": "GTC",
2792
+ // "source": "11",
2793
+ // "createdAt": "1715794191277"
2794
+ // }
2795
+ //
2796
+ const marketId = this.safeString(order, 'marketCode');
2797
+ market = this.safeMarket(marketId, market);
2798
+ const timestamp = this.safeInteger(order, 'createdAt');
2799
+ let fee = undefined;
2800
+ const feeCurrency = this.safeString(order, 'feeInstrumentId');
2801
+ if (feeCurrency !== undefined) {
2802
+ fee = {
2803
+ 'currency': this.safeCurrencyCode(feeCurrency),
2804
+ 'cost': this.safeNumber(order, 'fees'),
2805
+ };
2806
+ }
2807
+ let status = this.safeString(order, 'status');
2808
+ const code = this.safeInteger(order, 'code'); // rejected orders have code of the error
2809
+ if (code !== undefined) {
2810
+ status = 'rejected';
2811
+ }
2812
+ const triggerPrice = this.safeString(order, 'stopPrice');
2813
+ return this.safeOrder({
2814
+ 'id': this.safeString(order, 'orderId'),
2815
+ 'clientOrderId': this.safeString(order, 'clientOrderId'),
2816
+ 'timestamp': timestamp,
2817
+ 'datetime': this.iso8601(timestamp),
2818
+ 'lastTradeTimestamp': this.safeInteger(order, 'lastMatchedAt'),
2819
+ 'lastUpdateTimestamp': this.safeInteger(order, 'lastModifiedAt'),
2820
+ 'status': this.parseOrderStatus(status),
2821
+ 'symbol': market['symbol'],
2822
+ 'type': this.parseOrderType(this.safeString(order, 'orderType')),
2823
+ 'timeInForce': this.parseOrderTimeInForce(this.safeString(order, 'timeInForce')),
2824
+ 'side': this.safeStringLower(order, 'side'),
2825
+ 'price': this.safeStringN(order, ['price', 'matchPrice', 'limitPrice']),
2826
+ 'average': undefined,
2827
+ 'amount': this.safeString2(order, 'totalQuantity', 'quantity'),
2828
+ 'filled': this.safeString2(order, 'cumulativeMatchedQuantity', 'matchQuantity'),
2829
+ 'remaining': this.safeString(order, 'remainQuantity'),
2830
+ 'triggerPrice': triggerPrice,
2831
+ 'stopLossPrice': triggerPrice,
2832
+ 'cost': this.omitZero(this.safeString(order, 'amount')),
2833
+ 'trades': undefined,
2834
+ 'fee': fee,
2835
+ 'info': order,
2836
+ }, market);
2837
+ }
2838
+ parseOrderStatus(status) {
2839
+ const statuses = {
2840
+ 'OPEN': 'open',
2841
+ 'PARTIALLY_FILLED': 'open',
2842
+ 'PARTIAL_FILL': 'open',
2843
+ 'FILLED': 'closed',
2844
+ 'CANCELED': 'canceled',
2845
+ 'CANCELED_BY_USER': 'canceled',
2846
+ 'CANCELED_BY_MAKER_ONLY': 'rejected',
2847
+ 'CANCELED_BY_FOK': 'rejected',
2848
+ 'CANCELED_ALL_BY_IOC': 'rejected',
2849
+ 'CANCELED_PARTIAL_BY_IOC': 'canceled',
2850
+ 'CANCELED_BY_SELF_TRADE_PROTECTION': 'rejected',
2851
+ };
2852
+ return this.safeString(statuses, status, status);
2853
+ }
2854
+ parseOrderType(type) {
2855
+ const types = {
2856
+ 'LIMIT': 'limit',
2857
+ 'STOP_LIMIT': 'limit',
2858
+ 'MARKET': 'market',
2859
+ 'STOP_MARKET': 'market',
2860
+ };
2861
+ return this.safeString(types, type, type);
2862
+ }
2863
+ parseOrderTimeInForce(type) {
2864
+ const types = {
2865
+ 'GTC': 'GTC',
2866
+ 'IOC': 'IOC',
2867
+ 'FOK': 'FOK',
2868
+ 'MAKER_ONLY': 'PO',
2869
+ 'MAKER_ONLY_REPRICE': 'PO',
2870
+ };
2871
+ return this.safeString(types, type, type);
2872
+ }
2873
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2874
+ const baseUrl = this.urls['api'][api];
2875
+ let url = baseUrl + '/' + path;
2876
+ let queryString = '';
2877
+ if (method === 'GET') {
2878
+ queryString = this.urlencode(params);
2879
+ if (queryString.length !== 0) {
2880
+ url += '?' + queryString;
2881
+ }
2882
+ }
2883
+ if (api === 'private') {
2884
+ this.checkRequiredCredentials();
2885
+ const timestamp = this.milliseconds();
2886
+ const isoDatetime = this.iso8601(timestamp);
2887
+ const datetimeParts = isoDatetime.split('.');
2888
+ const datetime = datetimeParts[0];
2889
+ const nonce = this.nonce();
2890
+ const urlParts = baseUrl.split('//');
2891
+ if ((method === 'POST') || (method === 'DELETE')) {
2892
+ body = this.json(params);
2893
+ queryString = body;
2894
+ }
2895
+ const msgString = datetime + '\n' + nonce.toString() + '\n' + method + '\n' + urlParts[1] + '\n/' + path + '\n' + queryString;
2896
+ const signature = this.hmac(this.encode(msgString), this.encode(this.secret), sha256, 'base64');
2897
+ headers = {
2898
+ 'Content-Type': 'application/json',
2899
+ 'AccessKey': this.apiKey,
2900
+ 'Timestamp': datetime,
2901
+ 'Signature': signature,
2902
+ 'Nonce': nonce.toString(),
2903
+ };
2904
+ }
2905
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2906
+ }
2907
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2908
+ if (response === undefined) {
2909
+ return undefined;
2910
+ }
2911
+ if (code !== 200) {
2912
+ const responseCode = this.safeString(response, 'code', undefined);
2913
+ const feedback = this.id + ' ' + body;
2914
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2915
+ this.throwExactlyMatchedException(this.exceptions['exact'], responseCode, feedback);
2916
+ throw new ExchangeError(feedback);
2917
+ }
2918
+ return undefined;
2919
+ }
2920
+ }