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,3654 @@
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/delta.js';
9
+ import { ExchangeError, InsufficientFunds, BadRequest, BadSymbol, InvalidOrder, AuthenticationError, OrderNotFound, ExchangeNotAvailable, ArgumentsRequired } from './base/errors.js';
10
+ import { TICK_SIZE } from './base/functions/number.js';
11
+ import { Precise } from './base/Precise.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * @class delta
16
+ * @augments Exchange
17
+ */
18
+ export default class delta extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'delta',
22
+ 'name': 'Delta Exchange',
23
+ 'countries': ['VC'],
24
+ 'rateLimit': 300,
25
+ 'version': 'v2',
26
+ // new metainfo interface
27
+ 'has': {
28
+ 'CORS': undefined,
29
+ 'spot': true,
30
+ 'margin': false,
31
+ 'swap': true,
32
+ 'future': false,
33
+ 'option': true,
34
+ 'addMargin': true,
35
+ 'cancelAllOrders': true,
36
+ 'cancelOrder': true,
37
+ 'closeAllPositions': true,
38
+ 'closePosition': false,
39
+ 'createOrder': true,
40
+ 'createReduceOnlyOrder': true,
41
+ 'editOrder': true,
42
+ 'fetchBalance': true,
43
+ 'fetchClosedOrders': true,
44
+ 'fetchCurrencies': true,
45
+ 'fetchDeposit': undefined,
46
+ 'fetchDepositAddress': true,
47
+ 'fetchDepositAddresses': false,
48
+ 'fetchDepositAddressesByNetwork': false,
49
+ 'fetchDeposits': undefined,
50
+ 'fetchFundingHistory': false,
51
+ 'fetchFundingRate': true,
52
+ 'fetchFundingRateHistory': false,
53
+ 'fetchFundingRates': true,
54
+ 'fetchGreeks': true,
55
+ 'fetchIndexOHLCV': true,
56
+ 'fetchLedger': true,
57
+ 'fetchLeverage': true,
58
+ 'fetchLeverageTiers': false,
59
+ 'fetchMarginMode': true,
60
+ 'fetchMarginModes': false,
61
+ 'fetchMarketLeverageTiers': false,
62
+ 'fetchMarkets': true,
63
+ 'fetchMarkOHLCV': true,
64
+ 'fetchMySettlementHistory': false,
65
+ 'fetchMyTrades': true,
66
+ 'fetchOHLCV': true,
67
+ 'fetchOpenInterest': true,
68
+ 'fetchOpenOrders': true,
69
+ 'fetchOption': true,
70
+ 'fetchOptionChain': false,
71
+ 'fetchOrderBook': true,
72
+ 'fetchPosition': true,
73
+ 'fetchPositionMode': false,
74
+ 'fetchPositions': true,
75
+ 'fetchPremiumIndexOHLCV': false,
76
+ 'fetchSettlementHistory': true,
77
+ 'fetchStatus': true,
78
+ 'fetchTicker': true,
79
+ 'fetchTickers': true,
80
+ 'fetchTime': true,
81
+ 'fetchTrades': true,
82
+ 'fetchTransfer': undefined,
83
+ 'fetchTransfers': undefined,
84
+ 'fetchUnderlyingAssets': false,
85
+ 'fetchVolatilityHistory': false,
86
+ 'fetchWithdrawal': undefined,
87
+ 'fetchWithdrawals': undefined,
88
+ 'reduceMargin': true,
89
+ 'setLeverage': true,
90
+ 'setMargin': false,
91
+ 'setMarginMode': false,
92
+ 'setPositionMode': false,
93
+ 'transfer': false,
94
+ 'withdraw': false,
95
+ },
96
+ 'timeframes': {
97
+ '1m': '1m',
98
+ '3m': '3m',
99
+ '5m': '5m',
100
+ '15m': '15m',
101
+ '30m': '30m',
102
+ '1h': '1h',
103
+ '2h': '2h',
104
+ '4h': '4h',
105
+ '6h': '6h',
106
+ '1d': '1d',
107
+ '7d': '7d',
108
+ '1w': '1w',
109
+ '2w': '2w',
110
+ '1M': '30d',
111
+ },
112
+ 'urls': {
113
+ 'logo': 'https://user-images.githubusercontent.com/1294454/99450025-3be60a00-2931-11eb-9302-f4fd8d8589aa.jpg',
114
+ 'test': {
115
+ 'public': 'https://testnet-api.delta.exchange',
116
+ 'private': 'https://testnet-api.delta.exchange',
117
+ },
118
+ 'api': {
119
+ 'public': 'https://api.delta.exchange',
120
+ 'private': 'https://api.delta.exchange',
121
+ },
122
+ 'www': 'https://www.delta.exchange',
123
+ 'doc': [
124
+ 'https://docs.delta.exchange',
125
+ ],
126
+ 'fees': 'https://www.delta.exchange/fees',
127
+ 'referral': 'https://www.delta.exchange/app/signup/?code=IULYNB',
128
+ },
129
+ 'api': {
130
+ 'public': {
131
+ 'get': [
132
+ 'assets',
133
+ 'indices',
134
+ 'products',
135
+ 'products/{symbol}',
136
+ 'tickers',
137
+ 'tickers/{symbol}',
138
+ 'l2orderbook/{symbol}',
139
+ 'trades/{symbol}',
140
+ 'stats',
141
+ 'history/candles',
142
+ 'history/sparklines',
143
+ 'settings',
144
+ ],
145
+ },
146
+ 'private': {
147
+ 'get': [
148
+ 'orders',
149
+ 'products/{product_id}/orders/leverage',
150
+ 'positions/margined',
151
+ 'positions',
152
+ 'orders/history',
153
+ 'fills',
154
+ 'fills/history/download/csv',
155
+ 'wallet/balances',
156
+ 'wallet/transactions',
157
+ 'wallet/transactions/download',
158
+ 'wallets/sub_accounts_transfer_history',
159
+ 'users/trading_preferences',
160
+ 'sub_accounts',
161
+ 'profile',
162
+ 'deposits/address',
163
+ 'orders/leverage',
164
+ ],
165
+ 'post': [
166
+ 'orders',
167
+ 'orders/bracket',
168
+ 'orders/batch',
169
+ 'products/{product_id}/orders/leverage',
170
+ 'positions/change_margin',
171
+ 'positions/close_all',
172
+ 'wallets/sub_account_balance_transfer',
173
+ 'orders/cancel_after',
174
+ 'orders/leverage',
175
+ ],
176
+ 'put': [
177
+ 'orders',
178
+ 'orders/bracket',
179
+ 'orders/batch',
180
+ 'positions/auto_topup',
181
+ 'users/update_mmp',
182
+ 'users/reset_mmp',
183
+ ],
184
+ 'delete': [
185
+ 'orders',
186
+ 'orders/all',
187
+ 'orders/batch',
188
+ ],
189
+ },
190
+ },
191
+ 'fees': {
192
+ 'trading': {
193
+ 'tierBased': true,
194
+ 'percentage': true,
195
+ 'taker': this.parseNumber('0.0015'),
196
+ 'maker': this.parseNumber('0.0010'),
197
+ 'tiers': {
198
+ 'taker': [
199
+ [this.parseNumber('0'), this.parseNumber('0.0015')],
200
+ [this.parseNumber('100'), this.parseNumber('0.0013')],
201
+ [this.parseNumber('250'), this.parseNumber('0.0013')],
202
+ [this.parseNumber('1000'), this.parseNumber('0.001')],
203
+ [this.parseNumber('5000'), this.parseNumber('0.0009')],
204
+ [this.parseNumber('10000'), this.parseNumber('0.00075')],
205
+ [this.parseNumber('20000'), this.parseNumber('0.00065')],
206
+ ],
207
+ 'maker': [
208
+ [this.parseNumber('0'), this.parseNumber('0.001')],
209
+ [this.parseNumber('100'), this.parseNumber('0.001')],
210
+ [this.parseNumber('250'), this.parseNumber('0.0009')],
211
+ [this.parseNumber('1000'), this.parseNumber('0.00075')],
212
+ [this.parseNumber('5000'), this.parseNumber('0.0006')],
213
+ [this.parseNumber('10000'), this.parseNumber('0.0005')],
214
+ [this.parseNumber('20000'), this.parseNumber('0.0005')],
215
+ ],
216
+ },
217
+ },
218
+ },
219
+ 'options': {
220
+ 'networks': {
221
+ 'TRC20': 'TRC20(TRON)',
222
+ 'BEP20': 'BEP20(BSC)',
223
+ },
224
+ },
225
+ 'features': {
226
+ 'default': {
227
+ 'sandbox': true,
228
+ 'createOrder': {
229
+ 'marginMode': false,
230
+ 'triggerPrice': true,
231
+ // todo implement
232
+ 'triggerPriceType': {
233
+ 'last': true,
234
+ 'mark': true,
235
+ 'index': true,
236
+ },
237
+ 'triggerDirection': false,
238
+ 'stopLossPrice': false,
239
+ 'takeProfitPrice': false,
240
+ 'attachedStopLossTakeProfit': {
241
+ 'triggerPriceType': undefined,
242
+ 'price': true,
243
+ },
244
+ // todo implementation
245
+ 'timeInForce': {
246
+ 'IOC': true,
247
+ 'FOK': true,
248
+ 'PO': true,
249
+ 'GTD': false,
250
+ },
251
+ 'hedged': false,
252
+ 'selfTradePrevention': false,
253
+ 'trailing': false,
254
+ 'iceberg': false,
255
+ 'leverage': false,
256
+ 'marketBuyByCost': false,
257
+ 'marketBuyRequiresPrice': false,
258
+ },
259
+ 'createOrders': undefined,
260
+ 'fetchMyTrades': {
261
+ 'marginMode': false,
262
+ 'limit': 100,
263
+ 'daysBack': 100000,
264
+ 'untilDays': 100000,
265
+ 'symbolRequired': false,
266
+ },
267
+ 'fetchOrder': undefined,
268
+ 'fetchOpenOrders': {
269
+ 'marginMode': false,
270
+ 'limit': 100,
271
+ 'trigger': false,
272
+ 'trailing': false,
273
+ 'symbolRequired': false,
274
+ },
275
+ 'fetchOrders': undefined,
276
+ 'fetchClosedOrders': {
277
+ 'marginMode': false,
278
+ 'limit': 500,
279
+ 'daysBack': 100000,
280
+ 'daysBackCanceled': 1,
281
+ 'untilDays': 100000,
282
+ 'trigger': false,
283
+ 'trailing': false,
284
+ 'symbolRequired': false,
285
+ },
286
+ 'fetchOHLCV': {
287
+ 'limit': 2000, // todo: recheck
288
+ },
289
+ },
290
+ 'spot': {
291
+ 'extends': 'default',
292
+ },
293
+ 'swap': {
294
+ 'linear': {
295
+ 'extends': 'default',
296
+ },
297
+ 'inverse': {
298
+ 'extends': 'default',
299
+ },
300
+ },
301
+ 'future': {
302
+ 'linear': {
303
+ 'extends': 'default',
304
+ },
305
+ 'inverse': {
306
+ 'extends': 'default',
307
+ },
308
+ },
309
+ },
310
+ 'precisionMode': TICK_SIZE,
311
+ 'requiredCredentials': {
312
+ 'apiKey': true,
313
+ 'secret': true,
314
+ },
315
+ 'exceptions': {
316
+ 'exact': {
317
+ // Margin required to place order with selected leverage and quantity is insufficient.
318
+ 'insufficient_margin': InsufficientFunds,
319
+ 'order_size_exceed_available': InvalidOrder,
320
+ 'risk_limits_breached': BadRequest,
321
+ 'invalid_contract': BadSymbol,
322
+ 'immediate_liquidation': InvalidOrder,
323
+ 'out_of_bankruptcy': InvalidOrder,
324
+ 'self_matching_disrupted_post_only': InvalidOrder,
325
+ 'immediate_execution_post_only': InvalidOrder,
326
+ 'bad_schema': BadRequest,
327
+ 'invalid_api_key': AuthenticationError,
328
+ 'invalid_signature': AuthenticationError,
329
+ 'open_order_not_found': OrderNotFound,
330
+ 'unavailable': ExchangeNotAvailable, // {"error":{"code":"unavailable"},"success":false}
331
+ },
332
+ 'broad': {},
333
+ },
334
+ });
335
+ }
336
+ createExpiredOptionMarket(symbol) {
337
+ // support expired option contracts
338
+ const quote = 'USDT';
339
+ const optionParts = symbol.split('-');
340
+ const symbolBase = symbol.split('/');
341
+ let base = undefined;
342
+ let expiry = undefined;
343
+ let optionType = undefined;
344
+ if (symbol.indexOf('/') > -1) {
345
+ base = this.safeString(symbolBase, 0);
346
+ expiry = this.safeString(optionParts, 1);
347
+ optionType = this.safeString(optionParts, 3);
348
+ }
349
+ else {
350
+ base = this.safeString(optionParts, 1);
351
+ expiry = this.safeString(optionParts, 3);
352
+ optionType = this.safeString(optionParts, 0);
353
+ }
354
+ if (expiry !== undefined) {
355
+ expiry = expiry.slice(4) + expiry.slice(2, 4) + expiry.slice(0, 2);
356
+ }
357
+ const settle = quote;
358
+ const strike = this.safeString(optionParts, 2);
359
+ const datetime = this.convertExpireDate(expiry);
360
+ const timestamp = this.parse8601(datetime);
361
+ return {
362
+ 'id': optionType + '-' + base + '-' + strike + '-' + expiry,
363
+ 'symbol': base + '/' + quote + ':' + settle + '-' + expiry + '-' + strike + '-' + optionType,
364
+ 'base': base,
365
+ 'quote': quote,
366
+ 'settle': settle,
367
+ 'baseId': base,
368
+ 'quoteId': quote,
369
+ 'settleId': settle,
370
+ 'active': false,
371
+ 'type': 'option',
372
+ 'linear': undefined,
373
+ 'inverse': undefined,
374
+ 'spot': false,
375
+ 'swap': false,
376
+ 'future': false,
377
+ 'option': true,
378
+ 'margin': false,
379
+ 'contract': true,
380
+ 'contractSize': this.parseNumber('1'),
381
+ 'expiry': timestamp,
382
+ 'expiryDatetime': datetime,
383
+ 'optionType': (optionType === 'C') ? 'call' : 'put',
384
+ 'strike': this.parseNumber(strike),
385
+ 'precision': {
386
+ 'amount': undefined,
387
+ 'price': undefined,
388
+ },
389
+ 'limits': {
390
+ 'amount': {
391
+ 'min': undefined,
392
+ 'max': undefined,
393
+ },
394
+ 'price': {
395
+ 'min': undefined,
396
+ 'max': undefined,
397
+ },
398
+ 'cost': {
399
+ 'min': undefined,
400
+ 'max': undefined,
401
+ },
402
+ },
403
+ 'info': undefined,
404
+ };
405
+ }
406
+ safeMarket(marketId = undefined, market = undefined, delimiter = undefined, marketType = undefined) {
407
+ const isOption = (marketId !== undefined) && ((marketId.endsWith('-C')) || (marketId.endsWith('-P')) || (marketId.startsWith('C-')) || (marketId.startsWith('P-')));
408
+ if (isOption && !(marketId in this.markets_by_id)) {
409
+ // handle expired option contracts
410
+ return this.createExpiredOptionMarket(marketId);
411
+ }
412
+ return super.safeMarket(marketId, market, delimiter, marketType);
413
+ }
414
+ /**
415
+ * @method
416
+ * @name delta#fetchTime
417
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
418
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
419
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
420
+ */
421
+ async fetchTime(params = {}) {
422
+ const response = await this.publicGetSettings(params);
423
+ // full response sample under `fetchStatus`
424
+ const result = this.safeDict(response, 'result', {});
425
+ return this.safeIntegerProduct(result, 'server_time', 0.001);
426
+ }
427
+ /**
428
+ * @method
429
+ * @name delta#fetchStatus
430
+ * @description the latest known information on the availability of the exchange API
431
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
432
+ * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
433
+ */
434
+ async fetchStatus(params = {}) {
435
+ const response = await this.publicGetSettings(params);
436
+ //
437
+ // {
438
+ // "result": {
439
+ // "deto_liquidity_mining_daily_reward": "40775",
440
+ // "deto_msp": "1.0",
441
+ // "deto_staking_daily_reward": "23764.08",
442
+ // "enabled_wallets": [
443
+ // "BTC",
444
+ // ...
445
+ // ],
446
+ // "portfolio_margin_params": {
447
+ // "enabled_portfolios": {
448
+ // ".DEAVAXUSDT": {
449
+ // "asset_id": 5,
450
+ // "futures_contingency_margin_percent": "1",
451
+ // "interest_rate": "0",
452
+ // "maintenance_margin_multiplier": "0.8",
453
+ // "max_price_shock": "20",
454
+ // "max_short_notional_limit": "2000",
455
+ // "options_contingency_margin_percent": "1",
456
+ // "options_discount_range": "10",
457
+ // "options_liq_band_range_percentage": "25",
458
+ // "settling_asset": "USDT",
459
+ // "sort_priority": 5,
460
+ // "underlying_asset": "AVAX",
461
+ // "volatility_down_shock": "30",
462
+ // "volatility_up_shock": "45"
463
+ // },
464
+ // ...
465
+ // },
466
+ // "portfolio_enabled_contracts": [
467
+ // "futures",
468
+ // "perpetual_futures",
469
+ // "call_options",
470
+ // "put_options"
471
+ // ]
472
+ // },
473
+ // "server_time": 1650640673500273,
474
+ // "trade_farming_daily_reward": "100000",
475
+ // "circulating_supply": "140000000",
476
+ // "circulating_supply_update_time": "1636752800",
477
+ // "deto_referral_mining_daily_reward": "0",
478
+ // "deto_total_reward_pool": "100000000",
479
+ // "deto_trade_mining_daily_reward": "0",
480
+ // "kyc_deposit_limit": "20",
481
+ // "kyc_withdrawal_limit": "10000",
482
+ // "maintenance_start_time": "1650387600000000",
483
+ // "msp_deto_commission_percent": "25",
484
+ // "under_maintenance": "false"
485
+ // },
486
+ // "success": true
487
+ // }
488
+ //
489
+ const result = this.safeDict(response, 'result', {});
490
+ const underMaintenance = this.safeString(result, 'under_maintenance');
491
+ const status = (underMaintenance === 'true') ? 'maintenance' : 'ok';
492
+ const updated = this.safeIntegerProduct(result, 'server_time', 0.001, this.milliseconds());
493
+ return {
494
+ 'status': status,
495
+ 'updated': updated,
496
+ 'eta': undefined,
497
+ 'url': undefined,
498
+ 'info': response,
499
+ };
500
+ }
501
+ /**
502
+ * @method
503
+ * @name delta#fetchCurrencies
504
+ * @description fetches all available currencies on an exchange
505
+ * @see https://docs.delta.exchange/#get-list-of-all-assets
506
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
507
+ * @returns {object} an associative dictionary of currencies
508
+ */
509
+ async fetchCurrencies(params = {}) {
510
+ const response = await this.publicGetAssets(params);
511
+ //
512
+ // {
513
+ // "result": [
514
+ // {
515
+ // "base_withdrawal_fee": "0.005000000000000000",
516
+ // "id": "1",
517
+ // "interest_credit": false,
518
+ // "interest_slabs": null,
519
+ // "kyc_deposit_limit": "0.000000000000000000",
520
+ // "kyc_withdrawal_limit": "0.000000000000000000",
521
+ // "min_withdrawal_amount": "0.010000000000000000",
522
+ // "minimum_precision": "4",
523
+ // "name": "Ethereum",
524
+ // "networks": [
525
+ // {
526
+ // "allowed_deposit_groups": null,
527
+ // "base_withdrawal_fee": "0.0025",
528
+ // "deposit_status": "enabled",
529
+ // "memo_required": false,
530
+ // "min_deposit_amount": "0.000050000000000000",
531
+ // "min_withdrawal_amount": "0.010000000000000000",
532
+ // "minimum_deposit_confirmations": "12",
533
+ // "network": "ERC20",
534
+ // "variable_withdrawal_fee": "0",
535
+ // "withdrawal_status": "enabled"
536
+ // },
537
+ // {
538
+ // "allowed_deposit_groups": null,
539
+ // "base_withdrawal_fee": "0.0001",
540
+ // "deposit_status": "enabled",
541
+ // "memo_required": false,
542
+ // "min_deposit_amount": "0.000050000000000000",
543
+ // "min_withdrawal_amount": "0.000300000000000000",
544
+ // "minimum_deposit_confirmations": "15",
545
+ // "network": "BEP20(BSC)",
546
+ // "variable_withdrawal_fee": "0",
547
+ // "withdrawal_status": "enabled"
548
+ // }
549
+ // ],
550
+ // "precision": "18",
551
+ // "sort_priority": "3",
552
+ // "symbol": "ETH",
553
+ // "variable_withdrawal_fee": "0.000000000000000000"
554
+ // },
555
+ // ],
556
+ // "success":true
557
+ // }
558
+ //
559
+ const currencies = this.safeList(response, 'result', []);
560
+ const result = {};
561
+ for (let i = 0; i < currencies.length; i++) {
562
+ const currency = currencies[i];
563
+ const id = this.safeString(currency, 'symbol');
564
+ const numericId = this.safeInteger(currency, 'id');
565
+ const code = this.safeCurrencyCode(id);
566
+ const chains = this.safeList(currency, 'networks', []);
567
+ const networks = {};
568
+ for (let j = 0; j < chains.length; j++) {
569
+ const chain = chains[j];
570
+ const networkId = this.safeString(chain, 'network');
571
+ const networkCode = this.networkIdToCode(networkId);
572
+ networks[networkCode] = {
573
+ 'id': networkId,
574
+ 'network': networkCode,
575
+ 'name': this.safeString(chain, 'name'),
576
+ 'info': chain,
577
+ 'active': this.safeString(chain, 'status') === 'enabled',
578
+ 'deposit': this.safeString(chain, 'deposit_status') === 'enabled',
579
+ 'withdraw': this.safeString(chain, 'withdrawal_status') === 'enabled',
580
+ 'fee': this.safeNumber(chain, 'base_withdrawal_fee'),
581
+ 'limits': {
582
+ 'deposit': {
583
+ 'min': this.safeNumber(chain, 'min_deposit_amount'),
584
+ 'max': undefined,
585
+ },
586
+ 'withdraw': {
587
+ 'min': this.safeNumber(chain, 'min_withdrawal_amount'),
588
+ 'max': undefined,
589
+ },
590
+ },
591
+ };
592
+ }
593
+ result[code] = this.safeCurrencyStructure({
594
+ 'id': id,
595
+ 'numericId': numericId,
596
+ 'code': code,
597
+ 'name': this.safeString(currency, 'name'),
598
+ 'info': currency,
599
+ 'active': undefined,
600
+ 'deposit': this.safeString(currency, 'deposit_status') === 'enabled',
601
+ 'withdraw': this.safeString(currency, 'withdrawal_status') === 'enabled',
602
+ 'fee': this.safeNumber(currency, 'base_withdrawal_fee'),
603
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(currency, 'precision'))),
604
+ 'limits': {
605
+ 'amount': { 'min': undefined, 'max': undefined },
606
+ 'withdraw': {
607
+ 'min': this.safeNumber(currency, 'min_withdrawal_amount'),
608
+ 'max': undefined,
609
+ },
610
+ },
611
+ 'networks': networks,
612
+ 'type': 'crypto',
613
+ });
614
+ }
615
+ return result;
616
+ }
617
+ async loadMarkets(reload = false, params = {}) {
618
+ const markets = await super.loadMarkets(reload, params);
619
+ const currenciesByNumericId = this.safeDict(this.options, 'currenciesByNumericId');
620
+ if ((currenciesByNumericId === undefined) || reload) {
621
+ this.options['currenciesByNumericId'] = this.indexByStringifiedNumericId(this.currencies);
622
+ }
623
+ const marketsByNumericId = this.safeDict(this.options, 'marketsByNumericId');
624
+ if ((marketsByNumericId === undefined) || reload) {
625
+ this.options['marketsByNumericId'] = this.indexByStringifiedNumericId(this.markets);
626
+ }
627
+ return markets;
628
+ }
629
+ indexByStringifiedNumericId(input) {
630
+ const result = {};
631
+ if (input === undefined) {
632
+ return undefined;
633
+ }
634
+ const keys = Object.keys(input);
635
+ for (let i = 0; i < keys.length; i++) {
636
+ const key = keys[i];
637
+ const item = input[key];
638
+ const numericIdString = this.safeString(item, 'numericId');
639
+ if (numericIdString === undefined) {
640
+ continue;
641
+ }
642
+ result[numericIdString] = item;
643
+ }
644
+ return result;
645
+ }
646
+ /**
647
+ * @method
648
+ * @name delta#fetchMarkets
649
+ * @description retrieves data on all markets for delta
650
+ * @see https://docs.delta.exchange/#get-list-of-products
651
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
652
+ * @returns {object[]} an array of objects representing market data
653
+ */
654
+ async fetchMarkets(params = {}) {
655
+ const response = await this.publicGetProducts(params);
656
+ //
657
+ // {
658
+ // "meta":{ "after":null, "before":null, "limit":100, "total_count":81 },
659
+ // "result":[
660
+ // // the below response represents item from perpetual market
661
+ // {
662
+ // "annualized_funding":"5.475000000000000000",
663
+ // "is_quanto":false,
664
+ // "ui_config":{
665
+ // "default_trading_view_candle":"15",
666
+ // "leverage_slider_values":[1,3,5,10,25,50],
667
+ // "price_clubbing_values":[0.001,0.005,0.05,0.1,0.5,1,5],
668
+ // "show_bracket_orders":false,
669
+ // "sort_priority":29,
670
+ // "tags":[]
671
+ // },
672
+ // "basis_factor_max_limit":"0.15",
673
+ // "symbol":"P-LINK-D-151120",
674
+ // "id":1584,
675
+ // "default_leverage":"5.000000000000000000",
676
+ // "maker_commission_rate":"0.0005",
677
+ // "contract_unit_currency":"LINK",
678
+ // "strike_price":"12.507948",
679
+ // "settling_asset":{
680
+ // // asset structure
681
+ // },
682
+ // "auction_start_time":null,
683
+ // "auction_finish_time":null,
684
+ // "settlement_time":"2020-11-15T12:00:00Z",
685
+ // "launch_time":"2020-11-14T11:55:05Z",
686
+ // "spot_index":{
687
+ // // index structure
688
+ // },
689
+ // "trading_status":"operational",
690
+ // "tick_size":"0.001",
691
+ // "position_size_limit":100000,
692
+ // "notional_type":"vanilla", // vanilla, inverse
693
+ // "price_band":"0.4",
694
+ // "barrier_price":null,
695
+ // "description":"Daily LINK PUT options quoted in USDT and settled in USDT",
696
+ // "insurance_fund_margin_contribution":"1",
697
+ // "quoting_asset":{
698
+ // // asset structure
699
+ // },
700
+ // "liquidation_penalty_factor":"0.2",
701
+ // "product_specs":{"max_volatility":3,"min_volatility":0.3,"spot_price_band":"0.40"},
702
+ // "initial_margin_scaling_factor":"0.0001",
703
+ // "underlying_asset":{
704
+ // // asset structure
705
+ // },
706
+ // "state":"live",
707
+ // "contract_value":"1",
708
+ // "initial_margin":"2",
709
+ // "impact_size":5000,
710
+ // "settlement_price":null,
711
+ // "contract_type":"put_options", // put_options, call_options, move_options, perpetual_futures, interest_rate_swaps, futures, spreads
712
+ // "taker_commission_rate":"0.0005",
713
+ // "maintenance_margin":"1",
714
+ // "short_description":"LINK Daily PUT Options",
715
+ // "maintenance_margin_scaling_factor":"0.00005",
716
+ // "funding_method":"mark_price",
717
+ // "max_leverage_notional":"20000"
718
+ // },
719
+ // // the below response represents item from spot market
720
+ // {
721
+ // "position_size_limit": 10000000,
722
+ // "settlement_price": null,
723
+ // "funding_method": "mark_price",
724
+ // "settling_asset": null,
725
+ // "impact_size": 10,
726
+ // "id": 32258,
727
+ // "auction_finish_time": null,
728
+ // "description": "Solana tether spot market",
729
+ // "trading_status": "operational",
730
+ // "tick_size": "0.01",
731
+ // "liquidation_penalty_factor": "1",
732
+ // "spot_index": {
733
+ // "config": { "quoting_asset": "USDT", "service_id": 8, "underlying_asset": "SOL" },
734
+ // "constituent_exchanges": [
735
+ // { "exchange": "binance", "health_interval": 60, "health_priority": 1, "weight": 1 },
736
+ // { "exchange": "huobi", "health_interval": 60, "health_priority": 2, "weight": 1 }
737
+ // ],
738
+ // "constituent_indices": null,
739
+ // "description": "Solana index from binance and huobi",
740
+ // "health_interval": 300,
741
+ // "id": 105,
742
+ // "impact_size": "40.000000000000000000",
743
+ // "index_type": "spot_pair",
744
+ // "is_composite": false,
745
+ // "price_method": "ltp",
746
+ // "quoting_asset_id": 5,
747
+ // "symbol": ".DESOLUSDT",
748
+ // "tick_size": "0.000100000000000000",
749
+ // "underlying_asset_id": 66
750
+ // },
751
+ // "contract_type": "spot",
752
+ // "launch_time": "2022-02-03T10:18:11Z",
753
+ // "symbol": "SOL_USDT",
754
+ // "disruption_reason": null,
755
+ // "settlement_time": null,
756
+ // "insurance_fund_margin_contribution": "1",
757
+ // "is_quanto": false,
758
+ // "maintenance_margin": "5",
759
+ // "taker_commission_rate": "0.0005",
760
+ // "auction_start_time": null,
761
+ // "max_leverage_notional": "10000000",
762
+ // "state": "live",
763
+ // "annualized_funding": "0",
764
+ // "notional_type": "vanilla",
765
+ // "price_band": "100",
766
+ // "product_specs": { "kyc_required": false, "max_order_size": 2000, "min_order_size": 0.01, "quoting_precision": 4, "underlying_precision": 2 },
767
+ // "default_leverage": "1.000000000000000000",
768
+ // "initial_margin": "10",
769
+ // "maintenance_margin_scaling_factor": "1",
770
+ // "ui_config": {
771
+ // "default_trading_view_candle": "1d",
772
+ // "leverage_slider_values": [],
773
+ // "price_clubbing_values": [ 0.01, 0.05, 0.1, 0.5, 1, 2.5, 5 ],
774
+ // "show_bracket_orders": false,
775
+ // "sort_priority": 2,
776
+ // "tags": []
777
+ // },
778
+ // "basis_factor_max_limit": "10000",
779
+ // "contract_unit_currency": "SOL",
780
+ // "strike_price": null,
781
+ // "quoting_asset": {
782
+ // "base_withdrawal_fee": "10.000000000000000000",
783
+ // "deposit_status": "enabled",
784
+ // "id": 5,
785
+ // "interest_credit": false,
786
+ // "interest_slabs": null,
787
+ // "kyc_deposit_limit": "100000.000000000000000000",
788
+ // "kyc_withdrawal_limit": "10000.000000000000000000",
789
+ // "min_withdrawal_amount": "30.000000000000000000",
790
+ // "minimum_precision": 2,
791
+ // "name": "Tether",
792
+ // "networks": [
793
+ // { "base_withdrawal_fee": "25", "deposit_status": "enabled", "memo_required": false, "network": "ERC20", "variable_withdrawal_fee": "0", "withdrawal_status": "enabled" },
794
+ // { "base_withdrawal_fee": "1", "deposit_status": "enabled", "memo_required": false, "network": "BEP20(BSC)", "variable_withdrawal_fee": "0", "withdrawal_status": "enabled" },
795
+ // { "base_withdrawal_fee": "1", "deposit_status": "disabled", "memo_required": false, "network": "TRC20(TRON)", "variable_withdrawal_fee": "0", "withdrawal_status": "disabled" }
796
+ // ],
797
+ // "precision": 8,
798
+ // "sort_priority": 1,
799
+ // "symbol": "USDT",
800
+ // "variable_withdrawal_fee": "0.000000000000000000",
801
+ // "withdrawal_status": "enabled"
802
+ // },
803
+ // "maker_commission_rate": "0.0005",
804
+ // "initial_margin_scaling_factor": "2",
805
+ // "underlying_asset": {
806
+ // "base_withdrawal_fee": "0.000000000000000000",
807
+ // "deposit_status": "enabled",
808
+ // "id": 66,
809
+ // "interest_credit": false,
810
+ // "interest_slabs": null,
811
+ // "kyc_deposit_limit": "0.000000000000000000",
812
+ // "kyc_withdrawal_limit": "0.000000000000000000",
813
+ // "min_withdrawal_amount": "0.020000000000000000",
814
+ // "minimum_precision": 4,
815
+ // "name": "Solana",
816
+ // "networks": [
817
+ // { "base_withdrawal_fee": "0.01", "deposit_status": "enabled", "memo_required": false, "network": "SOLANA", "variable_withdrawal_fee": "0", "withdrawal_status": "enabled" },
818
+ // { "base_withdrawal_fee": "0.01", "deposit_status": "enabled", "memo_required": false, "network": "BEP20(BSC)", "variable_withdrawal_fee": "0", "withdrawal_status": "enabled" }
819
+ // ],
820
+ // "precision": 8,
821
+ // "sort_priority": 7,
822
+ // "symbol": "SOL",
823
+ // "variable_withdrawal_fee": "0.000000000000000000",
824
+ // "withdrawal_status": "enabled"
825
+ // },
826
+ // "barrier_price": null,
827
+ // "contract_value": "1",
828
+ // "short_description": "SOL-USDT spot market"
829
+ // },
830
+ // ],
831
+ // "success":true
832
+ // }
833
+ //
834
+ const markets = this.safeList(response, 'result', []);
835
+ const result = [];
836
+ for (let i = 0; i < markets.length; i++) {
837
+ const market = markets[i];
838
+ let type = this.safeString(market, 'contract_type');
839
+ if (type === 'options_combos') {
840
+ continue;
841
+ }
842
+ // const settlingAsset = this.safeValue (market, 'settling_asset', {});
843
+ const quotingAsset = this.safeDict(market, 'quoting_asset', {});
844
+ const underlyingAsset = this.safeDict(market, 'underlying_asset', {});
845
+ const settlingAsset = this.safeDict(market, 'settling_asset');
846
+ const productSpecs = this.safeDict(market, 'product_specs', {});
847
+ const baseId = this.safeString(underlyingAsset, 'symbol');
848
+ const quoteId = this.safeString(quotingAsset, 'symbol');
849
+ const settleId = this.safeString(settlingAsset, 'symbol');
850
+ const id = this.safeString(market, 'symbol');
851
+ const numericId = this.safeInteger(market, 'id');
852
+ const base = this.safeCurrencyCode(baseId);
853
+ const quote = this.safeCurrencyCode(quoteId);
854
+ const settle = this.safeCurrencyCode(settleId);
855
+ const callOptions = (type === 'call_options');
856
+ const putOptions = (type === 'put_options');
857
+ const moveOptions = (type === 'move_options');
858
+ const spot = (type === 'spot');
859
+ const swap = (type === 'perpetual_futures');
860
+ const future = (type === 'futures');
861
+ const option = (callOptions || putOptions || moveOptions);
862
+ const strike = this.safeString(market, 'strike_price');
863
+ const expiryDatetime = this.safeString(market, 'settlement_time');
864
+ const expiry = this.parse8601(expiryDatetime);
865
+ const contractSize = this.safeNumber(market, 'contract_value');
866
+ let amountPrecision = undefined;
867
+ if (spot) {
868
+ amountPrecision = this.parseNumber(this.parsePrecision(this.safeString(productSpecs, 'underlying_precision'))); // seems inverse of 'impact_size'
869
+ }
870
+ else {
871
+ // other markets (swap, futures, move, spread, irs) seem to use the step of '1' contract
872
+ amountPrecision = this.parseNumber('1');
873
+ }
874
+ const linear = (settle === quote);
875
+ let optionType = undefined;
876
+ let symbol = base + '/' + quote;
877
+ if (swap || future || option) {
878
+ symbol = symbol + ':' + settle;
879
+ if (future || option) {
880
+ symbol = symbol + '-' + this.yymmdd(expiry);
881
+ if (option) {
882
+ type = 'option';
883
+ let letter = 'C';
884
+ optionType = 'call';
885
+ if (putOptions) {
886
+ letter = 'P';
887
+ optionType = 'put';
888
+ }
889
+ else if (moveOptions) {
890
+ letter = 'M';
891
+ optionType = 'move';
892
+ }
893
+ symbol = symbol + '-' + strike + '-' + letter;
894
+ }
895
+ else {
896
+ type = 'future';
897
+ }
898
+ }
899
+ else {
900
+ type = 'swap';
901
+ }
902
+ }
903
+ const state = this.safeString(market, 'state');
904
+ result.push({
905
+ 'id': id,
906
+ 'numericId': numericId,
907
+ 'symbol': symbol,
908
+ 'base': base,
909
+ 'quote': quote,
910
+ 'settle': settle,
911
+ 'baseId': baseId,
912
+ 'quoteId': quoteId,
913
+ 'settleId': settleId,
914
+ 'type': type,
915
+ 'spot': spot,
916
+ 'margin': spot ? undefined : false,
917
+ 'swap': swap,
918
+ 'future': future,
919
+ 'option': option,
920
+ 'active': (state === 'live'),
921
+ 'contract': !spot,
922
+ 'linear': spot ? undefined : linear,
923
+ 'inverse': spot ? undefined : !linear,
924
+ 'taker': this.safeNumber(market, 'taker_commission_rate'),
925
+ 'maker': this.safeNumber(market, 'maker_commission_rate'),
926
+ 'contractSize': spot ? undefined : contractSize,
927
+ 'expiry': expiry,
928
+ 'expiryDatetime': this.iso8601(expiry),
929
+ 'strike': this.parseNumber(strike),
930
+ 'optionType': optionType,
931
+ 'precision': {
932
+ 'amount': amountPrecision,
933
+ 'price': this.safeNumber(market, 'tick_size'),
934
+ },
935
+ 'limits': {
936
+ 'leverage': {
937
+ 'min': undefined,
938
+ 'max': undefined,
939
+ },
940
+ 'amount': {
941
+ 'min': this.parseNumber('1'),
942
+ 'max': this.safeNumber(market, 'position_size_limit'),
943
+ },
944
+ 'price': {
945
+ 'min': undefined,
946
+ 'max': undefined,
947
+ },
948
+ 'cost': {
949
+ 'min': this.safeNumber(market, 'min_size'),
950
+ 'max': undefined,
951
+ },
952
+ },
953
+ 'created': this.parse8601(this.safeString(market, 'launch_time')),
954
+ 'info': market,
955
+ });
956
+ }
957
+ return result;
958
+ }
959
+ parseTicker(ticker, market = undefined) {
960
+ //
961
+ // spot: fetchTicker, fetchTickers
962
+ //
963
+ // {
964
+ // "close": 30634.0,
965
+ // "contract_type": "spot",
966
+ // "greeks": null,
967
+ // "high": 30780.0,
968
+ // "low": 30340.5,
969
+ // "mark_price": "48000",
970
+ // "oi": "0.0000",
971
+ // "oi_change_usd_6h": "0.0000",
972
+ // "oi_contracts": "0",
973
+ // "oi_value": "0.0000",
974
+ // "oi_value_symbol": "BTC",
975
+ // "oi_value_usd": "0.0000",
976
+ // "open": 30464.0,
977
+ // "price_band": null,
978
+ // "product_id": 8320,
979
+ // "quotes": {},
980
+ // "size": 2.6816639999999996,
981
+ // "spot_price": "30637.91465121",
982
+ // "symbol": "BTC_USDT",
983
+ // "timestamp": 1689139767621299,
984
+ // "turnover": 2.6816639999999996,
985
+ // "turnover_symbol": "BTC",
986
+ // "turnover_usd": 81896.45613400004,
987
+ // "volume": 2.6816639999999996
988
+ // }
989
+ //
990
+ // swap: fetchTicker, fetchTickers
991
+ //
992
+ // {
993
+ // "close": 30600.5,
994
+ // "contract_type": "perpetual_futures",
995
+ // "funding_rate": "0.00602961",
996
+ // "greeks": null,
997
+ // "high": 30803.0,
998
+ // "low": 30265.5,
999
+ // "mark_basis": "-0.45601594",
1000
+ // "mark_price": "30600.10481568",
1001
+ // "oi": "469.9190",
1002
+ // "oi_change_usd_6h": "2226314.9900",
1003
+ // "oi_contracts": "469919",
1004
+ // "oi_value": "469.9190",
1005
+ // "oi_value_symbol": "BTC",
1006
+ // "oi_value_usd": "14385640.6802",
1007
+ // "open": 30458.5,
1008
+ // "price_band": {
1009
+ // "lower_limit": "29067.08312627",
1010
+ // "upper_limit": "32126.77608693"
1011
+ // },
1012
+ // "product_id": 139,
1013
+ // "quotes": {
1014
+ // "ask_iv": null,
1015
+ // "ask_size": "965",
1016
+ // "best_ask": "30600.5",
1017
+ // "best_bid": "30599.5",
1018
+ // "bid_iv": null,
1019
+ // "bid_size": "196",
1020
+ // "impact_mid_price": null,
1021
+ // "mark_iv": "-0.44931641"
1022
+ // },
1023
+ // "size": 1226303,
1024
+ // "spot_price": "30612.85362773",
1025
+ // "symbol": "BTCUSDT",
1026
+ // "timestamp": 1689136597460456,
1027
+ // "turnover": 37392218.45999999,
1028
+ // "turnover_symbol": "USDT",
1029
+ // "turnover_usd": 37392218.45999999,
1030
+ // "volume": 1226.3029999999485
1031
+ // }
1032
+ //
1033
+ // option: fetchTicker, fetchTickers
1034
+ //
1035
+ // {
1036
+ // "contract_type": "call_options",
1037
+ // "greeks": {
1038
+ // "delta": "0.60873994",
1039
+ // "gamma": "0.00014854",
1040
+ // "rho": "7.71808010",
1041
+ // "spot": "30598.49040622",
1042
+ // "theta": "-30.44743017",
1043
+ // "vega": "24.83508248"
1044
+ // },
1045
+ // "mark_price": "1347.74819696",
1046
+ // "mark_vol": "0.39966303",
1047
+ // "oi": "2.7810",
1048
+ // "oi_change_usd_6h": "0.0000",
1049
+ // "oi_contracts": "2781",
1050
+ // "oi_value": "2.7810",
1051
+ // "oi_value_symbol": "BTC",
1052
+ // "oi_value_usd": "85127.4337",
1053
+ // "price_band": {
1054
+ // "lower_limit": "91.27423497",
1055
+ // "upper_limit": "7846.19454697"
1056
+ // },
1057
+ // "product_id": 107150,
1058
+ // "quotes": {
1059
+ // "ask_iv": "0.41023239",
1060
+ // "ask_size": "2397",
1061
+ // "best_ask": "1374",
1062
+ // "best_bid": "1322",
1063
+ // "bid_iv": "0.38929375",
1064
+ // "bid_size": "3995",
1065
+ // "impact_mid_price": null,
1066
+ // "mark_iv": "0.39965618"
1067
+ // },
1068
+ // "spot_price": "30598.43379314",
1069
+ // "strike_price": "30000",
1070
+ // "symbol": "C-BTC-30000-280723",
1071
+ // "timestamp": 1689136932893181,
1072
+ // "turnover_symbol": "USDT"
1073
+ // }
1074
+ //
1075
+ const timestamp = this.safeIntegerProduct(ticker, 'timestamp', 0.001);
1076
+ const marketId = this.safeString(ticker, 'symbol');
1077
+ const symbol = this.safeSymbol(marketId, market);
1078
+ const last = this.safeString(ticker, 'close');
1079
+ const quotes = this.safeDict(ticker, 'quotes', {});
1080
+ return this.safeTicker({
1081
+ 'symbol': symbol,
1082
+ 'timestamp': timestamp,
1083
+ 'datetime': this.iso8601(timestamp),
1084
+ 'high': this.safeNumber(ticker, 'high'),
1085
+ 'low': this.safeNumber(ticker, 'low'),
1086
+ 'bid': this.safeNumber(quotes, 'best_bid'),
1087
+ 'bidVolume': this.safeNumber(quotes, 'bid_size'),
1088
+ 'ask': this.safeNumber(quotes, 'best_ask'),
1089
+ 'askVolume': this.safeNumber(quotes, 'ask_size'),
1090
+ 'vwap': undefined,
1091
+ 'open': this.safeString(ticker, 'open'),
1092
+ 'close': last,
1093
+ 'last': last,
1094
+ 'previousClose': undefined,
1095
+ 'change': undefined,
1096
+ 'percentage': undefined,
1097
+ 'average': undefined,
1098
+ 'baseVolume': this.safeNumber(ticker, 'volume'),
1099
+ 'quoteVolume': this.safeNumber(ticker, 'turnover'),
1100
+ 'markPrice': this.safeNumber(ticker, 'mark_price'),
1101
+ 'indexPrice': this.safeNumber(ticker, 'spot_price'),
1102
+ 'info': ticker,
1103
+ }, market);
1104
+ }
1105
+ /**
1106
+ * @method
1107
+ * @name delta#fetchTicker
1108
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1109
+ * @see https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
1110
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
1111
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1112
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1113
+ */
1114
+ async fetchTicker(symbol, params = {}) {
1115
+ await this.loadMarkets();
1116
+ const market = this.market(symbol);
1117
+ const request = {
1118
+ 'symbol': market['id'],
1119
+ };
1120
+ const response = await this.publicGetTickersSymbol(this.extend(request, params));
1121
+ //
1122
+ // spot
1123
+ //
1124
+ // {
1125
+ // "result": {
1126
+ // "close": 30634.0,
1127
+ // "contract_type": "spot",
1128
+ // "greeks": null,
1129
+ // "high": 30780.0,
1130
+ // "low": 30340.5,
1131
+ // "mark_price": "48000",
1132
+ // "oi": "0.0000",
1133
+ // "oi_change_usd_6h": "0.0000",
1134
+ // "oi_contracts": "0",
1135
+ // "oi_value": "0.0000",
1136
+ // "oi_value_symbol": "BTC",
1137
+ // "oi_value_usd": "0.0000",
1138
+ // "open": 30464.0,
1139
+ // "price_band": null,
1140
+ // "product_id": 8320,
1141
+ // "quotes": {},
1142
+ // "size": 2.6816639999999996,
1143
+ // "spot_price": "30637.91465121",
1144
+ // "symbol": "BTC_USDT",
1145
+ // "timestamp": 1689139767621299,
1146
+ // "turnover": 2.6816639999999996,
1147
+ // "turnover_symbol": "BTC",
1148
+ // "turnover_usd": 81896.45613400004,
1149
+ // "volume": 2.6816639999999996
1150
+ // },
1151
+ // "success": true
1152
+ // }
1153
+ //
1154
+ // swap
1155
+ //
1156
+ // {
1157
+ // "result": {
1158
+ // "close": 30600.5,
1159
+ // "contract_type": "perpetual_futures",
1160
+ // "funding_rate": "0.00602961",
1161
+ // "greeks": null,
1162
+ // "high": 30803.0,
1163
+ // "low": 30265.5,
1164
+ // "mark_basis": "-0.45601594",
1165
+ // "mark_price": "30600.10481568",
1166
+ // "oi": "469.9190",
1167
+ // "oi_change_usd_6h": "2226314.9900",
1168
+ // "oi_contracts": "469919",
1169
+ // "oi_value": "469.9190",
1170
+ // "oi_value_symbol": "BTC",
1171
+ // "oi_value_usd": "14385640.6802",
1172
+ // "open": 30458.5,
1173
+ // "price_band": {
1174
+ // "lower_limit": "29067.08312627",
1175
+ // "upper_limit": "32126.77608693"
1176
+ // },
1177
+ // "product_id": 139,
1178
+ // "quotes": {
1179
+ // "ask_iv": null,
1180
+ // "ask_size": "965",
1181
+ // "best_ask": "30600.5",
1182
+ // "best_bid": "30599.5",
1183
+ // "bid_iv": null,
1184
+ // "bid_size": "196",
1185
+ // "impact_mid_price": null,
1186
+ // "mark_iv": "-0.44931641"
1187
+ // },
1188
+ // "size": 1226303,
1189
+ // "spot_price": "30612.85362773",
1190
+ // "symbol": "BTCUSDT",
1191
+ // "timestamp": 1689136597460456,
1192
+ // "turnover": 37392218.45999999,
1193
+ // "turnover_symbol": "USDT",
1194
+ // "turnover_usd": 37392218.45999999,
1195
+ // "volume": 1226.3029999999485
1196
+ // },
1197
+ // "success": true
1198
+ // }
1199
+ //
1200
+ // option
1201
+ //
1202
+ // {
1203
+ // "result": {
1204
+ // "contract_type": "call_options",
1205
+ // "greeks": {
1206
+ // "delta": "0.60873994",
1207
+ // "gamma": "0.00014854",
1208
+ // "rho": "7.71808010",
1209
+ // "spot": "30598.49040622",
1210
+ // "theta": "-30.44743017",
1211
+ // "vega": "24.83508248"
1212
+ // },
1213
+ // "mark_price": "1347.74819696",
1214
+ // "mark_vol": "0.39966303",
1215
+ // "oi": "2.7810",
1216
+ // "oi_change_usd_6h": "0.0000",
1217
+ // "oi_contracts": "2781",
1218
+ // "oi_value": "2.7810",
1219
+ // "oi_value_symbol": "BTC",
1220
+ // "oi_value_usd": "85127.4337",
1221
+ // "price_band": {
1222
+ // "lower_limit": "91.27423497",
1223
+ // "upper_limit": "7846.19454697"
1224
+ // },
1225
+ // "product_id": 107150,
1226
+ // "quotes": {
1227
+ // "ask_iv": "0.41023239",
1228
+ // "ask_size": "2397",
1229
+ // "best_ask": "1374",
1230
+ // "best_bid": "1322",
1231
+ // "bid_iv": "0.38929375",
1232
+ // "bid_size": "3995",
1233
+ // "impact_mid_price": null,
1234
+ // "mark_iv": "0.39965618"
1235
+ // },
1236
+ // "spot_price": "30598.43379314",
1237
+ // "strike_price": "30000",
1238
+ // "symbol": "C-BTC-30000-280723",
1239
+ // "timestamp": 1689136932893181,
1240
+ // "turnover_symbol": "USDT"
1241
+ // },
1242
+ // "success": true
1243
+ // }
1244
+ //
1245
+ const result = this.safeDict(response, 'result', {});
1246
+ return this.parseTicker(result, market);
1247
+ }
1248
+ /**
1249
+ * @method
1250
+ * @name delta#fetchTickers
1251
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1252
+ * @see https://docs.delta.exchange/#get-tickers-for-products
1253
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1254
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1255
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1256
+ */
1257
+ async fetchTickers(symbols = undefined, params = {}) {
1258
+ await this.loadMarkets();
1259
+ symbols = this.marketSymbols(symbols);
1260
+ const response = await this.publicGetTickers(params);
1261
+ //
1262
+ // spot
1263
+ //
1264
+ // {
1265
+ // "result": [
1266
+ // {
1267
+ // "close": 30634.0,
1268
+ // "contract_type": "spot",
1269
+ // "greeks": null,
1270
+ // "high": 30780.0,
1271
+ // "low": 30340.5,
1272
+ // "mark_price": "48000",
1273
+ // "oi": "0.0000",
1274
+ // "oi_change_usd_6h": "0.0000",
1275
+ // "oi_contracts": "0",
1276
+ // "oi_value": "0.0000",
1277
+ // "oi_value_symbol": "BTC",
1278
+ // "oi_value_usd": "0.0000",
1279
+ // "open": 30464.0,
1280
+ // "price_band": null,
1281
+ // "product_id": 8320,
1282
+ // "quotes": {},
1283
+ // "size": 2.6816639999999996,
1284
+ // "spot_price": "30637.91465121",
1285
+ // "symbol": "BTC_USDT",
1286
+ // "timestamp": 1689139767621299,
1287
+ // "turnover": 2.6816639999999996,
1288
+ // "turnover_symbol": "BTC",
1289
+ // "turnover_usd": 81896.45613400004,
1290
+ // "volume": 2.6816639999999996
1291
+ // },
1292
+ // ],
1293
+ // "success":true
1294
+ // }
1295
+ //
1296
+ // swap
1297
+ //
1298
+ // {
1299
+ // "result": [
1300
+ // {
1301
+ // "close": 30600.5,
1302
+ // "contract_type": "perpetual_futures",
1303
+ // "funding_rate": "0.00602961",
1304
+ // "greeks": null,
1305
+ // "high": 30803.0,
1306
+ // "low": 30265.5,
1307
+ // "mark_basis": "-0.45601594",
1308
+ // "mark_price": "30600.10481568",
1309
+ // "oi": "469.9190",
1310
+ // "oi_change_usd_6h": "2226314.9900",
1311
+ // "oi_contracts": "469919",
1312
+ // "oi_value": "469.9190",
1313
+ // "oi_value_symbol": "BTC",
1314
+ // "oi_value_usd": "14385640.6802",
1315
+ // "open": 30458.5,
1316
+ // "price_band": {
1317
+ // "lower_limit": "29067.08312627",
1318
+ // "upper_limit": "32126.77608693"
1319
+ // },
1320
+ // "product_id": 139,
1321
+ // "quotes": {
1322
+ // "ask_iv": null,
1323
+ // "ask_size": "965",
1324
+ // "best_ask": "30600.5",
1325
+ // "best_bid": "30599.5",
1326
+ // "bid_iv": null,
1327
+ // "bid_size": "196",
1328
+ // "impact_mid_price": null,
1329
+ // "mark_iv": "-0.44931641"
1330
+ // },
1331
+ // "size": 1226303,
1332
+ // "spot_price": "30612.85362773",
1333
+ // "symbol": "BTCUSDT",
1334
+ // "timestamp": 1689136597460456,
1335
+ // "turnover": 37392218.45999999,
1336
+ // "turnover_symbol": "USDT",
1337
+ // "turnover_usd": 37392218.45999999,
1338
+ // "volume": 1226.3029999999485
1339
+ // },
1340
+ // ],
1341
+ // "success":true
1342
+ // }
1343
+ //
1344
+ // option
1345
+ //
1346
+ // {
1347
+ // "result": [
1348
+ // {
1349
+ // "contract_type": "call_options",
1350
+ // "greeks": {
1351
+ // "delta": "0.60873994",
1352
+ // "gamma": "0.00014854",
1353
+ // "rho": "7.71808010",
1354
+ // "spot": "30598.49040622",
1355
+ // "theta": "-30.44743017",
1356
+ // "vega": "24.83508248"
1357
+ // },
1358
+ // "mark_price": "1347.74819696",
1359
+ // "mark_vol": "0.39966303",
1360
+ // "oi": "2.7810",
1361
+ // "oi_change_usd_6h": "0.0000",
1362
+ // "oi_contracts": "2781",
1363
+ // "oi_value": "2.7810",
1364
+ // "oi_value_symbol": "BTC",
1365
+ // "oi_value_usd": "85127.4337",
1366
+ // "price_band": {
1367
+ // "lower_limit": "91.27423497",
1368
+ // "upper_limit": "7846.19454697"
1369
+ // },
1370
+ // "product_id": 107150,
1371
+ // "quotes": {
1372
+ // "ask_iv": "0.41023239",
1373
+ // "ask_size": "2397",
1374
+ // "best_ask": "1374",
1375
+ // "best_bid": "1322",
1376
+ // "bid_iv": "0.38929375",
1377
+ // "bid_size": "3995",
1378
+ // "impact_mid_price": null,
1379
+ // "mark_iv": "0.39965618"
1380
+ // },
1381
+ // "spot_price": "30598.43379314",
1382
+ // "strike_price": "30000",
1383
+ // "symbol": "C-BTC-30000-280723",
1384
+ // "timestamp": 1689136932893181,
1385
+ // "turnover_symbol": "USDT"
1386
+ // },
1387
+ // ],
1388
+ // "success":true
1389
+ // }
1390
+ //
1391
+ const tickers = this.safeList(response, 'result', []);
1392
+ const result = {};
1393
+ for (let i = 0; i < tickers.length; i++) {
1394
+ const ticker = this.parseTicker(tickers[i]);
1395
+ const symbol = ticker['symbol'];
1396
+ result[symbol] = ticker;
1397
+ }
1398
+ return this.filterByArrayTickers(result, 'symbol', symbols);
1399
+ }
1400
+ /**
1401
+ * @method
1402
+ * @name delta#fetchOrderBook
1403
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
1404
+ * @see https://docs.delta.exchange/#get-l2-orderbook
1405
+ * @param {string} symbol unified symbol of the market to fetch the order book for
1406
+ * @param {int} [limit] the maximum amount of order book entries to return
1407
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1408
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
1409
+ */
1410
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
1411
+ await this.loadMarkets();
1412
+ const market = this.market(symbol);
1413
+ const request = {
1414
+ 'symbol': market['id'],
1415
+ };
1416
+ if (limit !== undefined) {
1417
+ request['depth'] = limit;
1418
+ }
1419
+ const response = await this.publicGetL2orderbookSymbol(this.extend(request, params));
1420
+ //
1421
+ // {
1422
+ // "result":{
1423
+ // "buy":[
1424
+ // {"price":"15814.0","size":912},
1425
+ // {"price":"15813.5","size":1279},
1426
+ // {"price":"15813.0","size":1634},
1427
+ // ],
1428
+ // "sell":[
1429
+ // {"price":"15814.5","size":625},
1430
+ // {"price":"15815.0","size":982},
1431
+ // {"price":"15815.5","size":1328},
1432
+ // ],
1433
+ // "symbol":"BTCUSDT"
1434
+ // },
1435
+ // "success":true
1436
+ // }
1437
+ //
1438
+ const result = this.safeDict(response, 'result', {});
1439
+ return this.parseOrderBook(result, market['symbol'], undefined, 'buy', 'sell', 'price', 'size');
1440
+ }
1441
+ parseTrade(trade, market = undefined) {
1442
+ //
1443
+ // public fetchTrades
1444
+ //
1445
+ // {
1446
+ // "buyer_role":"maker",
1447
+ // "price":"15896.5",
1448
+ // "seller_role":"taker",
1449
+ // "size":241,
1450
+ // "symbol":"BTCUSDT",
1451
+ // "timestamp":1605376684714595
1452
+ // }
1453
+ //
1454
+ // private fetchMyTrades
1455
+ //
1456
+ // {
1457
+ // "commission":"0.008335000000000000",
1458
+ // "created_at":"2020-11-16T19:07:19Z",
1459
+ // "fill_type":"normal",
1460
+ // "id":"e7ff05c233a74245b72381f8dd91d1ce",
1461
+ // "meta_data":{
1462
+ // "effective_commission_rate":"0.0005",
1463
+ // "order_price":"16249",
1464
+ // "order_size":1,
1465
+ // "order_type":"market_order",
1466
+ // "order_unfilled_size":0,
1467
+ // "trading_fee_credits_used":"0"
1468
+ // },
1469
+ // "order_id":"152999629",
1470
+ // "price":"16669",
1471
+ // "product":{
1472
+ // "contract_type":"perpetual_futures",
1473
+ // "contract_unit_currency":"BTC",
1474
+ // "contract_value":"0.001",
1475
+ // "id":139,
1476
+ // "notional_type":"vanilla",
1477
+ // "quoting_asset":{"minimum_precision":2,"precision":6,"symbol":"USDT"},
1478
+ // "settling_asset":{"minimum_precision":2,"precision":6,"symbol":"USDT"},
1479
+ // "symbol":"BTCUSDT",
1480
+ // "tick_size":"0.5",
1481
+ // "underlying_asset":{"minimum_precision":4,"precision":8,"symbol":"BTC"}
1482
+ // },
1483
+ // "product_id":139,
1484
+ // "role":"taker",
1485
+ // "side":"sell",
1486
+ // "size":1
1487
+ // }
1488
+ //
1489
+ const id = this.safeString(trade, 'id');
1490
+ const orderId = this.safeString(trade, 'order_id');
1491
+ let timestamp = this.parse8601(this.safeString(trade, 'created_at'));
1492
+ timestamp = this.safeIntegerProduct(trade, 'timestamp', 0.001, timestamp);
1493
+ const priceString = this.safeString(trade, 'price');
1494
+ const amountString = this.safeString(trade, 'size');
1495
+ const product = this.safeDict(trade, 'product', {});
1496
+ const marketId = this.safeString(product, 'symbol');
1497
+ const symbol = this.safeSymbol(marketId, market);
1498
+ const sellerRole = this.safeString(trade, 'seller_role');
1499
+ let side = this.safeString(trade, 'side');
1500
+ if (side === undefined) {
1501
+ if (sellerRole === 'taker') {
1502
+ side = 'sell';
1503
+ }
1504
+ else if (sellerRole === 'maker') {
1505
+ side = 'buy';
1506
+ }
1507
+ }
1508
+ const takerOrMaker = this.safeString(trade, 'role');
1509
+ const metaData = this.safeDict(trade, 'meta_data', {});
1510
+ let type = this.safeString(metaData, 'order_type');
1511
+ if (type !== undefined) {
1512
+ type = type.replace('_order', '');
1513
+ }
1514
+ const feeCostString = this.safeString(trade, 'commission');
1515
+ let fee = undefined;
1516
+ if (feeCostString !== undefined) {
1517
+ const settlingAsset = this.safeDict(product, 'settling_asset', {});
1518
+ const feeCurrencyId = this.safeString(settlingAsset, 'symbol');
1519
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
1520
+ fee = {
1521
+ 'cost': feeCostString,
1522
+ 'currency': feeCurrencyCode,
1523
+ };
1524
+ }
1525
+ return this.safeTrade({
1526
+ 'id': id,
1527
+ 'order': orderId,
1528
+ 'timestamp': timestamp,
1529
+ 'datetime': this.iso8601(timestamp),
1530
+ 'symbol': symbol,
1531
+ 'type': type,
1532
+ 'side': side,
1533
+ 'price': priceString,
1534
+ 'amount': amountString,
1535
+ 'cost': undefined,
1536
+ 'takerOrMaker': takerOrMaker,
1537
+ 'fee': fee,
1538
+ 'info': trade,
1539
+ }, market);
1540
+ }
1541
+ /**
1542
+ * @method
1543
+ * @name delta#fetchTrades
1544
+ * @description get the list of most recent trades for a particular symbol
1545
+ * @see https://docs.delta.exchange/#get-public-trades
1546
+ * @param {string} symbol unified symbol of the market to fetch trades for
1547
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
1548
+ * @param {int} [limit] the maximum amount of trades to fetch
1549
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1550
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1551
+ */
1552
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1553
+ await this.loadMarkets();
1554
+ const market = this.market(symbol);
1555
+ const request = {
1556
+ 'symbol': market['id'],
1557
+ };
1558
+ const response = await this.publicGetTradesSymbol(this.extend(request, params));
1559
+ //
1560
+ // {
1561
+ // "result":[
1562
+ // {
1563
+ // "buyer_role":"maker",
1564
+ // "price":"15896.5",
1565
+ // "seller_role":"taker",
1566
+ // "size":241,
1567
+ // "symbol":"BTCUSDT",
1568
+ // "timestamp":1605376684714595
1569
+ // }
1570
+ // ],
1571
+ // "success":true
1572
+ // }
1573
+ //
1574
+ const result = this.safeList(response, 'result', []);
1575
+ return this.parseTrades(result, market, since, limit);
1576
+ }
1577
+ parseOHLCV(ohlcv, market = undefined) {
1578
+ //
1579
+ // {
1580
+ // "time":1605393120,
1581
+ // "open":15989,
1582
+ // "high":15989,
1583
+ // "low":15987.5,
1584
+ // "close":15987.5,
1585
+ // "volume":565
1586
+ // }
1587
+ //
1588
+ return [
1589
+ this.safeTimestamp(ohlcv, 'time'),
1590
+ this.safeNumber(ohlcv, 'open'),
1591
+ this.safeNumber(ohlcv, 'high'),
1592
+ this.safeNumber(ohlcv, 'low'),
1593
+ this.safeNumber(ohlcv, 'close'),
1594
+ this.safeNumber(ohlcv, 'volume'),
1595
+ ];
1596
+ }
1597
+ /**
1598
+ * @method
1599
+ * @name delta#fetchOHLCV
1600
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1601
+ * @see https://docs.delta.exchange/#delta-exchange-api-v2-historical-ohlc-candles-sparklines
1602
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1603
+ * @param {string} timeframe the length of time each candle represents
1604
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1605
+ * @param {int} [limit] the maximum amount of candles to fetch
1606
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1607
+ * @param {string} [params.until] timestamp in ms of the latest candle to fetch
1608
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1609
+ */
1610
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1611
+ await this.loadMarkets();
1612
+ const market = this.market(symbol);
1613
+ const request = {
1614
+ 'resolution': this.safeString(this.timeframes, timeframe, timeframe),
1615
+ };
1616
+ const duration = this.parseTimeframe(timeframe);
1617
+ limit = limit ? limit : 2000; // max 2000
1618
+ let until = this.safeIntegerProduct(params, 'until', 0.001);
1619
+ const untilIsDefined = (until !== undefined);
1620
+ if (untilIsDefined) {
1621
+ until = this.parseToInt(until);
1622
+ }
1623
+ if (since === undefined) {
1624
+ const end = untilIsDefined ? until : this.seconds();
1625
+ request['end'] = end;
1626
+ request['start'] = end - limit * duration;
1627
+ }
1628
+ else {
1629
+ const start = this.parseToInt(since / 1000);
1630
+ request['start'] = start;
1631
+ request['end'] = untilIsDefined ? until : this.sum(start, limit * duration);
1632
+ }
1633
+ const price = this.safeString(params, 'price');
1634
+ if (price === 'mark') {
1635
+ request['symbol'] = 'MARK:' + market['id'];
1636
+ }
1637
+ else if (price === 'index') {
1638
+ request['symbol'] = market['info']['spot_index']['symbol'];
1639
+ }
1640
+ else {
1641
+ request['symbol'] = market['id'];
1642
+ }
1643
+ params = this.omit(params, ['price', 'until']);
1644
+ const response = await this.publicGetHistoryCandles(this.extend(request, params));
1645
+ //
1646
+ // {
1647
+ // "success":true,
1648
+ // "result":[
1649
+ // {"time":1605393120,"open":15989,"high":15989,"low":15987.5,"close":15987.5,"volume":565},
1650
+ // {"time":1605393180,"open":15966,"high":15966,"low":15959,"close":15959,"volume":24},
1651
+ // {"time":1605393300,"open":15973,"high":15973,"low":15973,"close":15973,"volume":1288},
1652
+ // ]
1653
+ // }
1654
+ //
1655
+ const result = this.safeList(response, 'result', []);
1656
+ return this.parseOHLCVs(result, market, timeframe, since, limit);
1657
+ }
1658
+ parseBalance(response) {
1659
+ const balances = this.safeList(response, 'result', []);
1660
+ const result = { 'info': response };
1661
+ const currenciesByNumericId = this.safeDict(this.options, 'currenciesByNumericId', {});
1662
+ for (let i = 0; i < balances.length; i++) {
1663
+ const balance = balances[i];
1664
+ const currencyId = this.safeString(balance, 'asset_id');
1665
+ const currency = this.safeDict(currenciesByNumericId, currencyId);
1666
+ const code = (currency === undefined) ? currencyId : currency['code'];
1667
+ const account = this.account();
1668
+ account['total'] = this.safeString(balance, 'balance');
1669
+ account['free'] = this.safeString(balance, 'available_balance');
1670
+ result[code] = account;
1671
+ }
1672
+ return this.safeBalance(result);
1673
+ }
1674
+ /**
1675
+ * @method
1676
+ * @name delta#fetchBalance
1677
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1678
+ * @see https://docs.delta.exchange/#get-wallet-balances
1679
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1680
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1681
+ */
1682
+ async fetchBalance(params = {}) {
1683
+ await this.loadMarkets();
1684
+ const response = await this.privateGetWalletBalances(params);
1685
+ //
1686
+ // {
1687
+ // "result":[
1688
+ // {
1689
+ // "asset_id":1,
1690
+ // "available_balance":"0",
1691
+ // "balance":"0",
1692
+ // "commission":"0",
1693
+ // "id":154883,
1694
+ // "interest_credit":"0",
1695
+ // "order_margin":"0",
1696
+ // "pending_referral_bonus":"0",
1697
+ // "pending_trading_fee_credit":"0",
1698
+ // "position_margin":"0",
1699
+ // "trading_fee_credit":"0",
1700
+ // "user_id":22142
1701
+ // },
1702
+ // ],
1703
+ // "success":true
1704
+ // }
1705
+ //
1706
+ return this.parseBalance(response);
1707
+ }
1708
+ /**
1709
+ * @method
1710
+ * @name delta#fetchPosition
1711
+ * @description fetch data on a single open contract trade position
1712
+ * @see https://docs.delta.exchange/#get-position
1713
+ * @param {string} symbol unified market symbol of the market the position is held in, default is undefined
1714
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1715
+ * @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1716
+ */
1717
+ async fetchPosition(symbol, params = {}) {
1718
+ await this.loadMarkets();
1719
+ const market = this.market(symbol);
1720
+ const request = {
1721
+ 'product_id': market['numericId'],
1722
+ };
1723
+ const response = await this.privateGetPositions(this.extend(request, params));
1724
+ //
1725
+ // {
1726
+ // "result":{
1727
+ // "entry_price":null,
1728
+ // "size":0,
1729
+ // "timestamp":1605454074268079
1730
+ // },
1731
+ // "success":true
1732
+ // }
1733
+ //
1734
+ const result = this.safeDict(response, 'result', {});
1735
+ return this.parsePosition(result, market);
1736
+ }
1737
+ /**
1738
+ * @method
1739
+ * @name delta#fetchPositions
1740
+ * @description fetch all open positions
1741
+ * @see https://docs.delta.exchange/#get-margined-positions
1742
+ * @param {string[]|undefined} symbols list of unified market symbols
1743
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1744
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1745
+ */
1746
+ async fetchPositions(symbols = undefined, params = {}) {
1747
+ await this.loadMarkets();
1748
+ const response = await this.privateGetPositionsMargined(params);
1749
+ //
1750
+ // {
1751
+ // "success": true,
1752
+ // "result": [
1753
+ // {
1754
+ // "user_id": 0,
1755
+ // "size": 0,
1756
+ // "entry_price": "string",
1757
+ // "margin": "string",
1758
+ // "liquidation_price": "string",
1759
+ // "bankruptcy_price": "string",
1760
+ // "adl_level": 0,
1761
+ // "product_id": 0,
1762
+ // "product_symbol": "string",
1763
+ // "commission": "string",
1764
+ // "realized_pnl": "string",
1765
+ // "realized_funding": "string"
1766
+ // }
1767
+ // ]
1768
+ // }
1769
+ //
1770
+ const result = this.safeList(response, 'result', []);
1771
+ return this.parsePositions(result, symbols);
1772
+ }
1773
+ parsePosition(position, market = undefined) {
1774
+ //
1775
+ // fetchPosition
1776
+ //
1777
+ // {
1778
+ // "entry_price":null,
1779
+ // "size":0,
1780
+ // "timestamp":1605454074268079
1781
+ // }
1782
+ //
1783
+ //
1784
+ // fetchPositions
1785
+ //
1786
+ // {
1787
+ // "user_id": 0,
1788
+ // "size": 0,
1789
+ // "entry_price": "string",
1790
+ // "margin": "string",
1791
+ // "liquidation_price": "string",
1792
+ // "bankruptcy_price": "string",
1793
+ // "adl_level": 0,
1794
+ // "product_id": 0,
1795
+ // "product_symbol": "string",
1796
+ // "commission": "string",
1797
+ // "realized_pnl": "string",
1798
+ // "realized_funding": "string"
1799
+ // }
1800
+ //
1801
+ const marketId = this.safeString(position, 'product_symbol');
1802
+ market = this.safeMarket(marketId, market);
1803
+ const symbol = market['symbol'];
1804
+ const timestamp = this.safeIntegerProduct(position, 'timestamp', 0.001);
1805
+ const sizeString = this.safeString(position, 'size');
1806
+ let side = undefined;
1807
+ if (sizeString !== undefined) {
1808
+ if (Precise.stringGt(sizeString, '0')) {
1809
+ side = 'buy';
1810
+ }
1811
+ else if (Precise.stringLt(sizeString, '0')) {
1812
+ side = 'sell';
1813
+ }
1814
+ }
1815
+ return this.safePosition({
1816
+ 'info': position,
1817
+ 'id': undefined,
1818
+ 'symbol': symbol,
1819
+ 'notional': undefined,
1820
+ 'marginMode': undefined,
1821
+ 'liquidationPrice': this.safeNumber(position, 'liquidation_price'),
1822
+ 'entryPrice': this.safeNumber(position, 'entry_price'),
1823
+ 'unrealizedPnl': undefined,
1824
+ 'percentage': undefined,
1825
+ 'contracts': this.parseNumber(sizeString),
1826
+ 'contractSize': this.safeNumber(market, 'contractSize'),
1827
+ 'markPrice': undefined,
1828
+ 'side': side,
1829
+ 'hedged': undefined,
1830
+ 'timestamp': timestamp,
1831
+ 'datetime': this.iso8601(timestamp),
1832
+ 'maintenanceMargin': undefined,
1833
+ 'maintenanceMarginPercentage': undefined,
1834
+ 'collateral': undefined,
1835
+ 'initialMargin': undefined,
1836
+ 'initialMarginPercentage': undefined,
1837
+ 'leverage': undefined,
1838
+ 'marginRatio': undefined,
1839
+ 'stopLossPrice': undefined,
1840
+ 'takeProfitPrice': undefined,
1841
+ });
1842
+ }
1843
+ parseOrderStatus(status) {
1844
+ const statuses = {
1845
+ 'open': 'open',
1846
+ 'pending': 'open',
1847
+ 'closed': 'closed',
1848
+ 'cancelled': 'canceled',
1849
+ };
1850
+ return this.safeString(statuses, status, status);
1851
+ }
1852
+ parseOrder(order, market = undefined) {
1853
+ //
1854
+ // createOrder, cancelOrder, editOrder, fetchOpenOrders, fetchClosedOrders
1855
+ //
1856
+ // {
1857
+ // "average_fill_price":null,
1858
+ // "bracket_order":null,
1859
+ // "bracket_stop_loss_limit_price":null,
1860
+ // "bracket_stop_loss_price":null,
1861
+ // "bracket_take_profit_limit_price":null,
1862
+ // "bracket_take_profit_price":null,
1863
+ // "bracket_trail_amount":null,
1864
+ // "cancellation_reason":null,
1865
+ // "client_order_id":null,
1866
+ // "close_on_trigger":"false",
1867
+ // "commission":"0",
1868
+ // "created_at":"2020-11-16T02:38:26Z",
1869
+ // "id":152870626,
1870
+ // "limit_price":"10000",
1871
+ // "meta_data":{"source":"api"},
1872
+ // "order_type":"limit_order",
1873
+ // "paid_commission":"0",
1874
+ // "product_id":139,
1875
+ // "reduce_only":false,
1876
+ // "side":"buy",
1877
+ // "size":0,
1878
+ // "state":"open",
1879
+ // "stop_order_type":null,
1880
+ // "stop_price":null,
1881
+ // "stop_trigger_method":"mark_price",
1882
+ // "time_in_force":"gtc",
1883
+ // "trail_amount":null,
1884
+ // "unfilled_size":0,
1885
+ // "user_id":22142
1886
+ // }
1887
+ //
1888
+ const id = this.safeString(order, 'id');
1889
+ const clientOrderId = this.safeString(order, 'client_order_id');
1890
+ const timestamp = this.parse8601(this.safeString(order, 'created_at'));
1891
+ const marketId = this.safeString(order, 'product_id');
1892
+ const marketsByNumericId = this.safeDict(this.options, 'marketsByNumericId', {});
1893
+ market = this.safeValue(marketsByNumericId, marketId, market);
1894
+ const symbol = (market === undefined) ? marketId : market['symbol'];
1895
+ const status = this.parseOrderStatus(this.safeString(order, 'state'));
1896
+ const side = this.safeString(order, 'side');
1897
+ let type = this.safeString(order, 'order_type');
1898
+ type = type.replace('_order', '');
1899
+ const price = this.safeString(order, 'limit_price');
1900
+ const amount = this.safeString(order, 'size');
1901
+ const remaining = this.safeString(order, 'unfilled_size');
1902
+ const average = this.safeString(order, 'average_fill_price');
1903
+ let fee = undefined;
1904
+ const feeCostString = this.safeString(order, 'paid_commission');
1905
+ if (feeCostString !== undefined) {
1906
+ let feeCurrencyCode = undefined;
1907
+ if (market !== undefined) {
1908
+ const settlingAsset = this.safeDict(market['info'], 'settling_asset', {});
1909
+ const feeCurrencyId = this.safeString(settlingAsset, 'symbol');
1910
+ feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
1911
+ }
1912
+ fee = {
1913
+ 'cost': feeCostString,
1914
+ 'currency': feeCurrencyCode,
1915
+ };
1916
+ }
1917
+ return this.safeOrder({
1918
+ 'info': order,
1919
+ 'id': id,
1920
+ 'clientOrderId': clientOrderId,
1921
+ 'timestamp': timestamp,
1922
+ 'datetime': this.iso8601(timestamp),
1923
+ 'lastTradeTimestamp': undefined,
1924
+ 'symbol': symbol,
1925
+ 'type': type,
1926
+ 'side': side,
1927
+ 'price': price,
1928
+ 'amount': amount,
1929
+ 'cost': undefined,
1930
+ 'average': average,
1931
+ 'filled': undefined,
1932
+ 'remaining': remaining,
1933
+ 'status': status,
1934
+ 'fee': fee,
1935
+ 'trades': undefined,
1936
+ }, market);
1937
+ }
1938
+ /**
1939
+ * @method
1940
+ * @name delta#createOrder
1941
+ * @description create a trade order
1942
+ * @see https://docs.delta.exchange/#place-order
1943
+ * @param {string} symbol unified symbol of the market to create an order in
1944
+ * @param {string} type 'market' or 'limit'
1945
+ * @param {string} side 'buy' or 'sell'
1946
+ * @param {float} amount how much of currency you want to trade in units of base currency
1947
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1948
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1949
+ * @param {bool} [params.reduceOnly] *contract only* indicates if this order is to reduce the size of a position
1950
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1951
+ */
1952
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1953
+ await this.loadMarkets();
1954
+ const orderType = type + '_order';
1955
+ const market = this.market(symbol);
1956
+ const request = {
1957
+ 'product_id': market['numericId'],
1958
+ // 'limit_price': this.priceToPrecision (market['symbol'], price),
1959
+ 'size': this.amountToPrecision(market['symbol'], amount),
1960
+ 'side': side,
1961
+ 'order_type': orderType,
1962
+ // 'client_order_id': 'string',
1963
+ // 'time_in_force': 'gtc', // gtc, ioc, fok
1964
+ // 'post_only': 'false', // 'true',
1965
+ // 'reduce_only': 'false', // 'true',
1966
+ };
1967
+ if (type === 'limit') {
1968
+ request['limit_price'] = this.priceToPrecision(market['symbol'], price);
1969
+ }
1970
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'client_order_id');
1971
+ params = this.omit(params, ['clientOrderId', 'client_order_id']);
1972
+ if (clientOrderId !== undefined) {
1973
+ request['client_order_id'] = clientOrderId;
1974
+ }
1975
+ const reduceOnly = this.safeBool(params, 'reduceOnly');
1976
+ if (reduceOnly) {
1977
+ request['reduce_only'] = reduceOnly;
1978
+ params = this.omit(params, 'reduceOnly');
1979
+ }
1980
+ const response = await this.privatePostOrders(this.extend(request, params));
1981
+ //
1982
+ // {
1983
+ // "result":{
1984
+ // "average_fill_price":null,
1985
+ // "bracket_order":null,
1986
+ // "bracket_stop_loss_limit_price":null,
1987
+ // "bracket_stop_loss_price":null,
1988
+ // "bracket_take_profit_limit_price":null,
1989
+ // "bracket_take_profit_price":null,
1990
+ // "bracket_trail_amount":null,
1991
+ // "cancellation_reason":null,
1992
+ // "client_order_id":null,
1993
+ // "close_on_trigger":"false",
1994
+ // "commission":"0",
1995
+ // "created_at":"2020-11-16T02:38:26Z",
1996
+ // "id":152870626,
1997
+ // "limit_price":"10000",
1998
+ // "meta_data":{"source":"api"},
1999
+ // "order_type":"limit_order",
2000
+ // "paid_commission":"0",
2001
+ // "product_id":139,
2002
+ // "reduce_only":false,
2003
+ // "side":"buy",
2004
+ // "size":0,
2005
+ // "state":"open",
2006
+ // "stop_order_type":null,
2007
+ // "stop_price":null,
2008
+ // "stop_trigger_method":"mark_price",
2009
+ // "time_in_force":"gtc",
2010
+ // "trail_amount":null,
2011
+ // "unfilled_size":0,
2012
+ // "user_id":22142
2013
+ // },
2014
+ // "success":true
2015
+ // }
2016
+ //
2017
+ const result = this.safeDict(response, 'result', {});
2018
+ return this.parseOrder(result, market);
2019
+ }
2020
+ /**
2021
+ * @method
2022
+ * @name delta#editOrder
2023
+ * @description edit a trade order
2024
+ * @see https://docs.delta.exchange/#edit-order
2025
+ * @param {string} id order id
2026
+ * @param {string} symbol unified symbol of the market to create an order in
2027
+ * @param {string} type 'market' or 'limit'
2028
+ * @param {string} side 'buy' or 'sell'
2029
+ * @param {float} amount how much of the currency you want to trade in units of the base currency
2030
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency
2031
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2032
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2033
+ */
2034
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
2035
+ await this.loadMarkets();
2036
+ const market = this.market(symbol);
2037
+ const request = {
2038
+ 'id': parseInt(id),
2039
+ 'product_id': market['numericId'],
2040
+ // "limit_price": this.priceToPrecision (symbol, price),
2041
+ // "size": this.amountToPrecision (symbol, amount),
2042
+ };
2043
+ if (amount !== undefined) {
2044
+ request['size'] = parseInt(this.amountToPrecision(symbol, amount));
2045
+ }
2046
+ if (price !== undefined) {
2047
+ request['limit_price'] = this.priceToPrecision(symbol, price);
2048
+ }
2049
+ const response = await this.privatePutOrders(this.extend(request, params));
2050
+ //
2051
+ // {
2052
+ // "success": true,
2053
+ // "result": {
2054
+ // "id": "ashb1212",
2055
+ // "product_id": 27,
2056
+ // "limit_price": "9200",
2057
+ // "side": "buy",
2058
+ // "size": 100,
2059
+ // "unfilled_size": 50,
2060
+ // "user_id": 1,
2061
+ // "order_type": "limit_order",
2062
+ // "state": "open",
2063
+ // "created_at": "..."
2064
+ // }
2065
+ // }
2066
+ //
2067
+ const result = this.safeDict(response, 'result');
2068
+ return this.parseOrder(result, market);
2069
+ }
2070
+ /**
2071
+ * @method
2072
+ * @name delta#cancelOrder
2073
+ * @description cancels an open order
2074
+ * @see https://docs.delta.exchange/#cancel-order
2075
+ * @param {string} id order id
2076
+ * @param {string} symbol unified symbol of the market the order was made in
2077
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2078
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2079
+ */
2080
+ async cancelOrder(id, symbol = undefined, params = {}) {
2081
+ if (symbol === undefined) {
2082
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
2083
+ }
2084
+ await this.loadMarkets();
2085
+ const market = this.market(symbol);
2086
+ const request = {
2087
+ 'id': parseInt(id),
2088
+ 'product_id': market['numericId'],
2089
+ };
2090
+ const response = await this.privateDeleteOrders(this.extend(request, params));
2091
+ //
2092
+ // {
2093
+ // "result":{
2094
+ // "average_fill_price":null,
2095
+ // "bracket_order":null,
2096
+ // "bracket_stop_loss_limit_price":null,
2097
+ // "bracket_stop_loss_price":null,
2098
+ // "bracket_take_profit_limit_price":null,
2099
+ // "bracket_take_profit_price":null,
2100
+ // "bracket_trail_amount":null,
2101
+ // "cancellation_reason":"cancelled_by_user",
2102
+ // "client_order_id":null,
2103
+ // "close_on_trigger":"false",
2104
+ // "commission":"0",
2105
+ // "created_at":"2020-11-16T02:38:26Z",
2106
+ // "id":152870626,
2107
+ // "limit_price":"10000",
2108
+ // "meta_data":{"source":"api"},
2109
+ // "order_type":"limit_order",
2110
+ // "paid_commission":"0",
2111
+ // "product_id":139,
2112
+ // "reduce_only":false,
2113
+ // "side":"buy",
2114
+ // "size":0,
2115
+ // "state":"cancelled",
2116
+ // "stop_order_type":null,
2117
+ // "stop_price":null,
2118
+ // "stop_trigger_method":"mark_price",
2119
+ // "time_in_force":"gtc",
2120
+ // "trail_amount":null,
2121
+ // "unfilled_size":0,
2122
+ // "user_id":22142
2123
+ // },
2124
+ // "success":true
2125
+ // }
2126
+ //
2127
+ const result = this.safeDict(response, 'result');
2128
+ return this.parseOrder(result, market);
2129
+ }
2130
+ /**
2131
+ * @method
2132
+ * @name delta#cancelAllOrders
2133
+ * @description cancel all open orders in a market
2134
+ * @see https://docs.delta.exchange/#cancel-all-open-orders
2135
+ * @param {string} symbol unified market symbol of the market to cancel orders in
2136
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2137
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2138
+ */
2139
+ async cancelAllOrders(symbol = undefined, params = {}) {
2140
+ if (symbol === undefined) {
2141
+ throw new ArgumentsRequired(this.id + ' cancelAllOrders() requires a symbol argument');
2142
+ }
2143
+ await this.loadMarkets();
2144
+ const market = this.market(symbol);
2145
+ const request = {
2146
+ 'product_id': market['numericId'],
2147
+ // 'cancel_limit_orders': 'true',
2148
+ // 'cancel_stop_orders': 'true',
2149
+ };
2150
+ const response = this.privateDeleteOrdersAll(this.extend(request, params));
2151
+ //
2152
+ // {
2153
+ // "result":{},
2154
+ // "success":true
2155
+ // }
2156
+ //
2157
+ return [
2158
+ this.safeOrder({
2159
+ 'info': response,
2160
+ }),
2161
+ ];
2162
+ }
2163
+ /**
2164
+ * @method
2165
+ * @name delta#fetchOpenOrders
2166
+ * @description fetch all unfilled currently open orders
2167
+ * @see https://docs.delta.exchange/#get-active-orders
2168
+ * @param {string} symbol unified market symbol
2169
+ * @param {int} [since] the earliest time in ms to fetch open orders for
2170
+ * @param {int} [limit] the maximum number of open order structures to retrieve
2171
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2172
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2173
+ */
2174
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2175
+ return await this.fetchOrdersWithMethod('privateGetOrders', symbol, since, limit, params);
2176
+ }
2177
+ /**
2178
+ * @method
2179
+ * @name delta#fetchClosedOrders
2180
+ * @description fetches information on multiple closed orders made by the user
2181
+ * @see https://docs.delta.exchange/#get-order-history-cancelled-and-closed
2182
+ * @param {string} symbol unified market symbol of the market orders were made in
2183
+ * @param {int} [since] the earliest time in ms to fetch orders for
2184
+ * @param {int} [limit] the maximum number of order structures to retrieve
2185
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2186
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2187
+ */
2188
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2189
+ return await this.fetchOrdersWithMethod('privateGetOrdersHistory', symbol, since, limit, params);
2190
+ }
2191
+ async fetchOrdersWithMethod(method, symbol = undefined, since = undefined, limit = undefined, params = {}) {
2192
+ await this.loadMarkets();
2193
+ const request = {
2194
+ // 'product_ids': market['id'], // comma-separated
2195
+ // 'contract_types': types, // comma-separated, futures, perpetual_futures, call_options, put_options, interest_rate_swaps, move_options, spreads
2196
+ // 'order_types': types, // comma-separated, market, limit, stop_market, stop_limit, all_stop
2197
+ // 'start_time': since * 1000,
2198
+ // 'end_time': this.microseconds (),
2199
+ // 'after', // after cursor for pagination
2200
+ // 'before', // before cursor for pagination
2201
+ // 'page_size': limit, // number of records per page
2202
+ };
2203
+ let market = undefined;
2204
+ if (symbol !== undefined) {
2205
+ market = this.market(symbol);
2206
+ request['product_ids'] = market['numericId']; // accepts a comma-separated list of ids
2207
+ }
2208
+ if (since !== undefined) {
2209
+ request['start_time'] = since.toString() + '000';
2210
+ }
2211
+ if (limit !== undefined) {
2212
+ request['page_size'] = limit;
2213
+ }
2214
+ let response = undefined;
2215
+ if (method === 'privateGetOrders') {
2216
+ response = await this.privateGetOrders(this.extend(request, params));
2217
+ }
2218
+ else if (method === 'privateGetOrdersHistory') {
2219
+ response = await this.privateGetOrdersHistory(this.extend(request, params));
2220
+ }
2221
+ //
2222
+ // {
2223
+ // "success": true,
2224
+ // "result": [
2225
+ // {
2226
+ // "id": "ashb1212",
2227
+ // "product_id": 27,
2228
+ // "limit_price": "9200",
2229
+ // "side": "buy",
2230
+ // "size": 100,
2231
+ // "unfilled_size": 50,
2232
+ // "user_id": 1,
2233
+ // "order_type": "limit_order",
2234
+ // "state": "open",
2235
+ // "created_at": "..."
2236
+ // }
2237
+ // ],
2238
+ // "meta": {
2239
+ // "after": "string",
2240
+ // "before": "string"
2241
+ // }
2242
+ // }
2243
+ //
2244
+ const result = this.safeList(response, 'result', []);
2245
+ return this.parseOrders(result, market, since, limit);
2246
+ }
2247
+ /**
2248
+ * @method
2249
+ * @name delta#fetchMyTrades
2250
+ * @description fetch all trades made by the user
2251
+ * @see https://docs.delta.exchange/#get-user-fills-by-filters
2252
+ * @param {string} symbol unified market symbol
2253
+ * @param {int} [since] the earliest time in ms to fetch trades for
2254
+ * @param {int} [limit] the maximum number of trades structures to retrieve
2255
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2256
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2257
+ */
2258
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2259
+ await this.loadMarkets();
2260
+ const request = {
2261
+ // 'product_ids': market['id'], // comma-separated
2262
+ // 'contract_types': types, // comma-separated, futures, perpetual_futures, call_options, put_options, interest_rate_swaps, move_options, spreads
2263
+ // 'start_time': since * 1000,
2264
+ // 'end_time': this.microseconds (),
2265
+ // 'after', // after cursor for pagination
2266
+ // 'before', // before cursor for pagination
2267
+ // 'page_size': limit, // number of records per page
2268
+ };
2269
+ let market = undefined;
2270
+ if (symbol !== undefined) {
2271
+ market = this.market(symbol);
2272
+ request['product_ids'] = market['numericId']; // accepts a comma-separated list of ids
2273
+ }
2274
+ if (since !== undefined) {
2275
+ request['start_time'] = since.toString() + '000';
2276
+ }
2277
+ if (limit !== undefined) {
2278
+ request['page_size'] = limit;
2279
+ }
2280
+ const response = await this.privateGetFills(this.extend(request, params));
2281
+ //
2282
+ // {
2283
+ // "meta":{
2284
+ // "after":null,
2285
+ // "before":null,
2286
+ // "limit":10,
2287
+ // "total_count":2
2288
+ // },
2289
+ // "result":[
2290
+ // {
2291
+ // "commission":"0.008335000000000000",
2292
+ // "created_at":"2020-11-16T19:07:19Z",
2293
+ // "fill_type":"normal",
2294
+ // "id":"e7ff05c233a74245b72381f8dd91d1ce",
2295
+ // "meta_data":{
2296
+ // "effective_commission_rate":"0.0005",
2297
+ // "order_price":"16249",
2298
+ // "order_size":1,
2299
+ // "order_type":"market_order",
2300
+ // "order_unfilled_size":0,
2301
+ // "trading_fee_credits_used":"0"
2302
+ // },
2303
+ // "order_id":"152999629",
2304
+ // "price":"16669",
2305
+ // "product":{
2306
+ // "contract_type":"perpetual_futures",
2307
+ // "contract_unit_currency":"BTC",
2308
+ // "contract_value":"0.001",
2309
+ // "id":139,
2310
+ // "notional_type":"vanilla",
2311
+ // "quoting_asset":{"minimum_precision":2,"precision":6,"symbol":"USDT"},
2312
+ // "settling_asset":{"minimum_precision":2,"precision":6,"symbol":"USDT"},
2313
+ // "symbol":"BTCUSDT",
2314
+ // "tick_size":"0.5",
2315
+ // "underlying_asset":{"minimum_precision":4,"precision":8,"symbol":"BTC"}
2316
+ // },
2317
+ // "product_id":139,
2318
+ // "role":"taker",
2319
+ // "side":"sell",
2320
+ // "size":1
2321
+ // }
2322
+ // ],
2323
+ // "success":true
2324
+ // }
2325
+ //
2326
+ const result = this.safeList(response, 'result', []);
2327
+ return this.parseTrades(result, market, since, limit);
2328
+ }
2329
+ /**
2330
+ * @method
2331
+ * @name delta#fetchLedger
2332
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
2333
+ * @see https://docs.delta.exchange/#get-wallet-transactions
2334
+ * @param {string} [code] unified currency code, default is undefined
2335
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
2336
+ * @param {int} [limit] max number of ledger entries to return, default is undefined
2337
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2338
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
2339
+ */
2340
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
2341
+ await this.loadMarkets();
2342
+ const request = {
2343
+ // 'asset_id': currency['numericId'],
2344
+ // 'end_time': this.seconds (),
2345
+ // 'after': 'string', // after cursor for pagination
2346
+ // 'before': 'string', // before cursor for pagination
2347
+ // 'page_size': limit,
2348
+ };
2349
+ let currency = undefined;
2350
+ if (code !== undefined) {
2351
+ currency = this.currency(code);
2352
+ request['asset_id'] = currency['numericId'];
2353
+ }
2354
+ if (limit !== undefined) {
2355
+ request['page_size'] = limit;
2356
+ }
2357
+ const response = await this.privateGetWalletTransactions(this.extend(request, params));
2358
+ //
2359
+ // {
2360
+ // "meta":{"after":null,"before":null,"limit":10,"total_count":1},
2361
+ // "result":[
2362
+ // {
2363
+ // "amount":"29.889184",
2364
+ // "asset_id":5,
2365
+ // "balance":"29.889184",
2366
+ // "created_at":"2020-11-15T21:25:01Z",
2367
+ // "meta_data":{
2368
+ // "deposit_id":3884,
2369
+ // "transaction_id":"0x41a60174849828530abb5008e98fc63c9b598288743ec4ba9620bcce900a3b8d"
2370
+ // },
2371
+ // "transaction_type":"deposit",
2372
+ // "user_id":22142,
2373
+ // "uuid":"70bb5679da3c4637884e2dc63efaa846"
2374
+ // }
2375
+ // ],
2376
+ // "success":true
2377
+ // }
2378
+ //
2379
+ const result = this.safeList(response, 'result', []);
2380
+ return this.parseLedger(result, currency, since, limit);
2381
+ }
2382
+ parseLedgerEntryType(type) {
2383
+ const types = {
2384
+ 'pnl': 'pnl',
2385
+ 'deposit': 'transaction',
2386
+ 'withdrawal': 'transaction',
2387
+ 'commission': 'fee',
2388
+ 'conversion': 'trade',
2389
+ // 'perpetual_futures_funding': 'perpetual_futures_funding',
2390
+ // 'withdrawal_cancellation': 'withdrawal_cancellation',
2391
+ 'referral_bonus': 'referral',
2392
+ 'commission_rebate': 'rebate',
2393
+ // 'promo_credit': 'promo_credit',
2394
+ };
2395
+ return this.safeString(types, type, type);
2396
+ }
2397
+ parseLedgerEntry(item, currency = undefined) {
2398
+ //
2399
+ // {
2400
+ // "amount":"29.889184",
2401
+ // "asset_id":5,
2402
+ // "balance":"29.889184",
2403
+ // "created_at":"2020-11-15T21:25:01Z",
2404
+ // "meta_data":{
2405
+ // "deposit_id":3884,
2406
+ // "transaction_id":"0x41a60174849828530abb5008e98fc63c9b598288743ec4ba9620bcce900a3b8d"
2407
+ // },
2408
+ // "transaction_type":"deposit",
2409
+ // "user_id":22142,
2410
+ // "uuid":"70bb5679da3c4637884e2dc63efaa846"
2411
+ // }
2412
+ //
2413
+ const id = this.safeString(item, 'uuid');
2414
+ let direction = undefined;
2415
+ const account = undefined;
2416
+ const metaData = this.safeDict(item, 'meta_data', {});
2417
+ const referenceId = this.safeString(metaData, 'transaction_id');
2418
+ const referenceAccount = undefined;
2419
+ let type = this.safeString(item, 'transaction_type');
2420
+ if ((type === 'deposit') || (type === 'commission_rebate') || (type === 'referral_bonus') || (type === 'pnl') || (type === 'withdrawal_cancellation') || (type === 'promo_credit')) {
2421
+ direction = 'in';
2422
+ }
2423
+ else if ((type === 'withdrawal') || (type === 'commission') || (type === 'conversion') || (type === 'perpetual_futures_funding')) {
2424
+ direction = 'out';
2425
+ }
2426
+ type = this.parseLedgerEntryType(type);
2427
+ const currencyId = this.safeString(item, 'asset_id');
2428
+ const currenciesByNumericId = this.safeDict(this.options, 'currenciesByNumericId');
2429
+ currency = this.safeValue(currenciesByNumericId, currencyId, currency);
2430
+ const code = (currency === undefined) ? undefined : currency['code'];
2431
+ const amount = this.safeString(item, 'amount');
2432
+ const timestamp = this.parse8601(this.safeString(item, 'created_at'));
2433
+ const after = this.safeString(item, 'balance');
2434
+ const before = Precise.stringMax('0', Precise.stringSub(after, amount));
2435
+ const status = 'ok';
2436
+ return this.safeLedgerEntry({
2437
+ 'info': item,
2438
+ 'id': id,
2439
+ 'direction': direction,
2440
+ 'account': account,
2441
+ 'referenceId': referenceId,
2442
+ 'referenceAccount': referenceAccount,
2443
+ 'type': type,
2444
+ 'currency': code,
2445
+ 'amount': this.parseNumber(amount),
2446
+ 'before': this.parseNumber(before),
2447
+ 'after': this.parseNumber(after),
2448
+ 'status': status,
2449
+ 'timestamp': timestamp,
2450
+ 'datetime': this.iso8601(timestamp),
2451
+ 'fee': undefined,
2452
+ }, currency);
2453
+ }
2454
+ /**
2455
+ * @method
2456
+ * @name delta#fetchDepositAddress
2457
+ * @description fetch the deposit address for a currency associated with this account
2458
+ * @param {string} code unified currency code
2459
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2460
+ * @param {string} [params.network] unified network code
2461
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2462
+ */
2463
+ async fetchDepositAddress(code, params = {}) {
2464
+ await this.loadMarkets();
2465
+ const currency = this.currency(code);
2466
+ const request = {
2467
+ 'asset_symbol': currency['id'],
2468
+ };
2469
+ const networkCode = this.safeStringUpper(params, 'network');
2470
+ if (networkCode !== undefined) {
2471
+ request['network'] = this.networkCodeToId(networkCode, code);
2472
+ params = this.omit(params, 'network');
2473
+ }
2474
+ const response = await this.privateGetDepositsAddress(this.extend(request, params));
2475
+ //
2476
+ // {
2477
+ // "success": true,
2478
+ // "result": {
2479
+ // "id": 1915615,
2480
+ // "user_id": 27854758,
2481
+ // "address": "TXYB4GdKsXKEWbeSNPsmGZu4ZVCkhVh1Zz",
2482
+ // "memo": "",
2483
+ // "status": "active",
2484
+ // "updated_at": "2023-01-12T06:03:46.000Z",
2485
+ // "created_at": "2023-01-12T06:03:46.000Z",
2486
+ // "asset_symbol": "USDT",
2487
+ // "network": "TRC20(TRON)",
2488
+ // "custodian": "fireblocks"
2489
+ // }
2490
+ // }
2491
+ //
2492
+ const result = this.safeDict(response, 'result', {});
2493
+ return this.parseDepositAddress(result, currency);
2494
+ }
2495
+ parseDepositAddress(depositAddress, currency = undefined) {
2496
+ //
2497
+ // {
2498
+ // "id": 1915615,
2499
+ // "user_id": 27854758,
2500
+ // "address": "TXYB4GdKsXKEWbeSNPsmGZu4ZVCkhVh1Zz",
2501
+ // "memo": "",
2502
+ // "status": "active",
2503
+ // "updated_at": "2023-01-12T06:03:46.000Z",
2504
+ // "created_at": "2023-01-12T06:03:46.000Z",
2505
+ // "asset_symbol": "USDT",
2506
+ // "network": "TRC20(TRON)",
2507
+ // "custodian": "fireblocks"
2508
+ // }
2509
+ //
2510
+ const address = this.safeString(depositAddress, 'address');
2511
+ const marketId = this.safeString(depositAddress, 'asset_symbol');
2512
+ const networkId = this.safeString(depositAddress, 'network');
2513
+ this.checkAddress(address);
2514
+ return {
2515
+ 'info': depositAddress,
2516
+ 'currency': this.safeCurrencyCode(marketId, currency),
2517
+ 'network': this.networkIdToCode(networkId),
2518
+ 'address': address,
2519
+ 'tag': this.safeString(depositAddress, 'memo'),
2520
+ };
2521
+ }
2522
+ /**
2523
+ * @method
2524
+ * @name delta#fetchFundingRate
2525
+ * @description fetch the current funding rate
2526
+ * @see https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2527
+ * @param {string} symbol unified market symbol
2528
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2529
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2530
+ */
2531
+ async fetchFundingRate(symbol, params = {}) {
2532
+ await this.loadMarkets();
2533
+ const market = this.market(symbol);
2534
+ if (!market['swap']) {
2535
+ throw new BadSymbol(this.id + ' fetchFundingRate() supports swap contracts only');
2536
+ }
2537
+ const request = {
2538
+ 'symbol': market['id'],
2539
+ };
2540
+ const response = await this.publicGetTickersSymbol(this.extend(request, params));
2541
+ //
2542
+ // {
2543
+ // "result": {
2544
+ // "close": 30600.5,
2545
+ // "contract_type": "perpetual_futures",
2546
+ // "funding_rate": "0.00602961",
2547
+ // "greeks": null,
2548
+ // "high": 30803.0,
2549
+ // "low": 30265.5,
2550
+ // "mark_basis": "-0.45601594",
2551
+ // "mark_price": "30600.10481568",
2552
+ // "oi": "469.9190",
2553
+ // "oi_change_usd_6h": "2226314.9900",
2554
+ // "oi_contracts": "469919",
2555
+ // "oi_value": "469.9190",
2556
+ // "oi_value_symbol": "BTC",
2557
+ // "oi_value_usd": "14385640.6802",
2558
+ // "open": 30458.5,
2559
+ // "price_band": {
2560
+ // "lower_limit": "29067.08312627",
2561
+ // "upper_limit": "32126.77608693"
2562
+ // },
2563
+ // "product_id": 139,
2564
+ // "quotes": {
2565
+ // "ask_iv": null,
2566
+ // "ask_size": "965",
2567
+ // "best_ask": "30600.5",
2568
+ // "best_bid": "30599.5",
2569
+ // "bid_iv": null,
2570
+ // "bid_size": "196",
2571
+ // "impact_mid_price": null,
2572
+ // "mark_iv": "-0.44931641"
2573
+ // },
2574
+ // "size": 1226303,
2575
+ // "spot_price": "30612.85362773",
2576
+ // "symbol": "BTCUSDT",
2577
+ // "timestamp": 1689136597460456,
2578
+ // "turnover": 37392218.45999999,
2579
+ // "turnover_symbol": "USDT",
2580
+ // "turnover_usd": 37392218.45999999,
2581
+ // "volume": 1226.3029999999485
2582
+ // },
2583
+ // "success": true
2584
+ // }
2585
+ //
2586
+ const result = this.safeDict(response, 'result', {});
2587
+ return this.parseFundingRate(result, market);
2588
+ }
2589
+ /**
2590
+ * @method
2591
+ * @name delta#fetchFundingRates
2592
+ * @description fetch the funding rate for multiple markets
2593
+ * @see https://docs.delta.exchange/#get-tickers-for-products
2594
+ * @param {string[]|undefined} symbols list of unified market symbols
2595
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2596
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
2597
+ */
2598
+ async fetchFundingRates(symbols = undefined, params = {}) {
2599
+ await this.loadMarkets();
2600
+ symbols = this.marketSymbols(symbols);
2601
+ const request = {
2602
+ 'contract_types': 'perpetual_futures',
2603
+ };
2604
+ const response = await this.publicGetTickers(this.extend(request, params));
2605
+ //
2606
+ // {
2607
+ // "result": [
2608
+ // {
2609
+ // "close": 30600.5,
2610
+ // "contract_type": "perpetual_futures",
2611
+ // "funding_rate": "0.00602961",
2612
+ // "greeks": null,
2613
+ // "high": 30803.0,
2614
+ // "low": 30265.5,
2615
+ // "mark_basis": "-0.45601594",
2616
+ // "mark_price": "30600.10481568",
2617
+ // "oi": "469.9190",
2618
+ // "oi_change_usd_6h": "2226314.9900",
2619
+ // "oi_contracts": "469919",
2620
+ // "oi_value": "469.9190",
2621
+ // "oi_value_symbol": "BTC",
2622
+ // "oi_value_usd": "14385640.6802",
2623
+ // "open": 30458.5,
2624
+ // "price_band": {
2625
+ // "lower_limit": "29067.08312627",
2626
+ // "upper_limit": "32126.77608693"
2627
+ // },
2628
+ // "product_id": 139,
2629
+ // "quotes": {
2630
+ // "ask_iv": null,
2631
+ // "ask_size": "965",
2632
+ // "best_ask": "30600.5",
2633
+ // "best_bid": "30599.5",
2634
+ // "bid_iv": null,
2635
+ // "bid_size": "196",
2636
+ // "impact_mid_price": null,
2637
+ // "mark_iv": "-0.44931641"
2638
+ // },
2639
+ // "size": 1226303,
2640
+ // "spot_price": "30612.85362773",
2641
+ // "symbol": "BTCUSDT",
2642
+ // "timestamp": 1689136597460456,
2643
+ // "turnover": 37392218.45999999,
2644
+ // "turnover_symbol": "USDT",
2645
+ // "turnover_usd": 37392218.45999999,
2646
+ // "volume": 1226.3029999999485
2647
+ // },
2648
+ // ],
2649
+ // "success":true
2650
+ // }
2651
+ //
2652
+ const rates = this.safeList(response, 'result', []);
2653
+ return this.parseFundingRates(rates, symbols);
2654
+ }
2655
+ parseFundingRate(contract, market = undefined) {
2656
+ //
2657
+ // {
2658
+ // "close": 30600.5,
2659
+ // "contract_type": "perpetual_futures",
2660
+ // "funding_rate": "0.00602961",
2661
+ // "greeks": null,
2662
+ // "high": 30803.0,
2663
+ // "low": 30265.5,
2664
+ // "mark_basis": "-0.45601594",
2665
+ // "mark_price": "30600.10481568",
2666
+ // "oi": "469.9190",
2667
+ // "oi_change_usd_6h": "2226314.9900",
2668
+ // "oi_contracts": "469919",
2669
+ // "oi_value": "469.9190",
2670
+ // "oi_value_symbol": "BTC",
2671
+ // "oi_value_usd": "14385640.6802",
2672
+ // "open": 30458.5,
2673
+ // "price_band": {
2674
+ // "lower_limit": "29067.08312627",
2675
+ // "upper_limit": "32126.77608693"
2676
+ // },
2677
+ // "product_id": 139,
2678
+ // "quotes": {
2679
+ // "ask_iv": null,
2680
+ // "ask_size": "965",
2681
+ // "best_ask": "30600.5",
2682
+ // "best_bid": "30599.5",
2683
+ // "bid_iv": null,
2684
+ // "bid_size": "196",
2685
+ // "impact_mid_price": null,
2686
+ // "mark_iv": "-0.44931641"
2687
+ // },
2688
+ // "size": 1226303,
2689
+ // "spot_price": "30612.85362773",
2690
+ // "symbol": "BTCUSDT",
2691
+ // "timestamp": 1689136597460456,
2692
+ // "turnover": 37392218.45999999,
2693
+ // "turnover_symbol": "USDT",
2694
+ // "turnover_usd": 37392218.45999999,
2695
+ // "volume": 1226.3029999999485
2696
+ // }
2697
+ //
2698
+ const timestamp = this.safeIntegerProduct(contract, 'timestamp', 0.001);
2699
+ const marketId = this.safeString(contract, 'symbol');
2700
+ const fundingRateString = this.safeString(contract, 'funding_rate');
2701
+ const fundingRate = Precise.stringDiv(fundingRateString, '100');
2702
+ return {
2703
+ 'info': contract,
2704
+ 'symbol': this.safeSymbol(marketId, market),
2705
+ 'markPrice': this.safeNumber(contract, 'mark_price'),
2706
+ 'indexPrice': this.safeNumber(contract, 'spot_price'),
2707
+ 'interestRate': undefined,
2708
+ 'estimatedSettlePrice': undefined,
2709
+ 'timestamp': timestamp,
2710
+ 'datetime': this.iso8601(timestamp),
2711
+ 'fundingRate': this.parseNumber(fundingRate),
2712
+ 'fundingTimestamp': undefined,
2713
+ 'fundingDatetime': undefined,
2714
+ 'nextFundingRate': undefined,
2715
+ 'nextFundingTimestamp': undefined,
2716
+ 'nextFundingDatetime': undefined,
2717
+ 'previousFundingRate': undefined,
2718
+ 'previousFundingTimestamp': undefined,
2719
+ 'previousFundingDatetime': undefined,
2720
+ 'interval': undefined,
2721
+ };
2722
+ }
2723
+ /**
2724
+ * @method
2725
+ * @name delta#addMargin
2726
+ * @description add margin
2727
+ * @see https://docs.delta.exchange/#add-remove-position-margin
2728
+ * @param {string} symbol unified market symbol
2729
+ * @param {float} amount amount of margin to add
2730
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2731
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=add-margin-structure}
2732
+ */
2733
+ async addMargin(symbol, amount, params = {}) {
2734
+ return await this.modifyMarginHelper(symbol, amount, 'add', params);
2735
+ }
2736
+ /**
2737
+ * @method
2738
+ * @name delta#reduceMargin
2739
+ * @description remove margin from a position
2740
+ * @see https://docs.delta.exchange/#add-remove-position-margin
2741
+ * @param {string} symbol unified market symbol
2742
+ * @param {float} amount the amount of margin to remove
2743
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2744
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=reduce-margin-structure}
2745
+ */
2746
+ async reduceMargin(symbol, amount, params = {}) {
2747
+ return await this.modifyMarginHelper(symbol, amount, 'reduce', params);
2748
+ }
2749
+ async modifyMarginHelper(symbol, amount, type, params = {}) {
2750
+ await this.loadMarkets();
2751
+ const market = this.market(symbol);
2752
+ amount = amount.toString();
2753
+ if (type === 'reduce') {
2754
+ amount = Precise.stringMul(amount, '-1');
2755
+ }
2756
+ const request = {
2757
+ 'product_id': market['numericId'],
2758
+ 'delta_margin': amount,
2759
+ };
2760
+ const response = await this.privatePostPositionsChangeMargin(this.extend(request, params));
2761
+ //
2762
+ // {
2763
+ // "result": {
2764
+ // "auto_topup": false,
2765
+ // "bankruptcy_price": "24934.12",
2766
+ // "commission": "0.01197072",
2767
+ // "created_at": "2023-07-20T03:49:09.159401Z",
2768
+ // "entry_price": "29926.8",
2769
+ // "liquidation_price": "25083.754",
2770
+ // "margin": "4.99268",
2771
+ // "margin_mode": "isolated",
2772
+ // "product_id": 84,
2773
+ // "product_symbol": "BTCUSDT",
2774
+ // "realized_cashflow": "0",
2775
+ // "realized_funding": "0",
2776
+ // "realized_pnl": "0",
2777
+ // "size": 1,
2778
+ // "updated_at": "2023-07-20T03:49:09.159401Z",
2779
+ // "user_id": 30084879
2780
+ // },
2781
+ // "success": true
2782
+ // }
2783
+ //
2784
+ const result = this.safeDict(response, 'result', {});
2785
+ return this.parseMarginModification(result, market);
2786
+ }
2787
+ parseMarginModification(data, market = undefined) {
2788
+ //
2789
+ // {
2790
+ // "auto_topup": false,
2791
+ // "bankruptcy_price": "24934.12",
2792
+ // "commission": "0.01197072",
2793
+ // "created_at": "2023-07-20T03:49:09.159401Z",
2794
+ // "entry_price": "29926.8",
2795
+ // "liquidation_price": "25083.754",
2796
+ // "margin": "4.99268",
2797
+ // "margin_mode": "isolated",
2798
+ // "product_id": 84,
2799
+ // "product_symbol": "BTCUSDT",
2800
+ // "realized_cashflow": "0",
2801
+ // "realized_funding": "0",
2802
+ // "realized_pnl": "0",
2803
+ // "size": 1,
2804
+ // "updated_at": "2023-07-20T03:49:09.159401Z",
2805
+ // "user_id": 30084879
2806
+ // }
2807
+ //
2808
+ const marketId = this.safeString(data, 'product_symbol');
2809
+ market = this.safeMarket(marketId, market);
2810
+ return {
2811
+ 'info': data,
2812
+ 'symbol': market['symbol'],
2813
+ 'type': undefined,
2814
+ 'marginMode': 'isolated',
2815
+ 'amount': undefined,
2816
+ 'total': this.safeNumber(data, 'margin'),
2817
+ 'code': undefined,
2818
+ 'status': undefined,
2819
+ 'timestamp': undefined,
2820
+ 'datetime': undefined,
2821
+ };
2822
+ }
2823
+ /**
2824
+ * @method
2825
+ * @name delta#fetchOpenInterest
2826
+ * @description retrieves the open interest of a derivative market
2827
+ * @see https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2828
+ * @param {string} symbol unified market symbol
2829
+ * @param {object} [params] exchange specific parameters
2830
+ * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
2831
+ */
2832
+ async fetchOpenInterest(symbol, params = {}) {
2833
+ await this.loadMarkets();
2834
+ const market = this.market(symbol);
2835
+ if (!market['contract']) {
2836
+ throw new BadRequest(this.id + ' fetchOpenInterest() supports contract markets only');
2837
+ }
2838
+ const request = {
2839
+ 'symbol': market['id'],
2840
+ };
2841
+ const response = await this.publicGetTickersSymbol(this.extend(request, params));
2842
+ //
2843
+ // {
2844
+ // "result": {
2845
+ // "close": 894.0,
2846
+ // "contract_type": "call_options",
2847
+ // "greeks": {
2848
+ // "delta": "0.67324861",
2849
+ // "gamma": "0.00022178",
2850
+ // "rho": "4.34638266",
2851
+ // "spot": "30178.53195697",
2852
+ // "theta": "-35.64972577",
2853
+ // "vega": "16.34381277"
2854
+ // },
2855
+ // "high": 946.0,
2856
+ // "low": 893.0,
2857
+ // "mark_price": "1037.07582681",
2858
+ // "mark_vol": "0.35899491",
2859
+ // "oi": "0.0910",
2860
+ // "oi_change_usd_6h": "-90.5500",
2861
+ // "oi_contracts": "91",
2862
+ // "oi_value": "0.0910",
2863
+ // "oi_value_symbol": "BTC",
2864
+ // "oi_value_usd": "2746.3549",
2865
+ // "open": 946.0,
2866
+ // "price_band": {
2867
+ // "lower_limit": "133.37794509",
2868
+ // "upper_limit": "5663.66930164"
2869
+ // },
2870
+ // "product_id": 116171,
2871
+ // "quotes": {
2872
+ // "ask_iv": "0.36932389",
2873
+ // "ask_size": "1321",
2874
+ // "best_ask": "1054",
2875
+ // "best_bid": "1020",
2876
+ // "bid_iv": "0.34851914",
2877
+ // "bid_size": "2202",
2878
+ // "impact_mid_price": null,
2879
+ // "mark_iv": "0.35896335"
2880
+ // },
2881
+ // "size": 152,
2882
+ // "spot_price": "30178.53195697",
2883
+ // "strike_price": "29500",
2884
+ // "symbol": "C-BTC-29500-280723",
2885
+ // "timestamp": 1689834695286094,
2886
+ // "turnover": 4546.601744940001,
2887
+ // "turnover_symbol": "USDT",
2888
+ // "turnover_usd": 4546.601744940001,
2889
+ // "volume": 0.15200000000000002
2890
+ // },
2891
+ // "success": true
2892
+ // }
2893
+ //
2894
+ const result = this.safeDict(response, 'result', {});
2895
+ return this.parseOpenInterest(result, market);
2896
+ }
2897
+ parseOpenInterest(interest, market = undefined) {
2898
+ //
2899
+ // {
2900
+ // "close": 894.0,
2901
+ // "contract_type": "call_options",
2902
+ // "greeks": {
2903
+ // "delta": "0.67324861",
2904
+ // "gamma": "0.00022178",
2905
+ // "rho": "4.34638266",
2906
+ // "spot": "30178.53195697",
2907
+ // "theta": "-35.64972577",
2908
+ // "vega": "16.34381277"
2909
+ // },
2910
+ // "high": 946.0,
2911
+ // "low": 893.0,
2912
+ // "mark_price": "1037.07582681",
2913
+ // "mark_vol": "0.35899491",
2914
+ // "oi": "0.0910",
2915
+ // "oi_change_usd_6h": "-90.5500",
2916
+ // "oi_contracts": "91",
2917
+ // "oi_value": "0.0910",
2918
+ // "oi_value_symbol": "BTC",
2919
+ // "oi_value_usd": "2746.3549",
2920
+ // "open": 946.0,
2921
+ // "price_band": {
2922
+ // "lower_limit": "133.37794509",
2923
+ // "upper_limit": "5663.66930164"
2924
+ // },
2925
+ // "product_id": 116171,
2926
+ // "quotes": {
2927
+ // "ask_iv": "0.36932389",
2928
+ // "ask_size": "1321",
2929
+ // "best_ask": "1054",
2930
+ // "best_bid": "1020",
2931
+ // "bid_iv": "0.34851914",
2932
+ // "bid_size": "2202",
2933
+ // "impact_mid_price": null,
2934
+ // "mark_iv": "0.35896335"
2935
+ // },
2936
+ // "size": 152,
2937
+ // "spot_price": "30178.53195697",
2938
+ // "strike_price": "29500",
2939
+ // "symbol": "C-BTC-29500-280723",
2940
+ // "timestamp": 1689834695286094,
2941
+ // "turnover": 4546.601744940001,
2942
+ // "turnover_symbol": "USDT",
2943
+ // "turnover_usd": 4546.601744940001,
2944
+ // "volume": 0.15200000000000002
2945
+ // }
2946
+ //
2947
+ const timestamp = this.safeIntegerProduct(interest, 'timestamp', 0.001);
2948
+ const marketId = this.safeString(interest, 'symbol');
2949
+ return this.safeOpenInterest({
2950
+ 'symbol': this.safeSymbol(marketId, market),
2951
+ 'baseVolume': this.safeNumber(interest, 'oi_value'),
2952
+ 'quoteVolume': this.safeNumber(interest, 'oi_value_usd'),
2953
+ 'openInterestAmount': this.safeNumber(interest, 'oi_contracts'),
2954
+ 'openInterestValue': this.safeNumber(interest, 'oi'),
2955
+ 'timestamp': timestamp,
2956
+ 'datetime': this.iso8601(timestamp),
2957
+ 'info': interest,
2958
+ }, market);
2959
+ }
2960
+ /**
2961
+ * @method
2962
+ * @name delta#fetchLeverage
2963
+ * @description fetch the set leverage for a market
2964
+ * @see https://docs.delta.exchange/#get-order-leverage
2965
+ * @param {string} symbol unified market symbol
2966
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2967
+ * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
2968
+ */
2969
+ async fetchLeverage(symbol, params = {}) {
2970
+ await this.loadMarkets();
2971
+ const market = this.market(symbol);
2972
+ const request = {
2973
+ 'product_id': market['numericId'],
2974
+ };
2975
+ const response = await this.privateGetProductsProductIdOrdersLeverage(this.extend(request, params));
2976
+ //
2977
+ // {
2978
+ // "result": {
2979
+ // "index_symbol": null,
2980
+ // "leverage": "10",
2981
+ // "margin_mode": "isolated",
2982
+ // "order_margin": "0",
2983
+ // "product_id": 84,
2984
+ // "user_id": 30084879
2985
+ // },
2986
+ // "success": true
2987
+ // }
2988
+ //
2989
+ const result = this.safeDict(response, 'result', {});
2990
+ return this.parseLeverage(result, market);
2991
+ }
2992
+ parseLeverage(leverage, market = undefined) {
2993
+ const marketId = this.safeString(leverage, 'index_symbol');
2994
+ const leverageValue = this.safeInteger(leverage, 'leverage');
2995
+ return {
2996
+ 'info': leverage,
2997
+ 'symbol': this.safeSymbol(marketId, market),
2998
+ 'marginMode': this.safeStringLower(leverage, 'margin_mode'),
2999
+ 'longLeverage': leverageValue,
3000
+ 'shortLeverage': leverageValue,
3001
+ };
3002
+ }
3003
+ /**
3004
+ * @method
3005
+ * @name delta#setLeverage
3006
+ * @description set the level of leverage for a market
3007
+ * @see https://docs.delta.exchange/#change-order-leverage
3008
+ * @param {float} leverage the rate of leverage
3009
+ * @param {string} symbol unified market symbol
3010
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3011
+ * @returns {object} response from the exchange
3012
+ */
3013
+ async setLeverage(leverage, symbol = undefined, params = {}) {
3014
+ if (symbol === undefined) {
3015
+ throw new ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
3016
+ }
3017
+ await this.loadMarkets();
3018
+ const market = this.market(symbol);
3019
+ const request = {
3020
+ 'product_id': market['numericId'],
3021
+ 'leverage': leverage,
3022
+ };
3023
+ //
3024
+ // {
3025
+ // "result": {
3026
+ // "leverage": "20",
3027
+ // "margin_mode": "isolated",
3028
+ // "order_margin": "0",
3029
+ // "product_id": 84
3030
+ // },
3031
+ // "success": true
3032
+ // }
3033
+ //
3034
+ return await this.privatePostProductsProductIdOrdersLeverage(this.extend(request, params));
3035
+ }
3036
+ /**
3037
+ * @method
3038
+ * @name delta#fetchSettlementHistory
3039
+ * @description fetches historical settlement records
3040
+ * @see https://docs.delta.exchange/#get-product-settlement-prices
3041
+ * @param {string} symbol unified market symbol of the settlement history
3042
+ * @param {int} [since] timestamp in ms
3043
+ * @param {int} [limit] number of records
3044
+ * @param {object} [params] exchange specific params
3045
+ * @returns {object[]} a list of [settlement history objects]{@link https://docs.ccxt.com/#/?id=settlement-history-structure}
3046
+ */
3047
+ async fetchSettlementHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
3048
+ await this.loadMarkets();
3049
+ let market = undefined;
3050
+ if (symbol !== undefined) {
3051
+ market = this.market(symbol);
3052
+ }
3053
+ const request = {
3054
+ 'states': 'expired',
3055
+ };
3056
+ if (limit !== undefined) {
3057
+ request['page_size'] = limit;
3058
+ }
3059
+ const response = await this.publicGetProducts(this.extend(request, params));
3060
+ //
3061
+ // {
3062
+ // "result": [
3063
+ // {
3064
+ // "contract_value": "0.001",
3065
+ // "basis_factor_max_limit": "10.95",
3066
+ // "maker_commission_rate": "0.0003",
3067
+ // "launch_time": "2023-07-19T04:30:03Z",
3068
+ // "trading_status": "operational",
3069
+ // "product_specs": {
3070
+ // "backup_vol_expiry_time": 31536000,
3071
+ // "max_deviation_from_external_vol": 0.75,
3072
+ // "max_lower_deviation_from_external_vol": 0.75,
3073
+ // "max_upper_deviation_from_external_vol": 0.5,
3074
+ // "max_volatility": 3,
3075
+ // "min_volatility": 0.1,
3076
+ // "premium_commission_rate": 0.1,
3077
+ // "settlement_index_price": "29993.536675710806",
3078
+ // "vol_calculation_method": "orderbook",
3079
+ // "vol_expiry_time": 31536000
3080
+ // },
3081
+ // "description": "BTC call option expiring on 19-7-2023",
3082
+ // "settlement_price": "0",
3083
+ // "disruption_reason": null,
3084
+ // "settling_asset": {},
3085
+ // "initial_margin": "1",
3086
+ // "tick_size": "0.1",
3087
+ // "maintenance_margin": "0.5",
3088
+ // "id": 117542,
3089
+ // "notional_type": "vanilla",
3090
+ // "ui_config": {},
3091
+ // "contract_unit_currency": "BTC",
3092
+ // "symbol": "C-BTC-30900-190723",
3093
+ // "insurance_fund_margin_contribution": "1",
3094
+ // "price_band": "2",
3095
+ // "annualized_funding": "10.95",
3096
+ // "impact_size": 200,
3097
+ // "contract_type": "call_options",
3098
+ // "position_size_limit": 255633,
3099
+ // "max_leverage_notional": "200000",
3100
+ // "initial_margin_scaling_factor": "0.000002",
3101
+ // "strike_price": "30900",
3102
+ // "is_quanto": false,
3103
+ // "settlement_time": "2023-07-19T12:00:00Z",
3104
+ // "liquidation_penalty_factor": "0.5",
3105
+ // "funding_method": "mark_price",
3106
+ // "taker_commission_rate": "0.0003",
3107
+ // "default_leverage": "100.000000000000000000",
3108
+ // "state": "expired",
3109
+ // "auction_start_time": null,
3110
+ // "short_description": "BTC Call",
3111
+ // "quoting_asset": {},
3112
+ // "maintenance_margin_scaling_factor":"0.000002"
3113
+ // }
3114
+ // ],
3115
+ // "success": true
3116
+ // }
3117
+ //
3118
+ const result = this.safeList(response, 'result', []);
3119
+ const settlements = this.parseSettlements(result, market);
3120
+ const sorted = this.sortBy(settlements, 'timestamp');
3121
+ return this.filterBySymbolSinceLimit(sorted, market['symbol'], since, limit);
3122
+ }
3123
+ parseSettlement(settlement, market) {
3124
+ //
3125
+ // {
3126
+ // "contract_value": "0.001",
3127
+ // "basis_factor_max_limit": "10.95",
3128
+ // "maker_commission_rate": "0.0003",
3129
+ // "launch_time": "2023-07-19T04:30:03Z",
3130
+ // "trading_status": "operational",
3131
+ // "product_specs": {
3132
+ // "backup_vol_expiry_time": 31536000,
3133
+ // "max_deviation_from_external_vol": 0.75,
3134
+ // "max_lower_deviation_from_external_vol": 0.75,
3135
+ // "max_upper_deviation_from_external_vol": 0.5,
3136
+ // "max_volatility": 3,
3137
+ // "min_volatility": 0.1,
3138
+ // "premium_commission_rate": 0.1,
3139
+ // "settlement_index_price": "29993.536675710806",
3140
+ // "vol_calculation_method": "orderbook",
3141
+ // "vol_expiry_time": 31536000
3142
+ // },
3143
+ // "description": "BTC call option expiring on 19-7-2023",
3144
+ // "settlement_price": "0",
3145
+ // "disruption_reason": null,
3146
+ // "settling_asset": {},
3147
+ // "initial_margin": "1",
3148
+ // "tick_size": "0.1",
3149
+ // "maintenance_margin": "0.5",
3150
+ // "id": 117542,
3151
+ // "notional_type": "vanilla",
3152
+ // "ui_config": {},
3153
+ // "contract_unit_currency": "BTC",
3154
+ // "symbol": "C-BTC-30900-190723",
3155
+ // "insurance_fund_margin_contribution": "1",
3156
+ // "price_band": "2",
3157
+ // "annualized_funding": "10.95",
3158
+ // "impact_size": 200,
3159
+ // "contract_type": "call_options",
3160
+ // "position_size_limit": 255633,
3161
+ // "max_leverage_notional": "200000",
3162
+ // "initial_margin_scaling_factor": "0.000002",
3163
+ // "strike_price": "30900",
3164
+ // "is_quanto": false,
3165
+ // "settlement_time": "2023-07-19T12:00:00Z",
3166
+ // "liquidation_penalty_factor": "0.5",
3167
+ // "funding_method": "mark_price",
3168
+ // "taker_commission_rate": "0.0003",
3169
+ // "default_leverage": "100.000000000000000000",
3170
+ // "state": "expired",
3171
+ // "auction_start_time": null,
3172
+ // "short_description": "BTC Call",
3173
+ // "quoting_asset": {},
3174
+ // "maintenance_margin_scaling_factor":"0.000002"
3175
+ // }
3176
+ //
3177
+ const datetime = this.safeString(settlement, 'settlement_time');
3178
+ const marketId = this.safeString(settlement, 'symbol');
3179
+ return {
3180
+ 'info': settlement,
3181
+ 'symbol': this.safeSymbol(marketId, market),
3182
+ 'price': this.safeNumber(settlement, 'settlement_price'),
3183
+ 'timestamp': this.parse8601(datetime),
3184
+ 'datetime': datetime,
3185
+ };
3186
+ }
3187
+ parseSettlements(settlements, market) {
3188
+ const result = [];
3189
+ for (let i = 0; i < settlements.length; i++) {
3190
+ result.push(this.parseSettlement(settlements[i], market));
3191
+ }
3192
+ return result;
3193
+ }
3194
+ /**
3195
+ * @method
3196
+ * @name delta#fetchGreeks
3197
+ * @description fetches an option contracts greeks, financial metrics used to measure the factors that affect the price of an options contract
3198
+ * @see https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3199
+ * @param {string} symbol unified symbol of the market to fetch greeks for
3200
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3201
+ * @returns {object} a [greeks structure]{@link https://docs.ccxt.com/#/?id=greeks-structure}
3202
+ */
3203
+ async fetchGreeks(symbol, params = {}) {
3204
+ await this.loadMarkets();
3205
+ const market = this.market(symbol);
3206
+ const request = {
3207
+ 'symbol': market['id'],
3208
+ };
3209
+ const response = await this.publicGetTickersSymbol(this.extend(request, params));
3210
+ //
3211
+ // {
3212
+ // "result": {
3213
+ // "close": 6793.0,
3214
+ // "contract_type": "call_options",
3215
+ // "greeks": {
3216
+ // "delta": "0.94739174",
3217
+ // "gamma": "0.00002206",
3218
+ // "rho": "11.00890725",
3219
+ // "spot": "36839.58124652",
3220
+ // "theta": "-18.18365310",
3221
+ // "vega": "7.85209698"
3222
+ // },
3223
+ // "high": 7556.0,
3224
+ // "low": 6793.0,
3225
+ // "mark_price": "6955.70698909",
3226
+ // "mark_vol": "0.66916863",
3227
+ // "oi": "1.8980",
3228
+ // "oi_change_usd_6h": "110.4600",
3229
+ // "oi_contracts": "1898",
3230
+ // "oi_value": "1.8980",
3231
+ // "oi_value_symbol": "BTC",
3232
+ // "oi_value_usd": "69940.7319",
3233
+ // "open": 7.2e3,
3234
+ // "price_band": {
3235
+ // "lower_limit": "5533.89814767",
3236
+ // "upper_limit": "11691.37688371"
3237
+ // },
3238
+ // "product_id": 129508,
3239
+ // "quotes": {
3240
+ // "ask_iv": "0.90180438",
3241
+ // "ask_size": "1898",
3242
+ // "best_ask": "7210",
3243
+ // "best_bid": "6913",
3244
+ // "bid_iv": "0.60881706",
3245
+ // "bid_size": "3163",
3246
+ // "impact_mid_price": null,
3247
+ // "mark_iv": "0.66973549"
3248
+ // },
3249
+ // "size": 5,
3250
+ // "spot_price": "36839.58153868",
3251
+ // "strike_price": "30000",
3252
+ // "symbol": "C-BTC-30000-241123",
3253
+ // "timestamp": 1699584998504530,
3254
+ // "turnover": 184.41206804,
3255
+ // "turnover_symbol": "USDT",
3256
+ // "turnover_usd": 184.41206804,
3257
+ // "volume": 0.005
3258
+ // },
3259
+ // "success": true
3260
+ // }
3261
+ //
3262
+ const result = this.safeDict(response, 'result', {});
3263
+ return this.parseGreeks(result, market);
3264
+ }
3265
+ parseGreeks(greeks, market = undefined) {
3266
+ //
3267
+ // {
3268
+ // "close": 6793.0,
3269
+ // "contract_type": "call_options",
3270
+ // "greeks": {
3271
+ // "delta": "0.94739174",
3272
+ // "gamma": "0.00002206",
3273
+ // "rho": "11.00890725",
3274
+ // "spot": "36839.58124652",
3275
+ // "theta": "-18.18365310",
3276
+ // "vega": "7.85209698"
3277
+ // },
3278
+ // "high": 7556.0,
3279
+ // "low": 6793.0,
3280
+ // "mark_price": "6955.70698909",
3281
+ // "mark_vol": "0.66916863",
3282
+ // "oi": "1.8980",
3283
+ // "oi_change_usd_6h": "110.4600",
3284
+ // "oi_contracts": "1898",
3285
+ // "oi_value": "1.8980",
3286
+ // "oi_value_symbol": "BTC",
3287
+ // "oi_value_usd": "69940.7319",
3288
+ // "open": 7.2e3,
3289
+ // "price_band": {
3290
+ // "lower_limit": "5533.89814767",
3291
+ // "upper_limit": "11691.37688371"
3292
+ // },
3293
+ // "product_id": 129508,
3294
+ // "quotes": {
3295
+ // "ask_iv": "0.90180438",
3296
+ // "ask_size": "1898",
3297
+ // "best_ask": "7210",
3298
+ // "best_bid": "6913",
3299
+ // "bid_iv": "0.60881706",
3300
+ // "bid_size": "3163",
3301
+ // "impact_mid_price": null,
3302
+ // "mark_iv": "0.66973549"
3303
+ // },
3304
+ // "size": 5,
3305
+ // "spot_price": "36839.58153868",
3306
+ // "strike_price": "30000",
3307
+ // "symbol": "C-BTC-30000-241123",
3308
+ // "timestamp": 1699584998504530,
3309
+ // "turnover": 184.41206804,
3310
+ // "turnover_symbol": "USDT",
3311
+ // "turnover_usd": 184.41206804,
3312
+ // "volume": 0.005
3313
+ // }
3314
+ //
3315
+ const timestamp = this.safeIntegerProduct(greeks, 'timestamp', 0.001);
3316
+ const marketId = this.safeString(greeks, 'symbol');
3317
+ const symbol = this.safeSymbol(marketId, market);
3318
+ const stats = this.safeDict(greeks, 'greeks', {});
3319
+ const quotes = this.safeDict(greeks, 'quotes', {});
3320
+ return {
3321
+ 'symbol': symbol,
3322
+ 'timestamp': timestamp,
3323
+ 'datetime': this.iso8601(timestamp),
3324
+ 'delta': this.safeNumber(stats, 'delta'),
3325
+ 'gamma': this.safeNumber(stats, 'gamma'),
3326
+ 'theta': this.safeNumber(stats, 'theta'),
3327
+ 'vega': this.safeNumber(stats, 'vega'),
3328
+ 'rho': this.safeNumber(stats, 'rho'),
3329
+ 'bidSize': this.safeNumber(quotes, 'bid_size'),
3330
+ 'askSize': this.safeNumber(quotes, 'ask_size'),
3331
+ 'bidImpliedVolatility': this.safeNumber(quotes, 'bid_iv'),
3332
+ 'askImpliedVolatility': this.safeNumber(quotes, 'ask_iv'),
3333
+ 'markImpliedVolatility': this.safeNumber(quotes, 'mark_iv'),
3334
+ 'bidPrice': this.safeNumber(quotes, 'best_bid'),
3335
+ 'askPrice': this.safeNumber(quotes, 'best_ask'),
3336
+ 'markPrice': this.safeNumber(greeks, 'mark_price'),
3337
+ 'lastPrice': undefined,
3338
+ 'underlyingPrice': this.safeNumber(greeks, 'spot_price'),
3339
+ 'info': greeks,
3340
+ };
3341
+ }
3342
+ /**
3343
+ * @method
3344
+ * @name delta#closeAllPositions
3345
+ * @description closes all open positions for a market type
3346
+ * @see https://docs.delta.exchange/#close-all-positions
3347
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3348
+ * @param {int} [params.user_id] the users id
3349
+ * @returns {object[]} A list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
3350
+ */
3351
+ async closeAllPositions(params = {}) {
3352
+ await this.loadMarkets();
3353
+ const request = {
3354
+ 'close_all_portfolio': true,
3355
+ 'close_all_isolated': true,
3356
+ // 'user_id': 12345,
3357
+ };
3358
+ const response = await this.privatePostPositionsCloseAll(this.extend(request, params));
3359
+ //
3360
+ // {"result":{},"success":true}
3361
+ //
3362
+ const position = this.parsePosition(this.safeDict(response, 'result', {}));
3363
+ return [position];
3364
+ }
3365
+ /**
3366
+ * @method
3367
+ * @name delta#fetchMarginMode
3368
+ * @description fetches the margin mode of a trading pair
3369
+ * @see https://docs.delta.exchange/#get-user
3370
+ * @param {string} symbol unified symbol of the market to fetch the margin mode for
3371
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3372
+ * @returns {object} a [margin mode structure]{@link https://docs.ccxt.com/#/?id=margin-mode-structure}
3373
+ */
3374
+ async fetchMarginMode(symbol, params = {}) {
3375
+ await this.loadMarkets();
3376
+ let market = undefined;
3377
+ if (symbol !== undefined) {
3378
+ market = this.market(symbol);
3379
+ }
3380
+ const response = await this.privateGetProfile(params);
3381
+ //
3382
+ // {
3383
+ // "result": {
3384
+ // "is_password_set": true,
3385
+ // "kyc_expiry_date": null,
3386
+ // "phishing_code": "12345",
3387
+ // "preferences": {
3388
+ // "favorites": []
3389
+ // },
3390
+ // "is_kyc_provisioned": false,
3391
+ // "country": "Canada",
3392
+ // "margin_mode": "isolated",
3393
+ // "mfa_updated_at": "2023-07-19T01:04:43Z",
3394
+ // "last_name": "",
3395
+ // "oauth_apple_active": false,
3396
+ // "pf_index_symbol": null,
3397
+ // "proof_of_identity_status": "approved",
3398
+ // "dob": null,
3399
+ // "email": "abc_123@gmail.com",
3400
+ // "force_change_password": false,
3401
+ // "nick_name": "still-breeze-123",
3402
+ // "oauth_google_active": false,
3403
+ // "phone_verification_status": "verified",
3404
+ // "id": 12345678,
3405
+ // "last_seen": null,
3406
+ // "is_withdrawal_enabled": true,
3407
+ // "force_change_mfa": false,
3408
+ // "enable_bots": false,
3409
+ // "kyc_verified_on": null,
3410
+ // "created_at": "2023-07-19T01:02:32Z",
3411
+ // "withdrawal_blocked_till": null,
3412
+ // "proof_of_address_status": "approved",
3413
+ // "is_password_change_blocked": false,
3414
+ // "is_mfa_enabled": true,
3415
+ // "is_kyc_done": true,
3416
+ // "oauth": null,
3417
+ // "account_name": "Main",
3418
+ // "sub_account_permissions": null,
3419
+ // "phone_number": null,
3420
+ // "tracking_info": {
3421
+ // "ga_cid": "1234.4321",
3422
+ // "is_kyc_gtm_tracked": true,
3423
+ // "sub_account_config": {
3424
+ // "cross": 2,
3425
+ // "isolated": 2,
3426
+ // "portfolio": 2
3427
+ // }
3428
+ // },
3429
+ // "first_name": "",
3430
+ // "phone_verified_on": null,
3431
+ // "seen_intro": false,
3432
+ // "password_updated_at": null,
3433
+ // "is_login_enabled": true,
3434
+ // "registration_date": "2023-07-19T01:02:32Z",
3435
+ // "permissions": {},
3436
+ // "max_sub_accounts_limit": 2,
3437
+ // "country_calling_code": null,
3438
+ // "is_sub_account": false,
3439
+ // "is_kyc_refresh_required": false
3440
+ // },
3441
+ // "success": true
3442
+ // }
3443
+ //
3444
+ const result = this.safeDict(response, 'result', {});
3445
+ return this.parseMarginMode(result, market);
3446
+ }
3447
+ parseMarginMode(marginMode, market = undefined) {
3448
+ let symbol = undefined;
3449
+ if (market !== undefined) {
3450
+ symbol = market['symbol'];
3451
+ }
3452
+ return {
3453
+ 'info': marginMode,
3454
+ 'symbol': symbol,
3455
+ 'marginMode': this.safeString(marginMode, 'margin_mode'),
3456
+ };
3457
+ }
3458
+ /**
3459
+ * @method
3460
+ * @name delta#fetchOption
3461
+ * @description fetches option data that is commonly found in an option chain
3462
+ * @see https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3463
+ * @param {string} symbol unified market symbol
3464
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3465
+ * @returns {object} an [option chain structure]{@link https://docs.ccxt.com/#/?id=option-chain-structure}
3466
+ */
3467
+ async fetchOption(symbol, params = {}) {
3468
+ await this.loadMarkets();
3469
+ const market = this.market(symbol);
3470
+ const request = {
3471
+ 'symbol': market['id'],
3472
+ };
3473
+ const response = await this.publicGetTickersSymbol(this.extend(request, params));
3474
+ //
3475
+ // {
3476
+ // "result": {
3477
+ // "close": 6793.0,
3478
+ // "contract_type": "call_options",
3479
+ // "greeks": {
3480
+ // "delta": "0.94739174",
3481
+ // "gamma": "0.00002206",
3482
+ // "rho": "11.00890725",
3483
+ // "spot": "36839.58124652",
3484
+ // "theta": "-18.18365310",
3485
+ // "vega": "7.85209698"
3486
+ // },
3487
+ // "high": 7556.0,
3488
+ // "low": 6793.0,
3489
+ // "mark_price": "6955.70698909",
3490
+ // "mark_vol": "0.66916863",
3491
+ // "oi": "1.8980",
3492
+ // "oi_change_usd_6h": "110.4600",
3493
+ // "oi_contracts": "1898",
3494
+ // "oi_value": "1.8980",
3495
+ // "oi_value_symbol": "BTC",
3496
+ // "oi_value_usd": "69940.7319",
3497
+ // "open": 7.2e3,
3498
+ // "price_band": {
3499
+ // "lower_limit": "5533.89814767",
3500
+ // "upper_limit": "11691.37688371"
3501
+ // },
3502
+ // "product_id": 129508,
3503
+ // "quotes": {
3504
+ // "ask_iv": "0.90180438",
3505
+ // "ask_size": "1898",
3506
+ // "best_ask": "7210",
3507
+ // "best_bid": "6913",
3508
+ // "bid_iv": "0.60881706",
3509
+ // "bid_size": "3163",
3510
+ // "impact_mid_price": null,
3511
+ // "mark_iv": "0.66973549"
3512
+ // },
3513
+ // "size": 5,
3514
+ // "spot_price": "36839.58153868",
3515
+ // "strike_price": "30000",
3516
+ // "symbol": "C-BTC-30000-241123",
3517
+ // "timestamp": 1699584998504530,
3518
+ // "turnover": 184.41206804,
3519
+ // "turnover_symbol": "USDT",
3520
+ // "turnover_usd": 184.41206804,
3521
+ // "volume": 0.005
3522
+ // },
3523
+ // "success": true
3524
+ // }
3525
+ //
3526
+ const result = this.safeDict(response, 'result', {});
3527
+ return this.parseOption(result, undefined, market);
3528
+ }
3529
+ parseOption(chain, currency = undefined, market = undefined) {
3530
+ //
3531
+ // {
3532
+ // "close": 6793.0,
3533
+ // "contract_type": "call_options",
3534
+ // "greeks": {
3535
+ // "delta": "0.94739174",
3536
+ // "gamma": "0.00002206",
3537
+ // "rho": "11.00890725",
3538
+ // "spot": "36839.58124652",
3539
+ // "theta": "-18.18365310",
3540
+ // "vega": "7.85209698"
3541
+ // },
3542
+ // "high": 7556.0,
3543
+ // "low": 6793.0,
3544
+ // "mark_price": "6955.70698909",
3545
+ // "mark_vol": "0.66916863",
3546
+ // "oi": "1.8980",
3547
+ // "oi_change_usd_6h": "110.4600",
3548
+ // "oi_contracts": "1898",
3549
+ // "oi_value": "1.8980",
3550
+ // "oi_value_symbol": "BTC",
3551
+ // "oi_value_usd": "69940.7319",
3552
+ // "open": 7.2e3,
3553
+ // "price_band": {
3554
+ // "lower_limit": "5533.89814767",
3555
+ // "upper_limit": "11691.37688371"
3556
+ // },
3557
+ // "product_id": 129508,
3558
+ // "quotes": {
3559
+ // "ask_iv": "0.90180438",
3560
+ // "ask_size": "1898",
3561
+ // "best_ask": "7210",
3562
+ // "best_bid": "6913",
3563
+ // "bid_iv": "0.60881706",
3564
+ // "bid_size": "3163",
3565
+ // "impact_mid_price": null,
3566
+ // "mark_iv": "0.66973549"
3567
+ // },
3568
+ // "size": 5,
3569
+ // "spot_price": "36839.58153868",
3570
+ // "strike_price": "30000",
3571
+ // "symbol": "C-BTC-30000-241123",
3572
+ // "timestamp": 1699584998504530,
3573
+ // "turnover": 184.41206804,
3574
+ // "turnover_symbol": "USDT",
3575
+ // "turnover_usd": 184.41206804,
3576
+ // "volume": 0.005
3577
+ // }
3578
+ //
3579
+ const marketId = this.safeString(chain, 'symbol');
3580
+ market = this.safeMarket(marketId, market);
3581
+ const quotes = this.safeDict(chain, 'quotes', {});
3582
+ const timestamp = this.safeIntegerProduct(chain, 'timestamp', 0.001);
3583
+ return {
3584
+ 'info': chain,
3585
+ 'currency': undefined,
3586
+ 'symbol': market['symbol'],
3587
+ 'timestamp': timestamp,
3588
+ 'datetime': this.iso8601(timestamp),
3589
+ 'impliedVolatility': this.safeNumber(quotes, 'mark_iv'),
3590
+ 'openInterest': this.safeNumber(chain, 'oi'),
3591
+ 'bidPrice': this.safeNumber(quotes, 'best_bid'),
3592
+ 'askPrice': this.safeNumber(quotes, 'best_ask'),
3593
+ 'midPrice': this.safeNumber(quotes, 'impact_mid_price'),
3594
+ 'markPrice': this.safeNumber(chain, 'mark_price'),
3595
+ 'lastPrice': undefined,
3596
+ 'underlyingPrice': this.safeNumber(chain, 'spot_price'),
3597
+ 'change': undefined,
3598
+ 'percentage': undefined,
3599
+ 'baseVolume': this.safeNumber(chain, 'volume'),
3600
+ 'quoteVolume': undefined,
3601
+ };
3602
+ }
3603
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
3604
+ const requestPath = '/' + this.version + '/' + this.implodeParams(path, params);
3605
+ let url = this.urls['api'][api] + requestPath;
3606
+ const query = this.omit(params, this.extractParams(path));
3607
+ if (api === 'public') {
3608
+ if (Object.keys(query).length) {
3609
+ url += '?' + this.urlencode(query);
3610
+ }
3611
+ }
3612
+ else if (api === 'private') {
3613
+ this.checkRequiredCredentials();
3614
+ const timestamp = this.seconds().toString();
3615
+ headers = {
3616
+ 'api-key': this.apiKey,
3617
+ 'timestamp': timestamp,
3618
+ };
3619
+ let auth = method + timestamp + requestPath;
3620
+ if (method === 'GET') {
3621
+ if (Object.keys(query).length) {
3622
+ const queryString = '?' + this.urlencode(query);
3623
+ auth += queryString;
3624
+ url += queryString;
3625
+ }
3626
+ }
3627
+ else {
3628
+ body = this.json(query);
3629
+ auth += body;
3630
+ headers['Content-Type'] = 'application/json';
3631
+ }
3632
+ const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256);
3633
+ headers['signature'] = signature;
3634
+ }
3635
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
3636
+ }
3637
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
3638
+ if (response === undefined) {
3639
+ return undefined;
3640
+ }
3641
+ //
3642
+ // {"error":{"code":"insufficient_margin","context":{"available_balance":"0.000000000000000000","required_additional_balance":"1.618626000000000000000000000"}},"success":false}
3643
+ //
3644
+ const error = this.safeDict(response, 'error', {});
3645
+ const errorCode = this.safeString(error, 'code');
3646
+ if (errorCode !== undefined) {
3647
+ const feedback = this.id + ' ' + body;
3648
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
3649
+ this.throwBroadlyMatchedException(this.exceptions['broad'], errorCode, feedback);
3650
+ throw new ExchangeError(feedback); // unknown message
3651
+ }
3652
+ return undefined;
3653
+ }
3654
+ }