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,2655 @@
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/derive.js';
9
+ import Precise from './base/Precise.js';
10
+ import { BadRequest, InvalidOrder, ExchangeError, OrderNotFound, ArgumentsRequired, InsufficientFunds, RateLimitExceeded, AuthenticationError } from './base/errors.js';
11
+ import { ecdsa } from './base/functions/crypto.js';
12
+ import { keccak_256 as keccak } from './static_dependencies/noble-hashes/sha3.js';
13
+ import { secp256k1 } from './static_dependencies/noble-curves/secp256k1.js';
14
+ import { TICK_SIZE } from './base/functions/number.js';
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * @class derive
18
+ * @augments Exchange
19
+ */
20
+ export default class derive extends Exchange {
21
+ describe() {
22
+ return this.deepExtend(super.describe(), {
23
+ 'id': 'derive',
24
+ 'name': 'derive',
25
+ 'countries': [],
26
+ 'version': 'v1',
27
+ 'rateLimit': 50,
28
+ 'certified': false,
29
+ 'pro': true,
30
+ 'dex': true,
31
+ 'has': {
32
+ 'CORS': undefined,
33
+ 'spot': false,
34
+ 'margin': false,
35
+ 'swap': false,
36
+ 'future': false,
37
+ 'option': false,
38
+ 'addMargin': false,
39
+ 'borrowCrossMargin': false,
40
+ 'borrowIsolatedMargin': false,
41
+ 'cancelAllOrders': true,
42
+ 'cancelAllOrdersAfter': false,
43
+ 'cancelOrder': true,
44
+ 'cancelOrders': false,
45
+ 'cancelOrdersForSymbols': false,
46
+ 'closeAllPositions': false,
47
+ 'closePosition': false,
48
+ 'createMarketBuyOrderWithCost': false,
49
+ 'createMarketOrderWithCost': false,
50
+ 'createMarketSellOrderWithCost': false,
51
+ 'createOrder': true,
52
+ 'createOrders': false,
53
+ 'createReduceOnlyOrder': false,
54
+ 'createStopOrder': false,
55
+ 'createTriggerOrder': false,
56
+ 'editOrder': true,
57
+ 'fetchAccounts': false,
58
+ 'fetchBalance': true,
59
+ 'fetchBorrowInterest': false,
60
+ 'fetchBorrowRateHistories': false,
61
+ 'fetchBorrowRateHistory': false,
62
+ 'fetchCanceledAndClosedOrders': false,
63
+ 'fetchCanceledOrders': true,
64
+ 'fetchClosedOrders': true,
65
+ 'fetchCrossBorrowRate': false,
66
+ 'fetchCrossBorrowRates': false,
67
+ 'fetchCurrencies': true,
68
+ 'fetchDepositAddress': false,
69
+ 'fetchDepositAddresses': false,
70
+ 'fetchDeposits': true,
71
+ 'fetchDepositWithdrawFee': 'emulated',
72
+ 'fetchDepositWithdrawFees': false,
73
+ 'fetchFundingHistory': true,
74
+ 'fetchFundingRate': true,
75
+ 'fetchFundingRateHistory': true,
76
+ 'fetchFundingRates': false,
77
+ 'fetchIndexOHLCV': false,
78
+ 'fetchIsolatedBorrowRate': false,
79
+ 'fetchIsolatedBorrowRates': false,
80
+ 'fetchLedger': true,
81
+ 'fetchLeverage': false,
82
+ 'fetchLeverageTiers': false,
83
+ 'fetchLiquidations': false,
84
+ 'fetchMarginMode': undefined,
85
+ 'fetchMarketLeverageTiers': false,
86
+ 'fetchMarkets': true,
87
+ 'fetchMarkOHLCV': false,
88
+ 'fetchMyLiquidations': false,
89
+ 'fetchMyTrades': true,
90
+ 'fetchOHLCV': false,
91
+ 'fetchOpenInterest': false,
92
+ 'fetchOpenInterestHistory': false,
93
+ 'fetchOpenInterests': false,
94
+ 'fetchOpenOrders': true,
95
+ 'fetchOrder': false,
96
+ 'fetchOrderBook': false,
97
+ 'fetchOrders': true,
98
+ 'fetchOrderTrades': true,
99
+ 'fetchPosition': false,
100
+ 'fetchPositionMode': false,
101
+ 'fetchPositions': true,
102
+ 'fetchPositionsRisk': false,
103
+ 'fetchPremiumIndexOHLCV': false,
104
+ 'fetchTicker': true,
105
+ 'fetchTickers': false,
106
+ 'fetchTime': true,
107
+ 'fetchTrades': true,
108
+ 'fetchTradingFee': false,
109
+ 'fetchTradingFees': false,
110
+ 'fetchTransfer': false,
111
+ 'fetchTransfers': false,
112
+ 'fetchWithdrawal': false,
113
+ 'fetchWithdrawals': true,
114
+ 'reduceMargin': false,
115
+ 'repayCrossMargin': false,
116
+ 'repayIsolatedMargin': false,
117
+ 'sandbox': true,
118
+ 'setLeverage': false,
119
+ 'setMarginMode': false,
120
+ 'setPositionMode': false,
121
+ 'transfer': false,
122
+ 'withdraw': false,
123
+ },
124
+ 'timeframes': {
125
+ '1m': '1m',
126
+ '3m': '3m',
127
+ '5m': '5m',
128
+ '15m': '15m',
129
+ '30m': '30m',
130
+ '1h': '1h',
131
+ '2h': '2h',
132
+ '4h': '4h',
133
+ '8h': '8h',
134
+ '12h': '12h',
135
+ '1d': '1d',
136
+ '3d': '3d',
137
+ '1w': '1w',
138
+ '1M': '1M',
139
+ },
140
+ 'hostname': 'derive.xyz',
141
+ 'urls': {
142
+ 'logo': 'https://github.com/user-attachments/assets/f835b95f-033a-43dd-b6bb-24e698fc498c',
143
+ 'api': {
144
+ 'public': 'https://api.lyra.finance/public',
145
+ 'private': 'https://api.lyra.finance/private',
146
+ },
147
+ 'test': {
148
+ 'public': 'https://api-demo.lyra.finance/public',
149
+ 'private': 'https://api-demo.lyra.finance/private',
150
+ },
151
+ 'www': 'https://www.derive.xyz/',
152
+ 'doc': 'https://docs.derive.xyz/docs/',
153
+ 'fees': 'https://docs.derive.xyz/reference/fees-1/',
154
+ 'referral': 'https://www.derive.xyz/invite/3VB0B',
155
+ },
156
+ 'api': {
157
+ 'public': {
158
+ 'get': [
159
+ 'get_all_currencies',
160
+ ],
161
+ 'post': [
162
+ 'build_register_session_key_tx',
163
+ 'register_session_key',
164
+ 'deregister_session_key',
165
+ 'login',
166
+ 'statistics',
167
+ 'get_all_currencies',
168
+ 'get_currency',
169
+ 'get_instrument',
170
+ 'get_all_instruments',
171
+ 'get_instruments',
172
+ 'get_ticker',
173
+ 'get_latest_signed_feeds',
174
+ 'get_option_settlement_prices',
175
+ 'get_spot_feed_history',
176
+ 'get_spot_feed_history_candles',
177
+ 'get_funding_rate_history',
178
+ 'get_trade_history',
179
+ 'get_option_settlement_history',
180
+ 'get_liquidation_history',
181
+ 'get_interest_rate_history',
182
+ 'get_transaction',
183
+ 'get_margin',
184
+ 'margin_watch',
185
+ 'validate_invite_code',
186
+ 'get_points',
187
+ 'get_all_points',
188
+ 'get_points_leaderboard',
189
+ 'get_descendant_tree',
190
+ 'get_tree_roots',
191
+ 'get_swell_percent_points',
192
+ 'get_vault_assets',
193
+ 'get_etherfi_effective_balances',
194
+ 'get_kelp_effective_balances',
195
+ 'get_bridge_balances',
196
+ 'get_ethena_participants',
197
+ 'get_vault_share',
198
+ 'get_vault_statistics',
199
+ 'get_vault_balances',
200
+ 'estimate_integrator_points',
201
+ 'create_subaccount_debug',
202
+ 'deposit_debug',
203
+ 'withdraw_debug',
204
+ 'send_quote_debug',
205
+ 'execute_quote_debug',
206
+ 'get_invite_code',
207
+ 'register_invite',
208
+ 'get_time',
209
+ 'get_live_incidents',
210
+ 'get_maker_programs',
211
+ 'get_maker_program_scores',
212
+ ],
213
+ },
214
+ 'private': {
215
+ 'post': [
216
+ 'get_account',
217
+ 'create_subaccount',
218
+ 'get_subaccount',
219
+ 'get_subaccounts',
220
+ 'get_all_portfolios',
221
+ 'change_subaccount_label',
222
+ 'get_notificationsv',
223
+ 'update_notifications',
224
+ 'deposit',
225
+ 'withdraw',
226
+ 'transfer_erc20',
227
+ 'transfer_position',
228
+ 'transfer_positions',
229
+ 'order',
230
+ 'replace',
231
+ 'order_debug',
232
+ 'get_order',
233
+ 'get_orders',
234
+ 'get_open_orders',
235
+ 'cancel',
236
+ 'cancel_by_label',
237
+ 'cancel_by_nonce',
238
+ 'cancel_by_instrument',
239
+ 'cancel_all',
240
+ 'cancel_trigger_order',
241
+ 'get_order_history',
242
+ 'get_trade_history',
243
+ 'get_deposit_history',
244
+ 'get_withdrawal_history',
245
+ 'send_rfq',
246
+ 'cancel_rfq',
247
+ 'cancel_batch_rfqs',
248
+ 'get_rfqs',
249
+ 'poll_rfqs',
250
+ 'send_quote',
251
+ 'cancel_quote',
252
+ 'cancel_batch_quotes',
253
+ 'get_quotes',
254
+ 'poll_quotes',
255
+ 'execute_quote',
256
+ 'rfq_get_best_quote',
257
+ 'get_margin',
258
+ 'get_collaterals',
259
+ 'get_positions',
260
+ 'get_option_settlement_history',
261
+ 'get_subaccount_value_history',
262
+ 'expired_and_cancelled_history',
263
+ 'get_funding_history',
264
+ 'get_interest_history',
265
+ 'get_erc20_transfer_history',
266
+ 'get_liquidation_history',
267
+ 'liquidate',
268
+ 'get_liquidator_history',
269
+ 'session_keys',
270
+ 'edit_session_key',
271
+ 'register_scoped_session_key',
272
+ 'get_mmp_config',
273
+ 'set_mmp_config',
274
+ 'reset_mmp',
275
+ 'set_cancel_on_disconnect',
276
+ 'get_invite_code',
277
+ 'register_invite',
278
+ ],
279
+ },
280
+ },
281
+ 'fees': {},
282
+ 'requiredCredentials': {
283
+ 'apiKey': false,
284
+ 'secret': false,
285
+ 'walletAddress': true,
286
+ 'privateKey': true,
287
+ },
288
+ 'exceptions': {
289
+ 'exact': {
290
+ '-32000': RateLimitExceeded,
291
+ '-32100': RateLimitExceeded,
292
+ '-32700': BadRequest,
293
+ '-32600': BadRequest,
294
+ '-32601': BadRequest,
295
+ '-32602': InvalidOrder,
296
+ '-32603': InvalidOrder,
297
+ '9000': InvalidOrder,
298
+ '10000': BadRequest,
299
+ '10001': BadRequest,
300
+ '10002': BadRequest,
301
+ '10003': BadRequest,
302
+ '10004': InvalidOrder,
303
+ '10005': BadRequest,
304
+ '10006': BadRequest,
305
+ '10007': BadRequest,
306
+ '10008': BadRequest,
307
+ '10009': BadRequest,
308
+ '10010': InvalidOrder,
309
+ '10011': InsufficientFunds,
310
+ '10012': InsufficientFunds,
311
+ '10013': ExchangeError,
312
+ '10014': ExchangeError,
313
+ '11000': InsufficientFunds,
314
+ '11002': InvalidOrder,
315
+ '11003': InvalidOrder,
316
+ '11004': InvalidOrder,
317
+ '11005': InvalidOrder,
318
+ '11006': OrderNotFound,
319
+ '11007': InvalidOrder,
320
+ '11008': InvalidOrder,
321
+ '11009': InvalidOrder,
322
+ '11010': InvalidOrder,
323
+ '11011': InvalidOrder,
324
+ '11012': InvalidOrder,
325
+ '11013': InvalidOrder,
326
+ '11014': InvalidOrder,
327
+ '11015': InvalidOrder,
328
+ '11016': InvalidOrder,
329
+ '11017': InvalidOrder,
330
+ '11018': InvalidOrder,
331
+ '11019': InvalidOrder,
332
+ '11020': InsufficientFunds,
333
+ '11021': InvalidOrder,
334
+ '11022': InvalidOrder,
335
+ '11023': InvalidOrder,
336
+ '11024': InvalidOrder,
337
+ '11025': InvalidOrder,
338
+ '11026': BadRequest,
339
+ '11027': InvalidOrder,
340
+ '11028': InvalidOrder,
341
+ '11050': InvalidOrder,
342
+ '11051': InvalidOrder,
343
+ '11052': InvalidOrder,
344
+ '11053': InvalidOrder,
345
+ '11054': InvalidOrder,
346
+ '11055': InvalidOrder,
347
+ '11100': InvalidOrder,
348
+ '11101': InvalidOrder,
349
+ '11102': InvalidOrder,
350
+ '11103': InvalidOrder,
351
+ '11104': InvalidOrder,
352
+ '11105': InvalidOrder,
353
+ '11106': InvalidOrder,
354
+ '11107': InvalidOrder,
355
+ '11200': InvalidOrder,
356
+ '11201': InvalidOrder,
357
+ '11202': InvalidOrder,
358
+ '11203': InvalidOrder,
359
+ '12000': InvalidOrder,
360
+ '12001': InvalidOrder,
361
+ '12002': BadRequest,
362
+ '12003': BadRequest,
363
+ '13000': BadRequest,
364
+ '14000': BadRequest,
365
+ '14001': InvalidOrder,
366
+ '14002': BadRequest,
367
+ '14008': BadRequest,
368
+ '14009': BadRequest,
369
+ '14010': BadRequest,
370
+ '14011': BadRequest,
371
+ '14012': BadRequest,
372
+ '14013': BadRequest,
373
+ '14014': InvalidOrder,
374
+ '14015': BadRequest,
375
+ '14016': BadRequest,
376
+ '14017': BadRequest,
377
+ '14018': BadRequest,
378
+ '14019': BadRequest,
379
+ '14020': BadRequest,
380
+ '14021': BadRequest,
381
+ '14022': AuthenticationError,
382
+ '14023': InvalidOrder,
383
+ '14024': BadRequest,
384
+ '14025': BadRequest,
385
+ '14026': BadRequest,
386
+ '14027': AuthenticationError,
387
+ '14028': BadRequest,
388
+ '14029': AuthenticationError,
389
+ '14030': BadRequest,
390
+ '14031': AuthenticationError,
391
+ '14032': BadRequest,
392
+ '16000': AuthenticationError,
393
+ '16001': AuthenticationError,
394
+ '16100': AuthenticationError,
395
+ '17000': BadRequest,
396
+ '17001': BadRequest,
397
+ '17002': BadRequest,
398
+ '17003': BadRequest,
399
+ '17004': BadRequest,
400
+ '17005': BadRequest,
401
+ '17006': BadRequest,
402
+ '17007': BadRequest,
403
+ '18000': BadRequest,
404
+ '18001': BadRequest,
405
+ '18002': BadRequest,
406
+ '18003': BadRequest,
407
+ '18004': BadRequest,
408
+ '18005': BadRequest,
409
+ '18006': BadRequest,
410
+ '18007': BadRequest,
411
+ '19000': BadRequest, // Maker program not found
412
+ },
413
+ 'broad': {},
414
+ },
415
+ 'precisionMode': TICK_SIZE,
416
+ 'commonCurrencies': {},
417
+ 'options': {
418
+ 'deriveWalletAddress': '',
419
+ 'id': '0x0ad42b8e602c2d3d475ae52d678cf63d84ab2749',
420
+ },
421
+ });
422
+ }
423
+ setSandboxMode(enable) {
424
+ super.setSandboxMode(enable);
425
+ this.options['sandboxMode'] = enable;
426
+ }
427
+ /**
428
+ * @method
429
+ * @name derive#fetchTime
430
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
431
+ * @see https://docs.derive.xyz/reference/post_public-get-time
432
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
433
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
434
+ */
435
+ async fetchTime(params = {}) {
436
+ const response = await this.publicPostGetTime(params);
437
+ //
438
+ // {
439
+ // "result": 1735846536758,
440
+ // "id": "f1c03d21-f886-4c5a-9a9d-33dd06f180f0"
441
+ // }
442
+ //
443
+ return this.safeInteger(response, 'result');
444
+ }
445
+ /**
446
+ * @method
447
+ * @name derive#fetchCurrencies
448
+ * @description fetches all available currencies on an exchange
449
+ * @see https://docs.derive.xyz/reference/post_public-get-all-currencies
450
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
451
+ * @returns {object} an associative dictionary of currencies
452
+ */
453
+ async fetchCurrencies(params = {}) {
454
+ const result = {};
455
+ const tokenResponse = await this.publicGetGetAllCurrencies(params);
456
+ //
457
+ // {
458
+ // "result": [
459
+ // {
460
+ // "currency": "SEI",
461
+ // "instrument_types": [
462
+ // "perp"
463
+ // ],
464
+ // "protocol_asset_addresses": {
465
+ // "perp": "0x7225889B75fd34C68eA3098dAE04D50553C09840",
466
+ // "option": null,
467
+ // "spot": null,
468
+ // "underlying_erc20": null
469
+ // },
470
+ // "managers": [
471
+ // {
472
+ // "address": "0x28c9ddF9A3B29c2E6a561c1BC520954e5A33de5D",
473
+ // "margin_type": "SM",
474
+ // "currency": null
475
+ // }
476
+ // ],
477
+ // "srm_im_discount": "0",
478
+ // "srm_mm_discount": "0",
479
+ // "pm2_collateral_discounts": [],
480
+ // "borrow_apy": "0",
481
+ // "supply_apy": "0",
482
+ // "total_borrow": "0",
483
+ // "total_supply": "0",
484
+ // "asset_cap_and_supply_per_manager": {
485
+ // "perp": {
486
+ // "SM": [
487
+ // {
488
+ // "current_open_interest": "0",
489
+ // "interest_cap": "2000000",
490
+ // "manager_currency": null
491
+ // }
492
+ // ]
493
+ // },
494
+ // "option": {},
495
+ // "erc20": {}
496
+ // },
497
+ // "market_type": "SRM_PERP_ONLY",
498
+ // "spot_price": "0.2193542905042081",
499
+ // "spot_price_24h": "0.238381655533635830"
500
+ // },
501
+ // "id": "7e07fe1d-0ab4-4d2b-9e22-b65ce9e232dc"
502
+ // }
503
+ //
504
+ const currencies = this.safeList(tokenResponse, 'result', []);
505
+ for (let i = 0; i < currencies.length; i++) {
506
+ const currency = currencies[i];
507
+ const currencyId = this.safeString(currency, 'currency');
508
+ const code = this.safeCurrencyCode(currencyId);
509
+ result[code] = this.safeCurrencyStructure({
510
+ 'id': currencyId,
511
+ 'name': undefined,
512
+ 'code': code,
513
+ 'precision': undefined,
514
+ 'active': undefined,
515
+ 'fee': undefined,
516
+ 'networks': undefined,
517
+ 'deposit': undefined,
518
+ 'withdraw': undefined,
519
+ 'limits': {
520
+ 'deposit': {
521
+ 'min': undefined,
522
+ 'max': undefined,
523
+ },
524
+ 'withdraw': {
525
+ 'min': undefined,
526
+ 'max': undefined,
527
+ },
528
+ },
529
+ 'info': currency,
530
+ });
531
+ }
532
+ return result;
533
+ }
534
+ /**
535
+ * @method
536
+ * @name derive#fetchMarkets
537
+ * @description retrieves data on all markets for bybit
538
+ * @see https://docs.derive.xyz/reference/post_public-get-all-instruments
539
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
540
+ * @returns {object[]} an array of objects representing market data
541
+ */
542
+ async fetchMarkets(params = {}) {
543
+ const spotMarketsPromise = this.fetchSpotMarkets(params);
544
+ const swapMarketsPromise = this.fetchSwapMarkets(params);
545
+ const optionMarketsPromise = this.fetchOptionMarkets(params);
546
+ const [spotMarkets, swapMarkets, optionMarkets] = await Promise.all([spotMarketsPromise, swapMarketsPromise, optionMarketsPromise]);
547
+ //
548
+ // {
549
+ // "result": {
550
+ // "instruments": [
551
+ // {
552
+ // "instrument_type": "perp",
553
+ // "instrument_name": "BTC-PERP",
554
+ // "scheduled_activation": 1701840228,
555
+ // "scheduled_deactivation": 9223372036854776000,
556
+ // "is_active": true,
557
+ // "tick_size": "0.1",
558
+ // "minimum_amount": "0.01",
559
+ // "maximum_amount": "10000",
560
+ // "amount_step": "0.001",
561
+ // "mark_price_fee_rate_cap": "0",
562
+ // "maker_fee_rate": "0.00005",
563
+ // "taker_fee_rate": "0.0003",
564
+ // "base_fee": "0.1",
565
+ // "base_currency": "BTC",
566
+ // "quote_currency": "USD",
567
+ // "option_details": null,
568
+ // "perp_details": {
569
+ // "index": "BTC-USD",
570
+ // "max_rate_per_hour": "0.004",
571
+ // "min_rate_per_hour": "-0.004",
572
+ // "static_interest_rate": "0.0000125",
573
+ // "aggregate_funding": "10538.574363381759146829",
574
+ // "funding_rate": "0.0000125"
575
+ // },
576
+ // "erc20_details": null,
577
+ // "base_asset_address": "0xDBa83C0C654DB1cd914FA2710bA743e925B53086",
578
+ // "base_asset_sub_id": "0",
579
+ // "pro_rata_fraction": "0",
580
+ // "fifo_min_allocation": "0",
581
+ // "pro_rata_amount_step": "0.1"
582
+ // }
583
+ // ],
584
+ // "pagination": {
585
+ // "num_pages": 1,
586
+ // "count": 1
587
+ // }
588
+ // },
589
+ // "id": "a06bc0b2-8e78-4536-a21f-f785f225b5a5"
590
+ // }
591
+ //
592
+ let result = this.arrayConcat(spotMarkets, swapMarkets);
593
+ result = this.arrayConcat(result, optionMarkets);
594
+ return result;
595
+ }
596
+ async fetchSpotMarkets(params = {}) {
597
+ const request = {
598
+ 'expired': false,
599
+ 'instrument_type': 'erc20',
600
+ };
601
+ const response = await this.publicPostGetAllInstruments(this.extend(request, params));
602
+ const result = this.safeDict(response, 'result', {});
603
+ const data = this.safeList(result, 'instruments', []);
604
+ return this.parseMarkets(data);
605
+ }
606
+ async fetchSwapMarkets(params = {}) {
607
+ const request = {
608
+ 'expired': false,
609
+ 'instrument_type': 'perp',
610
+ };
611
+ const response = await this.publicPostGetAllInstruments(this.extend(request, params));
612
+ const result = this.safeDict(response, 'result', {});
613
+ const data = this.safeList(result, 'instruments', []);
614
+ return this.parseMarkets(data);
615
+ }
616
+ async fetchOptionMarkets(params = {}) {
617
+ const request = {
618
+ 'expired': false,
619
+ 'instrument_type': 'option',
620
+ };
621
+ const response = await this.publicPostGetAllInstruments(this.extend(request, params));
622
+ const result = this.safeDict(response, 'result', {});
623
+ const data = this.safeList(result, 'instruments', []);
624
+ return this.parseMarkets(data);
625
+ }
626
+ parseMarket(market) {
627
+ const type = this.safeString(market, 'instrument_type');
628
+ let marketType;
629
+ let spot = false;
630
+ let margin = true;
631
+ let swap = false;
632
+ let option = false;
633
+ let linear = undefined;
634
+ let inverse = undefined;
635
+ const baseId = this.safeString(market, 'base_currency');
636
+ const quoteId = this.safeString(market, 'quote_currency');
637
+ const base = this.safeCurrencyCode(baseId);
638
+ const quote = this.safeCurrencyCode(quoteId);
639
+ const marketId = this.safeString(market, 'instrument_name');
640
+ let symbol = base + '/' + quote;
641
+ let settleId = undefined;
642
+ let settle = undefined;
643
+ let expiry = undefined;
644
+ let strike = undefined;
645
+ let optionType = undefined;
646
+ let optionLetter = undefined;
647
+ if (type === 'erc20') {
648
+ spot = true;
649
+ marketType = 'spot';
650
+ }
651
+ else if (type === 'perp') {
652
+ margin = false;
653
+ settleId = 'USDC';
654
+ settle = this.safeCurrencyCode(settleId);
655
+ symbol = base + '/' + quote + ':' + settle;
656
+ swap = true;
657
+ linear = true;
658
+ inverse = false;
659
+ marketType = 'swap';
660
+ }
661
+ else if (type === 'option') {
662
+ settleId = 'USDC';
663
+ settle = this.safeCurrencyCode(settleId);
664
+ margin = false;
665
+ option = true;
666
+ marketType = 'option';
667
+ const optionDetails = this.safeDict(market, 'option_details');
668
+ expiry = this.safeTimestamp(optionDetails, 'expiry');
669
+ strike = this.safeInteger(optionDetails, 'strike');
670
+ optionLetter = this.safeString(optionDetails, 'option_type');
671
+ symbol = base + '/' + quote + ':' + settle + '-' + this.yymmdd(expiry) + '-' + this.numberToString(strike) + '-' + optionLetter;
672
+ if (optionLetter === 'P') {
673
+ optionType = 'put';
674
+ }
675
+ else {
676
+ optionType = 'call';
677
+ }
678
+ linear = true;
679
+ inverse = false;
680
+ }
681
+ return this.safeMarketStructure({
682
+ 'id': marketId,
683
+ 'symbol': symbol,
684
+ 'base': base,
685
+ 'quote': quote,
686
+ 'settle': settle,
687
+ 'baseId': baseId,
688
+ 'quoteId': quoteId,
689
+ 'settleId': settleId,
690
+ 'type': marketType,
691
+ 'spot': spot,
692
+ 'margin': margin,
693
+ 'swap': swap,
694
+ 'future': false,
695
+ 'option': option,
696
+ 'active': this.safeBool(market, 'is_active'),
697
+ 'contract': (swap || option),
698
+ 'linear': linear,
699
+ 'inverse': inverse,
700
+ 'contractSize': (spot) ? undefined : 1,
701
+ 'expiry': expiry,
702
+ 'expiryDatetime': this.iso8601(expiry),
703
+ 'taker': this.safeNumber(market, 'taker_fee_rate'),
704
+ 'maker': this.safeNumber(market, 'maker_fee_rate'),
705
+ 'strike': strike,
706
+ 'optionType': optionType,
707
+ 'precision': {
708
+ 'amount': this.safeNumber(market, 'amount_step'),
709
+ 'price': this.safeNumber(market, 'tick_size'),
710
+ },
711
+ 'limits': {
712
+ 'leverage': {
713
+ 'min': undefined,
714
+ 'max': undefined,
715
+ },
716
+ 'amount': {
717
+ 'min': this.safeNumber(market, 'minimum_amount'),
718
+ 'max': this.safeNumber(market, 'maximum_amount'),
719
+ },
720
+ 'price': {
721
+ 'min': undefined,
722
+ 'max': undefined,
723
+ },
724
+ 'cost': {
725
+ 'min': undefined,
726
+ 'max': undefined,
727
+ },
728
+ },
729
+ 'created': undefined,
730
+ 'info': market,
731
+ });
732
+ }
733
+ /**
734
+ * @method
735
+ * @name derive#fetchTicker
736
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
737
+ * @see https://docs.derive.xyz/reference/post_public-get-ticker
738
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
739
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
740
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
741
+ */
742
+ async fetchTicker(symbol, params = {}) {
743
+ await this.loadMarkets();
744
+ const market = this.market(symbol);
745
+ const request = {
746
+ 'instrument_name': market['id'],
747
+ };
748
+ const response = await this.publicPostGetTicker(this.extend(request, params));
749
+ //
750
+ // spot
751
+ //
752
+ // {
753
+ // "result": {
754
+ // "instrument_type": "perp",
755
+ // "instrument_name": "BTC-PERP",
756
+ // "scheduled_activation": 1701840228,
757
+ // "scheduled_deactivation": 9223372036854776000,
758
+ // "is_active": true,
759
+ // "tick_size": "0.1",
760
+ // "minimum_amount": "0.01",
761
+ // "maximum_amount": "10000",
762
+ // "amount_step": "0.001",
763
+ // "mark_price_fee_rate_cap": "0",
764
+ // "maker_fee_rate": "0.00005",
765
+ // "taker_fee_rate": "0.0003",
766
+ // "base_fee": "0.1",
767
+ // "base_currency": "BTC",
768
+ // "quote_currency": "USD",
769
+ // "option_details": null,
770
+ // "perp_details": {
771
+ // "index": "BTC-USD",
772
+ // "max_rate_per_hour": "0.004",
773
+ // "min_rate_per_hour": "-0.004",
774
+ // "static_interest_rate": "0.0000125",
775
+ // "aggregate_funding": "10512.580833189805742522",
776
+ // "funding_rate": "-0.000022223906766867"
777
+ // },
778
+ // "erc20_details": null,
779
+ // "base_asset_address": "0xDBa83C0C654DB1cd914FA2710bA743e925B53086",
780
+ // "base_asset_sub_id": "0",
781
+ // "pro_rata_fraction": "0",
782
+ // "fifo_min_allocation": "0",
783
+ // "pro_rata_amount_step": "0.1",
784
+ // "best_ask_amount": "0.012",
785
+ // "best_ask_price": "99567.9",
786
+ // "best_bid_amount": "0.129",
787
+ // "best_bid_price": "99554.5",
788
+ // "five_percent_bid_depth": "11.208",
789
+ // "five_percent_ask_depth": "11.42",
790
+ // "option_pricing": null,
791
+ // "index_price": "99577.2",
792
+ // "mark_price": "99543.642926357933902181684970855712890625",
793
+ // "stats": {
794
+ // "contract_volume": "464.712",
795
+ // "num_trades": "10681",
796
+ // "open_interest": "72.804739389481989861",
797
+ // "high": "99519.1",
798
+ // "low": "97254.1",
799
+ // "percent_change": "0.0128",
800
+ // "usd_change": "1258.1"
801
+ // },
802
+ // "timestamp": 1736140984000,
803
+ // "min_price": "97591.2",
804
+ // "max_price": "101535.1"
805
+ // },
806
+ // "id": "bbd7c271-c2be-48f7-b93a-26cf6d4cb79f"
807
+ // }
808
+ //
809
+ const data = this.safeDict(response, 'result', {});
810
+ return this.parseTicker(data, market);
811
+ }
812
+ parseTicker(ticker, market = undefined) {
813
+ //
814
+ // {
815
+ // "instrument_type": "perp",
816
+ // "instrument_name": "BTC-PERP",
817
+ // "scheduled_activation": 1701840228,
818
+ // "scheduled_deactivation": 9223372036854776000,
819
+ // "is_active": true,
820
+ // "tick_size": "0.1",
821
+ // "minimum_amount": "0.01",
822
+ // "maximum_amount": "10000",
823
+ // "amount_step": "0.001",
824
+ // "mark_price_fee_rate_cap": "0",
825
+ // "maker_fee_rate": "0.00005",
826
+ // "taker_fee_rate": "0.0003",
827
+ // "base_fee": "0.1",
828
+ // "base_currency": "BTC",
829
+ // "quote_currency": "USD",
830
+ // "option_details": null,
831
+ // "perp_details": {
832
+ // "index": "BTC-USD",
833
+ // "max_rate_per_hour": "0.004",
834
+ // "min_rate_per_hour": "-0.004",
835
+ // "static_interest_rate": "0.0000125",
836
+ // "aggregate_funding": "10512.580833189805742522",
837
+ // "funding_rate": "-0.000022223906766867"
838
+ // },
839
+ // "erc20_details": null,
840
+ // "base_asset_address": "0xDBa83C0C654DB1cd914FA2710bA743e925B53086",
841
+ // "base_asset_sub_id": "0",
842
+ // "pro_rata_fraction": "0",
843
+ // "fifo_min_allocation": "0",
844
+ // "pro_rata_amount_step": "0.1",
845
+ // "best_ask_amount": "0.012",
846
+ // "best_ask_price": "99567.9",
847
+ // "best_bid_amount": "0.129",
848
+ // "best_bid_price": "99554.5",
849
+ // "five_percent_bid_depth": "11.208",
850
+ // "five_percent_ask_depth": "11.42",
851
+ // "option_pricing": null,
852
+ // "index_price": "99577.2",
853
+ // "mark_price": "99543.642926357933902181684970855712890625",
854
+ // "stats": {
855
+ // "contract_volume": "464.712",
856
+ // "num_trades": "10681",
857
+ // "open_interest": "72.804739389481989861",
858
+ // "high": "99519.1",
859
+ // "low": "97254.1",
860
+ // "percent_change": "0.0128",
861
+ // "usd_change": "1258.1"
862
+ // },
863
+ // "timestamp": 1736140984000,
864
+ // "min_price": "97591.2",
865
+ // "max_price": "101535.1"
866
+ // }
867
+ //
868
+ const marketId = this.safeString(ticker, 'instrument_name');
869
+ const timestamp = this.safeIntegerOmitZero(ticker, 'timestamp');
870
+ const symbol = this.safeSymbol(marketId, market);
871
+ const stats = this.safeDict(ticker, 'stats');
872
+ const change = this.safeString(stats, 'percent_change');
873
+ return this.safeTicker({
874
+ 'symbol': symbol,
875
+ 'timestamp': timestamp,
876
+ 'datetime': this.iso8601(timestamp),
877
+ 'high': this.safeString(stats, 'high'),
878
+ 'low': this.safeString(stats, 'low'),
879
+ 'bid': this.safeString(ticker, 'best_bid_price'),
880
+ 'bidVolume': this.safeString(ticker, 'best_bid_amount'),
881
+ 'ask': this.safeString(ticker, 'best_ask_price'),
882
+ 'askVolume': this.safeString(ticker, 'best_ask_amount'),
883
+ 'vwap': undefined,
884
+ 'open': undefined,
885
+ 'close': undefined,
886
+ 'last': undefined,
887
+ 'previousClose': undefined,
888
+ 'change': change,
889
+ 'percentage': Precise.stringMul(change, '100'),
890
+ 'average': undefined,
891
+ 'baseVolume': undefined,
892
+ 'quoteVolume': undefined,
893
+ 'indexPrice': this.safeString(ticker, 'index_price'),
894
+ 'markPrice': this.safeString(ticker, 'mark_price'),
895
+ 'info': ticker,
896
+ }, market);
897
+ }
898
+ /**
899
+ * @method
900
+ * @name derive#fetchTrades
901
+ * @description get the list of most recent trades for a particular symbol
902
+ * @see https://docs.derive.xyz/reference/post_public-get-trade-history
903
+ * @param {string} symbol unified symbol of the market to fetch trades for
904
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
905
+ * @param {int} [limit] the maximum amount of trades to fetch
906
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
907
+ * @param {int} [params.until] the latest time in ms to fetch trades for
908
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
909
+ */
910
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
911
+ await this.loadMarkets();
912
+ const request = {};
913
+ let market = undefined;
914
+ if (symbol !== undefined) {
915
+ market = this.market(symbol);
916
+ request['instrument_name'] = market['id'];
917
+ }
918
+ if (limit !== undefined) {
919
+ if (limit > 1000) {
920
+ limit = 1000;
921
+ }
922
+ request['page_size'] = limit; // default 100, max 1000
923
+ }
924
+ if (since !== undefined) {
925
+ request['from_timestamp'] = since;
926
+ }
927
+ const until = this.safeInteger(params, 'until');
928
+ params = this.omit(params, ['until']);
929
+ if (until !== undefined) {
930
+ request['to_timestamp'] = until;
931
+ }
932
+ const response = await this.publicPostGetTradeHistory(this.extend(request, params));
933
+ //
934
+ // {
935
+ // "result": {
936
+ // "trades": [
937
+ // {
938
+ // "trade_id": "9dbc88b0-f0c4-4439-9cc1-4e6409d4eafb",
939
+ // "instrument_name": "BTC-PERP",
940
+ // "timestamp": 1736153910930,
941
+ // "trade_price": "98995.3",
942
+ // "trade_amount": "0.033",
943
+ // "mark_price": "98990.875914388161618263",
944
+ // "index_price": "99038.050611100001501184",
945
+ // "direction": "sell",
946
+ // "quote_id": null,
947
+ // "wallet": "0x88B6BB87fbFac92a34F8155aaA35c87B5b166fA9",
948
+ // "subaccount_id": 8250,
949
+ // "tx_status": "settled",
950
+ // "tx_hash": "0x020bd735b312f867f17f8cc254946d87cfe9f2c8ff3605035d8129082eb73723",
951
+ // "trade_fee": "0.980476701049890015",
952
+ // "liquidity_role": "taker",
953
+ // "realized_pnl": "-2.92952402688793509",
954
+ // "realized_pnl_excl_fees": "-1.949047325838045075"
955
+ // }
956
+ // ],
957
+ // "pagination": {
958
+ // "num_pages": 598196,
959
+ // "count": 598196
960
+ // }
961
+ // },
962
+ // "id": "b8539544-6975-4497-8163-5e51a38e4aa7"
963
+ // }
964
+ //
965
+ const result = this.safeDict(response, 'result', {});
966
+ const data = this.safeList(result, 'trades', []);
967
+ return this.parseTrades(data, market, since, limit);
968
+ }
969
+ parseTrade(trade, market = undefined) {
970
+ //
971
+ // {
972
+ // "subaccount_id": 130837,
973
+ // "order_id": "30c48194-8d48-43ac-ad00-0d5ba29eddc9",
974
+ // "instrument_name": "BTC-PERP",
975
+ // "direction": "sell",
976
+ // "label": "test1234",
977
+ // "quote_id": null,
978
+ // "trade_id": "f8a30740-488c-4c2d-905d-e17057bafde1",
979
+ // "timestamp": 1738065303708,
980
+ // "mark_price": "102740.137375457314192317",
981
+ // "index_price": "102741.553409299981533184",
982
+ // "trade_price": "102700.6",
983
+ // "trade_amount": "0.01",
984
+ // "liquidity_role": "taker",
985
+ // "realized_pnl": "0",
986
+ // "realized_pnl_excl_fees": "0",
987
+ // "is_transfer": false,
988
+ // "tx_status": "settled",
989
+ // "trade_fee": "1.127415534092999815",
990
+ // "tx_hash": "0xc55df1f07330faf86579bd8a6385391fbe9e73089301149d8550e9d29c9ead74",
991
+ // "transaction_id": "e18b9426-3fa5-41bb-99d3-8b54fb4d51bb"
992
+ // }
993
+ //
994
+ const marketId = this.safeString(trade, 'instrument_name');
995
+ const symbol = this.safeSymbol(marketId, market);
996
+ const timestamp = this.safeInteger(trade, 'timestamp');
997
+ const fee = {
998
+ 'currency': 'USDC',
999
+ 'cost': this.safeString(trade, 'trade_fee'),
1000
+ };
1001
+ return this.safeTrade({
1002
+ 'info': trade,
1003
+ 'id': this.safeString(trade, 'trade_id'),
1004
+ 'order': this.safeString(trade, 'order_id'),
1005
+ 'symbol': symbol,
1006
+ 'side': this.safeStringLower(trade, 'direction'),
1007
+ 'type': undefined,
1008
+ 'takerOrMaker': this.safeString(trade, 'liquidity_role'),
1009
+ 'price': this.safeString(trade, 'trade_price'),
1010
+ 'amount': this.safeString(trade, 'trade_amount'),
1011
+ 'cost': undefined,
1012
+ 'timestamp': timestamp,
1013
+ 'datetime': this.iso8601(timestamp),
1014
+ 'fee': fee,
1015
+ }, market);
1016
+ }
1017
+ /**
1018
+ * @method
1019
+ * @name derive#fetchFundingRateHistory
1020
+ * @description fetches historical funding rate prices
1021
+ * @see https://docs.derive.xyz/reference/post_public-get-funding-rate-history
1022
+ * @param {string} symbol unified symbol of the market to fetch the funding rate history for
1023
+ * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
1024
+ * @param {int} [limit] the maximum amount of funding rate structures to fetch
1025
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1026
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
1027
+ */
1028
+ async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1029
+ await this.loadMarkets();
1030
+ const market = this.market(symbol);
1031
+ const request = {
1032
+ 'instrument_name': market['id'],
1033
+ };
1034
+ if (since !== undefined) {
1035
+ request['start_timestamp'] = since;
1036
+ }
1037
+ const until = this.safeInteger(params, 'until');
1038
+ params = this.omit(params, ['until']);
1039
+ if (until !== undefined) {
1040
+ request['to_timestamp'] = until;
1041
+ }
1042
+ const response = await this.publicPostGetFundingRateHistory(this.extend(request, params));
1043
+ //
1044
+ // {
1045
+ // "result": {
1046
+ // "funding_rate_history": [
1047
+ // {
1048
+ // "timestamp": 1736215200000,
1049
+ // "funding_rate": "-0.000020014"
1050
+ // }
1051
+ // ]
1052
+ // },
1053
+ // "id": "3200ab8d-0080-42f0-8517-c13e3d9201d8"
1054
+ // }
1055
+ //
1056
+ const result = this.safeDict(response, 'result', {});
1057
+ const data = this.safeList(result, 'funding_rate_history', []);
1058
+ const rates = [];
1059
+ for (let i = 0; i < data.length; i++) {
1060
+ const entry = data[i];
1061
+ const timestamp = this.safeInteger(entry, 'timestamp');
1062
+ rates.push({
1063
+ 'info': entry,
1064
+ 'symbol': market['symbol'],
1065
+ 'fundingRate': this.safeNumber(entry, 'funding_rate'),
1066
+ 'timestamp': timestamp,
1067
+ 'datetime': this.iso8601(timestamp),
1068
+ });
1069
+ }
1070
+ const sorted = this.sortBy(rates, 'timestamp');
1071
+ return this.filterBySymbolSinceLimit(sorted, market['symbol'], since, limit);
1072
+ }
1073
+ /**
1074
+ * @method
1075
+ * @name derive#fetchFundingRate
1076
+ * @description fetch the current funding rate
1077
+ * @see https://docs.derive.xyz/reference/post_public-get-funding-rate-history
1078
+ * @param {string} symbol unified market symbol
1079
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1080
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1081
+ */
1082
+ async fetchFundingRate(symbol, params = {}) {
1083
+ const response = await this.fetchFundingRateHistory(symbol, undefined, 1, params);
1084
+ //
1085
+ // [
1086
+ // {
1087
+ // "info": {
1088
+ // "timestamp": 1736157600000,
1089
+ // "funding_rate": "-0.000008872"
1090
+ // },
1091
+ // "symbol": "BTC/USD:USDC",
1092
+ // "fundingRate": -0.000008872,
1093
+ // "timestamp": 1736157600000,
1094
+ // "datetime": "2025-01-06T10:00:00.000Z"
1095
+ // }
1096
+ // ]
1097
+ //
1098
+ const data = this.safeDict(response, 0);
1099
+ return this.parseFundingRate(data);
1100
+ }
1101
+ parseFundingRate(contract, market = undefined) {
1102
+ const symbol = this.safeString(contract, 'symbol');
1103
+ const fundingTimestamp = this.safeInteger(contract, 'timestamp');
1104
+ return {
1105
+ 'info': contract,
1106
+ 'symbol': symbol,
1107
+ 'markPrice': undefined,
1108
+ 'indexPrice': undefined,
1109
+ 'interestRate': undefined,
1110
+ 'estimatedSettlePrice': undefined,
1111
+ 'timestamp': undefined,
1112
+ 'datetime': undefined,
1113
+ 'fundingRate': this.safeNumber(contract, 'fundingRate'),
1114
+ 'fundingTimestamp': fundingTimestamp,
1115
+ 'fundingDatetime': this.iso8601(fundingTimestamp),
1116
+ 'nextFundingRate': undefined,
1117
+ 'nextFundingTimestamp': undefined,
1118
+ 'nextFundingDatetime': undefined,
1119
+ 'previousFundingRate': undefined,
1120
+ 'previousFundingTimestamp': undefined,
1121
+ 'previousFundingDatetime': undefined,
1122
+ 'interval': undefined,
1123
+ };
1124
+ }
1125
+ hashOrderMessage(order) {
1126
+ const accountHash = this.hash(this.ethAbiEncode([
1127
+ 'bytes32', 'uint256', 'uint256', 'address', 'bytes32', 'uint256', 'address', 'address',
1128
+ ], order), keccak, 'binary');
1129
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1130
+ const DOMAIN_SEPARATOR = (sandboxMode) ? '9bcf4dc06df5d8bf23af818d5716491b995020f377d3b7b64c29ed14e3dd1105' : 'd96e5f90797da7ec8dc4e276260c7f3f87fedf68775fbe1ef116e996fc60441b';
1131
+ const binaryDomainSeparator = this.base16ToBinary(DOMAIN_SEPARATOR);
1132
+ const prefix = this.base16ToBinary('1901');
1133
+ return this.hash(this.binaryConcat(prefix, binaryDomainSeparator, accountHash), keccak, 'hex');
1134
+ }
1135
+ signOrder(order, privateKey) {
1136
+ const hashOrder = this.hashOrderMessage(order);
1137
+ return this.signHash(hashOrder.slice(-64), privateKey.slice(-64));
1138
+ }
1139
+ hashMessage(message) {
1140
+ const binaryMessage = this.encode(message);
1141
+ const binaryMessageLength = this.binaryLength(binaryMessage);
1142
+ const x19 = this.base16ToBinary('19');
1143
+ const newline = this.base16ToBinary('0a');
1144
+ const prefix = this.binaryConcat(x19, this.encode('Ethereum Signed Message:'), newline, this.encode(this.numberToString(binaryMessageLength)));
1145
+ return '0x' + this.hash(this.binaryConcat(prefix, binaryMessage), keccak, 'hex');
1146
+ }
1147
+ signHash(hash, privateKey) {
1148
+ this.checkRequiredCredentials();
1149
+ const signature = ecdsa(hash.slice(-64), privateKey.slice(-64), secp256k1, undefined);
1150
+ const r = signature['r'];
1151
+ const s = signature['s'];
1152
+ const v = this.intToBase16(this.sum(27, signature['v']));
1153
+ return '0x' + r.padStart(64, '0') + s.padStart(64, '0') + v;
1154
+ }
1155
+ signMessage(message, privateKey) {
1156
+ return this.signHash(this.hashMessage(message), privateKey.slice(-64));
1157
+ }
1158
+ parseUnits(num, dec = '1000000000000000000') {
1159
+ return Precise.stringMul(num, dec);
1160
+ }
1161
+ /**
1162
+ * @method
1163
+ * @name derive#createOrder
1164
+ * @description create a trade order
1165
+ * @see https://docs.derive.xyz/reference/post_private-order
1166
+ * @param {string} symbol unified symbol of the market to create an order in
1167
+ * @param {string} type 'market' or 'limit'
1168
+ * @param {string} side 'buy' or 'sell'
1169
+ * @param {float} amount how much of currency you want to trade in units of base currency
1170
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1171
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1172
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1173
+ * @param {float} [params.triggerPrice] The price a trigger order is triggered at
1174
+ * @param {object} [params.takeProfit] *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered (perpetual swap markets only)
1175
+ * @param {float} [params.takeProfit.triggerPrice] take profit trigger price
1176
+ * @param {object} [params.stopLoss] *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered (perpetual swap markets only)
1177
+ * @param {float} [params.stopLoss.triggerPrice] stop loss trigger price
1178
+ * @param {float} [params.max_fee] *required* the maximum fee you are willing to pay for the order
1179
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1180
+ */
1181
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1182
+ await this.loadMarkets();
1183
+ const market = this.market(symbol);
1184
+ if (price === undefined) {
1185
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a price argument');
1186
+ }
1187
+ let subaccountId = undefined;
1188
+ [subaccountId, params] = this.handleDeriveSubaccountId('createOrder', params);
1189
+ const test = this.safeBool(params, 'test', false);
1190
+ const reduceOnly = this.safeBool2(params, 'reduceOnly', 'reduce_only');
1191
+ const timeInForce = this.safeStringLower2(params, 'timeInForce', 'time_in_force');
1192
+ const postOnly = this.safeBool(params, 'postOnly');
1193
+ const orderType = type.toLowerCase();
1194
+ const orderSide = side.toLowerCase();
1195
+ const nonce = this.milliseconds();
1196
+ // Order signature expiry must be between 2592000 and 7776000 sec from now
1197
+ const signatureExpiry = this.safeInteger(params, 'signature_expiry_sec', this.seconds() + 7776000);
1198
+ const ACTION_TYPEHASH = this.base16ToBinary('4d7a9f27c403ff9c0f19bce61d76d82f9aa29f8d6d4b0c5474607d9770d1af17');
1199
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1200
+ const TRADE_MODULE_ADDRESS = (sandboxMode) ? '0x87F2863866D85E3192a35A73b388BD625D83f2be' : '0xB8D20c2B7a1Ad2EE33Bc50eF10876eD3035b5e7b';
1201
+ const priceString = this.numberToString(price);
1202
+ let maxFee = undefined;
1203
+ [maxFee, params] = this.handleOptionAndParams(params, 'createOrder', 'max_fee');
1204
+ if (maxFee === undefined) {
1205
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a max_fee argument in params');
1206
+ }
1207
+ const maxFeeString = this.numberToString(maxFee);
1208
+ const amountString = this.numberToString(amount);
1209
+ const tradeModuleDataHash = this.hash(this.ethAbiEncode([
1210
+ 'address', 'uint', 'int', 'int', 'uint', 'uint', 'bool',
1211
+ ], [
1212
+ market['info']['base_asset_address'],
1213
+ this.parseToNumeric(market['info']['base_asset_sub_id']),
1214
+ this.convertToBigInt(this.parseUnits(priceString)),
1215
+ this.convertToBigInt(this.parseUnits(this.amountToPrecision(symbol, amountString))),
1216
+ this.convertToBigInt(this.parseUnits(maxFeeString)),
1217
+ subaccountId,
1218
+ orderSide === 'buy',
1219
+ ]), keccak, 'binary');
1220
+ let deriveWalletAddress = undefined;
1221
+ [deriveWalletAddress, params] = this.handleDeriveWalletAddress('createOrder', params);
1222
+ const signature = this.signOrder([
1223
+ ACTION_TYPEHASH,
1224
+ subaccountId,
1225
+ nonce,
1226
+ TRADE_MODULE_ADDRESS,
1227
+ tradeModuleDataHash,
1228
+ signatureExpiry,
1229
+ deriveWalletAddress,
1230
+ this.walletAddress,
1231
+ ], this.privateKey);
1232
+ const request = {
1233
+ 'instrument_name': market['id'],
1234
+ 'direction': orderSide,
1235
+ 'order_type': orderType,
1236
+ 'nonce': nonce,
1237
+ 'amount': amountString,
1238
+ 'limit_price': priceString,
1239
+ 'max_fee': maxFeeString,
1240
+ 'subaccount_id': subaccountId,
1241
+ 'signature_expiry_sec': signatureExpiry,
1242
+ 'referral_code': this.safeString(this.options, 'id', '0x0ad42b8e602c2d3d475ae52d678cf63d84ab2749'),
1243
+ 'signer': this.walletAddress,
1244
+ };
1245
+ if (reduceOnly !== undefined) {
1246
+ request['reduce_only'] = reduceOnly;
1247
+ if (reduceOnly && postOnly) {
1248
+ throw new InvalidOrder(this.id + ' cannot use reduce only with post only time in force');
1249
+ }
1250
+ }
1251
+ if (postOnly !== undefined) {
1252
+ request['time_in_force'] = 'post_only';
1253
+ }
1254
+ else if (timeInForce !== undefined) {
1255
+ request['time_in_force'] = timeInForce;
1256
+ }
1257
+ const stopLoss = this.safeValue(params, 'stopLoss');
1258
+ const takeProfit = this.safeValue(params, 'takeProfit');
1259
+ const triggerPriceType = this.safeString(params, 'trigger_price_type', 'mark');
1260
+ if (stopLoss !== undefined) {
1261
+ const stopLossPrice = this.safeString(stopLoss, 'triggerPrice', stopLoss);
1262
+ request['trigger_price'] = stopLossPrice;
1263
+ request['trigger_type'] = 'stoploss';
1264
+ request['trigger_price_type'] = triggerPriceType;
1265
+ }
1266
+ else if (takeProfit !== undefined) {
1267
+ const takeProfitPrice = this.safeString(takeProfit, 'triggerPrice', takeProfit);
1268
+ request['trigger_price'] = takeProfitPrice;
1269
+ request['trigger_type'] = 'takeprofit';
1270
+ request['trigger_price_type'] = triggerPriceType;
1271
+ }
1272
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1273
+ if (clientOrderId !== undefined) {
1274
+ request['label'] = clientOrderId;
1275
+ }
1276
+ request['signature'] = signature;
1277
+ params = this.omit(params, ['reduceOnly', 'reduce_only', 'timeInForce', 'time_in_force', 'postOnly', 'test', 'clientOrderId', 'stopPrice', 'triggerPrice', 'trigger_price', 'stopLoss', 'takeProfit', 'trigger_price_type']);
1278
+ let response = undefined;
1279
+ if (test) {
1280
+ response = await this.privatePostOrderDebug(this.extend(request, params));
1281
+ }
1282
+ else {
1283
+ response = await this.privatePostOrder(this.extend(request, params));
1284
+ }
1285
+ //
1286
+ // {
1287
+ // "result": {
1288
+ // "raw_data": {
1289
+ // "subaccount_id": 130837,
1290
+ // "nonce": 1736923517552,
1291
+ // "module": "0x87F2863866D85E3192a35A73b388BD625D83f2be",
1292
+ // "expiry": 86400,
1293
+ // "owner": "0x108b9aF9279a525b8A8AeAbE7AC2bA925Bc50075",
1294
+ // "signer": "0x108b9aF9279a525b8A8AeAbE7AC2bA925Bc50075",
1295
+ // "signature": "0xaa4f42b2f3da33c668fa703ea872d4c3a6b55aca66025b5119e3bebb6679fe2e2794638db51dcace21fc39a498047835994f07eb59f311bb956ce057e66793d1c",
1296
+ // "data": {
1297
+ // "asset": "0xAFB6Bb95cd70D5367e2C39e9dbEb422B9815339D",
1298
+ // "sub_id": 0,
1299
+ // "limit_price": "10000",
1300
+ // "desired_amount": "0.001",
1301
+ // "worst_fee": "0",
1302
+ // "recipient_id": 130837,
1303
+ // "is_bid": true,
1304
+ // "trade_id": ""
1305
+ // }
1306
+ // },
1307
+ // "encoded_data": "0x000000000000000000000000afb6bb95cd70d5367e2c39e9dbeb422b9815339d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ff150000000000000000000000000000000000000000000000000000000000000001",
1308
+ // "encoded_data_hashed": "0xe88fb416bc54dba2d288988f1a82fee40fd792ed555b3471b5f6b4b810d279b4",
1309
+ // "action_hash": "0x273a0befb3751fa991edc7ed73582456c3b50ae964d458c8f472e932fb6a0069",
1310
+ // "typed_data_hash": "0x123e2d2f3d5b2473b4e260f51c6459d6bf904e5db8f042a3ea63be8d55329ce9"
1311
+ // },
1312
+ // "id": "f851c8c4-dddf-4b77-93cf-aeddd0966f29"
1313
+ // }
1314
+ // {
1315
+ // "result": {
1316
+ // "order": {
1317
+ // "subaccount_id": 130837,
1318
+ // "order_id": "96349ebb-7d46-43ae-81c7-7ab390444293",
1319
+ // "instrument_name": "BTC-PERP",
1320
+ // "direction": "buy",
1321
+ // "label": "",
1322
+ // "quote_id": null,
1323
+ // "creation_timestamp": 1737467576257,
1324
+ // "last_update_timestamp": 1737467576257,
1325
+ // "limit_price": "10000",
1326
+ // "amount": "0.01",
1327
+ // "filled_amount": "0",
1328
+ // "average_price": "0",
1329
+ // "order_fee": "0",
1330
+ // "order_type": "limit",
1331
+ // "time_in_force": "gtc",
1332
+ // "order_status": "open",
1333
+ // "max_fee": "210",
1334
+ // "signature_expiry_sec": 1737468175989,
1335
+ // "nonce": 1737467575989,
1336
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1337
+ // "signature": "0xd1ca49df1fa06bd805bb59b132ff6c0de29bf973a3e01705abe0a01cc956e4945ed9eb99ab68f3df4c037908113cac5a5bfc3a954a0b7103cdab285962fa6a51c",
1338
+ // "cancel_reason": "",
1339
+ // "mmp": false,
1340
+ // "is_transfer": false,
1341
+ // "replaced_order_id": null,
1342
+ // "trigger_type": null,
1343
+ // "trigger_price_type": null,
1344
+ // "trigger_price": null,
1345
+ // "trigger_reject_message": null
1346
+ // },
1347
+ // "trades": []
1348
+ // },
1349
+ // "id": "397087fa-0125-42af-bfc3-f66166f9fb55"
1350
+ // }
1351
+ //
1352
+ const result = this.safeDict(response, 'result');
1353
+ let rawOrder = this.safeDict(result, 'raw_data');
1354
+ if (rawOrder === undefined) {
1355
+ rawOrder = this.safeDict(result, 'order');
1356
+ }
1357
+ const order = this.parseOrder(rawOrder, market);
1358
+ order['type'] = type;
1359
+ return order;
1360
+ }
1361
+ /**
1362
+ * @method
1363
+ * @name derive#editOrder
1364
+ * @description edit a trade order
1365
+ * @see https://docs.derive.xyz/reference/post_private-replace
1366
+ * @param {string} id order id
1367
+ * @param {string} symbol unified symbol of the market to create an order in
1368
+ * @param {string} type 'market' or 'limit'
1369
+ * @param {string} side 'buy' or 'sell'
1370
+ * @param {float} amount how much of currency you want to trade in units of base currency
1371
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1372
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1373
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1374
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1375
+ */
1376
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1377
+ await this.loadMarkets();
1378
+ const market = this.market(symbol);
1379
+ let subaccountId = undefined;
1380
+ [subaccountId, params] = this.handleDeriveSubaccountId('editOrder', params);
1381
+ const reduceOnly = this.safeBool2(params, 'reduceOnly', 'reduce_only');
1382
+ const timeInForce = this.safeStringLower2(params, 'timeInForce', 'time_in_force');
1383
+ const postOnly = this.safeBool(params, 'postOnly');
1384
+ const orderType = type.toLowerCase();
1385
+ const orderSide = side.toLowerCase();
1386
+ const nonce = this.milliseconds();
1387
+ const signatureExpiry = this.safeNumber(params, 'signature_expiry_sec', this.seconds() + 7776000);
1388
+ // TODO: subaccount id / trade module address
1389
+ const ACTION_TYPEHASH = this.base16ToBinary('4d7a9f27c403ff9c0f19bce61d76d82f9aa29f8d6d4b0c5474607d9770d1af17');
1390
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1391
+ const TRADE_MODULE_ADDRESS = (sandboxMode) ? '0x87F2863866D85E3192a35A73b388BD625D83f2be' : '0xB8D20c2B7a1Ad2EE33Bc50eF10876eD3035b5e7b';
1392
+ const priceString = this.numberToString(price);
1393
+ const maxFeeString = this.safeString(params, 'max_fee', '0');
1394
+ const amountString = this.numberToString(amount);
1395
+ const tradeModuleDataHash = this.hash(this.ethAbiEncode([
1396
+ 'address', 'uint', 'int', 'int', 'uint', 'uint', 'bool',
1397
+ ], [
1398
+ market['info']['base_asset_address'],
1399
+ this.parseToNumeric(market['info']['base_asset_sub_id']),
1400
+ this.convertToBigInt(this.parseUnits(priceString)),
1401
+ this.convertToBigInt(this.parseUnits(this.amountToPrecision(symbol, amountString))),
1402
+ this.convertToBigInt(this.parseUnits(maxFeeString)),
1403
+ subaccountId,
1404
+ orderSide === 'buy',
1405
+ ]), keccak, 'binary');
1406
+ let deriveWalletAddress = undefined;
1407
+ [deriveWalletAddress, params] = this.handleDeriveWalletAddress('editOrder', params);
1408
+ const signature = this.signOrder([
1409
+ ACTION_TYPEHASH,
1410
+ subaccountId,
1411
+ nonce,
1412
+ TRADE_MODULE_ADDRESS,
1413
+ tradeModuleDataHash,
1414
+ signatureExpiry,
1415
+ deriveWalletAddress,
1416
+ this.walletAddress,
1417
+ ], this.privateKey);
1418
+ const request = {
1419
+ 'instrument_name': market['id'],
1420
+ 'order_id_to_cancel': id,
1421
+ 'direction': orderSide,
1422
+ 'order_type': orderType,
1423
+ 'nonce': nonce,
1424
+ 'amount': amountString,
1425
+ 'limit_price': priceString,
1426
+ 'max_fee': maxFeeString,
1427
+ 'subaccount_id': subaccountId,
1428
+ 'signature_expiry_sec': signatureExpiry,
1429
+ 'signer': this.walletAddress,
1430
+ };
1431
+ if (reduceOnly !== undefined) {
1432
+ request['reduce_only'] = reduceOnly;
1433
+ if (reduceOnly && postOnly) {
1434
+ throw new InvalidOrder(this.id + ' cannot use reduce only with post only time in force');
1435
+ }
1436
+ }
1437
+ if (postOnly !== undefined) {
1438
+ request['time_in_force'] = 'post_only';
1439
+ }
1440
+ else if (timeInForce !== undefined) {
1441
+ request['time_in_force'] = timeInForce;
1442
+ }
1443
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1444
+ if (clientOrderId !== undefined) {
1445
+ request['label'] = clientOrderId;
1446
+ }
1447
+ request['signature'] = signature;
1448
+ params = this.omit(params, ['reduceOnly', 'reduce_only', 'timeInForce', 'time_in_force', 'postOnly', 'clientOrderId']);
1449
+ const response = await this.privatePostReplace(this.extend(request, params));
1450
+ //
1451
+ // {
1452
+ // "result":
1453
+ // {
1454
+ // "cancelled_order":
1455
+ // {
1456
+ // "subaccount_id": 130837,
1457
+ // "order_id": "c2337704-f1af-437d-91c8-dddb9d6bac59",
1458
+ // "instrument_name": "BTC-PERP",
1459
+ // "direction": "buy",
1460
+ // "label": "test1234",
1461
+ // "quote_id": null,
1462
+ // "creation_timestamp": 1737539743959,
1463
+ // "last_update_timestamp": 1737539764234,
1464
+ // "limit_price": "10000",
1465
+ // "amount": "0.01",
1466
+ // "filled_amount": "0",
1467
+ // "average_price": "0",
1468
+ // "order_fee": "0",
1469
+ // "order_type": "limit",
1470
+ // "time_in_force": "post_only",
1471
+ // "order_status": "cancelled",
1472
+ // "max_fee": "211",
1473
+ // "signature_expiry_sec": 1737540343631,
1474
+ // "nonce": 1737539743631,
1475
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1476
+ // "signature": "0xdb669e18f407a3efa816b79c0dd3bac1c651d4dbf3caad4db67678ce9b81c76378d787a08143a30707eb0827ce4626640767c9f174358df1b90611bd6d1391711b",
1477
+ // "cancel_reason": "user_request",
1478
+ // "mmp": false,
1479
+ // "is_transfer": false,
1480
+ // "replaced_order_id": null,
1481
+ // "trigger_type": null,
1482
+ // "trigger_price_type": null,
1483
+ // "trigger_price": null,
1484
+ // "trigger_reject_message": null,
1485
+ // },
1486
+ // "order":
1487
+ // {
1488
+ // "subaccount_id": 130837,
1489
+ // "order_id": "97af0902-813f-4892-a54b-797e5689db05",
1490
+ // "instrument_name": "BTC-PERP",
1491
+ // "direction": "buy",
1492
+ // "label": "test1234",
1493
+ // "quote_id": null,
1494
+ // "creation_timestamp": 1737539764154,
1495
+ // "last_update_timestamp": 1737539764154,
1496
+ // "limit_price": "10000",
1497
+ // "amount": "0.01",
1498
+ // "filled_amount": "0",
1499
+ // "average_price": "0",
1500
+ // "order_fee": "0",
1501
+ // "order_type": "limit",
1502
+ // "time_in_force": "post_only",
1503
+ // "order_status": "open",
1504
+ // "max_fee": "211",
1505
+ // "signature_expiry_sec": 1737540363890,
1506
+ // "nonce": 1737539763890,
1507
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1508
+ // "signature": "0xef2c459ab4797cbbd7d97b47678ff172542af009bac912bf53e7879cf92eb1aa6b1a6cf40bf0928684f5394942fb424cc2db71eac0eaf7226a72480034332f291c",
1509
+ // "cancel_reason": "",
1510
+ // "mmp": false,
1511
+ // "is_transfer": false,
1512
+ // "replaced_order_id": "c2337704-f1af-437d-91c8-dddb9d6bac59",
1513
+ // "trigger_type": null,
1514
+ // "trigger_price_type": null,
1515
+ // "trigger_price": null,
1516
+ // "trigger_reject_message": null,
1517
+ // },
1518
+ // "trades": [],
1519
+ // "create_order_error": null,
1520
+ // },
1521
+ // "id": "fb19e991-15f6-4c80-a20c-917e762a1a38",
1522
+ // }
1523
+ //
1524
+ const result = this.safeDict(response, 'result');
1525
+ const rawOrder = this.safeDict(result, 'order');
1526
+ const order = this.parseOrder(rawOrder, market);
1527
+ return order;
1528
+ }
1529
+ /**
1530
+ * @method
1531
+ * @name derive#cancelOrder
1532
+ * @see https://docs.derive.xyz/reference/post_private-cancel
1533
+ * @description cancels an open order
1534
+ * @param {string} id order id
1535
+ * @param {string} symbol unified symbol of the market the order was made in
1536
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1537
+ * @param {boolean} [params.trigger] whether the order is a trigger/algo order
1538
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1539
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1540
+ */
1541
+ async cancelOrder(id, symbol = undefined, params = {}) {
1542
+ if (symbol === undefined) {
1543
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
1544
+ }
1545
+ await this.loadMarkets();
1546
+ const market = this.market(symbol);
1547
+ const isTrigger = this.safeBool2(params, 'trigger', 'stop', false);
1548
+ let subaccountId = undefined;
1549
+ [subaccountId, params] = this.handleDeriveSubaccountId('cancelOrder', params);
1550
+ params = this.omit(params, ['trigger', 'stop']);
1551
+ const request = {
1552
+ 'instrument_name': market['id'],
1553
+ 'subaccount_id': subaccountId,
1554
+ };
1555
+ const clientOrderIdUnified = this.safeString(params, 'clientOrderId');
1556
+ const clientOrderIdExchangeSpecific = this.safeString(params, 'label', clientOrderIdUnified);
1557
+ const isByClientOrder = clientOrderIdExchangeSpecific !== undefined;
1558
+ let response = undefined;
1559
+ if (isByClientOrder) {
1560
+ request['label'] = clientOrderIdExchangeSpecific;
1561
+ params = this.omit(params, ['clientOrderId', 'label']);
1562
+ response = await this.privatePostCancelByLabel(this.extend(request, params));
1563
+ }
1564
+ else {
1565
+ request['order_id'] = id;
1566
+ if (isTrigger) {
1567
+ response = await this.privatePostCancelTriggerOrder(this.extend(request, params));
1568
+ }
1569
+ else {
1570
+ response = await this.privatePostCancel(this.extend(request, params));
1571
+ }
1572
+ }
1573
+ //
1574
+ // {
1575
+ // "result": {
1576
+ // "subaccount_id": 130837,
1577
+ // "order_id": "de4f30b6-0dcb-4df6-9222-c1a27f1ad80d",
1578
+ // "instrument_name": "BTC-PERP",
1579
+ // "direction": "buy",
1580
+ // "label": "test1234",
1581
+ // "quote_id": null,
1582
+ // "creation_timestamp": 1737540100989,
1583
+ // "last_update_timestamp": 1737540574696,
1584
+ // "limit_price": "10000",
1585
+ // "amount": "0.01",
1586
+ // "filled_amount": "0",
1587
+ // "average_price": "0",
1588
+ // "order_fee": "0",
1589
+ // "order_type": "limit",
1590
+ // "time_in_force": "post_only",
1591
+ // "order_status": "cancelled",
1592
+ // "max_fee": "211",
1593
+ // "signature_expiry_sec": 1737540700726,
1594
+ // "nonce": 1737540100726,
1595
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1596
+ // "signature": "0x9cd1a6e32a0699929e4e090c08c548366b1353701ec56e02d5cdf37fc89bd19b7b29e00e57e8383bb6336d73019027a7e2a4364f40859e7a949115024c7f199a1b",
1597
+ // "cancel_reason": "user_request",
1598
+ // "mmp": false,
1599
+ // "is_transfer": false,
1600
+ // "replaced_order_id": "4ccc89ba-3c3d-4047-8900-0aa5fb4ef706",
1601
+ // "trigger_type": null,
1602
+ // "trigger_price_type": null,
1603
+ // "trigger_price": null,
1604
+ // "trigger_reject_message": null
1605
+ // },
1606
+ // "id": "cef61e2a-cb13-4779-8e6b-535361981fad"
1607
+ // }
1608
+ //
1609
+ // {
1610
+ // "result": {
1611
+ // "cancelled_orders": 1
1612
+ // },
1613
+ // "id": "674e075e-1e8a-4a47-99ff-75efbdd2370f"
1614
+ // }
1615
+ //
1616
+ const extendParams = { 'symbol': symbol };
1617
+ const order = this.safeDict(response, 'result');
1618
+ if (isByClientOrder) {
1619
+ extendParams['client_order_id'] = clientOrderIdExchangeSpecific;
1620
+ }
1621
+ return this.extend(this.parseOrder(order, market), extendParams);
1622
+ }
1623
+ /**
1624
+ * @method
1625
+ * @name derive#cancelAllOrders
1626
+ * @see https://docs.derive.xyz/reference/post_private-cancel-by-instrument
1627
+ * @see https://docs.derive.xyz/reference/post_private-cancel-all
1628
+ * @description cancel all open orders in a market
1629
+ * @param {string} symbol unified market symbol
1630
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1631
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1632
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1633
+ */
1634
+ async cancelAllOrders(symbol = undefined, params = {}) {
1635
+ await this.loadMarkets();
1636
+ let market = undefined;
1637
+ if (symbol !== undefined) {
1638
+ market = this.market(symbol);
1639
+ }
1640
+ let subaccountId = undefined;
1641
+ [subaccountId, params] = this.handleDeriveSubaccountId('cancelAllOrders', params);
1642
+ const request = {
1643
+ 'subaccount_id': subaccountId,
1644
+ };
1645
+ let response = undefined;
1646
+ if (market !== undefined) {
1647
+ request['instrument_name'] = market['id'];
1648
+ response = await this.privatePostCancelByInstrument(this.extend(request, params));
1649
+ }
1650
+ else {
1651
+ response = await this.privatePostCancelAll(this.extend(request, params));
1652
+ }
1653
+ //
1654
+ // {
1655
+ // "result": {
1656
+ // "cancelled_orders": 0
1657
+ // },
1658
+ // "id": "9d633799-2098-4559-b547-605bb6f4d8f4"
1659
+ // }
1660
+ //
1661
+ // {
1662
+ // "id": "45548646-c74f-4ca2-9de4-551e6de49afa",
1663
+ // "result": "ok"
1664
+ // }
1665
+ //
1666
+ return [this.safeOrder({ 'info': response })];
1667
+ }
1668
+ /**
1669
+ * @method
1670
+ * @name derive#fetchOrders
1671
+ * @description fetches information on multiple orders made by the user
1672
+ * @see https://docs.derive.xyz/reference/post_private-get-orders
1673
+ * @param {string} symbol unified market symbol of the market orders were made in
1674
+ * @param {int} [since] the earliest time in ms to fetch orders for
1675
+ * @param {int} [limit] the maximum number of order structures to retrieve
1676
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1677
+ * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
1678
+ * @param {boolean} [params.trigger] whether the order is a trigger/algo order
1679
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1680
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1681
+ */
1682
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1683
+ await this.loadMarkets();
1684
+ let paginate = false;
1685
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOrders', 'paginate');
1686
+ if (paginate) {
1687
+ return await this.fetchPaginatedCallIncremental('fetchOrders', symbol, since, limit, params, 'page', 500);
1688
+ }
1689
+ const isTrigger = this.safeBool2(params, 'trigger', 'stop', false);
1690
+ params = this.omit(params, ['trigger', 'stop']);
1691
+ let subaccountId = undefined;
1692
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchOrders', params);
1693
+ const request = {
1694
+ 'subaccount_id': subaccountId,
1695
+ };
1696
+ let market = undefined;
1697
+ if (symbol !== undefined) {
1698
+ market = this.market(symbol);
1699
+ request['instrument_name'] = market['id'];
1700
+ }
1701
+ if (limit !== undefined) {
1702
+ request['page_size'] = limit;
1703
+ }
1704
+ else {
1705
+ request['page_size'] = 500;
1706
+ }
1707
+ if (isTrigger) {
1708
+ request['status'] = 'untriggered';
1709
+ }
1710
+ const response = await this.privatePostGetOrders(this.extend(request, params));
1711
+ //
1712
+ // {
1713
+ // "result": {
1714
+ // "subaccount_id": 130837,
1715
+ // "orders": [
1716
+ // {
1717
+ // "subaccount_id": 130837,
1718
+ // "order_id": "63a80cb8-387b-472b-a838-71cd9513c365",
1719
+ // "instrument_name": "BTC-PERP",
1720
+ // "direction": "buy",
1721
+ // "label": "test1234",
1722
+ // "quote_id": null,
1723
+ // "creation_timestamp": 1737551053207,
1724
+ // "last_update_timestamp": 1737551053207,
1725
+ // "limit_price": "10000",
1726
+ // "amount": "0.01",
1727
+ // "filled_amount": "0",
1728
+ // "average_price": "0",
1729
+ // "order_fee": "0",
1730
+ // "order_type": "limit",
1731
+ // "time_in_force": "post_only",
1732
+ // "order_status": "open",
1733
+ // "max_fee": "211",
1734
+ // "signature_expiry_sec": 1737551652765,
1735
+ // "nonce": 1737551052765,
1736
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1737
+ // "signature": "0x35535ccb1bcad509ecc435c79e966174db6403fc9aeee1e237d08a941014c57b59279dfe4be39e081f9921a53eaad59cb2a151d9f52f2d05fc47e6280254952e1c",
1738
+ // "cancel_reason": "",
1739
+ // "mmp": false,
1740
+ // "is_transfer": false,
1741
+ // "replaced_order_id": null,
1742
+ // "trigger_type": null,
1743
+ // "trigger_price_type": null,
1744
+ // "trigger_price": null,
1745
+ // "trigger_reject_message": null
1746
+ // }
1747
+ // ],
1748
+ // "pagination": {
1749
+ // "num_pages": 1,
1750
+ // "count": 1
1751
+ // }
1752
+ // },
1753
+ // "id": "e5a88d4f-7ac7-40cd-aec9-e0e8152b8b92"
1754
+ // }
1755
+ //
1756
+ const data = this.safeValue(response, 'result');
1757
+ const page = this.safeInteger(params, 'page');
1758
+ if (page !== undefined) {
1759
+ const pagination = this.safeDict(data, 'pagination');
1760
+ const currentPage = this.safeInteger(pagination, 'num_pages');
1761
+ if (page > currentPage) {
1762
+ return [];
1763
+ }
1764
+ }
1765
+ const orders = this.safeList(data, 'orders');
1766
+ return this.parseOrders(orders, market, since, limit);
1767
+ }
1768
+ /**
1769
+ * @method
1770
+ * @name derive#fetchOpenOrders
1771
+ * @description fetches information on multiple orders made by the user
1772
+ * @see https://docs.derive.xyz/reference/post_private-get-orders
1773
+ * @param {string} symbol unified market symbol of the market orders were made in
1774
+ * @param {int} [since] the earliest time in ms to fetch orders for
1775
+ * @param {int} [limit] the maximum number of order structures to retrieve
1776
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1777
+ * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
1778
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1779
+ */
1780
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1781
+ await this.loadMarkets();
1782
+ const extendedParams = this.extend(params, { 'status': 'open' });
1783
+ return await this.fetchOrders(symbol, since, limit, extendedParams);
1784
+ }
1785
+ /**
1786
+ * @method
1787
+ * @name derive#fetchClosedOrders
1788
+ * @description fetches information on multiple orders made by the user
1789
+ * @see https://docs.derive.xyz/reference/post_private-get-orders
1790
+ * @param {string} symbol unified market symbol of the market orders were made in
1791
+ * @param {int} [since] the earliest time in ms to fetch orders for
1792
+ * @param {int} [limit] the maximum number of order structures to retrieve
1793
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1794
+ * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
1795
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1796
+ */
1797
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1798
+ await this.loadMarkets();
1799
+ const extendedParams = this.extend(params, { 'status': 'filled' });
1800
+ return await this.fetchOrders(symbol, since, limit, extendedParams);
1801
+ }
1802
+ /**
1803
+ * @method
1804
+ * @name derive#fetchCanceledOrders
1805
+ * @description fetches information on multiple canceled orders made by the user
1806
+ * @see https://docs.derive.xyz/reference/post_private-get-orders
1807
+ * @param {string} symbol unified market symbol of the market the orders were made in
1808
+ * @param {int} [since] the earliest time in ms to fetch orders for
1809
+ * @param {int} [limit] the maximum number of order structures to retrieve
1810
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1811
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1812
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1813
+ */
1814
+ async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1815
+ await this.loadMarkets();
1816
+ const extendedParams = this.extend(params, { 'status': 'cancelled' });
1817
+ return await this.fetchOrders(symbol, since, limit, extendedParams);
1818
+ }
1819
+ parseTimeInForce(timeInForce) {
1820
+ const timeInForces = {
1821
+ 'ioc': 'IOC',
1822
+ 'fok': 'FOK',
1823
+ 'gtc': 'GTC',
1824
+ 'post_only': 'PO',
1825
+ };
1826
+ return this.safeString(timeInForces, timeInForce, undefined);
1827
+ }
1828
+ parseOrderStatus(status) {
1829
+ if (status !== undefined) {
1830
+ const statuses = {
1831
+ 'open': 'open',
1832
+ 'untriggered': 'open',
1833
+ 'filled': 'closed',
1834
+ 'cancelled': 'canceled',
1835
+ 'expired': 'rejected',
1836
+ };
1837
+ return this.safeString(statuses, status, status);
1838
+ }
1839
+ return status;
1840
+ }
1841
+ parseOrder(rawOrder, market = undefined) {
1842
+ //
1843
+ // {
1844
+ // "subaccount_id": 130837,
1845
+ // "nonce": 1736923517552,
1846
+ // "module": "0x87F2863866D85E3192a35A73b388BD625D83f2be",
1847
+ // "expiry": 86400,
1848
+ // "owner": "0x108b9aF9279a525b8A8AeAbE7AC2bA925Bc50075",
1849
+ // "signer": "0x108b9aF9279a525b8A8AeAbE7AC2bA925Bc50075",
1850
+ // "signature": "0xaa4f42b2f3da33c668fa703ea872d4c3a6b55aca66025b5119e3bebb6679fe2e2794638db51dcace21fc39a498047835994f07eb59f311bb956ce057e66793d1c",
1851
+ // "data": {
1852
+ // "asset": "0xAFB6Bb95cd70D5367e2C39e9dbEb422B9815339D",
1853
+ // "sub_id": 0,
1854
+ // "limit_price": "10000",
1855
+ // "desired_amount": "0.001",
1856
+ // "worst_fee": "0",
1857
+ // "recipient_id": 130837,
1858
+ // "is_bid": true,
1859
+ // "trade_id": ""
1860
+ // }
1861
+ // }
1862
+ // {
1863
+ // "subaccount_id": 130837,
1864
+ // "order_id": "96349ebb-7d46-43ae-81c7-7ab390444293",
1865
+ // "instrument_name": "BTC-PERP",
1866
+ // "direction": "buy",
1867
+ // "label": "",
1868
+ // "quote_id": null,
1869
+ // "creation_timestamp": 1737467576257,
1870
+ // "last_update_timestamp": 1737467576257,
1871
+ // "limit_price": "10000",
1872
+ // "amount": "0.01",
1873
+ // "filled_amount": "0",
1874
+ // "average_price": "0",
1875
+ // "order_fee": "0",
1876
+ // "order_type": "limit",
1877
+ // "time_in_force": "gtc",
1878
+ // "order_status": "open",
1879
+ // "max_fee": "210",
1880
+ // "signature_expiry_sec": 1737468175989,
1881
+ // "nonce": 1737467575989,
1882
+ // "signer": "0x30CB7B06AdD6749BbE146A6827502B8f2a79269A",
1883
+ // "signature": "0xd1ca49df1fa06bd805bb59b132ff6c0de29bf973a3e01705abe0a01cc956e4945ed9eb99ab68f3df4c037908113cac5a5bfc3a954a0b7103cdab285962fa6a51c",
1884
+ // "cancel_reason": "",
1885
+ // "mmp": false,
1886
+ // "is_transfer": false,
1887
+ // "replaced_order_id": null,
1888
+ // "trigger_type": null,
1889
+ // "trigger_price_type": null,
1890
+ // "trigger_price": null,
1891
+ // "trigger_reject_message": null
1892
+ // }
1893
+ let order = this.safeDict(rawOrder, 'data');
1894
+ if (order === undefined) {
1895
+ order = rawOrder;
1896
+ }
1897
+ const timestamp = this.safeInteger2(rawOrder, 'creation_timestamp', 'nonce');
1898
+ const orderId = this.safeString(order, 'order_id');
1899
+ const marketId = this.safeString(order, 'instrument_name');
1900
+ if (marketId !== undefined) {
1901
+ market = this.safeMarket(marketId, market);
1902
+ }
1903
+ const symbol = market['symbol'];
1904
+ const price = this.safeString(order, 'limit_price');
1905
+ const average = this.safeString(order, 'average_price');
1906
+ const amount = this.safeString(order, 'desired_amount');
1907
+ const filled = this.safeString(order, 'filled_amount');
1908
+ const fee = this.safeString(order, 'order_fee');
1909
+ const orderType = this.safeStringLower(order, 'order_type');
1910
+ const isBid = this.safeBool(order, 'is_bid');
1911
+ let side = this.safeString(order, 'direction');
1912
+ if (side === undefined) {
1913
+ if (isBid) {
1914
+ side = 'buy';
1915
+ }
1916
+ else {
1917
+ side = 'sell';
1918
+ }
1919
+ }
1920
+ const triggerType = this.safeString(order, 'trigger_type');
1921
+ let stopLossPrice = undefined;
1922
+ let takeProfitPrice = undefined;
1923
+ let triggerPrice = undefined;
1924
+ if (triggerType !== undefined) {
1925
+ triggerPrice = this.safeString(order, 'trigger_price');
1926
+ if (triggerType === 'stoploss') {
1927
+ stopLossPrice = triggerPrice;
1928
+ }
1929
+ else {
1930
+ takeProfitPrice = triggerPrice;
1931
+ }
1932
+ }
1933
+ const lastUpdateTimestamp = this.safeInteger(rawOrder, 'last_update_timestamp');
1934
+ const status = this.safeString(order, 'order_status');
1935
+ const timeInForce = this.safeString(order, 'time_in_force');
1936
+ return this.safeOrder({
1937
+ 'id': orderId,
1938
+ 'clientOrderId': this.safeString(order, 'label'),
1939
+ 'timestamp': timestamp,
1940
+ 'datetime': this.iso8601(timestamp),
1941
+ 'lastTradeTimestamp': undefined,
1942
+ 'lastUpdateTimestamp': lastUpdateTimestamp,
1943
+ 'status': this.parseOrderStatus(status),
1944
+ 'symbol': symbol,
1945
+ 'type': orderType,
1946
+ 'timeInForce': this.parseTimeInForce(timeInForce),
1947
+ 'postOnly': undefined,
1948
+ 'reduceOnly': this.safeBool(order, 'reduce_only'),
1949
+ 'side': side,
1950
+ 'price': price,
1951
+ 'triggerPrice': triggerPrice,
1952
+ 'takeProfitPrice': takeProfitPrice,
1953
+ 'stopLossPrice': stopLossPrice,
1954
+ 'average': average,
1955
+ 'amount': amount,
1956
+ 'filled': filled,
1957
+ 'remaining': undefined,
1958
+ 'cost': undefined,
1959
+ 'trades': undefined,
1960
+ 'fee': {
1961
+ 'cost': fee,
1962
+ 'currency': 'USDC',
1963
+ },
1964
+ 'info': order,
1965
+ }, market);
1966
+ }
1967
+ /**
1968
+ * @method
1969
+ * @name derive#fetchOrderTrades
1970
+ * @description fetch all the trades made from a single order
1971
+ * @see https://docs.derive.xyz/reference/post_private-get-trade-history
1972
+ * @param {string} id order id
1973
+ * @param {string} symbol unified market symbol
1974
+ * @param {int} [since] the earliest time in ms to fetch trades for
1975
+ * @param {int} [limit] the maximum number of trades to retrieve
1976
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1977
+ * @param {string} [params.subaccount_id] *required* the subaccount id
1978
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1979
+ */
1980
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
1981
+ await this.loadMarkets();
1982
+ let subaccountId = undefined;
1983
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchOrderTrades', params);
1984
+ const request = {
1985
+ 'order_id': id,
1986
+ 'subaccount_id': subaccountId,
1987
+ };
1988
+ let market = undefined;
1989
+ if (symbol !== undefined) {
1990
+ market = this.market(symbol);
1991
+ request['instrument_name'] = market['id'];
1992
+ }
1993
+ if (limit !== undefined) {
1994
+ request['page_size'] = limit;
1995
+ }
1996
+ if (since !== undefined) {
1997
+ request['from_timestamp'] = since;
1998
+ }
1999
+ const response = await this.privatePostGetTradeHistory(this.extend(request, params));
2000
+ //
2001
+ // {
2002
+ // "result": {
2003
+ // "subaccount_id": 130837,
2004
+ // "trades": [
2005
+ // {
2006
+ // "subaccount_id": 130837,
2007
+ // "order_id": "30c48194-8d48-43ac-ad00-0d5ba29eddc9",
2008
+ // "instrument_name": "BTC-PERP",
2009
+ // "direction": "sell",
2010
+ // "label": "test1234",
2011
+ // "quote_id": null,
2012
+ // "trade_id": "f8a30740-488c-4c2d-905d-e17057bafde1",
2013
+ // "timestamp": 1738065303708,
2014
+ // "mark_price": "102740.137375457314192317",
2015
+ // "index_price": "102741.553409299981533184",
2016
+ // "trade_price": "102700.6",
2017
+ // "trade_amount": "0.01",
2018
+ // "liquidity_role": "taker",
2019
+ // "realized_pnl": "0",
2020
+ // "realized_pnl_excl_fees": "0",
2021
+ // "is_transfer": false,
2022
+ // "tx_status": "settled",
2023
+ // "trade_fee": "1.127415534092999815",
2024
+ // "tx_hash": "0xc55df1f07330faf86579bd8a6385391fbe9e73089301149d8550e9d29c9ead74",
2025
+ // "transaction_id": "e18b9426-3fa5-41bb-99d3-8b54fb4d51bb"
2026
+ // }
2027
+ // ],
2028
+ // "pagination": {
2029
+ // "num_pages": 1,
2030
+ // "count": 1
2031
+ // }
2032
+ // },
2033
+ // "id": "a16f798c-a121-44e2-b77e-c38a063f8a99"
2034
+ // }
2035
+ //
2036
+ const result = this.safeDict(response, 'result', {});
2037
+ const trades = this.safeList(result, 'trades', []);
2038
+ return this.parseTrades(trades, market, since, limit, params);
2039
+ }
2040
+ /**
2041
+ * @method
2042
+ * @name derive#fetchMyTrades
2043
+ * @description fetch all trades made by the user
2044
+ * @see https://docs.derive.xyz/reference/post_private-get-trade-history
2045
+ * @param {string} symbol unified market symbol
2046
+ * @param {int} [since] the earliest time in ms to fetch trades for
2047
+ * @param {int} [limit] the maximum number of trades structures to retrieve
2048
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2049
+ * @param {boolean} [params.paginate] set to true if you want to fetch trades with pagination
2050
+ * @param {string} [params.subaccount_id] *required* the subaccount id
2051
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2052
+ */
2053
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2054
+ await this.loadMarkets();
2055
+ let paginate = false;
2056
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
2057
+ if (paginate) {
2058
+ return await this.fetchPaginatedCallIncremental('fetchMyTrades', symbol, since, limit, params, 'page', 500);
2059
+ }
2060
+ let subaccountId = undefined;
2061
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchMyTrades', params);
2062
+ const request = {
2063
+ 'subaccount_id': subaccountId,
2064
+ };
2065
+ let market = undefined;
2066
+ if (symbol !== undefined) {
2067
+ market = this.market(symbol);
2068
+ request['instrument_name'] = market['id'];
2069
+ }
2070
+ if (limit !== undefined) {
2071
+ request['page_size'] = limit;
2072
+ }
2073
+ if (since !== undefined) {
2074
+ request['from_timestamp'] = since;
2075
+ }
2076
+ const response = await this.privatePostGetTradeHistory(this.extend(request, params));
2077
+ //
2078
+ // {
2079
+ // "result": {
2080
+ // "subaccount_id": 130837,
2081
+ // "trades": [
2082
+ // {
2083
+ // "subaccount_id": 130837,
2084
+ // "order_id": "30c48194-8d48-43ac-ad00-0d5ba29eddc9",
2085
+ // "instrument_name": "BTC-PERP",
2086
+ // "direction": "sell",
2087
+ // "label": "test1234",
2088
+ // "quote_id": null,
2089
+ // "trade_id": "f8a30740-488c-4c2d-905d-e17057bafde1",
2090
+ // "timestamp": 1738065303708,
2091
+ // "mark_price": "102740.137375457314192317",
2092
+ // "index_price": "102741.553409299981533184",
2093
+ // "trade_price": "102700.6",
2094
+ // "trade_amount": "0.01",
2095
+ // "liquidity_role": "taker",
2096
+ // "realized_pnl": "0",
2097
+ // "realized_pnl_excl_fees": "0",
2098
+ // "is_transfer": false,
2099
+ // "tx_status": "settled",
2100
+ // "trade_fee": "1.127415534092999815",
2101
+ // "tx_hash": "0xc55df1f07330faf86579bd8a6385391fbe9e73089301149d8550e9d29c9ead74",
2102
+ // "transaction_id": "e18b9426-3fa5-41bb-99d3-8b54fb4d51bb"
2103
+ // }
2104
+ // ],
2105
+ // "pagination": {
2106
+ // "num_pages": 1,
2107
+ // "count": 1
2108
+ // }
2109
+ // },
2110
+ // "id": "a16f798c-a121-44e2-b77e-c38a063f8a99"
2111
+ // }
2112
+ //
2113
+ const result = this.safeDict(response, 'result', {});
2114
+ const page = this.safeInteger(params, 'page');
2115
+ if (page !== undefined) {
2116
+ const pagination = this.safeDict(result, 'pagination');
2117
+ const currentPage = this.safeInteger(pagination, 'num_pages');
2118
+ if (page > currentPage) {
2119
+ return [];
2120
+ }
2121
+ }
2122
+ const trades = this.safeList(result, 'trades', []);
2123
+ return this.parseTrades(trades, market, since, limit, params);
2124
+ }
2125
+ /**
2126
+ * @method
2127
+ * @name derive#fetchPositions
2128
+ * @description fetch all open positions
2129
+ * @see https://docs.derive.xyz/reference/post_private-get-positions
2130
+ * @param {string[]} [symbols] not used by kraken fetchPositions ()
2131
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2132
+ * @param {string} [params.subaccount_id] *required* the subaccount id
2133
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
2134
+ */
2135
+ async fetchPositions(symbols = undefined, params = {}) {
2136
+ await this.loadMarkets();
2137
+ let subaccountId = undefined;
2138
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchPositions', params);
2139
+ const request = {
2140
+ 'subaccount_id': subaccountId,
2141
+ };
2142
+ params = this.omit(params, ['subaccount_id']);
2143
+ const response = await this.privatePostGetPositions(this.extend(request, params));
2144
+ //
2145
+ // {
2146
+ // "result": {
2147
+ // "subaccount_id": 130837,
2148
+ // "positions": [
2149
+ // {
2150
+ // "instrument_type": "perp",
2151
+ // "instrument_name": "BTC-PERP",
2152
+ // "amount": "-0.02",
2153
+ // "average_price": "102632.9105389869500088",
2154
+ // "realized_pnl": "0",
2155
+ // "unrealized_pnl": "-2.6455959784245548835819950103759765625",
2156
+ // "total_fees": "2.255789220260999824",
2157
+ // "average_price_excl_fees": "102745.7",
2158
+ // "realized_pnl_excl_fees": "0",
2159
+ // "unrealized_pnl_excl_fees": "-0.3898067581635550595819950103759765625",
2160
+ // "net_settlements": "-4.032902047219498639",
2161
+ // "cumulative_funding": "-0.004677736347850093",
2162
+ // "pending_funding": "0",
2163
+ // "mark_price": "102765.190337908177752979099750518798828125",
2164
+ // "index_price": "102767.657193800017641472",
2165
+ // "delta": "1",
2166
+ // "gamma": "0",
2167
+ // "vega": "0",
2168
+ // "theta": "0",
2169
+ // "mark_value": "1.38730606879471451975405216217041015625",
2170
+ // "maintenance_margin": "-101.37788426911356509663164615631103515625",
2171
+ // "initial_margin": "-132.2074413704858670826070010662078857421875",
2172
+ // "open_orders_margin": "264.116085900726830004714429378509521484375",
2173
+ // "leverage": "8.6954476205089299495699106539379941746377322586618",
2174
+ // "liquidation_price": "109125.705451984322280623018741607666015625",
2175
+ // "creation_timestamp": 1738065303840
2176
+ // }
2177
+ // ]
2178
+ // },
2179
+ // "id": "167350f1-d9fc-41d4-9797-1c78f83fda8e"
2180
+ // }
2181
+ //
2182
+ const result = this.safeDict(response, 'result', {});
2183
+ const positions = this.safeList(result, 'positions', []);
2184
+ return this.parsePositions(positions, symbols);
2185
+ }
2186
+ parsePosition(position, market = undefined) {
2187
+ //
2188
+ // {
2189
+ // "instrument_type": "perp",
2190
+ // "instrument_name": "BTC-PERP",
2191
+ // "amount": "-0.02",
2192
+ // "average_price": "102632.9105389869500088",
2193
+ // "realized_pnl": "0",
2194
+ // "unrealized_pnl": "-2.6455959784245548835819950103759765625",
2195
+ // "total_fees": "2.255789220260999824",
2196
+ // "average_price_excl_fees": "102745.7",
2197
+ // "realized_pnl_excl_fees": "0",
2198
+ // "unrealized_pnl_excl_fees": "-0.3898067581635550595819950103759765625",
2199
+ // "net_settlements": "-4.032902047219498639",
2200
+ // "cumulative_funding": "-0.004677736347850093",
2201
+ // "pending_funding": "0",
2202
+ // "mark_price": "102765.190337908177752979099750518798828125",
2203
+ // "index_price": "102767.657193800017641472",
2204
+ // "delta": "1",
2205
+ // "gamma": "0",
2206
+ // "vega": "0",
2207
+ // "theta": "0",
2208
+ // "mark_value": "1.38730606879471451975405216217041015625",
2209
+ // "maintenance_margin": "-101.37788426911356509663164615631103515625",
2210
+ // "initial_margin": "-132.2074413704858670826070010662078857421875",
2211
+ // "open_orders_margin": "264.116085900726830004714429378509521484375",
2212
+ // "leverage": "8.6954476205089299495699106539379941746377322586618",
2213
+ // "liquidation_price": "109125.705451984322280623018741607666015625",
2214
+ // "creation_timestamp": 1738065303840
2215
+ // }
2216
+ //
2217
+ const contract = this.safeString(position, 'instrument_name');
2218
+ market = this.safeMarket(contract, market);
2219
+ let size = this.safeString(position, 'amount');
2220
+ let side = undefined;
2221
+ if (Precise.stringGt(size, '0')) {
2222
+ side = 'long';
2223
+ }
2224
+ else {
2225
+ side = 'short';
2226
+ }
2227
+ const contractSize = this.safeString(market, 'contractSize');
2228
+ const markPrice = this.safeString(position, 'mark_price');
2229
+ const timestamp = this.safeInteger(position, 'creation_timestamp');
2230
+ const unrealisedPnl = this.safeString(position, 'unrealized_pnl');
2231
+ size = Precise.stringAbs(size);
2232
+ const notional = Precise.stringMul(size, markPrice);
2233
+ return this.safePosition({
2234
+ 'info': position,
2235
+ 'id': undefined,
2236
+ 'symbol': this.safeString(market, 'symbol'),
2237
+ 'timestamp': timestamp,
2238
+ 'datetime': this.iso8601(timestamp),
2239
+ 'lastUpdateTimestamp': undefined,
2240
+ 'initialMargin': this.safeString(position, 'initial_margin'),
2241
+ 'initialMarginPercentage': undefined,
2242
+ 'maintenanceMargin': this.safeString(position, 'maintenance_margin'),
2243
+ 'maintenanceMarginPercentage': undefined,
2244
+ 'entryPrice': undefined,
2245
+ 'notional': this.parseNumber(notional),
2246
+ 'leverage': this.safeNumber(position, 'leverage'),
2247
+ 'unrealizedPnl': this.parseNumber(unrealisedPnl),
2248
+ 'contracts': this.parseNumber(size),
2249
+ 'contractSize': this.parseNumber(contractSize),
2250
+ 'marginRatio': undefined,
2251
+ 'liquidationPrice': this.safeNumber(position, 'liquidation_price'),
2252
+ 'markPrice': this.parseNumber(markPrice),
2253
+ 'lastPrice': undefined,
2254
+ 'collateral': undefined,
2255
+ 'marginMode': undefined,
2256
+ 'side': side,
2257
+ 'percentage': undefined,
2258
+ 'hedged': undefined,
2259
+ 'stopLossPrice': undefined,
2260
+ 'takeProfitPrice': undefined,
2261
+ });
2262
+ }
2263
+ /**
2264
+ * @method
2265
+ * @name derive#fetchFundingHistory
2266
+ * @description fetch the history of funding payments paid and received on this account
2267
+ * @see https://docs.derive.xyz/reference/post_private-get-funding-history
2268
+ * @param {string} [symbol] unified market symbol
2269
+ * @param {int} [since] the earliest time in ms to fetch funding history for
2270
+ * @param {int} [limit] the maximum number of funding history structures to retrieve
2271
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2272
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2273
+ * @returns {object} a [funding history structure]{@link https://docs.ccxt.com/#/?id=funding-history-structure}
2274
+ */
2275
+ async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2276
+ await this.loadMarkets();
2277
+ let paginate = false;
2278
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingHistory', 'paginate');
2279
+ if (paginate) {
2280
+ return await this.fetchPaginatedCallIncremental('fetchFundingHistory', symbol, since, limit, params, 'page', 500);
2281
+ }
2282
+ let subaccountId = undefined;
2283
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchFundingHistory', params);
2284
+ const request = {
2285
+ 'subaccount_id': subaccountId,
2286
+ };
2287
+ let market = undefined;
2288
+ if (symbol !== undefined) {
2289
+ market = this.market(symbol);
2290
+ request['instrument_name'] = market['id'];
2291
+ }
2292
+ if (since !== undefined) {
2293
+ request['start_timestamp'] = since;
2294
+ }
2295
+ if (limit !== undefined) {
2296
+ request['page_size'] = limit;
2297
+ }
2298
+ const response = await this.privatePostGetFundingHistory(this.extend(request, params));
2299
+ //
2300
+ // {
2301
+ // "result": {
2302
+ // "events": [
2303
+ // {
2304
+ // "instrument_name": "BTC-PERP",
2305
+ // "timestamp": 1738066618272,
2306
+ // "funding": "-0.004677736347850093",
2307
+ // "pnl": "-0.944081615774632967"
2308
+ // },
2309
+ // {
2310
+ // "instrument_name": "BTC-PERP",
2311
+ // "timestamp": 1738066617964,
2312
+ // "funding": "0",
2313
+ // "pnl": "-0.437556413479249408"
2314
+ // },
2315
+ // {
2316
+ // "instrument_name": "BTC-PERP",
2317
+ // "timestamp": 1738065307565,
2318
+ // "funding": "0",
2319
+ // "pnl": "-0.39547479770461644"
2320
+ // }
2321
+ // ],
2322
+ // "pagination": {
2323
+ // "num_pages": 1,
2324
+ // "count": 3
2325
+ // }
2326
+ // },
2327
+ // "id": "524b817f-2108-467f-8795-511066f4acec"
2328
+ // }
2329
+ //
2330
+ const result = this.safeDict(response, 'result', {});
2331
+ const page = this.safeInteger(params, 'page');
2332
+ if (page !== undefined) {
2333
+ const pagination = this.safeDict(result, 'pagination');
2334
+ const currentPage = this.safeInteger(pagination, 'num_pages');
2335
+ if (page > currentPage) {
2336
+ return [];
2337
+ }
2338
+ }
2339
+ const events = this.safeList(result, 'events', []);
2340
+ return this.parseIncomes(events, market, since, limit);
2341
+ }
2342
+ parseIncome(income, market = undefined) {
2343
+ //
2344
+ // {
2345
+ // "instrument_name": "BTC-PERP",
2346
+ // "timestamp": 1738065307565,
2347
+ // "funding": "0",
2348
+ // "pnl": "-0.39547479770461644"
2349
+ // }
2350
+ //
2351
+ const marketId = this.safeString(income, 'instrument_name');
2352
+ const symbol = this.safeSymbol(marketId, market);
2353
+ const rate = this.safeString(income, 'funding');
2354
+ const code = this.safeCurrencyCode('USDC');
2355
+ const timestamp = this.safeInteger(income, 'timestamp');
2356
+ return {
2357
+ 'info': income,
2358
+ 'symbol': symbol,
2359
+ 'code': code,
2360
+ 'timestamp': timestamp,
2361
+ 'datetime': this.iso8601(timestamp),
2362
+ 'id': undefined,
2363
+ 'amount': undefined,
2364
+ 'rate': rate,
2365
+ };
2366
+ }
2367
+ /**
2368
+ * @method
2369
+ * @name derive#fetchBalance
2370
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
2371
+ * @see https://docs.derive.xyz/reference/post_private-get-all-portfolios
2372
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2373
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
2374
+ */
2375
+ async fetchBalance(params = {}) {
2376
+ await this.loadMarkets();
2377
+ let deriveWalletAddress = undefined;
2378
+ [deriveWalletAddress, params] = this.handleDeriveWalletAddress('fetchBalance', params);
2379
+ const request = {
2380
+ 'wallet': deriveWalletAddress,
2381
+ };
2382
+ const response = await this.privatePostGetAllPortfolios(this.extend(request, params));
2383
+ //
2384
+ // {
2385
+ // "result": [{
2386
+ // "subaccount_id": 130837,
2387
+ // "label": "",
2388
+ // "currency": "all",
2389
+ // "margin_type": "SM",
2390
+ // "is_under_liquidation": false,
2391
+ // "positions_value": "0",
2392
+ // "collaterals_value": "318.0760325000001103035174310207366943359375",
2393
+ // "subaccount_value": "318.0760325000001103035174310207366943359375",
2394
+ // "positions_maintenance_margin": "0",
2395
+ // "positions_initial_margin": "0",
2396
+ // "collaterals_maintenance_margin": "238.557024375000082727638073265552520751953125",
2397
+ // "collaterals_initial_margin": "190.845619500000083235136116854846477508544921875",
2398
+ // "maintenance_margin": "238.557024375000082727638073265552520751953125",
2399
+ // "initial_margin": "190.845619500000083235136116854846477508544921875",
2400
+ // "open_orders_margin": "0",
2401
+ // "projected_margin_change": "0",
2402
+ // "open_orders": [],
2403
+ // "positions": [],
2404
+ // "collaterals": [
2405
+ // {
2406
+ // "asset_type": "erc20",
2407
+ // "asset_name": "ETH",
2408
+ // "currency": "ETH",
2409
+ // "amount": "0.1",
2410
+ // "mark_price": "3180.760325000000438272",
2411
+ // "mark_value": "318.0760325000001103035174310207366943359375",
2412
+ // "cumulative_interest": "0",
2413
+ // "pending_interest": "0",
2414
+ // "initial_margin": "190.845619500000083235136116854846477508544921875",
2415
+ // "maintenance_margin": "238.557024375000082727638073265552520751953125",
2416
+ // "realized_pnl": "0",
2417
+ // "average_price": "3184.891931",
2418
+ // "unrealized_pnl": "-0.413161",
2419
+ // "total_fees": "0",
2420
+ // "average_price_excl_fees": "3184.891931",
2421
+ // "realized_pnl_excl_fees": "0",
2422
+ // "unrealized_pnl_excl_fees": "-0.413161",
2423
+ // "open_orders_margin": "0",
2424
+ // "creation_timestamp": 1736860533493
2425
+ // }
2426
+ // ]
2427
+ // }],
2428
+ // "id": "27b9a64e-3379-4ce6-a126-9fb941c4a970"
2429
+ // }
2430
+ //
2431
+ const result = this.safeList(response, 'result');
2432
+ return this.parseBalance(result);
2433
+ }
2434
+ parseBalance(response) {
2435
+ const result = {
2436
+ 'info': response,
2437
+ };
2438
+ for (let i = 0; i < response.length; i++) {
2439
+ const subaccount = response[i];
2440
+ const collaterals = this.safeList(subaccount, 'collaterals', []);
2441
+ for (let j = 0; j < collaterals.length; j++) {
2442
+ const balance = collaterals[j];
2443
+ const code = this.safeCurrencyCode(this.safeString(balance, 'currency'));
2444
+ let account = this.safeDict(result, code);
2445
+ if (account === undefined) {
2446
+ account = this.account();
2447
+ account['total'] = this.safeString(balance, 'amount');
2448
+ }
2449
+ else {
2450
+ const amount = this.safeString(balance, 'amount');
2451
+ account['total'] = Precise.stringAdd(account['total'], amount);
2452
+ }
2453
+ result[code] = account;
2454
+ }
2455
+ }
2456
+ return this.safeBalance(result);
2457
+ }
2458
+ /**
2459
+ * @method
2460
+ * @name derive#fetchDeposits
2461
+ * @description fetch all deposits made to an account
2462
+ * @see https://docs.derive.xyz/reference/post_private-get-deposit-history
2463
+ * @param {string} code unified currency code
2464
+ * @param {int} [since] the earliest time in ms to fetch deposits for
2465
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
2466
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2467
+ * @param {string} [params.subaccount_id] *required* the subaccount id
2468
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2469
+ */
2470
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
2471
+ await this.loadMarkets();
2472
+ let subaccountId = undefined;
2473
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchDeposits', params);
2474
+ const request = {
2475
+ 'subaccount_id': subaccountId,
2476
+ };
2477
+ if (since !== undefined) {
2478
+ request['start_timestamp'] = since;
2479
+ }
2480
+ const response = await this.privatePostGetDepositHistory(this.extend(request, params));
2481
+ //
2482
+ // {
2483
+ // "result": {
2484
+ // "events": [
2485
+ // {
2486
+ // "timestamp": 1736860533599,
2487
+ // "transaction_id": "f2069395-ec00-49f5-925a-87202a5d240f",
2488
+ // "asset": "ETH",
2489
+ // "amount": "0.1",
2490
+ // "tx_status": "settled",
2491
+ // "tx_hash": "0xeda21a315c59302a19c42049b4cef05a10b685302b6cc3edbaf49102d91166d4",
2492
+ // "error_log": {}
2493
+ // }
2494
+ // ]
2495
+ // },
2496
+ // "id": "ceebc730-22ab-40cd-9941-33ceb2a74389"
2497
+ // }
2498
+ //
2499
+ const currency = this.safeCurrency(code);
2500
+ const result = this.safeDict(response, 'result', {});
2501
+ const events = this.safeList(result, 'events');
2502
+ return this.parseTransactions(events, currency, since, limit, params);
2503
+ }
2504
+ /**
2505
+ * @method
2506
+ * @name derive#fetchWithdrawals
2507
+ * @description fetch all withdrawals made from an account
2508
+ * @see https://docs.derive.xyz/reference/post_private-get-withdrawal-history
2509
+ * @param {string} code unified currency code
2510
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
2511
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
2512
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2513
+ * @param {string} [params.subaccount_id] *required* the subaccount id
2514
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2515
+ */
2516
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
2517
+ await this.loadMarkets();
2518
+ let subaccountId = undefined;
2519
+ [subaccountId, params] = this.handleDeriveSubaccountId('fetchWithdrawals', params);
2520
+ const request = {
2521
+ 'subaccount_id': subaccountId,
2522
+ };
2523
+ if (since !== undefined) {
2524
+ request['start_timestamp'] = since;
2525
+ }
2526
+ const response = await this.privatePostGetWithdrawalHistory(this.extend(request, params));
2527
+ //
2528
+ // {
2529
+ // "result": {
2530
+ // "events": [
2531
+ // {
2532
+ // "timestamp": 1736860533599,
2533
+ // "transaction_id": "f2069395-ec00-49f5-925a-87202a5d240f",
2534
+ // "asset": "ETH",
2535
+ // "amount": "0.1",
2536
+ // "tx_status": "settled",
2537
+ // "tx_hash": "0xeda21a315c59302a19c42049b4cef05a10b685302b6cc3edbaf49102d91166d4",
2538
+ // "error_log": {}
2539
+ // }
2540
+ // ]
2541
+ // },
2542
+ // "id": "ceebc730-22ab-40cd-9941-33ceb2a74389"
2543
+ // }
2544
+ //
2545
+ const currency = this.safeCurrency(code);
2546
+ const result = this.safeDict(response, 'result', {});
2547
+ const events = this.safeList(result, 'events');
2548
+ return this.parseTransactions(events, currency, since, limit, params);
2549
+ }
2550
+ parseTransaction(transaction, currency = undefined) {
2551
+ //
2552
+ // {
2553
+ // "timestamp": 1736860533599,
2554
+ // "transaction_id": "f2069395-ec00-49f5-925a-87202a5d240f",
2555
+ // "asset": "ETH",
2556
+ // "amount": "0.1",
2557
+ // "tx_status": "settled",
2558
+ // "tx_hash": "0xeda21a315c59302a19c42049b4cef05a10b685302b6cc3edbaf49102d91166d4",
2559
+ // "error_log": {}
2560
+ // }
2561
+ //
2562
+ const code = this.safeString(transaction, 'asset');
2563
+ const timestamp = this.safeInteger(transaction, 'timestamp');
2564
+ let txId = this.safeString(transaction, 'tx_hash');
2565
+ if (txId === '0x0') {
2566
+ txId = undefined;
2567
+ }
2568
+ return {
2569
+ 'info': transaction,
2570
+ 'id': undefined,
2571
+ 'txid': txId,
2572
+ 'timestamp': timestamp,
2573
+ 'datetime': this.iso8601(timestamp),
2574
+ 'address': undefined,
2575
+ 'addressFrom': undefined,
2576
+ 'addressTo': undefined,
2577
+ 'tag': undefined,
2578
+ 'tagFrom': undefined,
2579
+ 'tagTo': undefined,
2580
+ 'type': undefined,
2581
+ 'amount': this.safeNumber(transaction, 'amount'),
2582
+ 'currency': code,
2583
+ 'status': this.parseTransactionStatus(this.safeString(transaction, 'tx_status')),
2584
+ 'updated': undefined,
2585
+ 'comment': undefined,
2586
+ 'internal': undefined,
2587
+ 'fee': undefined,
2588
+ 'network': undefined,
2589
+ };
2590
+ }
2591
+ parseTransactionStatus(status) {
2592
+ const statuses = {
2593
+ 'settled': 'ok',
2594
+ 'reverted': 'failed',
2595
+ };
2596
+ return this.safeString(statuses, status, status);
2597
+ }
2598
+ handleDeriveSubaccountId(methodName, params) {
2599
+ let derivesubAccountId = undefined;
2600
+ [derivesubAccountId, params] = this.handleOptionAndParams(params, methodName, 'subaccount_id');
2601
+ if ((derivesubAccountId !== undefined) && (derivesubAccountId !== '')) {
2602
+ this.options['subaccount_id'] = derivesubAccountId; // saving in options
2603
+ return [derivesubAccountId, params];
2604
+ }
2605
+ const optionsWallet = this.safeString(this.options, 'subaccount_id');
2606
+ if (optionsWallet !== undefined) {
2607
+ return [optionsWallet, params];
2608
+ }
2609
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a subaccount_id parameter inside \'params\' or exchange.options[\'subaccount_id\']=ID.');
2610
+ }
2611
+ handleDeriveWalletAddress(methodName, params) {
2612
+ let deriveWalletAddress = undefined;
2613
+ [deriveWalletAddress, params] = this.handleOptionAndParams(params, methodName, 'deriveWalletAddress');
2614
+ if ((deriveWalletAddress !== undefined) && (deriveWalletAddress !== '')) {
2615
+ this.options['deriveWalletAddress'] = deriveWalletAddress; // saving in options
2616
+ return [deriveWalletAddress, params];
2617
+ }
2618
+ const optionsWallet = this.safeString(this.options, 'deriveWalletAddress');
2619
+ if (optionsWallet !== undefined) {
2620
+ return [optionsWallet, params];
2621
+ }
2622
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a deriveWalletAddress parameter inside \'params\' or exchange.options[\'deriveWalletAddress\'] = ADDRESS, the address can find in HOME => Developers tab.');
2623
+ }
2624
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2625
+ if (!response) {
2626
+ return undefined; // fallback to default error handler
2627
+ }
2628
+ const error = this.safeDict(response, 'error');
2629
+ if (error !== undefined) {
2630
+ const errorCode = this.safeString(error, 'code');
2631
+ const feedback = this.id + ' ' + this.json(response);
2632
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2633
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
2634
+ throw new ExchangeError(feedback);
2635
+ }
2636
+ return undefined;
2637
+ }
2638
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2639
+ const url = this.urls['api'][api] + '/' + path;
2640
+ if (method === 'POST') {
2641
+ headers = {
2642
+ 'Content-Type': 'application/json',
2643
+ };
2644
+ if (api === 'private') {
2645
+ const now = this.milliseconds().toString();
2646
+ const signature = this.signMessage(now, this.privateKey);
2647
+ headers['X-LyraWallet'] = this.safeString(this.options, 'deriveWalletAddress');
2648
+ headers['X-LyraTimestamp'] = now;
2649
+ headers['X-LyraSignature'] = signature;
2650
+ }
2651
+ body = this.json(params);
2652
+ }
2653
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2654
+ }
2655
+ }