ccxt-ir 4.10.0 → 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 (1047) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/js/ccxt.d.ts +5 -2
  8. package/js/ccxt.js +4 -2
  9. package/js/src/abstract/bidarz.d.ts +9 -0
  10. package/js/src/abstract/bidarz.js +11 -0
  11. package/js/src/bidarz.d.ts +22 -0
  12. package/js/src/bidarz.js +336 -0
  13. package/js/src/bit24.js +4 -3
  14. package/js/src/src/abantether.d.ts +21 -0
  15. package/js/src/src/abantether.js +353 -0
  16. package/js/src/src/abstract/abantether.d.ts +8 -0
  17. package/js/src/src/abstract/abantether.js +11 -0
  18. package/js/src/src/abstract/afratether.d.ts +9 -0
  19. package/js/src/src/abstract/afratether.js +11 -0
  20. package/js/src/src/abstract/alpaca.d.ts +77 -0
  21. package/js/src/src/abstract/alpaca.js +11 -0
  22. package/js/src/src/abstract/apex.d.ts +34 -0
  23. package/js/src/src/abstract/apex.js +11 -0
  24. package/js/src/src/abstract/arzinja.d.ts +8 -0
  25. package/js/src/src/abstract/arzinja.js +11 -0
  26. package/js/src/src/abstract/arzplus.d.ts +11 -0
  27. package/js/src/src/abstract/arzplus.js +11 -0
  28. package/js/src/src/abstract/ascendex.d.ts +80 -0
  29. package/js/src/src/abstract/ascendex.js +11 -0
  30. package/js/src/src/abstract/asretether.d.ts +8 -0
  31. package/js/src/src/abstract/asretether.js +11 -0
  32. package/js/src/src/abstract/bidarz.d.ts +9 -0
  33. package/js/src/src/abstract/bidarz.js +11 -0
  34. package/js/src/src/abstract/bigone.d.ts +48 -0
  35. package/js/src/src/abstract/bigone.js +11 -0
  36. package/js/src/src/abstract/binance.d.ts +773 -0
  37. package/js/src/src/abstract/binance.js +11 -0
  38. package/js/src/src/abstract/bingx.d.ts +165 -0
  39. package/js/src/src/abstract/bingx.js +11 -0
  40. package/js/src/src/abstract/bit24.d.ts +9 -0
  41. package/js/src/src/abstract/bit24.js +11 -0
  42. package/js/src/src/abstract/bit2c.d.ts +30 -0
  43. package/js/src/src/abstract/bit2c.js +11 -0
  44. package/js/src/src/abstract/bitbank.d.ts +35 -0
  45. package/js/src/src/abstract/bitbank.js +11 -0
  46. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  47. package/js/src/src/abstract/bitbarg.js +11 -0
  48. package/js/src/src/abstract/bitbns.d.ts +43 -0
  49. package/js/src/src/abstract/bitbns.js +11 -0
  50. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  51. package/js/src/src/abstract/bitfinex.js +11 -0
  52. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  53. package/js/src/src/abstract/bitflyer.js +11 -0
  54. package/js/src/src/abstract/bitget.d.ts +578 -0
  55. package/js/src/src/abstract/bitget.js +11 -0
  56. package/js/src/src/abstract/bithumb.d.ts +35 -0
  57. package/js/src/src/abstract/bithumb.js +11 -0
  58. package/js/src/src/abstract/bitimen.d.ts +10 -0
  59. package/js/src/src/abstract/bitimen.js +11 -0
  60. package/js/src/src/abstract/bitir.d.ts +10 -0
  61. package/js/src/src/abstract/bitir.js +11 -0
  62. package/js/src/src/abstract/bitmart.d.ts +120 -0
  63. package/js/src/src/abstract/bitmart.js +11 -0
  64. package/js/src/src/abstract/bitmex.d.ts +100 -0
  65. package/js/src/src/abstract/bitmex.js +11 -0
  66. package/js/src/src/abstract/bitopro.d.ts +33 -0
  67. package/js/src/src/abstract/bitopro.js +11 -0
  68. package/js/src/src/abstract/bitpin.d.ts +11 -0
  69. package/js/src/src/abstract/bitpin.js +11 -0
  70. package/js/src/src/abstract/bitrue.d.ts +75 -0
  71. package/js/src/src/abstract/bitrue.js +11 -0
  72. package/js/src/src/abstract/bitso.d.ts +46 -0
  73. package/js/src/src/abstract/bitso.js +11 -0
  74. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  75. package/js/src/src/abstract/bitstamp.js +11 -0
  76. package/js/src/src/abstract/bitteam.d.ts +32 -0
  77. package/js/src/src/abstract/bitteam.js +11 -0
  78. package/js/src/src/abstract/bittrade.d.ts +117 -0
  79. package/js/src/src/abstract/bittrade.js +11 -0
  80. package/js/src/src/abstract/bitunix.d.ts +9 -0
  81. package/js/src/src/abstract/bitunix.js +11 -0
  82. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  83. package/js/src/src/abstract/bitvavo.js +11 -0
  84. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  85. package/js/src/src/abstract/blockchaincom.js +11 -0
  86. package/js/src/src/abstract/blofin.d.ts +70 -0
  87. package/js/src/src/abstract/blofin.js +11 -0
  88. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  89. package/js/src/src/abstract/btcalpha.js +11 -0
  90. package/js/src/src/abstract/btcbox.d.ts +18 -0
  91. package/js/src/src/abstract/btcbox.js +11 -0
  92. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  93. package/js/src/src/abstract/btcmarkets.js +11 -0
  94. package/js/src/src/abstract/btcturk.d.ts +23 -0
  95. package/js/src/src/abstract/btcturk.js +11 -0
  96. package/js/src/src/abstract/bybit.d.ts +316 -0
  97. package/js/src/src/abstract/bybit.js +11 -0
  98. package/js/src/src/abstract/bydfi.d.ts +11 -0
  99. package/js/src/src/abstract/bydfi.js +11 -0
  100. package/js/src/src/abstract/cafearz.d.ts +8 -0
  101. package/js/src/src/abstract/cafearz.js +11 -0
  102. package/js/src/src/abstract/cex.d.ts +35 -0
  103. package/js/src/src/abstract/cex.js +11 -0
  104. package/js/src/src/abstract/coinbase.d.ts +97 -0
  105. package/js/src/src/abstract/coinbase.js +11 -0
  106. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  107. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  108. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  109. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  110. package/js/src/src/abstract/coincatch.d.ts +97 -0
  111. package/js/src/src/abstract/coincatch.js +11 -0
  112. package/js/src/src/abstract/coincheck.d.ts +36 -0
  113. package/js/src/src/abstract/coincheck.js +11 -0
  114. package/js/src/src/abstract/coinex.d.ts +240 -0
  115. package/js/src/src/abstract/coinex.js +11 -0
  116. package/js/src/src/abstract/coinmate.d.ts +65 -0
  117. package/js/src/src/abstract/coinmate.js +11 -0
  118. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  119. package/js/src/src/abstract/coinmetro.js +11 -0
  120. package/js/src/src/abstract/coinone.d.ts +70 -0
  121. package/js/src/src/abstract/coinone.js +11 -0
  122. package/js/src/src/abstract/coinsph.d.ts +57 -0
  123. package/js/src/src/abstract/coinsph.js +11 -0
  124. package/js/src/src/abstract/coinspot.d.ts +31 -0
  125. package/js/src/src/abstract/coinspot.js +11 -0
  126. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  127. package/js/src/src/abstract/cryptocom.js +11 -0
  128. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  129. package/js/src/src/abstract/cryptomus.js +11 -0
  130. package/js/src/src/abstract/defx.d.ts +72 -0
  131. package/js/src/src/abstract/defx.js +11 -0
  132. package/js/src/src/abstract/delta.d.ts +53 -0
  133. package/js/src/src/abstract/delta.js +11 -0
  134. package/js/src/src/abstract/deribit.d.ts +129 -0
  135. package/js/src/src/abstract/deribit.js +11 -0
  136. package/js/src/src/abstract/derive.d.ts +120 -0
  137. package/js/src/src/abstract/derive.js +11 -0
  138. package/js/src/src/abstract/digifinex.d.ts +95 -0
  139. package/js/src/src/abstract/digifinex.js +11 -0
  140. package/js/src/src/abstract/ellipx.d.ts +28 -0
  141. package/js/src/src/abstract/ellipx.js +11 -0
  142. package/js/src/src/abstract/eterex.d.ts +8 -0
  143. package/js/src/src/abstract/eterex.js +11 -0
  144. package/js/src/src/abstract/excoino.d.ts +10 -0
  145. package/js/src/src/abstract/excoino.js +11 -0
  146. package/js/src/src/abstract/exir.d.ts +11 -0
  147. package/js/src/src/abstract/exir.js +11 -0
  148. package/js/src/src/abstract/exmo.d.ts +58 -0
  149. package/js/src/src/abstract/exmo.js +11 -0
  150. package/js/src/src/abstract/exnovin.d.ts +9 -0
  151. package/js/src/src/abstract/exnovin.js +11 -0
  152. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  153. package/js/src/src/abstract/farhadexchange.js +11 -0
  154. package/js/src/src/abstract/foxbit.d.ts +29 -0
  155. package/js/src/src/abstract/foxbit.js +11 -0
  156. package/js/src/src/abstract/gate.d.ts +287 -0
  157. package/js/src/src/abstract/gate.js +11 -0
  158. package/js/src/src/abstract/gemini.d.ts +62 -0
  159. package/js/src/src/abstract/gemini.js +11 -0
  160. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  161. package/js/src/src/abstract/hamtapay.js +11 -0
  162. package/js/src/src/abstract/hashkey.d.ts +70 -0
  163. package/js/src/src/abstract/hashkey.js +11 -0
  164. package/js/src/src/abstract/hibachi.d.ts +29 -0
  165. package/js/src/src/abstract/hibachi.js +11 -0
  166. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  167. package/js/src/src/abstract/hitbtc.js +11 -0
  168. package/js/src/src/abstract/hitobit.d.ts +11 -0
  169. package/js/src/src/abstract/hitobit.js +11 -0
  170. package/js/src/src/abstract/hollaex.d.ts +36 -0
  171. package/js/src/src/abstract/hollaex.js +11 -0
  172. package/js/src/src/abstract/htx.d.ts +551 -0
  173. package/js/src/src/abstract/htx.js +11 -0
  174. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  175. package/js/src/src/abstract/hyperliquid.js +11 -0
  176. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  177. package/js/src/src/abstract/independentreserve.js +11 -0
  178. package/js/src/src/abstract/indodax.d.ts +29 -0
  179. package/js/src/src/abstract/indodax.js +11 -0
  180. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  181. package/js/src/src/abstract/iranexchange.js +11 -0
  182. package/js/src/src/abstract/jibitex.d.ts +10 -0
  183. package/js/src/src/abstract/jibitex.js +11 -0
  184. package/js/src/src/abstract/kcex.d.ts +10 -0
  185. package/js/src/src/abstract/kcex.js +11 -0
  186. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  187. package/js/src/src/abstract/kifpoolme.js +11 -0
  188. package/js/src/src/abstract/kraken.d.ts +61 -0
  189. package/js/src/src/abstract/kraken.js +11 -0
  190. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  191. package/js/src/src/abstract/krakenfutures.js +11 -0
  192. package/js/src/src/abstract/kucoin.d.ts +227 -0
  193. package/js/src/src/abstract/kucoin.js +11 -0
  194. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  195. package/js/src/src/abstract/kucoinfutures.js +11 -0
  196. package/js/src/src/abstract/latoken.d.ts +59 -0
  197. package/js/src/src/abstract/latoken.js +11 -0
  198. package/js/src/src/abstract/lbank.d.ts +65 -0
  199. package/js/src/src/abstract/lbank.js +11 -0
  200. package/js/src/src/abstract/luno.d.ts +41 -0
  201. package/js/src/src/abstract/luno.js +11 -0
  202. package/js/src/src/abstract/mazdax.d.ts +11 -0
  203. package/js/src/src/abstract/mazdax.js +11 -0
  204. package/js/src/src/abstract/mercado.d.ts +28 -0
  205. package/js/src/src/abstract/mercado.js +11 -0
  206. package/js/src/src/abstract/mexc.d.ts +183 -0
  207. package/js/src/src/abstract/mexc.js +11 -0
  208. package/js/src/src/abstract/modetrade.d.ts +122 -0
  209. package/js/src/src/abstract/modetrade.js +11 -0
  210. package/js/src/src/abstract/ndax.d.ts +100 -0
  211. package/js/src/src/abstract/ndax.js +11 -0
  212. package/js/src/src/abstract/nobitex.d.ts +10 -0
  213. package/js/src/src/abstract/nobitex.js +11 -0
  214. package/js/src/src/abstract/novadax.d.ts +32 -0
  215. package/js/src/src/abstract/novadax.js +11 -0
  216. package/js/src/src/abstract/oceanex.d.ts +30 -0
  217. package/js/src/src/abstract/oceanex.js +11 -0
  218. package/js/src/src/abstract/okcoin.d.ts +77 -0
  219. package/js/src/src/abstract/okcoin.js +11 -0
  220. package/js/src/src/abstract/okexchange.d.ts +11 -0
  221. package/js/src/src/abstract/okexchange.js +11 -0
  222. package/js/src/src/abstract/okx.d.ts +352 -0
  223. package/js/src/src/abstract/okx.js +11 -0
  224. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  225. package/js/src/src/abstract/ompfinex.js +11 -0
  226. package/js/src/src/abstract/onetrading.d.ts +26 -0
  227. package/js/src/src/abstract/onetrading.js +11 -0
  228. package/js/src/src/abstract/oxfun.d.ts +37 -0
  229. package/js/src/src/abstract/oxfun.js +11 -0
  230. package/js/src/src/abstract/p2b.d.ts +25 -0
  231. package/js/src/src/abstract/p2b.js +11 -0
  232. package/js/src/src/abstract/paradex.d.ts +66 -0
  233. package/js/src/src/abstract/paradex.js +11 -0
  234. package/js/src/src/abstract/paymium.d.ts +31 -0
  235. package/js/src/src/abstract/paymium.js +11 -0
  236. package/js/src/src/abstract/phemex.d.ts +120 -0
  237. package/js/src/src/abstract/phemex.js +11 -0
  238. package/js/src/src/abstract/pingi.d.ts +9 -0
  239. package/js/src/src/abstract/pingi.js +11 -0
  240. package/js/src/src/abstract/poloniex.d.ts +108 -0
  241. package/js/src/src/abstract/poloniex.js +11 -0
  242. package/js/src/src/abstract/pooleno.d.ts +8 -0
  243. package/js/src/src/abstract/pooleno.js +11 -0
  244. package/js/src/src/abstract/probit.d.ts +26 -0
  245. package/js/src/src/abstract/probit.js +11 -0
  246. package/js/src/src/abstract/raastin.d.ts +11 -0
  247. package/js/src/src/abstract/raastin.js +11 -0
  248. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  249. package/js/src/src/abstract/ramzinex.js +11 -0
  250. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  251. package/js/src/src/abstract/sarmayex.js +11 -0
  252. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  253. package/js/src/src/abstract/sarrafex.js +11 -0
  254. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  255. package/js/src/src/abstract/tabdeal.js +11 -0
  256. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  257. package/js/src/src/abstract/tehran_exchange.js +11 -0
  258. package/js/src/src/abstract/tetherland.d.ts +8 -0
  259. package/js/src/src/abstract/tetherland.js +11 -0
  260. package/js/src/src/abstract/timex.d.ts +65 -0
  261. package/js/src/src/abstract/timex.js +11 -0
  262. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  263. package/js/src/src/abstract/tokocrypto.js +11 -0
  264. package/js/src/src/abstract/toobit.d.ts +10 -0
  265. package/js/src/src/abstract/toobit.js +11 -0
  266. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  267. package/js/src/src/abstract/tradeogre.js +11 -0
  268. package/js/src/src/abstract/twox.d.ts +8 -0
  269. package/js/src/src/abstract/twox.js +11 -0
  270. package/js/src/src/abstract/ubitex.d.ts +10 -0
  271. package/js/src/src/abstract/ubitex.js +11 -0
  272. package/js/src/src/abstract/upbit.d.ts +58 -0
  273. package/js/src/src/abstract/upbit.js +11 -0
  274. package/js/src/src/abstract/vertex.d.ts +22 -0
  275. package/js/src/src/abstract/vertex.js +11 -0
  276. package/js/src/src/abstract/wallex.d.ts +11 -0
  277. package/js/src/src/abstract/wallex.js +11 -0
  278. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  279. package/js/src/src/abstract/wavesexchange.js +11 -0
  280. package/js/src/src/abstract/whitebit.d.ts +117 -0
  281. package/js/src/src/abstract/whitebit.js +11 -0
  282. package/js/src/src/abstract/woo.d.ts +144 -0
  283. package/js/src/src/abstract/woo.js +11 -0
  284. package/js/src/src/abstract/woofipro.d.ts +122 -0
  285. package/js/src/src/abstract/woofipro.js +11 -0
  286. package/js/src/src/abstract/xt.d.ts +160 -0
  287. package/js/src/src/abstract/xt.js +11 -0
  288. package/js/src/src/abstract/yobit.d.ts +19 -0
  289. package/js/src/src/abstract/yobit.js +11 -0
  290. package/js/src/src/abstract/zaif.d.ts +41 -0
  291. package/js/src/src/abstract/zaif.js +11 -0
  292. package/js/src/src/abstract/zonda.d.ts +56 -0
  293. package/js/src/src/abstract/zonda.js +11 -0
  294. package/js/src/src/afratether.d.ts +21 -0
  295. package/js/src/src/afratether.js +356 -0
  296. package/js/src/src/alpaca.d.ts +332 -0
  297. package/js/src/src/alpaca.js +1908 -0
  298. package/js/src/src/apex.d.ts +333 -0
  299. package/js/src/src/apex.js +1942 -0
  300. package/js/src/src/arzinja.d.ts +21 -0
  301. package/js/src/src/arzinja.js +298 -0
  302. package/js/src/src/arzplus.d.ts +26 -0
  303. package/js/src/src/arzplus.js +581 -0
  304. package/js/src/src/ascendex.d.ts +424 -0
  305. package/js/src/src/ascendex.js +3699 -0
  306. package/js/src/src/asretether.d.ts +21 -0
  307. package/js/src/src/asretether.js +324 -0
  308. package/js/src/src/base/Exchange.d.ts +926 -0
  309. package/js/src/src/base/Exchange.js +7399 -0
  310. package/js/src/src/base/Precise.d.ts +42 -0
  311. package/js/src/src/base/Precise.js +275 -0
  312. package/js/src/src/base/errors.d.ts +168 -0
  313. package/js/src/src/base/errors.js +255 -0
  314. package/js/src/src/base/functions/crypto.d.ts +16 -0
  315. package/js/src/src/base/functions/crypto.js +131 -0
  316. package/js/src/src/base/functions/encode.d.ts +4 -0
  317. package/js/src/src/base/functions/encode.js +32 -0
  318. package/js/src/src/base/functions/generic.d.ts +29 -0
  319. package/js/src/src/base/functions/generic.js +203 -0
  320. package/js/src/src/base/functions/misc.d.ts +9 -0
  321. package/js/src/src/base/functions/misc.js +101 -0
  322. package/js/src/src/base/functions/number.d.ts +27 -0
  323. package/js/src/src/base/functions/number.js +313 -0
  324. package/js/src/src/base/functions/platform.d.ts +7 -0
  325. package/js/src/src/base/functions/platform.js +27 -0
  326. package/js/src/src/base/functions/rsa.d.ts +5 -0
  327. package/js/src/src/base/functions/rsa.js +49 -0
  328. package/js/src/src/base/functions/string.d.ts +7 -0
  329. package/js/src/src/base/functions/string.js +44 -0
  330. package/js/src/src/base/functions/throttle.d.ts +6 -0
  331. package/js/src/src/base/functions/throttle.js +67 -0
  332. package/js/src/src/base/functions/time.d.ts +21 -0
  333. package/js/src/src/base/functions/time.js +171 -0
  334. package/js/src/src/base/functions/totp.d.ts +3 -0
  335. package/js/src/src/base/functions/totp.js +25 -0
  336. package/js/src/src/base/functions/type.d.ts +37 -0
  337. package/js/src/src/base/functions/type.js +179 -0
  338. package/js/src/src/base/functions.d.ts +10 -0
  339. package/js/src/src/base/functions.js +18 -0
  340. package/js/src/src/base/types.d.ts +586 -0
  341. package/js/src/src/base/types.js +7 -0
  342. package/js/src/src/base/ws/Cache.d.ts +27 -0
  343. package/js/src/src/base/ws/Cache.js +260 -0
  344. package/js/src/src/base/ws/Client.d.ts +53 -0
  345. package/js/src/src/base/ws/Client.js +307 -0
  346. package/js/src/src/base/ws/Future.d.ts +8 -0
  347. package/js/src/src/base/ws/Future.js +35 -0
  348. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  349. package/js/src/src/base/ws/OrderBook.js +130 -0
  350. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  351. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  352. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  353. package/js/src/src/base/ws/WsClient.js +69 -0
  354. package/js/src/src/bequant.d.ts +4 -0
  355. package/js/src/src/bequant.js +35 -0
  356. package/js/src/src/bidarz.d.ts +16 -0
  357. package/js/src/src/bidarz.js +327 -0
  358. package/js/src/src/bigone.d.ts +296 -0
  359. package/js/src/src/bigone.js +2340 -0
  360. package/js/src/src/binance.d.ts +1667 -0
  361. package/js/src/src/binance.js +14400 -0
  362. package/js/src/src/binancecoinm.d.ts +6 -0
  363. package/js/src/src/binancecoinm.js +51 -0
  364. package/js/src/src/binanceus.d.ts +4 -0
  365. package/js/src/src/binanceus.js +225 -0
  366. package/js/src/src/binanceusdm.d.ts +6 -0
  367. package/js/src/src/binanceusdm.js +63 -0
  368. package/js/src/src/bingx.d.ts +778 -0
  369. package/js/src/src/bingx.js +6705 -0
  370. package/js/src/src/bit24.d.ts +24 -0
  371. package/js/src/src/bit24.js +520 -0
  372. package/js/src/src/bit2c.d.ts +146 -0
  373. package/js/src/src/bit2c.js +1029 -0
  374. package/js/src/src/bitbank.d.ts +181 -0
  375. package/js/src/src/bitbank.js +1146 -0
  376. package/js/src/src/bitbarg.d.ts +21 -0
  377. package/js/src/src/bitbarg.js +312 -0
  378. package/js/src/src/bitbns.d.ts +184 -0
  379. package/js/src/src/bitbns.js +1288 -0
  380. package/js/src/src/bitfinex.d.ts +516 -0
  381. package/js/src/src/bitfinex.js +3951 -0
  382. package/js/src/src/bitflyer.d.ts +229 -0
  383. package/js/src/src/bitflyer.js +1209 -0
  384. package/js/src/src/bitget.d.ts +1109 -0
  385. package/js/src/src/bitget.js +11033 -0
  386. package/js/src/src/bithumb.d.ts +165 -0
  387. package/js/src/src/bithumb.js +1257 -0
  388. package/js/src/src/bitimen.d.ts +23 -0
  389. package/js/src/src/bitimen.js +424 -0
  390. package/js/src/src/bitir.d.ts +23 -0
  391. package/js/src/src/bitir.js +521 -0
  392. package/js/src/src/bitmart.d.ts +736 -0
  393. package/js/src/src/bitmart.js +5639 -0
  394. package/js/src/src/bitmex.d.ts +395 -0
  395. package/js/src/src/bitmex.js +3088 -0
  396. package/js/src/src/bitopro.d.ts +295 -0
  397. package/js/src/src/bitopro.js +1892 -0
  398. package/js/src/src/bitpin.d.ts +23 -0
  399. package/js/src/src/bitpin.js +487 -0
  400. package/js/src/src/bitrue.d.ts +384 -0
  401. package/js/src/src/bitrue.js +3382 -0
  402. package/js/src/src/bitso.d.ts +270 -0
  403. package/js/src/src/bitso.js +1881 -0
  404. package/js/src/src/bitstamp.d.ts +355 -0
  405. package/js/src/src/bitstamp.js +2445 -0
  406. package/js/src/src/bitteam.d.ts +229 -0
  407. package/js/src/src/bitteam.js +2420 -0
  408. package/js/src/src/bittrade.d.ts +298 -0
  409. package/js/src/src/bittrade.js +2050 -0
  410. package/js/src/src/bitunix.d.ts +21 -0
  411. package/js/src/src/bitunix.js +326 -0
  412. package/js/src/src/bitvavo.d.ts +311 -0
  413. package/js/src/src/bitvavo.js +2204 -0
  414. package/js/src/src/blockchaincom.d.ts +256 -0
  415. package/js/src/src/blockchaincom.js +1259 -0
  416. package/js/src/src/blofin.d.ts +439 -0
  417. package/js/src/src/blofin.js +2576 -0
  418. package/js/src/src/btcalpha.d.ts +209 -0
  419. package/js/src/src/btcalpha.js +1056 -0
  420. package/js/src/src/btcbox.d.ts +144 -0
  421. package/js/src/src/btcbox.js +834 -0
  422. package/js/src/src/btcmarkets.d.ts +253 -0
  423. package/js/src/src/btcmarkets.js +1418 -0
  424. package/js/src/src/btcturk.d.ts +161 -0
  425. package/js/src/src/btcturk.js +1058 -0
  426. package/js/src/src/bybit.d.ts +1097 -0
  427. package/js/src/src/bybit.js +9382 -0
  428. package/js/src/src/bydfi.d.ts +23 -0
  429. package/js/src/src/bydfi.js +434 -0
  430. package/js/src/src/cafearz.d.ts +21 -0
  431. package/js/src/src/cafearz.js +346 -0
  432. package/js/src/src/cex.d.ts +286 -0
  433. package/js/src/src/cex.js +1799 -0
  434. package/js/src/src/coinbase.d.ts +623 -0
  435. package/js/src/src/coinbase.js +5220 -0
  436. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  437. package/js/src/src/coinbaseadvanced.js +18 -0
  438. package/js/src/src/coinbaseexchange.d.ts +334 -0
  439. package/js/src/src/coinbaseexchange.js +2127 -0
  440. package/js/src/src/coinbaseinternational.d.ts +443 -0
  441. package/js/src/src/coinbaseinternational.js +2336 -0
  442. package/js/src/src/coincatch.d.ts +786 -0
  443. package/js/src/src/coincatch.js +5492 -0
  444. package/js/src/src/coincheck.d.ts +147 -0
  445. package/js/src/src/coincheck.js +962 -0
  446. package/js/src/src/coinex.d.ts +719 -0
  447. package/js/src/src/coinex.js +6166 -0
  448. package/js/src/src/coinmate.d.ts +202 -0
  449. package/js/src/src/coinmate.js +1215 -0
  450. package/js/src/src/coinmetro.d.ts +244 -0
  451. package/js/src/src/coinmetro.js +2024 -0
  452. package/js/src/src/coinone.d.ts +158 -0
  453. package/js/src/src/coinone.js +1278 -0
  454. package/js/src/src/coinsph.d.ts +310 -0
  455. package/js/src/src/coinsph.js +2203 -0
  456. package/js/src/src/coinspot.d.ts +108 -0
  457. package/js/src/src/coinspot.js +653 -0
  458. package/js/src/src/cryptocom.d.ts +463 -0
  459. package/js/src/src/cryptocom.js +3549 -0
  460. package/js/src/src/cryptomus.d.ts +158 -0
  461. package/js/src/src/cryptomus.js +1169 -0
  462. package/js/src/src/defx.d.ts +348 -0
  463. package/js/src/src/defx.js +2139 -0
  464. package/js/src/src/delta.d.ts +407 -0
  465. package/js/src/src/delta.js +3654 -0
  466. package/js/src/src/deribit.d.ts +516 -0
  467. package/js/src/src/deribit.js +3790 -0
  468. package/js/src/src/derive.d.ts +324 -0
  469. package/js/src/src/derive.js +2655 -0
  470. package/js/src/src/digifinex.d.ts +544 -0
  471. package/js/src/src/digifinex.js +4453 -0
  472. package/js/src/src/ellipx.d.ts +237 -0
  473. package/js/src/src/ellipx.js +2071 -0
  474. package/js/src/src/eterex.d.ts +21 -0
  475. package/js/src/src/eterex.js +299 -0
  476. package/js/src/src/excoino.d.ts +23 -0
  477. package/js/src/src/excoino.js +426 -0
  478. package/js/src/src/exir.d.ts +23 -0
  479. package/js/src/src/exir.js +403 -0
  480. package/js/src/src/exmo.d.ts +426 -0
  481. package/js/src/src/exmo.js +2825 -0
  482. package/js/src/src/exnovin.d.ts +22 -0
  483. package/js/src/src/exnovin.js +378 -0
  484. package/js/src/src/farhadexchange.d.ts +21 -0
  485. package/js/src/src/farhadexchange.js +280 -0
  486. package/js/src/src/fmfwio.d.ts +4 -0
  487. package/js/src/src/fmfwio.js +35 -0
  488. package/js/src/src/foxbit.d.ts +352 -0
  489. package/js/src/src/foxbit.js +2016 -0
  490. package/js/src/src/gate.d.ts +1071 -0
  491. package/js/src/src/gate.js +8282 -0
  492. package/js/src/src/gateio.d.ts +4 -0
  493. package/js/src/src/gateio.js +17 -0
  494. package/js/src/src/gemini.d.ts +257 -0
  495. package/js/src/src/gemini.js +2006 -0
  496. package/js/src/src/hamtapay.d.ts +21 -0
  497. package/js/src/src/hamtapay.js +303 -0
  498. package/js/src/src/hashkey.d.ts +628 -0
  499. package/js/src/src/hashkey.js +4363 -0
  500. package/js/src/src/hibachi.d.ts +346 -0
  501. package/js/src/src/hibachi.js +2137 -0
  502. package/js/src/src/hitbtc.d.ts +558 -0
  503. package/js/src/src/hitbtc.js +3847 -0
  504. package/js/src/src/hitobit.d.ts +23 -0
  505. package/js/src/src/hitobit.js +412 -0
  506. package/js/src/src/hollaex.d.ts +305 -0
  507. package/js/src/src/hollaex.js +2046 -0
  508. package/js/src/src/htx.d.ts +961 -0
  509. package/js/src/src/htx.js +9668 -0
  510. package/js/src/src/huobi.d.ts +4 -0
  511. package/js/src/src/huobi.js +17 -0
  512. package/js/src/src/hyperliquid.d.ts +651 -0
  513. package/js/src/src/hyperliquid.js +3937 -0
  514. package/js/src/src/independentreserve.d.ts +169 -0
  515. package/js/src/src/independentreserve.js +1115 -0
  516. package/js/src/src/indodax.d.ts +217 -0
  517. package/js/src/src/indodax.js +1454 -0
  518. package/js/src/src/iranexchange.d.ts +21 -0
  519. package/js/src/src/iranexchange.js +399 -0
  520. package/js/src/src/jibitex.d.ts +23 -0
  521. package/js/src/src/jibitex.js +416 -0
  522. package/js/src/src/kcex.d.ts +21 -0
  523. package/js/src/src/kcex.js +335 -0
  524. package/js/src/src/kifpoolme.d.ts +23 -0
  525. package/js/src/src/kifpoolme.js +410 -0
  526. package/js/src/src/kraken.d.ts +484 -0
  527. package/js/src/src/kraken.js +3518 -0
  528. package/js/src/src/krakenfutures.d.ts +362 -0
  529. package/js/src/src/krakenfutures.js +2885 -0
  530. package/js/src/src/kucoin.d.ts +759 -0
  531. package/js/src/src/kucoin.js +5153 -0
  532. package/js/src/src/kucoinfutures.d.ts +521 -0
  533. package/js/src/src/kucoinfutures.js +3381 -0
  534. package/js/src/src/latoken.d.ts +274 -0
  535. package/js/src/src/latoken.js +1824 -0
  536. package/js/src/src/lbank.d.ts +350 -0
  537. package/js/src/src/lbank.js +3146 -0
  538. package/js/src/src/luno.d.ts +252 -0
  539. package/js/src/src/luno.js +1479 -0
  540. package/js/src/src/mazdax.d.ts +23 -0
  541. package/js/src/src/mazdax.js +534 -0
  542. package/js/src/src/mercado.d.ts +160 -0
  543. package/js/src/src/mercado.js +1011 -0
  544. package/js/src/src/mexc.d.ts +768 -0
  545. package/js/src/src/mexc.js +6102 -0
  546. package/js/src/src/modetrade.d.ts +496 -0
  547. package/js/src/src/modetrade.js +2936 -0
  548. package/js/src/src/myokx.d.ts +4 -0
  549. package/js/src/src/myokx.js +54 -0
  550. package/js/src/src/ndax.d.ts +285 -0
  551. package/js/src/src/ndax.js +2598 -0
  552. package/js/src/src/nobitex.d.ts +23 -0
  553. package/js/src/src/nobitex.js +454 -0
  554. package/js/src/src/novadax.d.ts +279 -0
  555. package/js/src/src/novadax.js +1676 -0
  556. package/js/src/src/oceanex.d.ts +231 -0
  557. package/js/src/src/oceanex.js +1123 -0
  558. package/js/src/src/okcoin.d.ts +346 -0
  559. package/js/src/src/okcoin.js +3211 -0
  560. package/js/src/src/okexchange.d.ts +23 -0
  561. package/js/src/src/okexchange.js +373 -0
  562. package/js/src/src/okx.d.ts +1125 -0
  563. package/js/src/src/okx.js +9009 -0
  564. package/js/src/src/okxus.d.ts +4 -0
  565. package/js/src/src/okxus.js +54 -0
  566. package/js/src/src/ompfinex.d.ts +23 -0
  567. package/js/src/src/ompfinex.js +510 -0
  568. package/js/src/src/onetrading.d.ts +228 -0
  569. package/js/src/src/onetrading.js +1769 -0
  570. package/js/src/src/oxfun.d.ts +442 -0
  571. package/js/src/src/oxfun.js +2920 -0
  572. package/js/src/src/p2b.d.ts +189 -0
  573. package/js/src/src/p2b.js +1344 -0
  574. package/js/src/src/paradex.d.ts +389 -0
  575. package/js/src/src/paradex.js +2607 -0
  576. package/js/src/src/paymium.d.ts +133 -0
  577. package/js/src/src/paymium.js +644 -0
  578. package/js/src/src/phemex.d.ts +497 -0
  579. package/js/src/src/phemex.js +5333 -0
  580. package/js/src/src/pingi.d.ts +22 -0
  581. package/js/src/src/pingi.js +446 -0
  582. package/js/src/src/poloniex.d.ts +441 -0
  583. package/js/src/src/poloniex.js +3681 -0
  584. package/js/src/src/pooleno.d.ts +21 -0
  585. package/js/src/src/pooleno.js +347 -0
  586. package/js/src/src/pro/alpaca.d.ts +95 -0
  587. package/js/src/src/pro/alpaca.js +724 -0
  588. package/js/src/src/pro/apex.d.ts +160 -0
  589. package/js/src/src/pro/apex.js +1044 -0
  590. package/js/src/src/pro/ascendex.d.ts +99 -0
  591. package/js/src/src/pro/ascendex.js +1012 -0
  592. package/js/src/src/pro/bequant.d.ts +4 -0
  593. package/js/src/src/pro/bequant.js +42 -0
  594. package/js/src/src/pro/binance.d.ts +796 -0
  595. package/js/src/src/pro/binance.js +4373 -0
  596. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  597. package/js/src/src/pro/binancecoinm.js +32 -0
  598. package/js/src/src/pro/binanceus.d.ts +4 -0
  599. package/js/src/src/pro/binanceus.js +52 -0
  600. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  601. package/js/src/src/pro/binanceusdm.js +37 -0
  602. package/js/src/src/pro/bingx.d.ts +151 -0
  603. package/js/src/src/pro/bingx.js +1568 -0
  604. package/js/src/src/pro/bitfinex.d.ts +99 -0
  605. package/js/src/src/pro/bitfinex.js +1165 -0
  606. package/js/src/src/pro/bitget.d.ts +257 -0
  607. package/js/src/src/pro/bitget.js +2327 -0
  608. package/js/src/src/pro/bithumb.d.ts +59 -0
  609. package/js/src/src/pro/bithumb.js +395 -0
  610. package/js/src/src/pro/bitmart.d.ts +168 -0
  611. package/js/src/src/pro/bitmart.js +1686 -0
  612. package/js/src/src/pro/bitmex.d.ts +170 -0
  613. package/js/src/src/pro/bitmex.js +1760 -0
  614. package/js/src/src/pro/bitopro.d.ts +69 -0
  615. package/js/src/src/pro/bitopro.js +477 -0
  616. package/js/src/src/pro/bitrue.d.ts +40 -0
  617. package/js/src/src/pro/bitrue.js +461 -0
  618. package/js/src/src/pro/bitstamp.d.ts +53 -0
  619. package/js/src/src/pro/bitstamp.js +587 -0
  620. package/js/src/src/pro/bittrade.d.ts +66 -0
  621. package/js/src/src/pro/bittrade.js +606 -0
  622. package/js/src/src/pro/bitvavo.d.ts +321 -0
  623. package/js/src/src/pro/bitvavo.js +1451 -0
  624. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  625. package/js/src/src/pro/blockchaincom.js +777 -0
  626. package/js/src/src/pro/blofin.d.ts +174 -0
  627. package/js/src/src/pro/blofin.js +743 -0
  628. package/js/src/src/pro/bybit.d.ts +397 -0
  629. package/js/src/src/pro/bybit.js +2519 -0
  630. package/js/src/src/pro/cex.d.ts +220 -0
  631. package/js/src/src/pro/cex.js +1535 -0
  632. package/js/src/src/pro/coinbase.d.ts +119 -0
  633. package/js/src/src/pro/coinbase.js +736 -0
  634. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  635. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  636. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  637. package/js/src/src/pro/coinbaseexchange.js +969 -0
  638. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  639. package/js/src/src/pro/coinbaseinternational.js +804 -0
  640. package/js/src/src/pro/coincatch.d.ts +207 -0
  641. package/js/src/src/pro/coincatch.js +1562 -0
  642. package/js/src/src/pro/coincheck.d.ts +33 -0
  643. package/js/src/src/pro/coincheck.js +210 -0
  644. package/js/src/src/pro/coinex.d.ts +147 -0
  645. package/js/src/src/pro/coinex.js +1426 -0
  646. package/js/src/src/pro/coinone.d.ts +51 -0
  647. package/js/src/src/pro/coinone.js +413 -0
  648. package/js/src/src/pro/cryptocom.d.ts +300 -0
  649. package/js/src/src/pro/cryptocom.js +1414 -0
  650. package/js/src/src/pro/defx.d.ts +236 -0
  651. package/js/src/src/pro/defx.js +865 -0
  652. package/js/src/src/pro/deribit.d.ts +163 -0
  653. package/js/src/src/pro/deribit.js +1066 -0
  654. package/js/src/src/pro/derive.d.ts +100 -0
  655. package/js/src/src/pro/derive.js +753 -0
  656. package/js/src/src/pro/exmo.d.ts +97 -0
  657. package/js/src/src/pro/exmo.js +903 -0
  658. package/js/src/src/pro/gate.d.ts +360 -0
  659. package/js/src/src/pro/gate.js +2119 -0
  660. package/js/src/src/pro/gateio.d.ts +4 -0
  661. package/js/src/src/pro/gateio.js +17 -0
  662. package/js/src/src/pro/gemini.d.ts +106 -0
  663. package/js/src/src/pro/gemini.js +932 -0
  664. package/js/src/src/pro/hashkey.d.ts +121 -0
  665. package/js/src/src/pro/hashkey.js +843 -0
  666. package/js/src/src/pro/hitbtc.d.ts +235 -0
  667. package/js/src/src/pro/hitbtc.js +1400 -0
  668. package/js/src/src/pro/hollaex.d.ts +77 -0
  669. package/js/src/src/pro/hollaex.js +604 -0
  670. package/js/src/src/pro/htx.d.ts +141 -0
  671. package/js/src/src/pro/htx.js +2415 -0
  672. package/js/src/src/pro/huobi.d.ts +4 -0
  673. package/js/src/src/pro/huobi.js +17 -0
  674. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  675. package/js/src/src/pro/hyperliquid.js +1126 -0
  676. package/js/src/src/pro/independentreserve.d.ts +36 -0
  677. package/js/src/src/pro/independentreserve.js +287 -0
  678. package/js/src/src/pro/kraken.d.ts +233 -0
  679. package/js/src/src/pro/kraken.js +1785 -0
  680. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  681. package/js/src/src/pro/krakenfutures.js +1592 -0
  682. package/js/src/src/pro/kucoin.d.ts +221 -0
  683. package/js/src/src/pro/kucoin.js +1430 -0
  684. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  685. package/js/src/src/pro/kucoinfutures.js +1295 -0
  686. package/js/src/src/pro/lbank.d.ts +134 -0
  687. package/js/src/src/pro/lbank.js +950 -0
  688. package/js/src/src/pro/luno.d.ts +44 -0
  689. package/js/src/src/pro/luno.js +322 -0
  690. package/js/src/src/pro/mexc.d.ts +210 -0
  691. package/js/src/src/pro/mexc.js +2009 -0
  692. package/js/src/src/pro/modetrade.d.ts +155 -0
  693. package/js/src/src/pro/modetrade.js +1335 -0
  694. package/js/src/src/pro/myokx.d.ts +4 -0
  695. package/js/src/src/pro/myokx.js +39 -0
  696. package/js/src/src/pro/ndax.d.ts +60 -0
  697. package/js/src/src/pro/ndax.js +545 -0
  698. package/js/src/src/pro/okcoin.d.ts +91 -0
  699. package/js/src/src/pro/okcoin.js +763 -0
  700. package/js/src/src/pro/okx.d.ts +408 -0
  701. package/js/src/src/pro/okx.js +2479 -0
  702. package/js/src/src/pro/okxus.d.ts +4 -0
  703. package/js/src/src/pro/okxus.js +39 -0
  704. package/js/src/src/pro/onetrading.d.ts +107 -0
  705. package/js/src/src/pro/onetrading.js +1343 -0
  706. package/js/src/src/pro/oxfun.d.ts +234 -0
  707. package/js/src/src/pro/oxfun.js +1112 -0
  708. package/js/src/src/pro/p2b.d.ts +104 -0
  709. package/js/src/src/pro/p2b.js +506 -0
  710. package/js/src/src/pro/paradex.d.ts +54 -0
  711. package/js/src/src/pro/paradex.js +370 -0
  712. package/js/src/src/pro/phemex.d.ts +129 -0
  713. package/js/src/src/pro/phemex.js +1569 -0
  714. package/js/src/src/pro/poloniex.d.ts +214 -0
  715. package/js/src/src/pro/poloniex.js +1318 -0
  716. package/js/src/src/pro/probit.d.ts +91 -0
  717. package/js/src/src/pro/probit.js +593 -0
  718. package/js/src/src/pro/tradeogre.d.ts +49 -0
  719. package/js/src/src/pro/tradeogre.js +284 -0
  720. package/js/src/src/pro/upbit.d.ts +124 -0
  721. package/js/src/src/pro/upbit.js +689 -0
  722. package/js/src/src/pro/vertex.d.ts +104 -0
  723. package/js/src/src/pro/vertex.js +999 -0
  724. package/js/src/src/pro/whitebit.d.ts +123 -0
  725. package/js/src/src/pro/whitebit.js +971 -0
  726. package/js/src/src/pro/woo.d.ts +161 -0
  727. package/js/src/src/pro/woo.js +1351 -0
  728. package/js/src/src/pro/woofipro.d.ts +155 -0
  729. package/js/src/src/pro/woofipro.js +1335 -0
  730. package/js/src/src/pro/xt.d.ts +165 -0
  731. package/js/src/src/pro/xt.js +1230 -0
  732. package/js/src/src/probit.d.ts +283 -0
  733. package/js/src/src/probit.js +1935 -0
  734. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  735. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  736. package/js/src/src/raastin.d.ts +24 -0
  737. package/js/src/src/raastin.js +494 -0
  738. package/js/src/src/ramzinex.d.ts +23 -0
  739. package/js/src/src/ramzinex.js +510 -0
  740. package/js/src/src/sarmayex.d.ts +21 -0
  741. package/js/src/src/sarmayex.js +376 -0
  742. package/js/src/src/sarrafex.d.ts +23 -0
  743. package/js/src/src/sarrafex.js +501 -0
  744. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  745. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  746. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  747. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  748. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  749. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  750. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  751. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  752. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  753. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  754. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  755. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  756. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  757. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  758. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  759. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  760. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  761. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  762. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  763. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  764. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  765. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  766. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  767. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  768. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  769. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  770. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  771. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  772. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  773. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  774. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  777. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  778. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  779. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  780. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  781. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  782. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  783. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  784. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  785. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  786. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  787. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  788. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  789. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  790. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  791. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  792. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  793. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  794. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  795. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  796. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  797. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  798. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  799. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  800. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  801. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  802. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  803. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  804. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  805. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  806. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  807. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  808. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  809. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  810. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  811. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  812. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  813. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  814. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  815. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  816. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  817. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  818. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  819. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  820. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  821. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  822. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  823. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  824. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  825. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  826. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  827. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  828. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  829. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  830. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  831. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  832. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  833. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  834. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  835. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  836. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  837. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  850. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  851. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  852. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  853. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  854. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  855. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  856. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  857. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  858. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  859. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  860. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  861. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  868. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  869. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  870. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  871. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  872. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  873. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  874. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  875. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  876. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  877. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  878. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  879. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  880. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  881. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  882. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  883. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  884. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  885. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  886. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  887. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  888. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  889. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  890. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  891. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  892. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  893. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  894. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  895. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  896. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  897. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  898. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  899. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  900. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  901. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  902. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  903. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  904. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  905. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  906. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  907. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  908. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  909. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  910. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  911. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  912. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  913. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  914. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  915. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  916. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  917. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  918. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  919. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  920. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  921. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  922. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  923. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  924. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  925. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  926. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  927. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  928. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  929. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  930. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  931. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  932. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  933. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  934. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  935. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  937. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  938. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  939. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  940. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  941. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  942. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  943. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  944. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  945. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  946. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  947. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  948. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  949. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  950. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  951. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  952. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  953. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  954. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  955. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  956. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  957. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  958. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  959. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  984. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  985. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  986. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  987. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  988. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  989. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  990. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  991. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  992. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  993. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  994. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  995. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  996. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  998. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  999. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1000. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1001. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1002. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1003. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1004. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1005. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1006. package/js/src/src/tabdeal.d.ts +23 -0
  1007. package/js/src/src/tabdeal.js +387 -0
  1008. package/js/src/src/tehran_exchange.d.ts +21 -0
  1009. package/js/src/src/tehran_exchange.js +333 -0
  1010. package/js/src/src/tetherland.d.ts +21 -0
  1011. package/js/src/src/tetherland.js +367 -0
  1012. package/js/src/src/timex.d.ts +247 -0
  1013. package/js/src/src/timex.js +1792 -0
  1014. package/js/src/src/tokocrypto.d.ts +261 -0
  1015. package/js/src/src/tokocrypto.js +2641 -0
  1016. package/js/src/src/toobit.d.ts +22 -0
  1017. package/js/src/src/toobit.js +445 -0
  1018. package/js/src/src/tradeogre.d.ts +149 -0
  1019. package/js/src/src/tradeogre.js +878 -0
  1020. package/js/src/src/twox.d.ts +21 -0
  1021. package/js/src/src/twox.js +371 -0
  1022. package/js/src/src/ubitex.d.ts +23 -0
  1023. package/js/src/src/ubitex.js +433 -0
  1024. package/js/src/src/upbit.d.ts +377 -0
  1025. package/js/src/src/upbit.js +2340 -0
  1026. package/js/src/src/vertex.d.ts +346 -0
  1027. package/js/src/src/vertex.js +3146 -0
  1028. package/js/src/src/wallex.d.ts +23 -0
  1029. package/js/src/src/wallex.js +467 -0
  1030. package/js/src/src/wavesexchange.d.ts +244 -0
  1031. package/js/src/src/wavesexchange.js +2747 -0
  1032. package/js/src/src/whitebit.d.ts +571 -0
  1033. package/js/src/src/whitebit.js +3437 -0
  1034. package/js/src/src/woo.d.ts +727 -0
  1035. package/js/src/src/woo.js +4183 -0
  1036. package/js/src/src/woofipro.d.ts +497 -0
  1037. package/js/src/src/woofipro.js +2941 -0
  1038. package/js/src/src/xt.d.ts +568 -0
  1039. package/js/src/src/xt.js +5184 -0
  1040. package/js/src/src/yobit.d.ts +197 -0
  1041. package/js/src/src/yobit.js +1453 -0
  1042. package/js/src/src/zaif.d.ts +136 -0
  1043. package/js/src/src/zaif.js +821 -0
  1044. package/js/src/src/zonda.d.ts +214 -0
  1045. package/js/src/src/zonda.js +1984 -0
  1046. package/js/test.js +3 -3
  1047. package/package.json +1 -1
@@ -0,0 +1,2204 @@
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/bitvavo.js';
9
+ import { ExchangeError, BadSymbol, AuthenticationError, InsufficientFunds, InvalidOrder, ArgumentsRequired, OrderNotFound, InvalidAddress, BadRequest, RateLimitExceeded, PermissionDenied, ExchangeNotAvailable, AccountSuspended, OnMaintenance } from './base/errors.js';
10
+ import { SIGNIFICANT_DIGITS, DECIMAL_PLACES, TRUNCATE, ROUND } 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 bitvavo
16
+ * @augments Exchange
17
+ */
18
+ export default class bitvavo extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'bitvavo',
22
+ 'name': 'Bitvavo',
23
+ 'countries': ['NL'],
24
+ 'rateLimit': 60,
25
+ 'version': 'v2',
26
+ 'certified': false,
27
+ 'pro': true,
28
+ 'has': {
29
+ 'CORS': undefined,
30
+ 'spot': true,
31
+ 'margin': false,
32
+ 'swap': false,
33
+ 'future': false,
34
+ 'option': false,
35
+ 'addMargin': false,
36
+ 'borrowCrossMargin': false,
37
+ 'borrowIsolatedMargin': false,
38
+ 'borrowMargin': false,
39
+ 'cancelAllOrders': true,
40
+ 'cancelOrder': true,
41
+ 'closeAllPositions': false,
42
+ 'closePosition': false,
43
+ 'createOrder': true,
44
+ 'createOrderWithTakeProfitAndStopLoss': false,
45
+ 'createOrderWithTakeProfitAndStopLossWs': false,
46
+ 'createPostOnlyOrder': false,
47
+ 'createReduceOnlyOrder': false,
48
+ 'createStopLimitOrder': true,
49
+ 'createStopMarketOrder': true,
50
+ 'createStopOrder': true,
51
+ 'editOrder': true,
52
+ 'fetchBalance': true,
53
+ 'fetchBorrowInterest': false,
54
+ 'fetchBorrowRate': false,
55
+ 'fetchBorrowRateHistories': false,
56
+ 'fetchBorrowRateHistory': false,
57
+ 'fetchBorrowRates': false,
58
+ 'fetchBorrowRatesPerSymbol': false,
59
+ 'fetchCrossBorrowRate': false,
60
+ 'fetchCrossBorrowRates': false,
61
+ 'fetchCurrencies': true,
62
+ 'fetchDepositAddress': true,
63
+ 'fetchDepositAddresses': false,
64
+ 'fetchDepositAddressesByNetwork': false,
65
+ 'fetchDeposits': true,
66
+ 'fetchDepositWithdrawFee': 'emulated',
67
+ 'fetchDepositWithdrawFees': true,
68
+ 'fetchFundingHistory': false,
69
+ 'fetchFundingInterval': false,
70
+ 'fetchFundingIntervals': false,
71
+ 'fetchFundingRate': false,
72
+ 'fetchFundingRateHistory': false,
73
+ 'fetchFundingRates': false,
74
+ 'fetchGreeks': false,
75
+ 'fetchIndexOHLCV': false,
76
+ 'fetchIsolatedBorrowRate': false,
77
+ 'fetchIsolatedBorrowRates': false,
78
+ 'fetchIsolatedPositions': false,
79
+ 'fetchLeverage': false,
80
+ 'fetchLeverages': false,
81
+ 'fetchLeverageTiers': false,
82
+ 'fetchLiquidations': false,
83
+ 'fetchLongShortRatio': false,
84
+ 'fetchLongShortRatioHistory': false,
85
+ 'fetchMarginAdjustmentHistory': false,
86
+ 'fetchMarginMode': false,
87
+ 'fetchMarginModes': false,
88
+ 'fetchMarketLeverageTiers': false,
89
+ 'fetchMarkets': true,
90
+ 'fetchMarkOHLCV': false,
91
+ 'fetchMarkPrices': false,
92
+ 'fetchMyLiquidations': false,
93
+ 'fetchMySettlementHistory': false,
94
+ 'fetchMyTrades': true,
95
+ 'fetchOHLCV': true,
96
+ 'fetchOpenInterest': false,
97
+ 'fetchOpenInterestHistory': false,
98
+ 'fetchOpenInterests': false,
99
+ 'fetchOpenOrders': true,
100
+ 'fetchOption': false,
101
+ 'fetchOptionChain': false,
102
+ 'fetchOrder': true,
103
+ 'fetchOrderBook': true,
104
+ 'fetchOrders': true,
105
+ 'fetchPosition': false,
106
+ 'fetchPositionHistory': false,
107
+ 'fetchPositionMode': false,
108
+ 'fetchPositions': false,
109
+ 'fetchPositionsForSymbol': false,
110
+ 'fetchPositionsHistory': false,
111
+ 'fetchPositionsRisk': false,
112
+ 'fetchPremiumIndexOHLCV': false,
113
+ 'fetchSettlementHistory': false,
114
+ 'fetchTicker': true,
115
+ 'fetchTickers': true,
116
+ 'fetchTime': true,
117
+ 'fetchTrades': true,
118
+ 'fetchTradingFee': false,
119
+ 'fetchTradingFees': true,
120
+ 'fetchTransfer': false,
121
+ 'fetchTransfers': false,
122
+ 'fetchVolatilityHistory': false,
123
+ 'fetchWithdrawals': true,
124
+ 'reduceMargin': false,
125
+ 'repayCrossMargin': false,
126
+ 'repayIsolatedMargin': false,
127
+ 'repayMargin': false,
128
+ 'setLeverage': false,
129
+ 'setMargin': false,
130
+ 'setMarginMode': false,
131
+ 'setPositionMode': false,
132
+ 'transfer': false,
133
+ 'withdraw': true,
134
+ },
135
+ 'timeframes': {
136
+ '1m': '1m',
137
+ '5m': '5m',
138
+ '15m': '15m',
139
+ '30m': '30m',
140
+ '1h': '1h',
141
+ '2h': '2h',
142
+ '4h': '4h',
143
+ '6h': '6h',
144
+ '8h': '8h',
145
+ '12h': '12h',
146
+ '1d': '1d',
147
+ },
148
+ 'urls': {
149
+ 'logo': 'https://github.com/user-attachments/assets/d213155c-8c71-4701-9bd5-45351febc2a8',
150
+ 'api': {
151
+ 'public': 'https://api.bitvavo.com',
152
+ 'private': 'https://api.bitvavo.com',
153
+ },
154
+ 'www': 'https://bitvavo.com/',
155
+ 'doc': 'https://docs.bitvavo.com/',
156
+ 'fees': 'https://bitvavo.com/en/fees',
157
+ 'referral': 'https://bitvavo.com/?a=24F34952F7',
158
+ },
159
+ 'api': {
160
+ 'public': {
161
+ 'get': {
162
+ 'time': 1,
163
+ 'markets': 1,
164
+ 'assets': 1,
165
+ '{market}/book': 1,
166
+ '{market}/trades': 5,
167
+ '{market}/candles': 1,
168
+ 'ticker/price': 1,
169
+ 'ticker/book': 1,
170
+ 'ticker/24h': { 'cost': 1, 'noMarket': 25 },
171
+ },
172
+ },
173
+ 'private': {
174
+ 'get': {
175
+ 'account': 1,
176
+ 'order': 1,
177
+ 'orders': 5,
178
+ 'ordersOpen': { 'cost': 1, 'noMarket': 25 },
179
+ 'trades': 5,
180
+ 'balance': 5,
181
+ 'deposit': 1,
182
+ 'depositHistory': 5,
183
+ 'withdrawalHistory': 5,
184
+ },
185
+ 'post': {
186
+ 'order': 1,
187
+ 'withdrawal': 1,
188
+ },
189
+ 'put': {
190
+ 'order': 1,
191
+ },
192
+ 'delete': {
193
+ 'order': 1,
194
+ 'orders': 1,
195
+ },
196
+ },
197
+ },
198
+ 'fees': {
199
+ 'trading': {
200
+ 'tierBased': true,
201
+ 'percentage': true,
202
+ 'taker': this.parseNumber('0.0025'),
203
+ 'maker': this.parseNumber('0.002'),
204
+ 'tiers': {
205
+ 'taker': [
206
+ [this.parseNumber('0'), this.parseNumber('0.0025')],
207
+ [this.parseNumber('100000'), this.parseNumber('0.0020')],
208
+ [this.parseNumber('250000'), this.parseNumber('0.0016')],
209
+ [this.parseNumber('500000'), this.parseNumber('0.0012')],
210
+ [this.parseNumber('1000000'), this.parseNumber('0.0010')],
211
+ [this.parseNumber('2500000'), this.parseNumber('0.0008')],
212
+ [this.parseNumber('5000000'), this.parseNumber('0.0006')],
213
+ [this.parseNumber('10000000'), this.parseNumber('0.0005')],
214
+ [this.parseNumber('25000000'), this.parseNumber('0.0004')],
215
+ ],
216
+ 'maker': [
217
+ [this.parseNumber('0'), this.parseNumber('0.0015')],
218
+ [this.parseNumber('100000'), this.parseNumber('0.0010')],
219
+ [this.parseNumber('250000'), this.parseNumber('0.0008')],
220
+ [this.parseNumber('500000'), this.parseNumber('0.0006')],
221
+ [this.parseNumber('1000000'), this.parseNumber('0.0005')],
222
+ [this.parseNumber('2500000'), this.parseNumber('0.0004')],
223
+ [this.parseNumber('5000000'), this.parseNumber('0.0004')],
224
+ [this.parseNumber('10000000'), this.parseNumber('0.0003')],
225
+ [this.parseNumber('25000000'), this.parseNumber('0.0003')],
226
+ ],
227
+ },
228
+ },
229
+ },
230
+ 'requiredCredentials': {
231
+ 'apiKey': true,
232
+ 'secret': true,
233
+ },
234
+ 'features': {
235
+ 'spot': {
236
+ 'sandbox': false,
237
+ 'createOrder': {
238
+ 'marginMode': false,
239
+ 'triggerPrice': true,
240
+ 'triggerPriceType': undefined,
241
+ 'triggerDirection': undefined,
242
+ 'stopLossPrice': true,
243
+ 'takeProfitPrice': true,
244
+ 'attachedStopLossTakeProfit': undefined,
245
+ 'timeInForce': {
246
+ 'IOC': true,
247
+ 'FOK': true,
248
+ 'PO': true,
249
+ 'GTD': false,
250
+ },
251
+ 'hedged': false,
252
+ 'trailing': false,
253
+ 'leverage': false,
254
+ 'marketBuyRequiresPrice': false,
255
+ 'marketBuyByCost': true,
256
+ 'selfTradePrevention': true,
257
+ 'iceberg': false,
258
+ },
259
+ 'createOrders': undefined,
260
+ 'fetchMyTrades': {
261
+ 'marginMode': false,
262
+ 'limit': 1000,
263
+ 'daysBack': 100000,
264
+ 'untilDays': 100000,
265
+ 'symbolRequired': true,
266
+ },
267
+ 'fetchOrder': {
268
+ 'marginMode': false,
269
+ 'trigger': false,
270
+ 'trailing': false,
271
+ 'symbolRequired': true,
272
+ },
273
+ 'fetchOpenOrders': {
274
+ 'marginMode': false,
275
+ 'limit': undefined,
276
+ 'trigger': false,
277
+ 'trailing': false,
278
+ 'symbolRequired': true,
279
+ },
280
+ 'fetchOrders': {
281
+ 'marginMode': true,
282
+ 'limit': 1000,
283
+ 'daysBack': 100000,
284
+ 'untilDays': 100000,
285
+ 'trigger': false,
286
+ 'trailing': false,
287
+ 'symbolRequired': true,
288
+ },
289
+ 'fetchClosedOrders': undefined,
290
+ 'fetchOHLCV': {
291
+ 'limit': 1440,
292
+ },
293
+ },
294
+ 'swap': {
295
+ 'linear': undefined,
296
+ 'inverse': undefined,
297
+ },
298
+ 'future': {
299
+ 'linear': undefined,
300
+ 'inverse': undefined,
301
+ },
302
+ },
303
+ 'exceptions': {
304
+ 'exact': {
305
+ '101': ExchangeError,
306
+ '102': BadRequest,
307
+ '103': RateLimitExceeded,
308
+ '104': RateLimitExceeded,
309
+ '105': PermissionDenied,
310
+ '107': ExchangeNotAvailable,
311
+ '108': ExchangeNotAvailable,
312
+ '109': ExchangeNotAvailable,
313
+ '110': BadRequest,
314
+ '200': BadRequest,
315
+ '201': BadRequest,
316
+ '202': BadRequest,
317
+ '203': BadSymbol,
318
+ '204': BadRequest,
319
+ '205': BadRequest,
320
+ '206': BadRequest,
321
+ '210': InvalidOrder,
322
+ '211': InvalidOrder,
323
+ '212': InvalidOrder,
324
+ '213': InvalidOrder,
325
+ '214': InvalidOrder,
326
+ '215': InvalidOrder,
327
+ '216': InsufficientFunds,
328
+ '217': InvalidOrder,
329
+ '230': ExchangeError,
330
+ '231': ExchangeError,
331
+ '232': BadRequest,
332
+ '233': InvalidOrder,
333
+ '234': InvalidOrder,
334
+ '235': ExchangeError,
335
+ '236': BadRequest,
336
+ '240': OrderNotFound,
337
+ '300': AuthenticationError,
338
+ '301': AuthenticationError,
339
+ '302': AuthenticationError,
340
+ '303': AuthenticationError,
341
+ '304': AuthenticationError,
342
+ // "304": AuthenticationError, // Authentication is required for this endpoint.
343
+ '305': AuthenticationError,
344
+ '306': AuthenticationError,
345
+ '307': PermissionDenied,
346
+ '308': AuthenticationError,
347
+ '309': AuthenticationError,
348
+ '310': PermissionDenied,
349
+ '311': PermissionDenied,
350
+ '312': PermissionDenied,
351
+ '315': BadRequest,
352
+ '317': AccountSuspended,
353
+ '400': ExchangeError,
354
+ '401': ExchangeError,
355
+ '402': PermissionDenied,
356
+ '403': PermissionDenied,
357
+ '404': OnMaintenance,
358
+ '405': ExchangeError,
359
+ '406': BadRequest,
360
+ '407': ExchangeError,
361
+ '408': InsufficientFunds,
362
+ '409': InvalidAddress,
363
+ '410': ExchangeError,
364
+ '411': BadRequest,
365
+ '412': InvalidAddress,
366
+ '413': InvalidAddress,
367
+ '414': ExchangeError, // You cannot withdraw assets within 2 minutes of logging in.
368
+ },
369
+ 'broad': {
370
+ 'start parameter is invalid': BadRequest,
371
+ 'symbol parameter is invalid': BadSymbol,
372
+ 'amount parameter is invalid': InvalidOrder,
373
+ 'orderId parameter is invalid': InvalidOrder, // {"errorCode":205,"error":"orderId parameter is invalid."}
374
+ },
375
+ },
376
+ 'options': {
377
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
378
+ 'BITVAVO-ACCESS-WINDOW': 10000,
379
+ 'networks': {
380
+ 'ERC20': 'ETH',
381
+ 'TRC20': 'TRX',
382
+ },
383
+ 'operatorId': undefined,
384
+ 'fiatCurrencies': ['EUR'], // only fiat atm
385
+ },
386
+ 'precisionMode': SIGNIFICANT_DIGITS,
387
+ 'commonCurrencies': {
388
+ 'MIOTA': 'IOTA', // https://github.com/ccxt/ccxt/issues/7487
389
+ },
390
+ });
391
+ }
392
+ amountToPrecision(symbol, amount) {
393
+ // https://docs.bitfinex.com/docs/introduction#amount-precision
394
+ // The amount field allows up to 8 decimals.
395
+ // Anything exceeding this will be rounded to the 8th decimal.
396
+ return this.decimalToPrecision(amount, TRUNCATE, this.markets[symbol]['precision']['amount'], DECIMAL_PLACES);
397
+ }
398
+ priceToPrecision(symbol, price) {
399
+ price = this.decimalToPrecision(price, ROUND, this.markets[symbol]['precision']['price'], this.precisionMode);
400
+ // https://docs.bitfinex.com/docs/introduction#price-precision
401
+ // The precision level of all trading prices is based on significant figures.
402
+ // All pairs on Bitfinex use up to 5 significant digits and up to 8 decimals (e.g. 1.2345, 123.45, 1234.5, 0.00012345).
403
+ // Prices submit with a precision larger than 5 will be cut by the API.
404
+ return this.decimalToPrecision(price, TRUNCATE, 8, DECIMAL_PLACES);
405
+ }
406
+ /**
407
+ * @method
408
+ * @name bitvavo#fetchTime
409
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
410
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
411
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
412
+ */
413
+ async fetchTime(params = {}) {
414
+ const response = await this.publicGetTime(params);
415
+ //
416
+ // { "time": 1590379519148 }
417
+ //
418
+ return this.safeInteger(response, 'time');
419
+ }
420
+ /**
421
+ * @method
422
+ * @name bitvavo#fetchMarkets
423
+ * @see https://docs.bitvavo.com/#tag/General/paths/~1markets/get
424
+ * @description retrieves data on all markets for bitvavo
425
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
426
+ * @returns {object[]} an array of objects representing market data
427
+ */
428
+ async fetchMarkets(params = {}) {
429
+ const response = await this.publicGetMarkets(params);
430
+ //
431
+ // [
432
+ // {
433
+ // "market":"ADA-BTC",
434
+ // "status":"trading", // "trading" "halted" "auction"
435
+ // "base":"ADA",
436
+ // "quote":"BTC",
437
+ // "pricePrecision":5,
438
+ // "minOrderInBaseAsset":"100",
439
+ // "minOrderInQuoteAsset":"0.001",
440
+ // "orderTypes": [ "market", "limit" ]
441
+ // }
442
+ // ]
443
+ //
444
+ return this.parseMarkets(response);
445
+ }
446
+ parseMarkets(markets) {
447
+ const currencies = this.currencies;
448
+ const currenciesById = this.indexBy(currencies, 'id');
449
+ const result = [];
450
+ const fees = this.fees;
451
+ for (let i = 0; i < markets.length; i++) {
452
+ const market = markets[i];
453
+ const id = this.safeString(market, 'market');
454
+ const baseId = this.safeString(market, 'base');
455
+ const quoteId = this.safeString(market, 'quote');
456
+ const base = this.safeCurrencyCode(baseId);
457
+ const quote = this.safeCurrencyCode(quoteId);
458
+ const status = this.safeString(market, 'status');
459
+ const baseCurrency = this.safeValue(currenciesById, baseId);
460
+ const basePrecision = this.safeInteger(baseCurrency, 'precision');
461
+ result.push(this.safeMarketStructure({
462
+ 'id': id,
463
+ 'symbol': base + '/' + quote,
464
+ 'base': base,
465
+ 'quote': quote,
466
+ 'settle': undefined,
467
+ 'baseId': baseId,
468
+ 'quoteId': quoteId,
469
+ 'settleId': undefined,
470
+ 'type': 'spot',
471
+ 'spot': true,
472
+ 'margin': false,
473
+ 'swap': false,
474
+ 'future': false,
475
+ 'option': false,
476
+ 'active': (status === 'trading'),
477
+ 'contract': false,
478
+ 'linear': undefined,
479
+ 'inverse': undefined,
480
+ 'contractSize': undefined,
481
+ 'expiry': undefined,
482
+ 'expiryDatetime': undefined,
483
+ 'strike': undefined,
484
+ 'optionType': undefined,
485
+ 'taker': fees['trading']['taker'],
486
+ 'maker': fees['trading']['maker'],
487
+ 'precision': {
488
+ 'amount': this.safeInteger(baseCurrency, 'decimals', basePrecision),
489
+ 'price': this.safeInteger(market, 'pricePrecision'),
490
+ },
491
+ 'limits': {
492
+ 'leverage': {
493
+ 'min': undefined,
494
+ 'max': undefined,
495
+ },
496
+ 'amount': {
497
+ 'min': this.safeNumber(market, 'minOrderInBaseAsset'),
498
+ 'max': undefined,
499
+ },
500
+ 'price': {
501
+ 'min': undefined,
502
+ 'max': undefined,
503
+ },
504
+ 'cost': {
505
+ 'min': this.safeNumber(market, 'minOrderInQuoteAsset'),
506
+ 'max': undefined,
507
+ },
508
+ },
509
+ 'created': undefined,
510
+ 'info': market,
511
+ }));
512
+ }
513
+ return result;
514
+ }
515
+ /**
516
+ * @method
517
+ * @name bitvavo#fetchCurrencies
518
+ * @see https://docs.bitvavo.com/#tag/General/paths/~1assets/get
519
+ * @description fetches all available currencies on an exchange
520
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
521
+ * @returns {object} an associative dictionary of currencies
522
+ */
523
+ async fetchCurrencies(params = {}) {
524
+ const response = await this.publicGetAssets(params);
525
+ //
526
+ // [
527
+ // {
528
+ // "symbol": "USDT",
529
+ // "displayTicker": "USDT",
530
+ // "name": "Tether",
531
+ // "slug": "tether",
532
+ // "popularity": -1,
533
+ // "decimals": 6,
534
+ // "depositFee": "0",
535
+ // "depositConfirmations": 64,
536
+ // "depositStatus": "OK",
537
+ // "withdrawalFee": "3.2",
538
+ // "withdrawalMinAmount": "3.2",
539
+ // "withdrawalStatus": "OK",
540
+ // "networks": [
541
+ // "ETH"
542
+ // ],
543
+ // "light": {
544
+ // "color": "#009393",
545
+ // "icon": { "hash": "4ad7c699", "svg": "https://...", "webp16": "https://...", "webp32": "https://...", "webp64": "https://...", "webp128": "https://...", "webp256": "https://...", "png16": "https://...", "png32": "https://...", "png64": "https://...", "png128": "https://...", "png256": "https://..."
546
+ // }
547
+ // },
548
+ // "dark": {
549
+ // "color": "#009393",
550
+ // "icon": { "hash": "4ad7c699", "svg": "https://...", "webp16": "https://...", "webp32": "https://...", "webp64": "https://...", "webp128": "https://...", "webp256": "https://...", "png16": "https://...", "png32": "https://...", "png64": "https://...", "png128": "https://...", "png256": "https://..."
551
+ // }
552
+ // },
553
+ // "visibility": "PUBLIC",
554
+ // "message": ""
555
+ // },
556
+ // ]
557
+ //
558
+ return this.parseCurrenciesCustom(response);
559
+ }
560
+ parseCurrenciesCustom(currencies) {
561
+ //
562
+ // [
563
+ // {
564
+ // "symbol": "USDT",
565
+ // "displayTicker": "USDT",
566
+ // "name": "Tether",
567
+ // "slug": "tether",
568
+ // "popularity": -1,
569
+ // "decimals": 6,
570
+ // "depositFee": "0",
571
+ // "depositConfirmations": 64,
572
+ // "depositStatus": "OK",
573
+ // "withdrawalFee": "3.2",
574
+ // "withdrawalMinAmount": "3.2",
575
+ // "withdrawalStatus": "OK",
576
+ // "networks": [
577
+ // "ETH"
578
+ // ],
579
+ // "light": {
580
+ // "color": "#009393",
581
+ // "icon": { "hash": "4ad7c699", "svg": "https://...", "webp16": "https://...", "webp32": "https://...", "webp64": "https://...", "webp128": "https://...", "webp256": "https://...", "png16": "https://...", "png32": "https://...", "png64": "https://...", "png128": "https://...", "png256": "https://..."
582
+ // }
583
+ // },
584
+ // "dark": {
585
+ // "color": "#009393",
586
+ // "icon": { "hash": "4ad7c699", "svg": "https://...", "webp16": "https://...", "webp32": "https://...", "webp64": "https://...", "webp128": "https://...", "webp256": "https://...", "png16": "https://...", "png32": "https://...", "png64": "https://...", "png128": "https://...", "png256": "https://..."
587
+ // }
588
+ // },
589
+ // "visibility": "PUBLIC",
590
+ // "message": ""
591
+ // },
592
+ // ]
593
+ //
594
+ const fiatCurrencies = this.safeList(this.options, 'fiatCurrencies', []);
595
+ const result = {};
596
+ for (let i = 0; i < currencies.length; i++) {
597
+ const currency = currencies[i];
598
+ const id = this.safeString(currency, 'symbol');
599
+ const code = this.safeCurrencyCode(id);
600
+ const isFiat = this.inArray(code, fiatCurrencies);
601
+ const networks = {};
602
+ const networksArray = this.safeList(currency, 'networks', []);
603
+ const deposit = this.safeString(currency, 'depositStatus') === 'OK';
604
+ const withdrawal = this.safeString(currency, 'withdrawalStatus') === 'OK';
605
+ const active = deposit && withdrawal;
606
+ const withdrawFee = this.safeNumber(currency, 'withdrawalFee');
607
+ const precision = this.safeInteger(currency, 'decimals', 8);
608
+ const minWithdraw = this.safeNumber(currency, 'withdrawalMinAmount');
609
+ // btw, absolutely all of them have 1 network atm
610
+ for (let j = 0; j < networksArray.length; j++) {
611
+ const networkId = networksArray[j];
612
+ const networkCode = this.networkIdToCode(networkId);
613
+ networks[networkCode] = {
614
+ 'info': currency,
615
+ 'id': networkId,
616
+ 'network': networkCode,
617
+ 'active': active,
618
+ 'deposit': deposit,
619
+ 'withdraw': withdrawal,
620
+ 'fee': withdrawFee,
621
+ 'precision': precision,
622
+ 'limits': {
623
+ 'withdraw': {
624
+ 'min': minWithdraw,
625
+ 'max': undefined,
626
+ },
627
+ },
628
+ };
629
+ }
630
+ result[code] = this.safeCurrencyStructure({
631
+ 'info': currency,
632
+ 'id': id,
633
+ 'code': code,
634
+ 'name': this.safeString(currency, 'name'),
635
+ 'active': active,
636
+ 'deposit': deposit,
637
+ 'withdraw': withdrawal,
638
+ 'networks': networks,
639
+ 'fee': withdrawFee,
640
+ 'precision': precision,
641
+ 'type': isFiat ? 'fiat' : 'crypto',
642
+ 'limits': {
643
+ 'amount': {
644
+ 'min': undefined,
645
+ 'max': undefined,
646
+ },
647
+ 'deposit': {
648
+ 'min': undefined,
649
+ 'max': undefined,
650
+ },
651
+ 'withdraw': {
652
+ 'min': minWithdraw,
653
+ 'max': undefined,
654
+ },
655
+ },
656
+ });
657
+ }
658
+ // set currencies here to avoid calling publicGetAssets twice
659
+ this.currencies = this.mapToSafeMap(this.deepExtend(this.currencies, result));
660
+ return result;
661
+ }
662
+ /**
663
+ * @method
664
+ * @name bitvavo#fetchTicker
665
+ * @see https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
666
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
667
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
668
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
669
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
670
+ */
671
+ async fetchTicker(symbol, params = {}) {
672
+ await this.loadMarkets();
673
+ const market = this.market(symbol);
674
+ const request = {
675
+ 'market': market['id'],
676
+ };
677
+ const response = await this.publicGetTicker24h(this.extend(request, params));
678
+ //
679
+ // {
680
+ // "market":"ETH-BTC",
681
+ // "open":"0.022578",
682
+ // "high":"0.023019",
683
+ // "low":"0.022572",
684
+ // "last":"0.023019",
685
+ // "volume":"25.16366324",
686
+ // "volumeQuote":"0.57333305",
687
+ // "bid":"0.023039",
688
+ // "bidSize":"0.53500578",
689
+ // "ask":"0.023041",
690
+ // "askSize":"0.47859202",
691
+ // "timestamp":1590381666900
692
+ // }
693
+ //
694
+ return this.parseTicker(response, market);
695
+ }
696
+ parseTicker(ticker, market = undefined) {
697
+ //
698
+ // fetchTicker
699
+ //
700
+ // {
701
+ // "market":"ETH-BTC",
702
+ // "open":"0.022578",
703
+ // "high":"0.023019",
704
+ // "low":"0.022573",
705
+ // "last":"0.023019",
706
+ // "volume":"25.16366324",
707
+ // "volumeQuote":"0.57333305",
708
+ // "bid":"0.023039",
709
+ // "bidSize":"0.53500578",
710
+ // "ask":"0.023041",
711
+ // "askSize":"0.47859202",
712
+ // "timestamp":1590381666900
713
+ // }
714
+ //
715
+ const marketId = this.safeString(ticker, 'market');
716
+ const symbol = this.safeSymbol(marketId, market, '-');
717
+ const timestamp = this.safeInteger(ticker, 'timestamp');
718
+ const last = this.safeString(ticker, 'last');
719
+ const baseVolume = this.safeString(ticker, 'volume');
720
+ const quoteVolume = this.safeString(ticker, 'volumeQuote');
721
+ const open = this.safeString(ticker, 'open');
722
+ return this.safeTicker({
723
+ 'symbol': symbol,
724
+ 'timestamp': timestamp,
725
+ 'datetime': this.iso8601(timestamp),
726
+ 'high': this.safeString(ticker, 'high'),
727
+ 'low': this.safeString(ticker, 'low'),
728
+ 'bid': this.safeString(ticker, 'bid'),
729
+ 'bidVolume': this.safeString(ticker, 'bidSize'),
730
+ 'ask': this.safeString(ticker, 'ask'),
731
+ 'askVolume': this.safeString(ticker, 'askSize'),
732
+ 'vwap': undefined,
733
+ 'open': open,
734
+ 'close': last,
735
+ 'last': last,
736
+ 'previousClose': undefined,
737
+ 'change': undefined,
738
+ 'percentage': undefined,
739
+ 'average': undefined,
740
+ 'baseVolume': baseVolume,
741
+ 'quoteVolume': quoteVolume,
742
+ 'info': ticker,
743
+ }, market);
744
+ }
745
+ /**
746
+ * @method
747
+ * @name bitvavo#fetchTickers
748
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
749
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
750
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
751
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
752
+ */
753
+ async fetchTickers(symbols = undefined, params = {}) {
754
+ await this.loadMarkets();
755
+ const response = await this.publicGetTicker24h(params);
756
+ //
757
+ // [
758
+ // {
759
+ // "market":"ADA-BTC",
760
+ // "open":"0.0000059595",
761
+ // "high":"0.0000059765",
762
+ // "low":"0.0000059595",
763
+ // "last":"0.0000059765",
764
+ // "volume":"2923.172",
765
+ // "volumeQuote":"0.01743483",
766
+ // "bid":"0.0000059515",
767
+ // "bidSize":"1117.630919",
768
+ // "ask":"0.0000059585",
769
+ // "askSize":"809.999739",
770
+ // "timestamp":1590382266324
771
+ // }
772
+ // ]
773
+ //
774
+ return this.parseTickers(response, symbols);
775
+ }
776
+ /**
777
+ * @method
778
+ * @name bitvavo#fetchTrades
779
+ * @see https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
780
+ * @description get the list of most recent trades for a particular symbol
781
+ * @param {string} symbol unified symbol of the market to fetch trades for
782
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
783
+ * @param {int} [limit] the maximum amount of trades to fetch
784
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
785
+ * @param {int} [params.until] the latest time in ms to fetch entries for
786
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
787
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
788
+ */
789
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
790
+ await this.loadMarkets();
791
+ const market = this.market(symbol);
792
+ let paginate = false;
793
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchTrades', 'paginate');
794
+ if (paginate) {
795
+ return await this.fetchPaginatedCallDynamic('fetchTrades', symbol, since, limit, params);
796
+ }
797
+ let request = {
798
+ 'market': market['id'],
799
+ // "limit": 500, // default 500, max 1000
800
+ // "start": since,
801
+ // "end": this.milliseconds (),
802
+ // "tradeIdFrom": "57b1159b-6bf5-4cde-9e2c-6bd6a5678baf",
803
+ // "tradeIdTo": "57b1159b-6bf5-4cde-9e2c-6bd6a5678baf",
804
+ };
805
+ if (limit !== undefined) {
806
+ request['limit'] = Math.min(limit, 1000);
807
+ }
808
+ if (since !== undefined) {
809
+ request['start'] = since;
810
+ }
811
+ [request, params] = this.handleUntilOption('end', request, params);
812
+ const response = await this.publicGetMarketTrades(this.extend(request, params));
813
+ //
814
+ // [
815
+ // {
816
+ // "id":"94154c98-6e8b-4e33-92a8-74e33fc05650",
817
+ // "timestamp":1590382761859,
818
+ // "amount":"0.06026079",
819
+ // "price":"8095.3",
820
+ // "side":"buy"
821
+ // }
822
+ // ]
823
+ //
824
+ return this.parseTrades(response, market, since, limit);
825
+ }
826
+ parseTrade(trade, market = undefined) {
827
+ //
828
+ // fetchTrades (public)
829
+ //
830
+ // {
831
+ // "id":"94154c98-6e8b-4e33-92a8-74e33fc05650",
832
+ // "timestamp":1590382761859,
833
+ // "amount":"0.06026079",
834
+ // "price":"8095.3",
835
+ // "side":"buy"
836
+ // }
837
+ //
838
+ // createOrder, fetchOpenOrders, fetchOrders, editOrder (private)
839
+ //
840
+ // {
841
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
842
+ // "timestamp":1590505649245,
843
+ // "amount":"0.249825",
844
+ // "price":"183.49",
845
+ // "taker":true,
846
+ // "fee":"0.12038925",
847
+ // "feeCurrency":"EUR",
848
+ // "settled":true
849
+ // }
850
+ //
851
+ // fetchMyTrades (private)
852
+ //
853
+ // {
854
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
855
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
856
+ // "timestamp":1590505649245,
857
+ // "market":"ETH-EUR",
858
+ // "side":"sell",
859
+ // "amount":"0.249825",
860
+ // "price":"183.49",
861
+ // "taker":true,
862
+ // "fee":"0.12038925",
863
+ // "feeCurrency":"EUR",
864
+ // "settled":true
865
+ // }
866
+ //
867
+ // watchMyTrades (private)
868
+ //
869
+ // {
870
+ // "event": "fill",
871
+ // "timestamp": 1590964470132,
872
+ // "market": "ETH-EUR",
873
+ // "orderId": "85d082e1-eda4-4209-9580-248281a29a9a",
874
+ // "fillId": "861d2da5-aa93-475c-8d9a-dce431bd4211",
875
+ // "side": "sell",
876
+ // "amount": "0.1",
877
+ // "price": "211.46",
878
+ // "taker": true,
879
+ // "fee": "0.056",
880
+ // "feeCurrency": "EUR"
881
+ // }
882
+ //
883
+ const priceString = this.safeString(trade, 'price');
884
+ const amountString = this.safeString(trade, 'amount');
885
+ const timestamp = this.safeInteger(trade, 'timestamp');
886
+ const side = this.safeString(trade, 'side');
887
+ const id = this.safeString2(trade, 'id', 'fillId');
888
+ const marketId = this.safeString(trade, 'market');
889
+ const symbol = this.safeSymbol(marketId, market, '-');
890
+ const taker = this.safeValue(trade, 'taker');
891
+ let takerOrMaker = undefined;
892
+ if (taker !== undefined) {
893
+ takerOrMaker = taker ? 'taker' : 'maker';
894
+ }
895
+ const feeCostString = this.safeString(trade, 'fee');
896
+ let fee = undefined;
897
+ if (feeCostString !== undefined) {
898
+ const feeCurrencyId = this.safeString(trade, 'feeCurrency');
899
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
900
+ fee = {
901
+ 'cost': feeCostString,
902
+ 'currency': feeCurrencyCode,
903
+ };
904
+ }
905
+ const orderId = this.safeString(trade, 'orderId');
906
+ return this.safeTrade({
907
+ 'info': trade,
908
+ 'id': id,
909
+ 'symbol': symbol,
910
+ 'timestamp': timestamp,
911
+ 'datetime': this.iso8601(timestamp),
912
+ 'order': orderId,
913
+ 'type': undefined,
914
+ 'side': side,
915
+ 'takerOrMaker': takerOrMaker,
916
+ 'price': priceString,
917
+ 'amount': amountString,
918
+ 'cost': undefined,
919
+ 'fee': fee,
920
+ }, market);
921
+ }
922
+ /**
923
+ * @method
924
+ * @name bitvavo#fetchTradingFees
925
+ * @see https://docs.bitvavo.com/#tag/Account/paths/~1account/get
926
+ * @description fetch the trading fees for multiple markets
927
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
928
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
929
+ */
930
+ async fetchTradingFees(params = {}) {
931
+ await this.loadMarkets();
932
+ const response = await this.privateGetAccount(params);
933
+ //
934
+ // {
935
+ // "fees": {
936
+ // "taker": "0.0025",
937
+ // "maker": "0.0015",
938
+ // "volume": "10000.00"
939
+ // }
940
+ // }
941
+ //
942
+ return this.parseTradingFees(response);
943
+ }
944
+ parseTradingFees(fees, market = undefined) {
945
+ //
946
+ // {
947
+ // "fees": {
948
+ // "taker": "0.0025",
949
+ // "maker": "0.0015",
950
+ // "volume": "10000.00"
951
+ // }
952
+ // }
953
+ //
954
+ const feesValue = this.safeValue(fees, 'fees');
955
+ const maker = this.safeNumber(feesValue, 'maker');
956
+ const taker = this.safeNumber(feesValue, 'taker');
957
+ const result = {};
958
+ for (let i = 0; i < this.symbols.length; i++) {
959
+ const symbol = this.symbols[i];
960
+ result[symbol] = {
961
+ 'info': fees,
962
+ 'symbol': symbol,
963
+ 'maker': maker,
964
+ 'taker': taker,
965
+ 'percentage': true,
966
+ 'tierBased': true,
967
+ };
968
+ }
969
+ return result;
970
+ }
971
+ /**
972
+ * @method
973
+ * @name bitvavo#fetchOrderBook
974
+ * @see https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
975
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
976
+ * @param {string} symbol unified symbol of the market to fetch the order book for
977
+ * @param {int} [limit] the maximum amount of order book entries to return
978
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
979
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
980
+ */
981
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
982
+ await this.loadMarkets();
983
+ const market = this.market(symbol);
984
+ const request = {
985
+ 'market': market['id'],
986
+ };
987
+ if (limit !== undefined) {
988
+ request['depth'] = limit;
989
+ }
990
+ const response = await this.publicGetMarketBook(this.extend(request, params));
991
+ //
992
+ // {
993
+ // "market":"BTC-EUR",
994
+ // "nonce":35883831,
995
+ // "bids":[
996
+ // ["8097.4","0.6229099"],
997
+ // ["8097.2","0.64151283"],
998
+ // ["8097.1","0.24966294"],
999
+ // ],
1000
+ // "asks":[
1001
+ // ["8097.5","1.36916911"],
1002
+ // ["8098.8","0.33462248"],
1003
+ // ["8099.3","1.12908646"],
1004
+ // ]
1005
+ // }
1006
+ //
1007
+ const orderbook = this.parseOrderBook(response, market['symbol']);
1008
+ orderbook['nonce'] = this.safeInteger(response, 'nonce');
1009
+ return orderbook;
1010
+ }
1011
+ parseOHLCV(ohlcv, market = undefined) {
1012
+ //
1013
+ // [
1014
+ // 1590383700000,
1015
+ // "8088.5",
1016
+ // "8088.5",
1017
+ // "8088.5",
1018
+ // "8088.5",
1019
+ // "0.04788623"
1020
+ // ]
1021
+ //
1022
+ return [
1023
+ this.safeInteger(ohlcv, 0),
1024
+ this.safeNumber(ohlcv, 1),
1025
+ this.safeNumber(ohlcv, 2),
1026
+ this.safeNumber(ohlcv, 3),
1027
+ this.safeNumber(ohlcv, 4),
1028
+ this.safeNumber(ohlcv, 5),
1029
+ ];
1030
+ }
1031
+ fetchOHLCVRequest(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1032
+ const market = this.market(symbol);
1033
+ let request = {
1034
+ 'market': market['id'],
1035
+ 'interval': this.safeString(this.timeframes, timeframe, timeframe),
1036
+ // "limit": 1440, // default 1440, max 1440
1037
+ // "start": since,
1038
+ // "end": this.milliseconds (),
1039
+ };
1040
+ if (since !== undefined) {
1041
+ // https://github.com/ccxt/ccxt/issues/9227
1042
+ const duration = this.parseTimeframe(timeframe);
1043
+ request['start'] = since;
1044
+ if (limit === undefined) {
1045
+ limit = 1440;
1046
+ }
1047
+ else {
1048
+ limit = Math.min(limit, 1440);
1049
+ }
1050
+ request['end'] = this.sum(since, limit * duration * 1000);
1051
+ }
1052
+ [request, params] = this.handleUntilOption('end', request, params);
1053
+ if (limit !== undefined) {
1054
+ request['limit'] = limit; // default 1440, max 1440
1055
+ }
1056
+ return this.extend(request, params);
1057
+ }
1058
+ /**
1059
+ * @method
1060
+ * @name bitvavo#fetchOHLCV
1061
+ * @see https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
1062
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1063
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1064
+ * @param {string} timeframe the length of time each candle represents
1065
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1066
+ * @param {int} [limit] the maximum amount of candles to fetch
1067
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1068
+ * @param {int} [params.until] the latest time in ms to fetch entries for
1069
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1070
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1071
+ */
1072
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1073
+ await this.loadMarkets();
1074
+ const market = this.market(symbol);
1075
+ let paginate = false;
1076
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate');
1077
+ if (paginate) {
1078
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 1440);
1079
+ }
1080
+ const request = this.fetchOHLCVRequest(symbol, timeframe, since, limit, params);
1081
+ const response = await this.publicGetMarketCandles(request);
1082
+ //
1083
+ // [
1084
+ // [1590383700000,"8088.5","8088.5","8088.5","8088.5","0.04788623"],
1085
+ // [1590383580000,"8091.3","8091.5","8091.3","8091.5","0.04931221"],
1086
+ // [1590383520000,"8090.3","8092.7","8090.3","8092.5","0.04001286"],
1087
+ // ]
1088
+ //
1089
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
1090
+ }
1091
+ parseBalance(response) {
1092
+ const result = {
1093
+ 'info': response,
1094
+ 'timestamp': undefined,
1095
+ 'datetime': undefined,
1096
+ };
1097
+ for (let i = 0; i < response.length; i++) {
1098
+ const balance = response[i];
1099
+ const currencyId = this.safeString(balance, 'symbol');
1100
+ const code = this.safeCurrencyCode(currencyId);
1101
+ const account = this.account();
1102
+ account['free'] = this.safeString(balance, 'available');
1103
+ account['used'] = this.safeString(balance, 'inOrder');
1104
+ result[code] = account;
1105
+ }
1106
+ return this.safeBalance(result);
1107
+ }
1108
+ /**
1109
+ * @method
1110
+ * @name bitvavo#fetchBalance
1111
+ * @see https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
1112
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1113
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1114
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1115
+ */
1116
+ async fetchBalance(params = {}) {
1117
+ await this.loadMarkets();
1118
+ const response = await this.privateGetBalance(params);
1119
+ //
1120
+ // [
1121
+ // {
1122
+ // "symbol": "BTC",
1123
+ // "available": "1.57593193",
1124
+ // "inOrder": "0.74832374"
1125
+ // }
1126
+ // ]
1127
+ //
1128
+ return this.parseBalance(response);
1129
+ }
1130
+ /**
1131
+ * @method
1132
+ * @name bitvavo#fetchDepositAddress
1133
+ * @description fetch the deposit address for a currency associated with this account
1134
+ * @param {string} code unified currency code
1135
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1136
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1137
+ */
1138
+ async fetchDepositAddress(code, params = {}) {
1139
+ await this.loadMarkets();
1140
+ const currency = this.currency(code);
1141
+ const request = {
1142
+ 'symbol': currency['id'],
1143
+ };
1144
+ const response = await this.privateGetDeposit(this.extend(request, params));
1145
+ //
1146
+ // {
1147
+ // "address": "0x449889e3234514c45d57f7c5a571feba0c7ad567",
1148
+ // "paymentId": "10002653"
1149
+ // }
1150
+ //
1151
+ const address = this.safeString(response, 'address');
1152
+ const tag = this.safeString(response, 'paymentId');
1153
+ this.checkAddress(address);
1154
+ return {
1155
+ 'info': response,
1156
+ 'currency': code,
1157
+ 'network': undefined,
1158
+ 'address': address,
1159
+ 'tag': tag,
1160
+ };
1161
+ }
1162
+ createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1163
+ const market = this.market(symbol);
1164
+ const request = {
1165
+ 'market': market['id'],
1166
+ 'side': side,
1167
+ 'orderType': type,
1168
+ };
1169
+ const isMarketOrder = (type === 'market') || (type === 'stopLoss') || (type === 'takeProfit');
1170
+ const isLimitOrder = (type === 'limit') || (type === 'stopLossLimit') || (type === 'takeProfitLimit');
1171
+ const timeInForce = this.safeString(params, 'timeInForce');
1172
+ let triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'triggerAmount']);
1173
+ const postOnly = this.isPostOnly(isMarketOrder, false, params);
1174
+ const stopLossPrice = this.safeValue(params, 'stopLossPrice'); // trigger when price crosses from above to below this value
1175
+ const takeProfitPrice = this.safeValue(params, 'takeProfitPrice'); // trigger when price crosses from below to above this value
1176
+ params = this.omit(params, ['timeInForce', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice']);
1177
+ if (isMarketOrder) {
1178
+ let cost = undefined;
1179
+ if (price !== undefined) {
1180
+ const priceString = this.numberToString(price);
1181
+ const amountString = this.numberToString(amount);
1182
+ const quoteAmount = Precise.stringMul(amountString, priceString);
1183
+ cost = this.parseNumber(quoteAmount);
1184
+ }
1185
+ else {
1186
+ cost = this.safeNumber(params, 'cost');
1187
+ }
1188
+ if (cost !== undefined) {
1189
+ const precision = this.currency(market['quote'])['precision'];
1190
+ request['amountQuote'] = this.decimalToPrecision(cost, TRUNCATE, precision, this.precisionMode);
1191
+ }
1192
+ else {
1193
+ request['amount'] = this.amountToPrecision(symbol, amount);
1194
+ }
1195
+ params = this.omit(params, ['cost']);
1196
+ }
1197
+ else if (isLimitOrder) {
1198
+ request['price'] = this.priceToPrecision(symbol, price);
1199
+ request['amount'] = this.amountToPrecision(symbol, amount);
1200
+ }
1201
+ const isTakeProfit = (takeProfitPrice !== undefined) || (type === 'takeProfit') || (type === 'takeProfitLimit');
1202
+ const isStopLoss = (stopLossPrice !== undefined) || (triggerPrice !== undefined) && (!isTakeProfit) || (type === 'stopLoss') || (type === 'stopLossLimit');
1203
+ if (isStopLoss) {
1204
+ if (stopLossPrice !== undefined) {
1205
+ triggerPrice = stopLossPrice;
1206
+ }
1207
+ request['orderType'] = isMarketOrder ? 'stopLoss' : 'stopLossLimit';
1208
+ }
1209
+ else if (isTakeProfit) {
1210
+ if (takeProfitPrice !== undefined) {
1211
+ triggerPrice = takeProfitPrice;
1212
+ }
1213
+ request['orderType'] = isMarketOrder ? 'takeProfit' : 'takeProfitLimit';
1214
+ }
1215
+ if (triggerPrice !== undefined) {
1216
+ request['triggerAmount'] = this.priceToPrecision(symbol, triggerPrice);
1217
+ request['triggerType'] = 'price';
1218
+ request['triggerReference'] = 'lastTrade'; // 'bestBid', 'bestAsk', 'midPrice'
1219
+ }
1220
+ if ((timeInForce !== undefined) && (timeInForce !== 'PO')) {
1221
+ request['timeInForce'] = timeInForce;
1222
+ }
1223
+ if (postOnly) {
1224
+ request['postOnly'] = true;
1225
+ }
1226
+ let operatorId = undefined;
1227
+ [operatorId, params] = this.handleOptionAndParams(params, 'createOrder', 'operatorId');
1228
+ if (operatorId !== undefined) {
1229
+ request['operatorId'] = this.parseToInt(operatorId);
1230
+ }
1231
+ else {
1232
+ throw new ArgumentsRequired(this.id + ' createOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890');
1233
+ }
1234
+ return this.extend(request, params);
1235
+ }
1236
+ /**
1237
+ * @method
1238
+ * @name bitvavo#createOrder
1239
+ * @description create a trade order
1240
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
1241
+ * @param {string} symbol unified symbol of the market to create an order in
1242
+ * @param {string} type 'market' or 'limit'
1243
+ * @param {string} side 'buy' or 'sell'
1244
+ * @param {float} amount how much of currency you want to trade in units of base currency
1245
+ * @param {float} price the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1246
+ * @param {object} [params] extra parameters specific to the bitvavo api endpoint
1247
+ * @param {string} [params.timeInForce] "GTC", "IOC", or "PO"
1248
+ * @param {float} [params.stopPrice] Alias for triggerPrice
1249
+ * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
1250
+ * @param {bool} [params.postOnly] If true, the order will only be posted to the order book and not executed immediately
1251
+ * @param {float} [params.stopLossPrice] The price at which a stop loss order is triggered at
1252
+ * @param {float} [params.takeProfitPrice] The price at which a take profit order is triggered at
1253
+ * @param {string} [params.triggerType] "price"
1254
+ * @param {string} [params.triggerReference] "lastTrade", "bestBid", "bestAsk", "midPrice" Only for stop orders: Use this to determine which parameter will trigger the order
1255
+ * @param {string} [params.selfTradePrevention] "decrementAndCancel", "cancelOldest", "cancelNewest", "cancelBoth"
1256
+ * @param {bool} [params.disableMarketProtection] don't cancel if the next fill price is 10% worse than the best fill price
1257
+ * @param {bool} [params.responseRequired] Set this to 'false' when only an acknowledgement of success or failure is required, this is faster.
1258
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1259
+ */
1260
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1261
+ await this.loadMarkets();
1262
+ const market = this.market(symbol);
1263
+ const request = this.createOrderRequest(symbol, type, side, amount, price, params);
1264
+ const response = await this.privatePostOrder(request);
1265
+ //
1266
+ // {
1267
+ // "orderId":"dec6a640-5b4c-45bc-8d22-3b41c6716630",
1268
+ // "market":"DOGE-EUR",
1269
+ // "created":1654789135146,
1270
+ // "updated":1654789135153,
1271
+ // "status":"new",
1272
+ // "side":"buy",
1273
+ // "orderType":"stopLossLimit",
1274
+ // "amount":"200",
1275
+ // "amountRemaining":"200",
1276
+ // "price":"0.07471",
1277
+ // "triggerPrice":"0.0747",
1278
+ // "triggerAmount":"0.0747",
1279
+ // "triggerType":"price",
1280
+ // "triggerReference":"lastTrade",
1281
+ // "onHold":"14.98",
1282
+ // "onHoldCurrency":"EUR",
1283
+ // "filledAmount":"0",
1284
+ // "filledAmountQuote":"0",
1285
+ // "feePaid":"0",
1286
+ // "feeCurrency":"EUR",
1287
+ // "fills":[ // filled with market orders only
1288
+ // {
1289
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1290
+ // "timestamp":1590505649245,
1291
+ // "amount":"0.249825",
1292
+ // "price":"183.49",
1293
+ // "taker":true,
1294
+ // "fee":"0.12038925",
1295
+ // "feeCurrency":"EUR",
1296
+ // "settled":true
1297
+ // }
1298
+ // ],
1299
+ // "selfTradePrevention":"decrementAndCancel",
1300
+ // "visible":true,
1301
+ // "timeInForce":"GTC",
1302
+ // "postOnly":false
1303
+ // }
1304
+ //
1305
+ return this.parseOrder(response, market);
1306
+ }
1307
+ editOrderRequest(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1308
+ let request = {};
1309
+ const market = this.market(symbol);
1310
+ const amountRemaining = this.safeNumber(params, 'amountRemaining');
1311
+ const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'triggerAmount']);
1312
+ params = this.omit(params, ['amountRemaining', 'triggerPrice', 'stopPrice', 'triggerAmount']);
1313
+ if (price !== undefined) {
1314
+ request['price'] = this.priceToPrecision(symbol, price);
1315
+ }
1316
+ if (amount !== undefined) {
1317
+ request['amount'] = this.amountToPrecision(symbol, amount);
1318
+ }
1319
+ if (amountRemaining !== undefined) {
1320
+ request['amountRemaining'] = this.amountToPrecision(symbol, amountRemaining);
1321
+ }
1322
+ if (triggerPrice !== undefined) {
1323
+ request['triggerAmount'] = this.priceToPrecision(symbol, triggerPrice);
1324
+ }
1325
+ request = this.extend(request, params);
1326
+ if (this.isEmpty(request)) {
1327
+ throw new ArgumentsRequired(this.id + ' editOrder() requires an amount argument, or a price argument, or non-empty params');
1328
+ }
1329
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1330
+ if (clientOrderId === undefined) {
1331
+ request['orderId'] = id;
1332
+ }
1333
+ let operatorId = undefined;
1334
+ [operatorId, params] = this.handleOptionAndParams(params, 'editOrder', 'operatorId');
1335
+ if (operatorId !== undefined) {
1336
+ request['operatorId'] = this.parseToInt(operatorId);
1337
+ }
1338
+ else {
1339
+ throw new ArgumentsRequired(this.id + ' editOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890');
1340
+ }
1341
+ request['market'] = market['id'];
1342
+ return request;
1343
+ }
1344
+ /**
1345
+ * @method
1346
+ * @name bitvavo#editOrder
1347
+ * @description edit a trade order
1348
+ * @see https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
1349
+ * @param {string} id cancel order id
1350
+ * @param {string} symbol unified symbol of the market to create an order in
1351
+ * @param {string} type 'market' or 'limit'
1352
+ * @param {string} side 'buy' or 'sell'
1353
+ * @param {float} [amount] how much of currency you want to trade in units of base currency
1354
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1355
+ * @param {object} [params] extra parameters specific to the bitvavo api endpoint
1356
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1357
+ */
1358
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1359
+ await this.loadMarkets();
1360
+ const market = this.market(symbol);
1361
+ const request = this.editOrderRequest(id, symbol, type, side, amount, price, params);
1362
+ const response = await this.privatePutOrder(request);
1363
+ return this.parseOrder(response, market);
1364
+ }
1365
+ cancelOrderRequest(id, symbol = undefined, params = {}) {
1366
+ if (symbol === undefined) {
1367
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
1368
+ }
1369
+ const market = this.market(symbol);
1370
+ const request = {
1371
+ 'market': market['id'],
1372
+ };
1373
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1374
+ if (clientOrderId === undefined) {
1375
+ request['orderId'] = id;
1376
+ }
1377
+ let operatorId = undefined;
1378
+ [operatorId, params] = this.handleOptionAndParams(params, 'cancelOrder', 'operatorId');
1379
+ if (operatorId !== undefined) {
1380
+ request['operatorId'] = this.parseToInt(operatorId);
1381
+ }
1382
+ else {
1383
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890');
1384
+ }
1385
+ return this.extend(request, params);
1386
+ }
1387
+ /**
1388
+ * @method
1389
+ * @name bitvavo#cancelOrder
1390
+ * @see https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
1391
+ * @description cancels an open order
1392
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
1393
+ * @param {string} id order id
1394
+ * @param {string} symbol unified symbol of the market the order was made in
1395
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1396
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1397
+ */
1398
+ async cancelOrder(id, symbol = undefined, params = {}) {
1399
+ await this.loadMarkets();
1400
+ const market = this.market(symbol);
1401
+ const request = this.cancelOrderRequest(id, symbol, params);
1402
+ const response = await this.privateDeleteOrder(request);
1403
+ //
1404
+ // {
1405
+ // "orderId": "2e7ce7fc-44e2-4d80-a4a7-d079c4750b61"
1406
+ // }
1407
+ //
1408
+ return this.parseOrder(response, market);
1409
+ }
1410
+ /**
1411
+ * @method
1412
+ * @name bitvavo#cancelAllOrders
1413
+ * @see https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
1414
+ * @description cancel all open orders
1415
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1416
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1417
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1418
+ */
1419
+ async cancelAllOrders(symbol = undefined, params = {}) {
1420
+ await this.loadMarkets();
1421
+ const request = {};
1422
+ let market = undefined;
1423
+ if (symbol !== undefined) {
1424
+ market = this.market(symbol);
1425
+ request['market'] = market['id'];
1426
+ }
1427
+ const response = await this.privateDeleteOrders(this.extend(request, params));
1428
+ //
1429
+ // [
1430
+ // {
1431
+ // "orderId": "1be6d0df-d5dc-4b53-a250-3376f3b393e6"
1432
+ // }
1433
+ // ]
1434
+ //
1435
+ return this.parseOrders(response, market);
1436
+ }
1437
+ /**
1438
+ * @method
1439
+ * @name bitvavo#fetchOrder
1440
+ * @description fetches information on an order made by the user
1441
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
1442
+ * @param {string} id the order id
1443
+ * @param {string} symbol unified symbol of the market the order was made in
1444
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1445
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1446
+ */
1447
+ async fetchOrder(id, symbol = undefined, params = {}) {
1448
+ if (symbol === undefined) {
1449
+ throw new ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
1450
+ }
1451
+ await this.loadMarkets();
1452
+ const market = this.market(symbol);
1453
+ const request = {
1454
+ 'market': market['id'],
1455
+ };
1456
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1457
+ if (clientOrderId === undefined) {
1458
+ request['orderId'] = id;
1459
+ }
1460
+ const response = await this.privateGetOrder(this.extend(request, params));
1461
+ //
1462
+ // {
1463
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
1464
+ // "market":"ETH-EUR",
1465
+ // "created":1590505649241,
1466
+ // "updated":1590505649241,
1467
+ // "status":"filled",
1468
+ // "side":"sell",
1469
+ // "orderType":"market",
1470
+ // "amount":"0.249825",
1471
+ // "amountRemaining":"0",
1472
+ // "onHold":"0",
1473
+ // "onHoldCurrency":"ETH",
1474
+ // "filledAmount":"0.249825",
1475
+ // "filledAmountQuote":"45.84038925",
1476
+ // "feePaid":"0.12038925",
1477
+ // "feeCurrency":"EUR",
1478
+ // "fills":[
1479
+ // {
1480
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1481
+ // "timestamp":1590505649245,
1482
+ // "amount":"0.249825",
1483
+ // "price":"183.49",
1484
+ // "taker":true,
1485
+ // "fee":"0.12038925",
1486
+ // "feeCurrency":"EUR",
1487
+ // "settled":true
1488
+ // }
1489
+ // ],
1490
+ // "selfTradePrevention":"decrementAndCancel",
1491
+ // "visible":false,
1492
+ // "disableMarketProtection":false
1493
+ // }
1494
+ //
1495
+ return this.parseOrder(response, market);
1496
+ }
1497
+ fetchOrdersRequest(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1498
+ const market = this.market(symbol);
1499
+ let request = {
1500
+ 'market': market['id'],
1501
+ // "limit": 500,
1502
+ // "start": since,
1503
+ // "end": this.milliseconds (),
1504
+ // "orderIdFrom": "af76d6ce-9f7c-4006-b715-bb5d430652d0",
1505
+ // "orderIdTo": "af76d6ce-9f7c-4006-b715-bb5d430652d0",
1506
+ };
1507
+ if (since !== undefined) {
1508
+ request['start'] = since;
1509
+ }
1510
+ if (limit !== undefined) {
1511
+ request['limit'] = limit; // default 500, max 1000
1512
+ }
1513
+ [request, params] = this.handleUntilOption('end', request, params);
1514
+ return this.extend(request, params);
1515
+ }
1516
+ /**
1517
+ * @method
1518
+ * @name bitvavo#fetchOrders
1519
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
1520
+ * @description fetches information on multiple orders made by the user
1521
+ * @param {string} symbol unified market symbol of the market orders were made in
1522
+ * @param {int} [since] the earliest time in ms to fetch orders for
1523
+ * @param {int} [limit] the maximum number of order structures to retrieve
1524
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1525
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1526
+ * @param {int} [params.until] the latest time in ms to fetch entries for
1527
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1528
+ */
1529
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1530
+ if (symbol === undefined) {
1531
+ throw new ArgumentsRequired(this.id + ' fetchOrders() requires a symbol argument');
1532
+ }
1533
+ await this.loadMarkets();
1534
+ let paginate = false;
1535
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOrders', 'paginate');
1536
+ if (paginate) {
1537
+ return await this.fetchPaginatedCallDynamic('fetchOrders', symbol, since, limit, params);
1538
+ }
1539
+ const market = this.market(symbol);
1540
+ const request = this.fetchOrdersRequest(symbol, since, limit, params);
1541
+ const response = await this.privateGetOrders(request);
1542
+ //
1543
+ // [
1544
+ // {
1545
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
1546
+ // "market":"ETH-EUR",
1547
+ // "created":1590505649241,
1548
+ // "updated":1590505649241,
1549
+ // "status":"filled",
1550
+ // "side":"sell",
1551
+ // "orderType":"market",
1552
+ // "amount":"0.249825",
1553
+ // "amountRemaining":"0",
1554
+ // "onHold":"0",
1555
+ // "onHoldCurrency":"ETH",
1556
+ // "filledAmount":"0.249825",
1557
+ // "filledAmountQuote":"45.84038925",
1558
+ // "feePaid":"0.12038925",
1559
+ // "feeCurrency":"EUR",
1560
+ // "fills":[
1561
+ // {
1562
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1563
+ // "timestamp":1590505649245,
1564
+ // "amount":"0.249825",
1565
+ // "price":"183.49",
1566
+ // "taker":true,
1567
+ // "fee":"0.12038925",
1568
+ // "feeCurrency":"EUR",
1569
+ // "settled":true
1570
+ // }
1571
+ // ],
1572
+ // "selfTradePrevention":"decrementAndCancel",
1573
+ // "visible":false,
1574
+ // "disableMarketProtection":false
1575
+ // }
1576
+ // ]
1577
+ //
1578
+ return this.parseOrders(response, market, since, limit);
1579
+ }
1580
+ /**
1581
+ * @method
1582
+ * @name bitvavo#fetchOpenOrders
1583
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
1584
+ * @description fetch all unfilled currently open orders
1585
+ * @param {string} symbol unified market symbol
1586
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1587
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1588
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1589
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1590
+ */
1591
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1592
+ await this.loadMarkets();
1593
+ const request = {
1594
+ // "market": market["id"], // rate limit 25 without a market, 1 with market specified
1595
+ };
1596
+ let market = undefined;
1597
+ if (symbol !== undefined) {
1598
+ market = this.market(symbol);
1599
+ request['market'] = market['id'];
1600
+ }
1601
+ const response = await this.privateGetOrdersOpen(this.extend(request, params));
1602
+ //
1603
+ // [
1604
+ // {
1605
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
1606
+ // "market":"ETH-EUR",
1607
+ // "created":1590505649241,
1608
+ // "updated":1590505649241,
1609
+ // "status":"filled",
1610
+ // "side":"sell",
1611
+ // "orderType":"market",
1612
+ // "amount":"0.249825",
1613
+ // "amountRemaining":"0",
1614
+ // "onHold":"0",
1615
+ // "onHoldCurrency":"ETH",
1616
+ // "filledAmount":"0.249825",
1617
+ // "filledAmountQuote":"45.84038925",
1618
+ // "feePaid":"0.12038925",
1619
+ // "feeCurrency":"EUR",
1620
+ // "fills":[
1621
+ // {
1622
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1623
+ // "timestamp":1590505649245,
1624
+ // "amount":"0.249825",
1625
+ // "price":"183.49",
1626
+ // "taker":true,
1627
+ // "fee":"0.12038925",
1628
+ // "feeCurrency":"EUR",
1629
+ // "settled":true
1630
+ // }
1631
+ // ],
1632
+ // "selfTradePrevention":"decrementAndCancel",
1633
+ // "visible":false,
1634
+ // "disableMarketProtection":false
1635
+ // }
1636
+ // ]
1637
+ //
1638
+ return this.parseOrders(response, market, since, limit);
1639
+ }
1640
+ parseOrderStatus(status) {
1641
+ const statuses = {
1642
+ 'new': 'open',
1643
+ 'canceled': 'canceled',
1644
+ 'canceledAuction': 'canceled',
1645
+ 'canceledSelfTradePrevention': 'canceled',
1646
+ 'canceledIOC': 'canceled',
1647
+ 'canceledFOK': 'canceled',
1648
+ 'canceledMarketProtection': 'canceled',
1649
+ 'canceledPostOnly': 'canceled',
1650
+ 'filled': 'closed',
1651
+ 'partiallyFilled': 'open',
1652
+ 'expired': 'canceled',
1653
+ 'rejected': 'canceled',
1654
+ 'awaitingTrigger': 'open', // https://github.com/ccxt/ccxt/issues/8489
1655
+ };
1656
+ return this.safeString(statuses, status, status);
1657
+ }
1658
+ parseOrder(order, market = undefined) {
1659
+ //
1660
+ // cancelOrder, cancelAllOrders
1661
+ //
1662
+ // {
1663
+ // "orderId": "2e7ce7fc-44e2-4d80-a4a7-d079c4750b61"
1664
+ // }
1665
+ //
1666
+ // createOrder, fetchOrder, fetchOpenOrders, fetchOrders, editOrder
1667
+ //
1668
+ // {
1669
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
1670
+ // "market":"ETH-EUR",
1671
+ // "created":1590505649241,
1672
+ // "updated":1590505649241,
1673
+ // "status":"filled",
1674
+ // "side":"sell",
1675
+ // "orderType":"market",
1676
+ // "amount":"0.249825",
1677
+ // "amountRemaining":"0",
1678
+ // "price": "183.49", // limit orders only
1679
+ // "onHold":"0",
1680
+ // "onHoldCurrency":"ETH",
1681
+ // "filledAmount":"0.249825",
1682
+ // "filledAmountQuote":"45.84038925",
1683
+ // "feePaid":"0.12038925",
1684
+ // "feeCurrency":"EUR",
1685
+ // "fills":[
1686
+ // {
1687
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1688
+ // "timestamp":1590505649245,
1689
+ // "amount":"0.249825",
1690
+ // "price":"183.49",
1691
+ // "taker":true,
1692
+ // "fee":"0.12038925",
1693
+ // "feeCurrency":"EUR",
1694
+ // "settled":true
1695
+ // }
1696
+ // ],
1697
+ // "selfTradePrevention":"decrementAndCancel",
1698
+ // "visible":false,
1699
+ // "disableMarketProtection":false
1700
+ // "timeInForce": "GTC",
1701
+ // "postOnly": true,
1702
+ // }
1703
+ //
1704
+ const id = this.safeString(order, 'orderId');
1705
+ const timestamp = this.safeInteger(order, 'created');
1706
+ const marketId = this.safeString(order, 'market');
1707
+ market = this.safeMarket(marketId, market, '-');
1708
+ const symbol = market['symbol'];
1709
+ const status = this.parseOrderStatus(this.safeString(order, 'status'));
1710
+ const side = this.safeString(order, 'side');
1711
+ const type = this.safeString(order, 'orderType');
1712
+ const price = this.safeString(order, 'price');
1713
+ const amount = this.safeString(order, 'amount');
1714
+ const remaining = this.safeString(order, 'amountRemaining');
1715
+ const filled = this.safeString(order, 'filledAmount');
1716
+ let cost = this.safeString(order, 'filledAmountQuote');
1717
+ if (cost === undefined) {
1718
+ const amountQuote = this.safeString(order, 'amountQuote');
1719
+ const amountQuoteRemaining = this.safeString(order, 'amountQuoteRemaining');
1720
+ cost = Precise.stringSub(amountQuote, amountQuoteRemaining);
1721
+ }
1722
+ let fee = undefined;
1723
+ const feeCost = this.safeNumber(order, 'feePaid');
1724
+ if (feeCost !== undefined) {
1725
+ const feeCurrencyId = this.safeString(order, 'feeCurrency');
1726
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
1727
+ fee = {
1728
+ 'cost': feeCost,
1729
+ 'currency': feeCurrencyCode,
1730
+ };
1731
+ }
1732
+ const rawTrades = this.safeValue(order, 'fills', []);
1733
+ const timeInForce = this.safeString(order, 'timeInForce');
1734
+ const postOnly = this.safeValue(order, 'postOnly');
1735
+ // https://github.com/ccxt/ccxt/issues/8489
1736
+ return this.safeOrder({
1737
+ 'info': order,
1738
+ 'id': id,
1739
+ 'clientOrderId': undefined,
1740
+ 'timestamp': timestamp,
1741
+ 'datetime': this.iso8601(timestamp),
1742
+ 'lastTradeTimestamp': undefined,
1743
+ 'symbol': symbol,
1744
+ 'type': type,
1745
+ 'timeInForce': timeInForce,
1746
+ 'postOnly': postOnly,
1747
+ 'side': side,
1748
+ 'price': price,
1749
+ 'triggerPrice': this.safeNumber(order, 'triggerPrice'),
1750
+ 'amount': amount,
1751
+ 'cost': cost,
1752
+ 'average': undefined,
1753
+ 'filled': filled,
1754
+ 'remaining': remaining,
1755
+ 'status': status,
1756
+ 'fee': fee,
1757
+ 'trades': rawTrades,
1758
+ }, market);
1759
+ }
1760
+ fetchMyTradesRequest(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1761
+ const market = this.market(symbol);
1762
+ let request = {
1763
+ 'market': market['id'],
1764
+ // "limit": 500,
1765
+ // "start": since,
1766
+ // "end": this.milliseconds (),
1767
+ // "tradeIdFrom": "af76d6ce-9f7c-4006-b715-bb5d430652d0",
1768
+ // "tradeIdTo": "af76d6ce-9f7c-4006-b715-bb5d430652d0",
1769
+ };
1770
+ if (since !== undefined) {
1771
+ request['start'] = since;
1772
+ }
1773
+ if (limit !== undefined) {
1774
+ request['limit'] = limit; // default 500, max 1000
1775
+ }
1776
+ [request, params] = this.handleUntilOption('end', request, params);
1777
+ return this.extend(request, params);
1778
+ }
1779
+ /**
1780
+ * @method
1781
+ * @name bitvavo#fetchMyTrades
1782
+ * @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
1783
+ * @description fetch all trades made by the user
1784
+ * @param {string} symbol unified market symbol
1785
+ * @param {int} [since] the earliest time in ms to fetch trades for
1786
+ * @param {int} [limit] the maximum number of trades structures to retrieve
1787
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1788
+ * @param {int} [params.until] the latest time in ms to fetch entries for
1789
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1790
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1791
+ */
1792
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1793
+ if (symbol === undefined) {
1794
+ throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1795
+ }
1796
+ await this.loadMarkets();
1797
+ let paginate = false;
1798
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
1799
+ if (paginate) {
1800
+ return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params);
1801
+ }
1802
+ const market = this.market(symbol);
1803
+ const request = this.fetchMyTradesRequest(symbol, since, limit, params);
1804
+ const response = await this.privateGetTrades(request);
1805
+ //
1806
+ // [
1807
+ // {
1808
+ // "id":"b0c86aa5-6ed3-4a2d-ba3a-be9a964220f4",
1809
+ // "orderId":"af76d6ce-9f7c-4006-b715-bb5d430652d0",
1810
+ // "timestamp":1590505649245,
1811
+ // "market":"ETH-EUR",
1812
+ // "side":"sell",
1813
+ // "amount":"0.249825",
1814
+ // "price":"183.49",
1815
+ // "taker":true,
1816
+ // "fee":"0.12038925",
1817
+ // "feeCurrency":"EUR",
1818
+ // "settled":true
1819
+ // }
1820
+ // ]
1821
+ //
1822
+ return this.parseTrades(response, market, since, limit);
1823
+ }
1824
+ withdrawRequest(code, amount, address, tag = undefined, params = {}) {
1825
+ const currency = this.currency(code);
1826
+ const request = {
1827
+ 'symbol': currency['id'],
1828
+ 'amount': this.currencyToPrecision(code, amount),
1829
+ 'address': address, // address or IBAN
1830
+ // 'internal': false, // transfer to another Bitvavo user address, no fees
1831
+ // 'addWithdrawalFee': false, // true = add the fee on top, otherwise the fee is subtracted from the amount
1832
+ };
1833
+ if (tag !== undefined) {
1834
+ request['paymentId'] = tag;
1835
+ }
1836
+ return this.extend(request, params);
1837
+ }
1838
+ /**
1839
+ * @method
1840
+ * @name bitvavo#withdraw
1841
+ * @description make a withdrawal
1842
+ * @param {string} code unified currency code
1843
+ * @param {float} amount the amount to withdraw
1844
+ * @param {string} address the address to withdraw to
1845
+ * @param {string} tag
1846
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1847
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1848
+ */
1849
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1850
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1851
+ this.checkAddress(address);
1852
+ await this.loadMarkets();
1853
+ const currency = this.currency(code);
1854
+ const request = this.withdrawRequest(code, amount, address, tag, params);
1855
+ const response = await this.privatePostWithdrawal(request);
1856
+ //
1857
+ // {
1858
+ // "success": true,
1859
+ // "symbol": "BTC",
1860
+ // "amount": "1.5"
1861
+ // }
1862
+ //
1863
+ return this.parseTransaction(response, currency);
1864
+ }
1865
+ fetchWithdrawalsRequest(code = undefined, since = undefined, limit = undefined, params = {}) {
1866
+ const request = {
1867
+ // 'symbol': currency['id'],
1868
+ // 'limit': 500, // default 500, max 1000
1869
+ // 'start': since,
1870
+ // 'end': this.milliseconds (),
1871
+ };
1872
+ let currency = undefined;
1873
+ if (code !== undefined) {
1874
+ currency = this.currency(code);
1875
+ request['symbol'] = currency['id'];
1876
+ }
1877
+ if (since !== undefined) {
1878
+ request['start'] = since;
1879
+ }
1880
+ if (limit !== undefined) {
1881
+ request['limit'] = limit; // default 500, max 1000
1882
+ }
1883
+ return this.extend(request, params);
1884
+ }
1885
+ /**
1886
+ * @method
1887
+ * @name bitvavo#fetchWithdrawals
1888
+ * @see https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
1889
+ * @description fetch all withdrawals made from an account
1890
+ * @param {string} code unified currency code
1891
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1892
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1893
+ * @param {object} [params] extra parameters specific to the bitvavo api endpoint
1894
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1895
+ */
1896
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1897
+ await this.loadMarkets();
1898
+ const request = this.fetchWithdrawalsRequest(code, since, limit, params);
1899
+ let currency = undefined;
1900
+ if (code !== undefined) {
1901
+ currency = this.currency(code);
1902
+ }
1903
+ const response = await this.privateGetWithdrawalHistory(request);
1904
+ //
1905
+ // [
1906
+ // {
1907
+ // "timestamp":1590531212000,
1908
+ // "symbol":"ETH",
1909
+ // "amount":"0.091",
1910
+ // "fee":"0.009",
1911
+ // "status":"awaiting_bitvavo_inspection",
1912
+ // "address":"0xe42b309f1eE9F0cbf7f54CcF3bc2159eBfA6735b",
1913
+ // "paymentId": "10002653",
1914
+ // "txId": "927b3ea50c5bb52c6854152d305dfa1e27fc01d10464cf10825d96d69d235eb3",
1915
+ // }
1916
+ // ]
1917
+ //
1918
+ return this.parseTransactions(response, currency, since, limit, { 'type': 'withdrawal' });
1919
+ }
1920
+ fetchDepositsRequest(code = undefined, since = undefined, limit = undefined, params = {}) {
1921
+ const request = {
1922
+ // 'symbol': currency['id'],
1923
+ // 'limit': 500, // default 500, max 1000
1924
+ // 'start': since,
1925
+ // 'end': this.milliseconds (),
1926
+ };
1927
+ let currency = undefined;
1928
+ if (code !== undefined) {
1929
+ currency = this.currency(code);
1930
+ request['symbol'] = currency['id'];
1931
+ }
1932
+ if (since !== undefined) {
1933
+ request['start'] = since;
1934
+ }
1935
+ if (limit !== undefined) {
1936
+ request['limit'] = limit; // default 500, max 1000
1937
+ }
1938
+ return this.extend(request, params);
1939
+ }
1940
+ /**
1941
+ * @method
1942
+ * @name bitvavo#fetchDeposits
1943
+ * @see https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
1944
+ * @description fetch all deposits made to an account
1945
+ * @param {string} code unified currency code
1946
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1947
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1948
+ * @param {object} [params] extra parameters specific to the bitvavo api endpoint
1949
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1950
+ */
1951
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1952
+ await this.loadMarkets();
1953
+ const request = this.fetchDepositsRequest(code, since, limit, params);
1954
+ let currency = undefined;
1955
+ if (code !== undefined) {
1956
+ currency = this.currency(code);
1957
+ }
1958
+ const response = await this.privateGetDepositHistory(request);
1959
+ //
1960
+ // [
1961
+ // {
1962
+ // "timestamp":1590492401000,
1963
+ // "symbol":"ETH",
1964
+ // "amount":"0.249825",
1965
+ // "fee":"0",
1966
+ // "status":"completed",
1967
+ // "txId":"0x5167b473fd37811f9ef22364c3d54726a859ef9d98934b3a1e11d7baa8d2c2e2"
1968
+ // }
1969
+ // ]
1970
+ //
1971
+ return this.parseTransactions(response, currency, since, limit, { 'type': 'deposit' });
1972
+ }
1973
+ parseTransactionStatus(status) {
1974
+ const statuses = {
1975
+ 'awaiting_processing': 'pending',
1976
+ 'awaiting_email_confirmation': 'pending',
1977
+ 'awaiting_bitvavo_inspection': 'pending',
1978
+ 'approved': 'pending',
1979
+ 'sending': 'pending',
1980
+ 'in_mempool': 'pending',
1981
+ 'processed': 'pending',
1982
+ 'completed': 'ok',
1983
+ 'canceled': 'canceled',
1984
+ };
1985
+ return this.safeString(statuses, status, status);
1986
+ }
1987
+ parseTransaction(transaction, currency = undefined) {
1988
+ //
1989
+ // withdraw
1990
+ //
1991
+ // {
1992
+ // "success": true,
1993
+ // "symbol": "BTC",
1994
+ // "amount": "1.5"
1995
+ // }
1996
+ //
1997
+ // fetchWithdrawals
1998
+ //
1999
+ // {
2000
+ // "timestamp": 1542967486256,
2001
+ // "symbol": "BTC",
2002
+ // "amount": "0.99994",
2003
+ // "address": "BitcoinAddress",
2004
+ // "paymentId": "10002653",
2005
+ // "txId": "927b3ea50c5bb52c6854152d305dfa1e27fc01d10464cf10825d96d69d235eb3",
2006
+ // "fee": "0.00006",
2007
+ // "status": "awaiting_processing"
2008
+ // }
2009
+ //
2010
+ // fetchDeposits
2011
+ //
2012
+ // {
2013
+ // "timestamp":1590492401000,
2014
+ // "symbol":"ETH",
2015
+ // "amount":"0.249825",
2016
+ // "fee":"0",
2017
+ // "status":"completed",
2018
+ // "txId":"0x5167b473fd37811f9ef22364c3d54726a859ef9d98934b3a1e11d7baa8d2c2e2"
2019
+ // }
2020
+ //
2021
+ const id = undefined;
2022
+ const timestamp = this.safeInteger(transaction, 'timestamp');
2023
+ const currencyId = this.safeString(transaction, 'symbol');
2024
+ const code = this.safeCurrencyCode(currencyId, currency);
2025
+ const status = this.parseTransactionStatus(this.safeString(transaction, 'status'));
2026
+ const amount = this.safeNumber(transaction, 'amount');
2027
+ const address = this.safeString(transaction, 'address');
2028
+ const txid = this.safeString(transaction, 'txId');
2029
+ let fee = undefined;
2030
+ const feeCost = this.safeNumber(transaction, 'fee');
2031
+ if (feeCost !== undefined) {
2032
+ fee = {
2033
+ 'cost': feeCost,
2034
+ 'currency': code,
2035
+ };
2036
+ }
2037
+ let type = undefined;
2038
+ if (('success' in transaction) || ('address' in transaction)) {
2039
+ type = 'withdrawal';
2040
+ }
2041
+ else {
2042
+ type = 'deposit';
2043
+ }
2044
+ const tag = this.safeString(transaction, 'paymentId');
2045
+ return {
2046
+ 'info': transaction,
2047
+ 'id': id,
2048
+ 'txid': txid,
2049
+ 'timestamp': timestamp,
2050
+ 'datetime': this.iso8601(timestamp),
2051
+ 'addressFrom': undefined,
2052
+ 'address': address,
2053
+ 'addressTo': address,
2054
+ 'tagFrom': undefined,
2055
+ 'tag': tag,
2056
+ 'tagTo': tag,
2057
+ 'type': type,
2058
+ 'amount': amount,
2059
+ 'currency': code,
2060
+ 'status': status,
2061
+ 'updated': undefined,
2062
+ 'fee': fee,
2063
+ 'network': undefined,
2064
+ 'comment': undefined,
2065
+ 'internal': undefined,
2066
+ };
2067
+ }
2068
+ parseDepositWithdrawFee(fee, currency = undefined) {
2069
+ //
2070
+ // {
2071
+ // "symbol": "1INCH",
2072
+ // "name": "1inch",
2073
+ // "decimals": 8,
2074
+ // "depositFee": "0",
2075
+ // "depositConfirmations": 64,
2076
+ // "depositStatus": "OK",
2077
+ // "withdrawalFee": "6.1",
2078
+ // "withdrawalMinAmount": "6.1",
2079
+ // "withdrawalStatus": "OK",
2080
+ // "networks": [
2081
+ // "ETH"
2082
+ // ],
2083
+ // "message": ""
2084
+ // }
2085
+ //
2086
+ const result = {
2087
+ 'info': fee,
2088
+ 'withdraw': {
2089
+ 'fee': this.safeNumber(fee, 'withdrawalFee'),
2090
+ 'percentage': false,
2091
+ },
2092
+ 'deposit': {
2093
+ 'fee': this.safeNumber(fee, 'depositFee'),
2094
+ 'percentage': false,
2095
+ },
2096
+ 'networks': {},
2097
+ };
2098
+ const networks = this.safeValue(fee, 'networks');
2099
+ let networkId = this.safeValue(networks, 0); // Bitvavo currently only supports one network per currency
2100
+ const currencyCode = this.safeString(currency, 'code');
2101
+ if (networkId === 'Mainnet') {
2102
+ networkId = currencyCode;
2103
+ }
2104
+ const networkCode = this.networkIdToCode(networkId, currencyCode);
2105
+ result['networks'][networkCode] = {
2106
+ 'deposit': result['deposit'],
2107
+ 'withdraw': result['withdraw'],
2108
+ };
2109
+ return result;
2110
+ }
2111
+ /**
2112
+ * @method
2113
+ * @name bitvavo#fetchDepositWithdrawFees
2114
+ * @description fetch deposit and withdraw fees
2115
+ * @see https://docs.bitvavo.com/#tag/General/paths/~1assets/get
2116
+ * @param {string[]|undefined} codes list of unified currency codes
2117
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2118
+ * @returns {object} a list of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
2119
+ */
2120
+ async fetchDepositWithdrawFees(codes = undefined, params = {}) {
2121
+ await this.loadMarkets();
2122
+ const response = await this.publicGetAssets(params);
2123
+ //
2124
+ // [
2125
+ // {
2126
+ // "symbol": "1INCH",
2127
+ // "name": "1inch",
2128
+ // "decimals": 8,
2129
+ // "depositFee": "0",
2130
+ // "depositConfirmations": 64,
2131
+ // "depositStatus": "OK",
2132
+ // "withdrawalFee": "6.1",
2133
+ // "withdrawalMinAmount": "6.1",
2134
+ // "withdrawalStatus": "OK",
2135
+ // "networks": [
2136
+ // "ETH"
2137
+ // ],
2138
+ // "message": ""
2139
+ // },
2140
+ // ]
2141
+ //
2142
+ return this.parseDepositWithdrawFees(response, codes, 'symbol');
2143
+ }
2144
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2145
+ const query = this.omit(params, this.extractParams(path));
2146
+ let url = '/' + this.version + '/' + this.implodeParams(path, params);
2147
+ const getOrDelete = (method === 'GET') || (method === 'DELETE');
2148
+ if (getOrDelete) {
2149
+ if (Object.keys(query).length) {
2150
+ url += '?' + this.urlencode(query);
2151
+ }
2152
+ }
2153
+ if (api === 'private') {
2154
+ this.checkRequiredCredentials();
2155
+ let payload = '';
2156
+ if (!getOrDelete) {
2157
+ if (Object.keys(query).length) {
2158
+ body = this.json(query);
2159
+ payload = body;
2160
+ }
2161
+ }
2162
+ const timestamp = this.milliseconds().toString();
2163
+ const auth = timestamp + method + url + payload;
2164
+ const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256);
2165
+ const accessWindow = this.safeString(this.options, 'BITVAVO-ACCESS-WINDOW', '10000');
2166
+ headers = {
2167
+ 'BITVAVO-ACCESS-KEY': this.apiKey,
2168
+ 'BITVAVO-ACCESS-SIGNATURE': signature,
2169
+ 'BITVAVO-ACCESS-TIMESTAMP': timestamp,
2170
+ 'BITVAVO-ACCESS-WINDOW': accessWindow,
2171
+ };
2172
+ if (!getOrDelete) {
2173
+ headers['Content-Type'] = 'application/json';
2174
+ }
2175
+ }
2176
+ url = this.urls['api'][api] + url;
2177
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2178
+ }
2179
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2180
+ if (response === undefined) {
2181
+ return undefined; // fallback to default error handler
2182
+ }
2183
+ //
2184
+ // {"errorCode":308,"error":"The signature length is invalid (HMAC-SHA256 should return a 64 length hexadecimal string)."}
2185
+ // {"errorCode":203,"error":"symbol parameter is required."}
2186
+ // {"errorCode":205,"error":"symbol parameter is invalid."}
2187
+ //
2188
+ const errorCode = this.safeString(response, 'errorCode');
2189
+ const error = this.safeString(response, 'error');
2190
+ if (errorCode !== undefined) {
2191
+ const feedback = this.id + ' ' + body;
2192
+ this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
2193
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
2194
+ throw new ExchangeError(feedback); // unknown message
2195
+ }
2196
+ return undefined;
2197
+ }
2198
+ calculateRateLimiterCost(api, method, path, params, config = {}) {
2199
+ if (('noMarket' in config) && !('market' in params)) {
2200
+ return config['noMarket'];
2201
+ }
2202
+ return this.safeValue(config, 'cost', 1);
2203
+ }
2204
+ }