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,2024 @@
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/coinmetro.js';
9
+ import { ArgumentsRequired, BadRequest, BadSymbol, InsufficientFunds, InvalidOrder, ExchangeError, OrderNotFound, PermissionDenied, RateLimitExceeded } from './base/errors.js';
10
+ import { TICK_SIZE } from './base/functions/number.js';
11
+ import { Precise } from './base/Precise.js';
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * @class coinmetro
15
+ * @augments Exchange
16
+ */
17
+ export default class coinmetro extends Exchange {
18
+ describe() {
19
+ return this.deepExtend(super.describe(), {
20
+ 'id': 'coinmetro',
21
+ 'name': 'Coinmetro',
22
+ 'countries': ['EE'],
23
+ 'version': 'v1',
24
+ 'rateLimit': 200,
25
+ 'certified': false,
26
+ 'pro': false,
27
+ 'has': {
28
+ 'CORS': undefined,
29
+ 'spot': true,
30
+ 'margin': true,
31
+ 'swap': false,
32
+ 'future': false,
33
+ 'option': false,
34
+ 'addMargin': false,
35
+ 'borrowCrossMargin': true,
36
+ 'borrowIsolatedMargin': false,
37
+ 'cancelAllOrders': false,
38
+ 'cancelOrder': true,
39
+ 'cancelOrders': false,
40
+ 'closeAllPositions': false,
41
+ 'closePosition': true,
42
+ 'createDepositAddress': false,
43
+ 'createOrder': true,
44
+ 'createPostOnlyOrder': false,
45
+ 'createReduceOnlyOrder': false,
46
+ 'createStopLimitOrder': true,
47
+ 'createStopMarketOrder': true,
48
+ 'createStopOrder': true,
49
+ 'deposit': false,
50
+ 'editOrder': false,
51
+ 'fetchAccounts': false,
52
+ 'fetchBalance': true,
53
+ 'fetchBidsAsks': true,
54
+ 'fetchBorrowInterest': false,
55
+ 'fetchBorrowRateHistories': false,
56
+ 'fetchBorrowRateHistory': false,
57
+ 'fetchCanceledAndClosedOrders': true,
58
+ 'fetchCanceledOrders': false,
59
+ 'fetchClosedOrder': false,
60
+ 'fetchClosedOrders': false,
61
+ 'fetchCrossBorrowRate': false,
62
+ 'fetchCrossBorrowRates': false,
63
+ 'fetchCurrencies': true,
64
+ 'fetchDeposit': false,
65
+ 'fetchDepositAddress': false,
66
+ 'fetchDepositAddresses': false,
67
+ 'fetchDepositAddressesByNetwork': false,
68
+ 'fetchDeposits': false,
69
+ 'fetchDepositsWithdrawals': false,
70
+ 'fetchDepositWithdrawFee': false,
71
+ 'fetchDepositWithdrawFees': false,
72
+ 'fetchFundingHistory': false,
73
+ 'fetchFundingRate': false,
74
+ 'fetchFundingRateHistory': false,
75
+ 'fetchFundingRates': false,
76
+ 'fetchIndexOHLCV': false,
77
+ 'fetchIsolatedBorrowRate': false,
78
+ 'fetchIsolatedBorrowRates': false,
79
+ 'fetchL3OrderBook': false,
80
+ 'fetchLedger': true,
81
+ 'fetchLeverage': false,
82
+ 'fetchLeverageTiers': false,
83
+ 'fetchMarketLeverageTiers': false,
84
+ 'fetchMarkets': true,
85
+ 'fetchMarkOHLCV': false,
86
+ 'fetchMyTrades': true,
87
+ 'fetchOHLCV': true,
88
+ 'fetchOpenInterestHistory': false,
89
+ 'fetchOpenOrder': false,
90
+ 'fetchOpenOrders': true,
91
+ 'fetchOrder': true,
92
+ 'fetchOrderBook': true,
93
+ 'fetchOrderBooks': false,
94
+ 'fetchOrders': false,
95
+ 'fetchOrderTrades': false,
96
+ 'fetchPosition': false,
97
+ 'fetchPositions': false,
98
+ 'fetchPositionsRisk': false,
99
+ 'fetchPremiumIndexOHLCV': false,
100
+ 'fetchStatus': false,
101
+ 'fetchTicker': false,
102
+ 'fetchTickers': true,
103
+ 'fetchTime': false,
104
+ 'fetchTrades': true,
105
+ 'fetchTradingFee': false,
106
+ 'fetchTradingFees': false,
107
+ 'fetchTradingLimits': false,
108
+ 'fetchTransactionFee': false,
109
+ 'fetchTransactionFees': false,
110
+ 'fetchTransactions': false,
111
+ 'fetchTransfers': false,
112
+ 'fetchWithdrawal': false,
113
+ 'fetchWithdrawals': false,
114
+ 'fetchWithdrawalWhitelist': false,
115
+ 'reduceMargin': false,
116
+ 'repayCrossMargin': false,
117
+ 'repayIsolatedMargin': false,
118
+ 'sandbox': true,
119
+ 'setLeverage': false,
120
+ 'setMargin': false,
121
+ 'setMarginMode': false,
122
+ 'setPositionMode': false,
123
+ 'signIn': false,
124
+ 'transfer': false,
125
+ 'withdraw': false,
126
+ 'ws': false,
127
+ },
128
+ 'timeframes': {
129
+ '1m': '60000',
130
+ '5m': '300000',
131
+ '30m': '1800000',
132
+ '4h': '14400000',
133
+ '1d': '86400000',
134
+ },
135
+ 'urls': {
136
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/e86f87ec-6ba3-4410-962b-f7988c5db539',
137
+ 'api': {
138
+ 'public': 'https://api.coinmetro.com',
139
+ 'private': 'https://api.coinmetro.com',
140
+ },
141
+ 'test': {
142
+ 'public': 'https://api.coinmetro.com/open',
143
+ 'private': 'https://api.coinmetro.com/open',
144
+ },
145
+ 'www': 'https://coinmetro.com/',
146
+ 'doc': [
147
+ 'https://documenter.getpostman.com/view/3653795/SVfWN6KS',
148
+ ],
149
+ 'fees': 'https://help.coinmetro.com/hc/en-gb/articles/6844007317789-What-are-the-fees-on-Coinmetro-',
150
+ 'referral': 'https://go.coinmetro.com/?ref=crypto24',
151
+ },
152
+ 'api': {
153
+ 'public': {
154
+ 'get': {
155
+ 'demo/temp': 1,
156
+ 'exchange/candles/{pair}/{timeframe}/{from}/{to}': 3,
157
+ 'exchange/prices': 1,
158
+ 'exchange/ticks/{pair}/{from}': 3,
159
+ 'assets': 1,
160
+ 'markets': 1,
161
+ 'exchange/book/{pair}': 3,
162
+ 'exchange/bookUpdates/{pair}/{from}': 1, // not unified
163
+ },
164
+ },
165
+ 'private': {
166
+ 'get': {
167
+ 'users/balances': 1,
168
+ 'users/wallets': 1,
169
+ 'users/wallets/history/{since}': 1.67,
170
+ 'exchange/orders/status/{orderID}': 1,
171
+ 'exchange/orders/active': 1,
172
+ 'exchange/orders/history/{since}': 1.67,
173
+ 'exchange/fills/{since}': 1.67,
174
+ 'exchange/margin': 1, // not unified
175
+ },
176
+ 'post': {
177
+ 'jwt': 1,
178
+ 'jwtDevice': 1,
179
+ 'devices': 1,
180
+ 'jwt-read-only': 1,
181
+ 'exchange/orders/create': 1,
182
+ 'exchange/orders/modify/{orderID}': 1,
183
+ 'exchange/swap': 1,
184
+ 'exchange/swap/confirm/{swapId}': 1,
185
+ 'exchange/orders/close/{orderID}': 1,
186
+ 'exchange/orders/hedge': 1, // not unified
187
+ },
188
+ 'put': {
189
+ 'jwt': 1,
190
+ 'exchange/orders/cancel/{orderID}': 1,
191
+ 'users/margin/collateral': 1,
192
+ 'users/margin/primary/{currency}': 1, // not unified
193
+ },
194
+ },
195
+ },
196
+ 'requiredCredentials': {
197
+ 'apiKey': false,
198
+ 'secret': false,
199
+ 'uid': true,
200
+ 'token': true,
201
+ },
202
+ 'fees': {
203
+ 'trading': {
204
+ 'feeSide': 'get',
205
+ 'tierBased': false,
206
+ 'percentage': true,
207
+ 'taker': this.parseNumber('0.001'),
208
+ 'maker': this.parseNumber('0'),
209
+ },
210
+ },
211
+ 'precisionMode': TICK_SIZE,
212
+ // exchange-specific options
213
+ 'options': {
214
+ 'currenciesByIdForParseMarket': undefined,
215
+ 'currencyIdsListForParseMarket': ['QRDO'],
216
+ },
217
+ 'features': {
218
+ 'spot': {
219
+ 'sandbox': true,
220
+ 'createOrder': {
221
+ 'marginMode': true,
222
+ 'triggerPrice': true,
223
+ 'triggerPriceType': undefined,
224
+ 'triggerDirection': false,
225
+ 'stopLossPrice': false,
226
+ 'takeProfitPrice': false,
227
+ 'attachedStopLossTakeProfit': {
228
+ 'triggerPriceType': undefined,
229
+ 'price': false,
230
+ },
231
+ 'timeInForce': {
232
+ 'IOC': true,
233
+ 'FOK': true,
234
+ 'PO': false,
235
+ 'GTD': true,
236
+ },
237
+ 'hedged': false,
238
+ 'trailing': false,
239
+ 'leverage': false,
240
+ 'marketBuyByCost': true,
241
+ 'marketBuyRequiresPrice': false,
242
+ 'selfTradePrevention': false,
243
+ 'iceberg': true,
244
+ },
245
+ 'createOrders': undefined,
246
+ 'fetchMyTrades': {
247
+ 'marginMode': false,
248
+ 'limit': undefined,
249
+ 'daysBack': 100000,
250
+ 'untilDays': undefined,
251
+ 'symbolRequired': false,
252
+ },
253
+ 'fetchOrder': {
254
+ 'marginMode': false,
255
+ 'trigger': false,
256
+ 'trailing': false,
257
+ 'symbolRequired': false,
258
+ },
259
+ 'fetchOpenOrders': {
260
+ 'marginMode': false,
261
+ 'limit': undefined,
262
+ 'trigger': false,
263
+ 'trailing': false,
264
+ 'symbolRequired': false,
265
+ },
266
+ 'fetchOrders': {
267
+ 'marginMode': false,
268
+ 'limit': undefined,
269
+ 'daysBack': 100000,
270
+ 'untilDays': undefined,
271
+ 'trigger': false,
272
+ 'trailing': false,
273
+ 'symbolRequired': false,
274
+ },
275
+ 'fetchClosedOrders': undefined,
276
+ 'fetchOHLCV': {
277
+ 'limit': 1000,
278
+ },
279
+ },
280
+ 'swap': {
281
+ 'linear': undefined,
282
+ 'inverse': undefined,
283
+ },
284
+ 'future': {
285
+ 'linear': undefined,
286
+ 'inverse': undefined,
287
+ },
288
+ },
289
+ 'exceptions': {
290
+ // https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
291
+ 'exact': {
292
+ 'Both buyingCurrency and sellingCurrency are required': InvalidOrder,
293
+ 'One and only one of buyingQty and sellingQty is required': InvalidOrder,
294
+ 'Invalid buyingCurrency': InvalidOrder,
295
+ 'Invalid \'from\'': BadRequest,
296
+ 'Invalid sellingCurrency': InvalidOrder,
297
+ 'Invalid buyingQty': InvalidOrder,
298
+ 'Invalid sellingQty': InvalidOrder,
299
+ 'Insufficient balance': InsufficientFunds,
300
+ 'Expiration date is in the past or too near in the future': InvalidOrder,
301
+ 'Forbidden': PermissionDenied,
302
+ 'Order Not Found': OrderNotFound,
303
+ 'since must be a millisecond timestamp': BadRequest,
304
+ 'This pair is disabled on margin': BadSymbol, // 422 Unprocessable Entity {"message":"This pair is disabled on margin"}
305
+ },
306
+ 'broad': {
307
+ 'accessing from a new IP': PermissionDenied,
308
+ 'available to allocate as collateral': InsufficientFunds,
309
+ 'At least': BadRequest,
310
+ 'collateral is not allowed': BadRequest,
311
+ 'Insufficient liquidity': InvalidOrder,
312
+ 'Insufficient order size': InvalidOrder,
313
+ 'Invalid quantity': InvalidOrder,
314
+ 'Invalid Stop Loss': InvalidOrder,
315
+ 'Invalid stop price!': InvalidOrder,
316
+ 'Not enough balance': InsufficientFunds,
317
+ 'Not enough margin': InsufficientFunds,
318
+ 'orderType missing': BadRequest,
319
+ 'Server Timeout': ExchangeError,
320
+ 'Time in force has to be IOC or FOK for market orders': InvalidOrder,
321
+ 'Too many attempts': RateLimitExceeded, // 429 Too Many Requests {"message":"Too many attempts. Try again in 3 seconds"}
322
+ },
323
+ },
324
+ });
325
+ }
326
+ /**
327
+ * @method
328
+ * @name coinmetro#fetchCurrencies
329
+ * @description fetches all available currencies on an exchange
330
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
331
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
332
+ * @returns {object} an associative dictionary of currencies
333
+ */
334
+ async fetchCurrencies(params = {}) {
335
+ const response = await this.publicGetAssets(params);
336
+ //
337
+ // [
338
+ // {
339
+ // "symbol": "BTC",
340
+ // "name": "Bitcoin",
341
+ // "color": "#FFA500",
342
+ // "type": "coin",
343
+ // "canDeposit": true,
344
+ // "canWithdraw": true,
345
+ // "canTrade": true,
346
+ // "notabeneDecimals": 8,
347
+ // "canMarket": true,
348
+ // "maxSwap": 10000,
349
+ // "digits": 6,
350
+ // "multiplier": 1000000,
351
+ // "bookDigits": 8,
352
+ // "bookMultiplier": 100000000,
353
+ // "sentimentData": {
354
+ // "sentiment": 51.59555555555555,
355
+ // "interest": 1.127511216044664
356
+ // },
357
+ // "minQty": 0.0001
358
+ // },
359
+ // {
360
+ // "symbol": "EUR",
361
+ // "name": "Euro",
362
+ // "color": "#1246FF",
363
+ // "type": "fiat",
364
+ // "canDeposit": true,
365
+ // "canWithdraw": true,
366
+ // "canTrade": true,
367
+ // "canMarket": true,
368
+ // "maxSwap": 10000,
369
+ // "digits": 2,
370
+ // "multiplier": 100,
371
+ // "bookDigits": 3,
372
+ // "bookMultiplier": 1000,
373
+ // "minQty": 5
374
+ // }
375
+ // ...
376
+ // ]
377
+ //
378
+ const result = {};
379
+ for (let i = 0; i < response.length; i++) {
380
+ const currency = response[i];
381
+ const id = this.safeString(currency, 'symbol');
382
+ const code = this.safeCurrencyCode(id);
383
+ const typeRaw = this.safeString(currency, 'type');
384
+ let type = undefined;
385
+ if (typeRaw === 'coin' || typeRaw === 'token' || typeRaw === 'erc20') {
386
+ type = 'crypto';
387
+ }
388
+ else if (typeRaw === 'fiat') {
389
+ type = 'fiat';
390
+ }
391
+ let precisionDigits = this.safeString2(currency, 'digits', 'notabeneDecimals');
392
+ if (code === 'RENDER') {
393
+ // RENDER is an exception (with broken info)
394
+ precisionDigits = '4';
395
+ }
396
+ result[code] = this.safeCurrencyStructure({
397
+ 'id': id,
398
+ 'code': code,
399
+ 'name': code,
400
+ 'type': type,
401
+ 'info': currency,
402
+ 'active': this.safeBool(currency, 'canTrade'),
403
+ 'deposit': this.safeBool(currency, 'canDeposit'),
404
+ 'withdraw': this.safeBool(currency, 'canWithdraw'),
405
+ 'fee': undefined,
406
+ 'precision': this.parseNumber(this.parsePrecision(precisionDigits)),
407
+ 'limits': {
408
+ 'amount': {
409
+ 'min': this.safeNumber(currency, 'minQty'),
410
+ 'max': undefined,
411
+ },
412
+ 'withdraw': {
413
+ 'min': undefined,
414
+ 'max': undefined,
415
+ },
416
+ },
417
+ 'networks': {},
418
+ });
419
+ }
420
+ if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
421
+ const currenciesById = this.indexBy(result, 'id');
422
+ this.options['currenciesByIdForParseMarket'] = currenciesById;
423
+ const currentCurrencyIdsList = this.safeList(this.options, 'currencyIdsListForParseMarket', []);
424
+ const currencyIdsList = Object.keys(currenciesById);
425
+ for (let i = 0; i < currencyIdsList.length; i++) {
426
+ currentCurrencyIdsList.push(currencyIdsList[i]);
427
+ }
428
+ this.options['currencyIdsListForParseMarket'] = currentCurrencyIdsList;
429
+ }
430
+ return result;
431
+ }
432
+ /**
433
+ * @method
434
+ * @name coinmetro#fetchMarkets
435
+ * @description retrieves data on all markets for coinmetro
436
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
437
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
438
+ * @returns {object[]} an array of objects representing market data
439
+ */
440
+ async fetchMarkets(params = {}) {
441
+ const promises = [];
442
+ promises.push(this.publicGetMarkets(params));
443
+ if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
444
+ promises.push(this.fetchCurrencies());
445
+ }
446
+ const responses = await Promise.all(promises);
447
+ const response = responses[0];
448
+ //
449
+ // [
450
+ // {
451
+ // "pair": "YFIEUR",
452
+ // "precision": 5,
453
+ // "margin": false
454
+ // },
455
+ // {
456
+ // "pair": "BTCEUR",
457
+ // "precision": 2,
458
+ // "margin": true
459
+ // },
460
+ // ...
461
+ // ]
462
+ //
463
+ const result = [];
464
+ for (let i = 0; i < response.length; i++) {
465
+ const market = this.parseMarket(response[i]);
466
+ // there are several broken (unavailable info) markets
467
+ if (market['base'] === undefined || market['quote'] === undefined) {
468
+ continue;
469
+ }
470
+ result.push(market);
471
+ }
472
+ return result;
473
+ }
474
+ parseMarket(market) {
475
+ const id = this.safeString(market, 'pair');
476
+ const parsedMarketId = this.parseMarketId(id);
477
+ const baseId = this.safeString(parsedMarketId, 'baseId');
478
+ const quoteId = this.safeString(parsedMarketId, 'quoteId');
479
+ const base = this.safeCurrencyCode(baseId);
480
+ const quote = this.safeCurrencyCode(quoteId);
481
+ const basePrecisionAndLimits = this.parseMarketPrecisionAndLimits(baseId);
482
+ const quotePrecisionAndLimits = this.parseMarketPrecisionAndLimits(quoteId);
483
+ const margin = this.safeBool(market, 'margin', false);
484
+ const tradingFees = this.safeValue(this.fees, 'trading', {});
485
+ return this.safeMarketStructure({
486
+ 'id': id,
487
+ 'symbol': base + '/' + quote,
488
+ 'base': base,
489
+ 'quote': quote,
490
+ 'settle': undefined,
491
+ 'baseId': baseId,
492
+ 'quoteId': quoteId,
493
+ 'settleId': undefined,
494
+ 'type': 'spot',
495
+ 'spot': true,
496
+ 'margin': margin,
497
+ 'swap': false,
498
+ 'future': false,
499
+ 'option': false,
500
+ 'active': true,
501
+ 'contract': false,
502
+ 'linear': undefined,
503
+ 'inverse': undefined,
504
+ 'taker': this.safeNumber(tradingFees, 'taker'),
505
+ 'maker': this.safeNumber(tradingFees, 'maker'),
506
+ 'contractSize': undefined,
507
+ 'expiry': undefined,
508
+ 'expiryDatetime': undefined,
509
+ 'strike': undefined,
510
+ 'optionType': undefined,
511
+ 'precision': {
512
+ 'amount': basePrecisionAndLimits['precision'],
513
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'precision'))),
514
+ },
515
+ 'limits': {
516
+ 'leverage': {
517
+ 'min': undefined,
518
+ 'max': undefined,
519
+ },
520
+ 'amount': {
521
+ 'min': basePrecisionAndLimits['minLimit'],
522
+ 'max': undefined,
523
+ },
524
+ 'price': {
525
+ 'min': undefined,
526
+ 'max': undefined,
527
+ },
528
+ 'cost': {
529
+ 'min': quotePrecisionAndLimits['minLimit'],
530
+ 'max': undefined,
531
+ },
532
+ },
533
+ 'created': undefined,
534
+ 'info': market,
535
+ });
536
+ }
537
+ parseMarketId(marketId) {
538
+ let baseId = undefined;
539
+ let quoteId = undefined;
540
+ const currencyIds = this.safeValue(this.options, 'currencyIdsListForParseMarket', []);
541
+ // Bubble sort by length (longest first)
542
+ const currencyIdsLength = currencyIds.length;
543
+ for (let i = 0; i < currencyIdsLength; i++) {
544
+ for (let j = 0; j < currencyIdsLength - i - 1; j++) {
545
+ const a = currencyIds[j];
546
+ const b = currencyIds[j + 1];
547
+ if (a.length < b.length) {
548
+ currencyIds[j] = b;
549
+ currencyIds[j + 1] = a;
550
+ }
551
+ }
552
+ }
553
+ for (let i = 0; i < currencyIds.length; i++) {
554
+ const currencyId = currencyIds[i];
555
+ const entryIndex = marketId.indexOf(currencyId);
556
+ if (entryIndex === 0) {
557
+ const restId = marketId.replace(currencyId, '');
558
+ if (this.inArray(restId, currencyIds)) {
559
+ if (entryIndex === 0) {
560
+ baseId = currencyId;
561
+ quoteId = restId;
562
+ }
563
+ else {
564
+ baseId = restId;
565
+ quoteId = currencyId;
566
+ }
567
+ break;
568
+ }
569
+ }
570
+ }
571
+ const result = {
572
+ 'baseId': baseId,
573
+ 'quoteId': quoteId,
574
+ };
575
+ return result;
576
+ }
577
+ parseMarketPrecisionAndLimits(currencyId) {
578
+ const currencies = this.safeValue(this.options, 'currenciesByIdForParseMarket', {});
579
+ const currency = this.safeValue(currencies, currencyId, {});
580
+ const limits = this.safeValue(currency, 'limits', {});
581
+ const amountLimits = this.safeValue(limits, 'amount', {});
582
+ const minLimit = this.safeNumber(amountLimits, 'min');
583
+ const result = {
584
+ 'precision': this.safeNumber(currency, 'precision'),
585
+ 'minLimit': minLimit,
586
+ };
587
+ return result;
588
+ }
589
+ /**
590
+ * @method
591
+ * @name coinmetro#fetchOHLCV
592
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
593
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
594
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
595
+ * @param {string} timeframe the length of time each candle represents
596
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
597
+ * @param {int} [limit] the maximum amount of candles to fetch
598
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
599
+ * @param {int} [params.until] the latest time in ms to fetch entries for
600
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
601
+ */
602
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
603
+ await this.loadMarkets();
604
+ const market = this.market(symbol);
605
+ const request = {
606
+ 'pair': market['id'],
607
+ 'timeframe': this.safeString(this.timeframes, timeframe, timeframe),
608
+ };
609
+ let until = undefined;
610
+ if (since !== undefined) {
611
+ request['from'] = since;
612
+ if (limit !== undefined) {
613
+ const duration = this.parseTimeframe(timeframe) * 1000;
614
+ until = this.sum(since, duration * (limit));
615
+ }
616
+ }
617
+ else {
618
+ request['from'] = ':from'; // this endpoint doesn't accept empty from and to params (setting them into the value described in the documentation)
619
+ }
620
+ until = this.safeInteger(params, 'until', until);
621
+ if (until !== undefined) {
622
+ params = this.omit(params, ['until']);
623
+ request['to'] = until;
624
+ }
625
+ else {
626
+ request['to'] = ':to';
627
+ }
628
+ const response = await this.publicGetExchangeCandlesPairTimeframeFromTo(this.extend(request, params));
629
+ //
630
+ // {
631
+ // "candleHistory": [
632
+ // {
633
+ // "pair": "ETHUSDT",
634
+ // "timeframe": 86400000,
635
+ // "timestamp": 1697673600000,
636
+ // "c": 1567.4409353098604,
637
+ // "h": 1566.7514068472303,
638
+ // "l": 1549.4563666936847,
639
+ // "o": 1563.4490341395904,
640
+ // "v": 0
641
+ // },
642
+ // {
643
+ // "pair": "ETHUSDT",
644
+ // "timeframe": 86400000,
645
+ // "timestamp": 1697760000000,
646
+ // "c": 1603.7831363339324,
647
+ // "h": 1625.0356823666407,
648
+ // "l": 1565.4629390011505,
649
+ // "o": 1566.8387619426028,
650
+ // "v": 0
651
+ // },
652
+ // ...
653
+ // ]
654
+ // }
655
+ //
656
+ const candleHistory = this.safeList(response, 'candleHistory', []);
657
+ return this.parseOHLCVs(candleHistory, market, timeframe, since, limit);
658
+ }
659
+ parseOHLCV(ohlcv, market = undefined) {
660
+ return [
661
+ this.safeInteger(ohlcv, 'timestamp'),
662
+ this.safeNumber(ohlcv, 'o'),
663
+ this.safeNumber(ohlcv, 'h'),
664
+ this.safeNumber(ohlcv, 'l'),
665
+ this.safeNumber(ohlcv, 'c'),
666
+ this.safeNumber(ohlcv, 'v'),
667
+ ];
668
+ }
669
+ /**
670
+ * @method
671
+ * @name coinmetro#fetchTrades
672
+ * @description get the list of most recent trades for a particular symbol
673
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
674
+ * @param {string} symbol unified symbol of the market to fetch trades for
675
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
676
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
677
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
678
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
679
+ */
680
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
681
+ await this.loadMarkets();
682
+ const market = this.market(symbol);
683
+ const request = {
684
+ 'pair': market['id'],
685
+ };
686
+ if (since !== undefined) {
687
+ request['from'] = since;
688
+ }
689
+ else {
690
+ // this endpoint accepts empty from param
691
+ request['from'] = '';
692
+ }
693
+ const response = await this.publicGetExchangeTicksPairFrom(this.extend(request, params));
694
+ //
695
+ // {
696
+ // "tickHistory": [
697
+ // {
698
+ // "pair": "ETHUSDT",
699
+ // "price": 2077.5623,
700
+ // "qty": 0.002888,
701
+ // "timestamp": 1700684689420,
702
+ // "seqNum": 10644554718
703
+ // },
704
+ // {
705
+ // "pair": "ETHUSDT",
706
+ // "price": 2078.3848,
707
+ // "qty": 0.003368,
708
+ // "timestamp": 1700684738410,
709
+ // "seqNum": 10644559561
710
+ // },
711
+ // {
712
+ // "pair": "ETHUSDT",
713
+ // "price": 2077.1513,
714
+ // "qty": 0.00337,
715
+ // "timestamp": 1700684816853,
716
+ // "seqNum": 10644567113
717
+ // },
718
+ // ...
719
+ // ]
720
+ // }
721
+ //
722
+ const tickHistory = this.safeList(response, 'tickHistory', []);
723
+ return this.parseTrades(tickHistory, market, since, limit);
724
+ }
725
+ /**
726
+ * @method
727
+ * @name coinmetro#fetchMyTrades
728
+ * @description fetch all trades made by the user
729
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
730
+ * @param {string} symbol unified market symbol
731
+ * @param {int} [since] the earliest time in ms to fetch trades for
732
+ * @param {int} [limit] the maximum number of trades structures to retrieve (default 500, max 1000)
733
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
734
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
735
+ */
736
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
737
+ await this.loadMarkets();
738
+ let market = undefined;
739
+ if (symbol !== undefined) {
740
+ market = this.market(symbol);
741
+ }
742
+ const request = {};
743
+ if (since !== undefined) {
744
+ request['since'] = since;
745
+ }
746
+ else {
747
+ // the exchange requires a value for the since param
748
+ request['since'] = 0;
749
+ }
750
+ const response = await this.privateGetExchangeFillsSince(this.extend(request, params));
751
+ //
752
+ // [
753
+ // {
754
+ // "pair": "ETHUSDC",
755
+ // "seqNumber": 10873722343,
756
+ // "timestamp": 1702570610747,
757
+ // "qty": 0.002,
758
+ // "price": 2282,
759
+ // "side": "buy",
760
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
761
+ // },
762
+ // ...
763
+ // ]
764
+ //
765
+ return this.parseTrades(response, market, since, limit);
766
+ }
767
+ parseTrade(trade, market = undefined) {
768
+ //
769
+ // fetchTrades
770
+ // {
771
+ // "pair": "ETHUSDT",
772
+ // "price": 2077.1513,
773
+ // "qty": 0.00337,
774
+ // "timestamp": 1700684816853,
775
+ // "seqNum": 10644567113
776
+ // },
777
+ //
778
+ // fetchMyTrades
779
+ // {
780
+ // "pair": "ETHUSDC",
781
+ // "seqNumber": 10873722343,
782
+ // "timestamp": 1702570610747,
783
+ // "qty": 0.002,
784
+ // "price": 2282,
785
+ // "side": "buy",
786
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
787
+ // }
788
+ //
789
+ // fetchOrders
790
+ // {
791
+ // "_id": "657b31d360a9542449381bdc",
792
+ // "seqNumber": 10873722343,
793
+ // "timestamp": 1702570610747,
794
+ // "qty": 0.002,
795
+ // "price": 2282,
796
+ // "side": "buy"
797
+ // }
798
+ //
799
+ // {
800
+ // "pair":"ETHUSDC",
801
+ // "seqNumber":"10873722343",
802
+ // "timestamp":"1702570610747",
803
+ // "qty":"0.002",
804
+ // "price":"2282",
805
+ // "side":"buy",
806
+ // "orderID":"65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
807
+ // "userID":"65671262d93d9525ac009e36"
808
+ // }
809
+ //
810
+ const marketId = this.safeString2(trade, 'symbol', 'pair');
811
+ market = this.safeMarket(marketId, market);
812
+ const symbol = market['symbol'];
813
+ const id = this.safeStringN(trade, ['_id', 'seqNum', 'seqNumber']);
814
+ const timestamp = this.safeInteger(trade, 'timestamp');
815
+ const priceString = this.safeString(trade, 'price');
816
+ const amountString = this.safeString(trade, 'qty');
817
+ const order = this.safeString(trade, 'orderID');
818
+ const side = this.safeString(trade, 'side');
819
+ return this.safeTrade({
820
+ 'id': id,
821
+ 'order': order,
822
+ 'timestamp': timestamp,
823
+ 'datetime': this.iso8601(timestamp),
824
+ 'symbol': symbol,
825
+ 'type': undefined,
826
+ 'side': side,
827
+ 'takerOrMaker': undefined,
828
+ 'price': priceString,
829
+ 'amount': amountString,
830
+ 'cost': undefined,
831
+ 'fee': undefined,
832
+ 'info': trade,
833
+ }, market);
834
+ }
835
+ /**
836
+ * @method
837
+ * @name coinmetro#fetchOrderBook
838
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
839
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
840
+ * @param {string} symbol unified symbol of the market to fetch the order book for
841
+ * @param {int} [limit] the maximum amount of order book entries to return (default 100, max 200)
842
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
843
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
844
+ */
845
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
846
+ await this.loadMarkets();
847
+ const market = this.market(symbol);
848
+ const request = {
849
+ 'pair': market['id'],
850
+ };
851
+ const response = await this.publicGetExchangeBookPair(this.extend(request, params));
852
+ //
853
+ // {
854
+ // "book": {
855
+ // "pair": "ETHUSDT",
856
+ // "seqNumber": 10800409239,
857
+ // "ask": {
858
+ // "2354.2861": 3.75,
859
+ // "2354.3138": 19,
860
+ // "2354.7538": 80,
861
+ // "2355.5430": 260,
862
+ // "2356.4611": 950,
863
+ // "2361.7150": 1500,
864
+ // "206194.0000": 0.01
865
+ // },
866
+ // "bid": {
867
+ // "2352.6339": 3.75,
868
+ // "2352.6002": 19,
869
+ // "2352.2402": 80,
870
+ // "2351.4582": 260,
871
+ // "2349.3111": 950,
872
+ // "2343.8601": 1500,
873
+ // "1.0000": 5
874
+ // },
875
+ // "checksum": 2108177337
876
+ // }
877
+ // }
878
+ //
879
+ const book = this.safeValue(response, 'book', {});
880
+ const rawBids = this.safeValue(book, 'bid', {});
881
+ const rawAsks = this.safeValue(book, 'ask', {});
882
+ const rawOrderbook = {
883
+ 'bids': rawBids,
884
+ 'asks': rawAsks,
885
+ };
886
+ const orderbook = this.parseOrderBook(rawOrderbook, symbol);
887
+ orderbook['nonce'] = this.safeInteger(book, 'seqNumber');
888
+ return orderbook;
889
+ }
890
+ parseBidsAsks(bidasks, priceKey = 0, amountKey = 1, countOrIdKey = 2) {
891
+ const prices = Object.keys(bidasks);
892
+ const result = [];
893
+ for (let i = 0; i < prices.length; i++) {
894
+ const priceString = this.safeString(prices, i);
895
+ const price = this.safeNumber(prices, i);
896
+ const volume = this.safeNumber(bidasks, priceString);
897
+ result.push([price, volume]);
898
+ }
899
+ return result;
900
+ }
901
+ /**
902
+ * @method
903
+ * @name coinmetro#fetchTickers
904
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
905
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
906
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
907
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
908
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
909
+ */
910
+ async fetchTickers(symbols = undefined, params = {}) {
911
+ await this.loadMarkets();
912
+ const response = await this.publicGetExchangePrices(params);
913
+ //
914
+ // {
915
+ // "latestPrices": [
916
+ // {
917
+ // "pair": "PERPEUR",
918
+ // "timestamp": 1702549840393,
919
+ // "price": 0.7899997816001223,
920
+ // "qty": 1e-12,
921
+ // "ask": 0.8,
922
+ // "bid": 0.7799995632002446
923
+ // },
924
+ // {
925
+ // "pair": "PERPUSD",
926
+ // "timestamp": 1702549841973,
927
+ // "price": 0.8615317721366659,
928
+ // "qty": 1e-12,
929
+ // "ask": 0.8742333599999257,
930
+ // "bid": 0.8490376365388491
931
+ // },
932
+ // ...
933
+ // ],
934
+ // "24hInfo": [
935
+ // {
936
+ // "delta": 0.25396444229149906,
937
+ // "h": 0.78999978160012,
938
+ // "l": 0.630001740844,
939
+ // "v": 54.910000002833996,
940
+ // "pair": "PERPEUR",
941
+ // "sentimentData": {
942
+ // "sentiment": 36.71333333333333,
943
+ // "interest": 0.47430830039525695
944
+ // }
945
+ // },
946
+ // {
947
+ // "delta": 0.26915154078134096,
948
+ // "h": 0.86220315458898,
949
+ // "l": 0.67866757035154,
950
+ // "v": 2.835000000000001e-9,
951
+ // "pair": "PERPUSD",
952
+ // "sentimentData": {
953
+ // "sentiment": 36.71333333333333,
954
+ // "interest": 0.47430830039525695
955
+ // }
956
+ // },
957
+ // ...
958
+ // ]
959
+ // }
960
+ //
961
+ const latestPrices = this.safeValue(response, 'latestPrices', []);
962
+ const twentyFourHInfos = this.safeValue(response, '24hInfo', []);
963
+ const tickersObject = {};
964
+ // merging info from two lists into one
965
+ for (let i = 0; i < latestPrices.length; i++) {
966
+ const latestPrice = latestPrices[i];
967
+ const marketId = this.safeString(latestPrice, 'pair');
968
+ if (marketId !== undefined) {
969
+ tickersObject[marketId] = latestPrice;
970
+ }
971
+ }
972
+ for (let i = 0; i < twentyFourHInfos.length; i++) {
973
+ const twentyFourHInfo = twentyFourHInfos[i];
974
+ const marketId = this.safeString(twentyFourHInfo, 'pair');
975
+ if (marketId !== undefined) {
976
+ const latestPrice = this.safeValue(tickersObject, marketId, {});
977
+ tickersObject[marketId] = this.extend(twentyFourHInfo, latestPrice);
978
+ }
979
+ }
980
+ const tickers = Object.values(tickersObject);
981
+ return this.parseTickers(tickers, symbols);
982
+ }
983
+ /**
984
+ * @method
985
+ * @name coinmetro#fetchBidsAsks
986
+ * @description fetches the bid and ask price and volume for multiple markets
987
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
988
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
989
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
990
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
991
+ */
992
+ async fetchBidsAsks(symbols = undefined, params = {}) {
993
+ await this.loadMarkets();
994
+ const response = await this.publicGetExchangePrices(params);
995
+ const latestPrices = this.safeList(response, 'latestPrices', []);
996
+ return this.parseTickers(latestPrices, symbols);
997
+ }
998
+ parseTicker(ticker, market = undefined) {
999
+ //
1000
+ // {
1001
+ // "pair": "PERPUSD",
1002
+ // "timestamp": 1702549841973,
1003
+ // "price": 0.8615317721366659,
1004
+ // "qty": 1e-12,
1005
+ // "ask": 0.8742333599999257,
1006
+ // "bid": 0.8490376365388491
1007
+ // "delta": 0.26915154078134096,
1008
+ // "h": 0.86220315458898,
1009
+ // "l": 0.67866757035154,
1010
+ // "v": 2.835000000000001e-9,
1011
+ // "sentimentData": {
1012
+ // "sentiment": 36.71333333333333,
1013
+ // "interest": 0.47430830039525695
1014
+ // }
1015
+ // }
1016
+ //
1017
+ const marketId = this.safeString(ticker, 'pair');
1018
+ market = this.safeMarket(marketId, market);
1019
+ const timestamp = this.safeInteger(ticker, 'timestamp');
1020
+ const bid = this.safeString(ticker, 'bid');
1021
+ const ask = this.safeString(ticker, 'ask');
1022
+ const high = this.safeString(ticker, 'h');
1023
+ const low = this.safeString(ticker, 'l');
1024
+ const last = this.safeString(ticker, 'price');
1025
+ const baseVolume = this.safeString(ticker, 'v');
1026
+ const delta = this.safeString(ticker, 'delta');
1027
+ const percentage = Precise.stringMul(delta, '100');
1028
+ return this.safeTicker({
1029
+ 'symbol': market['symbol'],
1030
+ 'timestamp': timestamp,
1031
+ 'datetime': this.iso8601(timestamp),
1032
+ 'open': undefined,
1033
+ 'high': high,
1034
+ 'low': low,
1035
+ 'close': undefined,
1036
+ 'last': last,
1037
+ 'bid': bid,
1038
+ 'bidVolume': undefined,
1039
+ 'ask': ask,
1040
+ 'askVolume': undefined,
1041
+ 'vwap': undefined,
1042
+ 'previousClose': undefined,
1043
+ 'change': undefined,
1044
+ 'percentage': percentage,
1045
+ 'average': undefined,
1046
+ 'baseVolume': baseVolume,
1047
+ 'quoteVolume': undefined,
1048
+ 'info': ticker,
1049
+ }, market);
1050
+ }
1051
+ /**
1052
+ * @method
1053
+ * @name coinmetro#fetchBalance
1054
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1055
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#741a1dcc-7307-40d0-acca-28d003d1506a
1056
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1057
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1058
+ */
1059
+ async fetchBalance(params = {}) {
1060
+ await this.loadMarkets();
1061
+ const response = await this.privateGetUsersWallets(params);
1062
+ const list = this.safeList(response, 'list', []);
1063
+ return this.parseBalance(list);
1064
+ }
1065
+ parseBalance(balances) {
1066
+ //
1067
+ // [
1068
+ // {
1069
+ // "xcmLocks": [],
1070
+ // "xcmLockAmounts": [],
1071
+ // "refList": [],
1072
+ // "balanceHistory": [],
1073
+ // "_id": "5fecd3c998e75c2e4d63f7c3",
1074
+ // "currency": "BTC",
1075
+ // "label": "BTC",
1076
+ // "userId": "5fecd3c97fbfed1521db23bd",
1077
+ // "__v": 0,
1078
+ // "balance": 0.5,
1079
+ // "createdAt": "2020-12-30T19:23:53.646Z",
1080
+ // "disabled": false,
1081
+ // "updatedAt": "2020-12-30T19:23:53.653Z",
1082
+ // "reserved": 0,
1083
+ // "id": "5fecd3c998e75c2e4d63f7c3"
1084
+ // },
1085
+ // ...
1086
+ // ]
1087
+ //
1088
+ const result = {
1089
+ 'info': balances,
1090
+ };
1091
+ for (let i = 0; i < balances.length; i++) {
1092
+ const balanceEntry = this.safeDict(balances, i, {});
1093
+ const currencyId = this.safeString(balanceEntry, 'currency');
1094
+ const code = this.safeCurrencyCode(currencyId);
1095
+ const account = this.account();
1096
+ account['total'] = this.safeString(balanceEntry, 'balance');
1097
+ account['used'] = this.safeString(balanceEntry, 'reserved');
1098
+ result[code] = account;
1099
+ }
1100
+ return this.safeBalance(result);
1101
+ }
1102
+ /**
1103
+ * @method
1104
+ * @name coinmetro#fetchLedger
1105
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1106
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
1107
+ * @param {string} [code] unified currency code, default is undefined
1108
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1109
+ * @param {int} [limit] max number of ledger entries to return (default 200, max 500)
1110
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1111
+ * @param {int} [params.until] the latest time in ms to fetch entries for
1112
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1113
+ */
1114
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1115
+ await this.loadMarkets();
1116
+ const request = {};
1117
+ if (since !== undefined) {
1118
+ request['since'] = since;
1119
+ }
1120
+ else {
1121
+ // this endpoint accepts empty since param
1122
+ request['since'] = '';
1123
+ }
1124
+ let currency = undefined;
1125
+ if (code !== undefined) {
1126
+ currency = this.currency(code);
1127
+ }
1128
+ const response = await this.privateGetUsersWalletsHistorySince(this.extend(request, params));
1129
+ //
1130
+ // {
1131
+ // "list": [
1132
+ // {
1133
+ // "currency": "USDC",
1134
+ // "label": "USDC",
1135
+ // "userId": "65671262d93d9525ac009e36",
1136
+ // "balance": 0,
1137
+ // "disabled": false,
1138
+ // "balanceHistory": [
1139
+ // {
1140
+ // "description": "Deposit - 657973a9b6eadf0f33d70100",
1141
+ // "JSONdata": {
1142
+ // "fees": 0,
1143
+ // "notes": "Via Crypto",
1144
+ // "txHash": "0x2e4875185b0f312d8e24b2d26d46bf9877db798b608ad2ff97b2b8bc7d8134e5",
1145
+ // "last4Digits": null,
1146
+ // "IBAN": null,
1147
+ // "alternativeChain": "polygon",
1148
+ // "referenceId": "657973a9b6eadf0f33d70100",
1149
+ // "status": "completed",
1150
+ // "tracked": true
1151
+ // },
1152
+ // "amount": 99,
1153
+ // "timestamp": "2023-12-13T09:04:51.270Z",
1154
+ // "amountEUR": 91.79310117335974
1155
+ // },
1156
+ // {
1157
+ // "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
1158
+ // "JSONdata": {
1159
+ // "price": "2282.00 ETH/USDC",
1160
+ // "fees": 0,
1161
+ // "notes": "Order 3a8c5b4d6c"
1162
+ // },
1163
+ // "amount": -4.564,
1164
+ // "timestamp": "2023-12-14T16:16:50.760Z",
1165
+ // "amountEUR": -4.150043849187587
1166
+ // },
1167
+ // ...
1168
+ // ]
1169
+ // },
1170
+ // {
1171
+ // "currency": "ETH",
1172
+ // "label": "ETH",
1173
+ // "userId": "65671262d93d9525ac009e36",
1174
+ // "balance": 0,
1175
+ // "disabled": false,
1176
+ // "balanceHistory": [
1177
+ // {
1178
+ // "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
1179
+ // "JSONdata": {
1180
+ // "price": "2282.00 ETH/USDC",
1181
+ // "fees": 0.000002,
1182
+ // "notes": "Order 3a8c5b4d6c"
1183
+ // },
1184
+ // "amount": 0.001998,
1185
+ // "timestamp": "2023-12-14T16:16:50.761Z",
1186
+ // "amountEUR": 4.144849415806856
1187
+ // },
1188
+ // ...
1189
+ // ]
1190
+ // },
1191
+ // {
1192
+ // "currency": "DOGE",
1193
+ // "label": "DOGE",
1194
+ // "userId": "65671262d93d9525ac009e36",
1195
+ // "balance": 0,
1196
+ // "disabled": false,
1197
+ // "balanceHistory": [
1198
+ // {
1199
+ // "description": "Order 65671262d93d9525ac009e361702905785319b5d9016dc20736034d13ca6a - Swap",
1200
+ // "JSONdata": {
1201
+ // "swap": true,
1202
+ // "subtype": "swap",
1203
+ // "fees": 0,
1204
+ // "price": "0.0905469 DOGE/USDC",
1205
+ // "notes": "Swap 034d13ca6a"
1206
+ // },
1207
+ // "amount": 70,
1208
+ // "timestamp": "2023-12-18T13:23:05.836Z",
1209
+ // "amountEUR": 5.643627624549227
1210
+ // }
1211
+ // ]
1212
+ // },
1213
+ // ...
1214
+ // ]
1215
+ // }
1216
+ //
1217
+ const ledgerByCurrencies = this.safeValue(response, 'list', []);
1218
+ const ledger = [];
1219
+ for (let i = 0; i < ledgerByCurrencies.length; i++) {
1220
+ const currencyLedger = ledgerByCurrencies[i];
1221
+ const currencyId = this.safeString(currencyLedger, 'currency');
1222
+ const balanceHistory = this.safeValue(currencyLedger, 'balanceHistory', []);
1223
+ for (let j = 0; j < balanceHistory.length; j++) {
1224
+ const rawLedgerEntry = balanceHistory[j];
1225
+ rawLedgerEntry['currencyId'] = currencyId;
1226
+ ledger.push(rawLedgerEntry);
1227
+ }
1228
+ }
1229
+ return this.parseLedger(ledger, currency, since, limit);
1230
+ }
1231
+ parseLedgerEntry(item, currency = undefined) {
1232
+ const datetime = this.safeString(item, 'timestamp');
1233
+ const currencyId = this.safeString(item, 'currencyId');
1234
+ item = this.omit(item, 'currencyId');
1235
+ currency = this.safeCurrency(currencyId, currency);
1236
+ const description = this.safeString(item, 'description', '');
1237
+ const [type, referenceId] = this.parseLedgerEntryDescription(description);
1238
+ const JSONdata = this.safeValue(item, 'JSONdata', {});
1239
+ const feeCost = this.safeString(JSONdata, 'fees');
1240
+ const fee = {
1241
+ 'cost': feeCost,
1242
+ 'currency': undefined,
1243
+ };
1244
+ let amount = this.safeString(item, 'amount');
1245
+ let direction = undefined;
1246
+ if (amount !== undefined) {
1247
+ if (Precise.stringLt(amount, '0')) {
1248
+ direction = 'out';
1249
+ amount = Precise.stringAbs(amount);
1250
+ }
1251
+ else if (Precise.stringGt(amount, '0')) {
1252
+ direction = 'in';
1253
+ }
1254
+ }
1255
+ return this.safeLedgerEntry({
1256
+ 'info': item,
1257
+ 'id': undefined,
1258
+ 'timestamp': this.parse8601(datetime),
1259
+ 'datetime': datetime,
1260
+ 'direction': direction,
1261
+ 'account': undefined,
1262
+ 'referenceId': referenceId,
1263
+ 'referenceAccount': undefined,
1264
+ 'type': type,
1265
+ 'currency': currency,
1266
+ 'amount': amount,
1267
+ 'before': undefined,
1268
+ 'after': undefined,
1269
+ 'status': undefined,
1270
+ 'fee': fee,
1271
+ }, currency);
1272
+ }
1273
+ parseLedgerEntryDescription(description) {
1274
+ let descriptionArray = [];
1275
+ if (description !== undefined) {
1276
+ descriptionArray = description.split(' ');
1277
+ }
1278
+ let type = undefined;
1279
+ let referenceId = undefined;
1280
+ const length = descriptionArray.length;
1281
+ if (length > 1) {
1282
+ type = this.parseLedgerEntryType(descriptionArray[0]);
1283
+ if (descriptionArray[1] !== '-') {
1284
+ referenceId = descriptionArray[1];
1285
+ }
1286
+ else {
1287
+ referenceId = this.safeString(descriptionArray, 2);
1288
+ }
1289
+ }
1290
+ return [type, referenceId];
1291
+ }
1292
+ parseLedgerEntryType(type) {
1293
+ const types = {
1294
+ 'Deposit': 'transaction',
1295
+ 'Withdraw': 'transaction',
1296
+ 'Order': 'trade',
1297
+ };
1298
+ return this.safeString(types, type, type);
1299
+ }
1300
+ /**
1301
+ * @method
1302
+ * @name coinmetro#createOrder
1303
+ * @description create a trade order
1304
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
1305
+ * @param {string} symbol unified symbol of the market to create an order in
1306
+ * @param {string} type 'market' or 'limit'
1307
+ * @param {string} side 'buy' or 'sell'
1308
+ * @param {float} amount how much of currency you want to trade in units of base currency
1309
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1310
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1311
+ * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount in market orders
1312
+ * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", "GTD"
1313
+ * @param {number} [params.expirationTime] timestamp in millisecond, for GTD orders only
1314
+ * @param {float} [params.triggerPrice] the price at which a trigger order is triggered at
1315
+ * @param {float} [params.stopLossPrice] *margin only* The price at which a stop loss order is triggered at
1316
+ * @param {float} [params.takeProfitPrice] *margin only* The price at which a take profit order is triggered at
1317
+ * @param {bool} [params.margin] true for creating a margin order
1318
+ * @param {string} [params.fillStyle] fill style of the limit order: "sell" fulfills selling quantity "buy" fulfills buying quantity "base" fulfills base currency quantity "quote" fulfills quote currency quantity
1319
+ * @param {string} [params.clientOrderId] client's comment
1320
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1321
+ */
1322
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1323
+ await this.loadMarkets();
1324
+ const market = this.market(symbol);
1325
+ let request = {};
1326
+ request['orderType'] = type;
1327
+ let formattedAmount = undefined;
1328
+ if (amount !== undefined) {
1329
+ formattedAmount = this.amountToPrecision(symbol, amount);
1330
+ }
1331
+ let cost = this.safeValue(params, 'cost');
1332
+ params = this.omit(params, 'cost');
1333
+ if (type === 'limit') {
1334
+ if ((price === undefined) && (cost === undefined)) {
1335
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order');
1336
+ }
1337
+ else if ((price !== undefined) && (amount !== undefined)) {
1338
+ const costString = Precise.stringMul(this.numberToString(price), this.numberToString(formattedAmount));
1339
+ cost = this.parseToNumeric(costString);
1340
+ }
1341
+ }
1342
+ let precisedCost = undefined;
1343
+ if (cost !== undefined) {
1344
+ precisedCost = this.costToPrecision(symbol, cost);
1345
+ }
1346
+ if (side === 'sell') {
1347
+ request = this.handleCreateOrderSide(market['baseId'], market['quoteId'], formattedAmount, precisedCost, request);
1348
+ }
1349
+ else if (side === 'buy') {
1350
+ request = this.handleCreateOrderSide(market['quoteId'], market['baseId'], precisedCost, formattedAmount, request);
1351
+ }
1352
+ const timeInForce = this.safeValue(params, 'timeInForce');
1353
+ if (timeInForce !== undefined) {
1354
+ params = this.omit(params, 'timeInForce');
1355
+ request['timeInForce'] = this.encodeOrderTimeInForce(timeInForce);
1356
+ }
1357
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
1358
+ if (triggerPrice !== undefined) {
1359
+ params = this.omit(params, ['triggerPrice']);
1360
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
1361
+ }
1362
+ const userData = this.safeValue(params, 'userData', {});
1363
+ const comment = this.safeString2(params, 'clientOrderId', 'comment');
1364
+ if (comment !== undefined) {
1365
+ params = this.omit(params, ['clientOrderId']);
1366
+ userData['comment'] = comment;
1367
+ }
1368
+ const stopLossPrice = this.safeString(params, 'stopLossPrice');
1369
+ if (stopLossPrice !== undefined) {
1370
+ params = this.omit(params, 'stopLossPrice');
1371
+ userData['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
1372
+ }
1373
+ const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
1374
+ if (takeProfitPrice !== undefined) {
1375
+ params = this.omit(params, 'takeProfitPrice');
1376
+ userData['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
1377
+ }
1378
+ if (!this.isEmpty(userData)) {
1379
+ request['userData'] = userData;
1380
+ }
1381
+ const response = await this.privatePostExchangeOrdersCreate(this.extend(request, params));
1382
+ //
1383
+ // {
1384
+ // "userID": "65671262d93d9525ac009e36",
1385
+ // "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
1386
+ // "orderType": "market",
1387
+ // "buyingCurrency": "ETH",
1388
+ // "sellingCurrency": "USDC",
1389
+ // "buyingQty": 0.002,
1390
+ // "timeInForce": 4,
1391
+ // "boughtQty": 0.002,
1392
+ // "soldQty": 4.587,
1393
+ // "creationTime": 1702574484829,
1394
+ // "seqNumber": 10874285330,
1395
+ // "firstFillTime": 1702574484831,
1396
+ // "lastFillTime": 1702574484831,
1397
+ // "fills": [
1398
+ // {
1399
+ // "seqNumber": 10874285329,
1400
+ // "timestamp": 1702574484831,
1401
+ // "qty": 0.002,
1402
+ // "price": 2293.5,
1403
+ // "side": "buy"
1404
+ // }
1405
+ // ],
1406
+ // "completionTime": 1702574484831,
1407
+ // "takerQty": 0.002
1408
+ // }
1409
+ //
1410
+ return this.parseOrder(response, market);
1411
+ }
1412
+ handleCreateOrderSide(sellingCurrency, buyingCurrency, sellingQty, buyingQty, request = {}) {
1413
+ request['sellingCurrency'] = sellingCurrency;
1414
+ request['buyingCurrency'] = buyingCurrency;
1415
+ if (sellingQty !== undefined) {
1416
+ request['sellingQty'] = sellingQty;
1417
+ }
1418
+ if (buyingQty !== undefined) {
1419
+ request['buyingQty'] = buyingQty;
1420
+ }
1421
+ return request;
1422
+ }
1423
+ encodeOrderTimeInForce(timeInForce) {
1424
+ const timeInForceTypes = {
1425
+ 'GTC': 1,
1426
+ 'IOC': 2,
1427
+ 'GTD': 3,
1428
+ 'FOK': 4,
1429
+ };
1430
+ return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
1431
+ }
1432
+ /**
1433
+ * @method
1434
+ * @name coinmetro#cancelOrder
1435
+ * @description cancels an open order
1436
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
1437
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1438
+ * @param {string} id order id
1439
+ * @param {string} symbol not used by coinmetro cancelOrder ()
1440
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1441
+ * @param {string} [params.margin] true for cancelling a margin order
1442
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1443
+ */
1444
+ async cancelOrder(id, symbol = undefined, params = {}) {
1445
+ await this.loadMarkets();
1446
+ const request = {
1447
+ 'orderID': id,
1448
+ };
1449
+ const marginMode = undefined;
1450
+ [params, params] = this.handleMarginModeAndParams('cancelOrder', params);
1451
+ const isMargin = this.safeBool(params, 'margin', false);
1452
+ params = this.omit(params, 'margin');
1453
+ let response = undefined;
1454
+ if (isMargin || (marginMode !== undefined)) {
1455
+ response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
1456
+ }
1457
+ else {
1458
+ response = await this.privatePutExchangeOrdersCancelOrderID(this.extend(request, params));
1459
+ }
1460
+ //
1461
+ // {
1462
+ // "userID": "65671262d93d9525ac009e36",
1463
+ // "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
1464
+ // "orderType": "limit",
1465
+ // "buyingCurrency": "ETH",
1466
+ // "sellingCurrency": "USDC",
1467
+ // "fillStyle": "sell",
1468
+ // "orderPlatform": "trade-v3",
1469
+ // "timeInForce": 1,
1470
+ // "buyingQty": 0.005655,
1471
+ // "sellingQty": 11.31,
1472
+ // "boughtQty": 0,
1473
+ // "soldQty": 0,
1474
+ // "creationTime": 1702663525713,
1475
+ // "seqNumber": 10915220048,
1476
+ // "completionTime": 1702928369053
1477
+ // }
1478
+ //
1479
+ return this.parseOrder(response);
1480
+ }
1481
+ /**
1482
+ * @method
1483
+ * @name coinmetro#closePosition
1484
+ * @description closes an open position
1485
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1486
+ * @param {string} symbol not used by coinmetro closePosition ()
1487
+ * @param {string} [side] not used by coinmetro closePosition ()
1488
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1489
+ * @param {string} [params.orderID] order id
1490
+ * @param {number} [params.fraction] fraction of order to close, between 0 and 1 (defaults to 1)
1491
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1492
+ */
1493
+ async closePosition(symbol, side = undefined, params = {}) {
1494
+ await this.loadMarkets();
1495
+ const orderId = this.safeString(params, 'orderId');
1496
+ if (orderId === undefined) {
1497
+ throw new ArgumentsRequired(this.id + ' closePosition() requires a orderId parameter');
1498
+ }
1499
+ const request = {
1500
+ 'orderID': orderId,
1501
+ };
1502
+ const response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
1503
+ //
1504
+ // {
1505
+ // "userID": "65671262d93d9525ac009e36",
1506
+ // "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8_CL",
1507
+ // "orderType": "market",
1508
+ // "buyingCurrency": "ETH",
1509
+ // "sellingCurrency": "EUR",
1510
+ // "margin": true,
1511
+ // "buyingQty": 0.03,
1512
+ // "timeInForce": 4,
1513
+ // "boughtQty": 0.03,
1514
+ // "soldQty": 59.375,
1515
+ // "creationTime": 1703015488482,
1516
+ // "seqNumber": 10925321179,
1517
+ // "firstFillTime": 1703015488483,
1518
+ // "lastFillTime": 1703015488483,
1519
+ // "fills": [
1520
+ // {
1521
+ // "seqNumber": 10925321178,
1522
+ // "timestamp": 1703015488483,
1523
+ // "qty": 0.03,
1524
+ // "price": 1979.1666666666667,
1525
+ // "side": "buy"
1526
+ // }
1527
+ // ],
1528
+ // "completionTime": 1703015488483,
1529
+ // "takerQty": 0.03
1530
+ // }
1531
+ //
1532
+ return this.parseOrder(response);
1533
+ }
1534
+ /**
1535
+ * @method
1536
+ * @name coinmetro#fetchOpenOrders
1537
+ * @description fetch all unfilled currently open orders
1538
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
1539
+ * @param {string} symbol unified market symbol
1540
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1541
+ * @param {int} [limit] the maximum number of open order structures to retrieve
1542
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1543
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1544
+ */
1545
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1546
+ await this.loadMarkets();
1547
+ let market = undefined;
1548
+ if (symbol !== undefined) {
1549
+ market = this.market(symbol);
1550
+ }
1551
+ const response = await this.privateGetExchangeOrdersActive(params);
1552
+ const orders = this.parseOrders(response, market, since, limit);
1553
+ for (let i = 0; i < orders.length; i++) {
1554
+ const order = orders[i];
1555
+ order['status'] = 'open';
1556
+ }
1557
+ return orders;
1558
+ }
1559
+ /**
1560
+ * @method
1561
+ * @name coinmetro#fetchCanceledAndClosedOrders
1562
+ * @description fetches information on multiple canceled and closed orders made by the user
1563
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
1564
+ * @param {string} symbol unified market symbol of the market orders were made in
1565
+ * @param {int} [since] the earliest time in ms to fetch orders for
1566
+ * @param {int} [limit] the maximum number of order structures to retrieve
1567
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1568
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1569
+ */
1570
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1571
+ await this.loadMarkets();
1572
+ let market = undefined;
1573
+ if (symbol !== undefined) {
1574
+ market = this.market(symbol);
1575
+ }
1576
+ const request = {};
1577
+ if (since !== undefined) {
1578
+ request['since'] = since;
1579
+ }
1580
+ const response = await this.privateGetExchangeOrdersHistorySince(this.extend(request, params));
1581
+ return this.parseOrders(response, market, since, limit);
1582
+ }
1583
+ /**
1584
+ * @method
1585
+ * @name coinmetro#fetchOrder
1586
+ * @description fetches information on an order made by the user
1587
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
1588
+ * @param {int|string} id order id
1589
+ * @param {string} symbol not used by coinmetro fetchOrder ()
1590
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1591
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1592
+ */
1593
+ async fetchOrder(id, symbol = undefined, params = {}) {
1594
+ await this.loadMarkets();
1595
+ const request = {
1596
+ 'orderID': id,
1597
+ };
1598
+ const response = await this.privateGetExchangeOrdersStatusOrderID(this.extend(request, params));
1599
+ //
1600
+ // {
1601
+ // "_id": "657b4e6d60a954244939ac6f",
1602
+ // "userID": "65671262d93d9525ac009e36",
1603
+ // "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
1604
+ // "orderType": "market",
1605
+ // "buyingCurrency": "ETH",
1606
+ // "sellingCurrency": "USDC",
1607
+ // "buyingQty": 0.004,
1608
+ // "timeInForce": 4,
1609
+ // "boughtQty": 0.004,
1610
+ // "soldQty": 9.236,
1611
+ // "creationTime": 1702576531995,
1612
+ // "seqNumber": 10874644062,
1613
+ // "firstFillTime": 1702576531995,
1614
+ // "lastFillTime": 1702576531995,
1615
+ // "fills": [
1616
+ // {
1617
+ // "_id": "657b4e6d60a954244939ac70",
1618
+ // "seqNumber": 10874644061,
1619
+ // "timestamp": 1702576531995,
1620
+ // "qty": 0.004,
1621
+ // "price": 2309,
1622
+ // "side": "buy"
1623
+ // }
1624
+ // ],
1625
+ // "completionTime": 1702576531995,
1626
+ // "takerQty": 0.004,
1627
+ // "fees": 0.000004,
1628
+ // "isAncillary": false,
1629
+ // "margin": false,
1630
+ // "trade": false,
1631
+ // "canceled": false
1632
+ // }
1633
+ //
1634
+ return this.parseOrder(response);
1635
+ }
1636
+ parseOrder(order, market = undefined) {
1637
+ //
1638
+ // createOrder market
1639
+ // {
1640
+ // "userID": "65671262d93d9525ac009e36",
1641
+ // "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
1642
+ // "orderType": "market",
1643
+ // "buyingCurrency": "ETH",
1644
+ // "sellingCurrency": "USDC",
1645
+ // "buyingQty": 0.002,
1646
+ // "timeInForce": 4,
1647
+ // "boughtQty": 0.002,
1648
+ // "soldQty": 4.587,
1649
+ // "creationTime": 1702574484829,
1650
+ // "seqNumber": 10874285330,
1651
+ // "firstFillTime": 1702574484831,
1652
+ // "lastFillTime": 1702574484831,
1653
+ // "fills": [
1654
+ // {
1655
+ // "seqNumber": 10874285329,
1656
+ // "timestamp": 1702574484831,
1657
+ // "qty": 0.002,
1658
+ // "price": 2293.5,
1659
+ // "side": "buy"
1660
+ // }
1661
+ // ],
1662
+ // "completionTime": 1702574484831,
1663
+ // "takerQty": 0.002
1664
+ // }
1665
+ //
1666
+ // createOrder limit
1667
+ // {
1668
+ // "userID": "65671262d93d9525ac009e36",
1669
+ // "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
1670
+ // "orderType": "limit",
1671
+ // "buyingCurrency": "ETH",
1672
+ // "sellingCurrency": "USDC",
1673
+ // "fillStyle": "sell",
1674
+ // "orderPlatform": "trade-v3",
1675
+ // "timeInForce": 1,
1676
+ // "buyingQty": 0.005655,
1677
+ // "sellingQty": 11.31,
1678
+ // "boughtQty": 0,
1679
+ // "soldQty": 0,
1680
+ // "creationTime": 1702663525713,
1681
+ // "seqNumber": 10885528683,
1682
+ // "fees": 0,
1683
+ // "fills": [],
1684
+ // "isAncillary": false,
1685
+ // "margin": false,
1686
+ // "trade": false
1687
+ // }
1688
+ //
1689
+ // fetchOrders market
1690
+ // {
1691
+ // "userID": "65671262d93d9525ac009e36",
1692
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
1693
+ // "orderType": "market",
1694
+ // "buyingCurrency": "ETH",
1695
+ // "sellingCurrency": "USDC",
1696
+ // "buyingQty": 0.002,
1697
+ // "timeInForce": 4,
1698
+ // "boughtQty": 0.002,
1699
+ // "soldQty": 4.564,
1700
+ // "creationTime": 1702570610746,
1701
+ // "seqNumber": 10873722344,
1702
+ // "firstFillTime": 1702570610747,
1703
+ // "lastFillTime": 1702570610747,
1704
+ // "fills": [
1705
+ // {
1706
+ // "_id": "657b31d360a9542449381bdc",
1707
+ // "seqNumber": 10873722343,
1708
+ // "timestamp": 1702570610747,
1709
+ // "qty": 0.002,
1710
+ // "price": 2282,
1711
+ // "side": "buy"
1712
+ // }
1713
+ // ],
1714
+ // "completionTime": 1702570610747,
1715
+ // "takerQty": 0.002,
1716
+ // "fees": 0.000002,
1717
+ // "isAncillary": false,
1718
+ // "margin": false,
1719
+ // "trade": false,
1720
+ // "canceled": false,
1721
+ // "__v": 0
1722
+ // }
1723
+ //
1724
+ // fetchOrders margin
1725
+ // {
1726
+ // "userData": {
1727
+ // "takeProfit": 1700,
1728
+ // "stopLoss": 2100
1729
+ // },
1730
+ // "_id": "658201d060a95424499394a2",
1731
+ // "seqNumber": 10925300213,
1732
+ // "orderType": "limit",
1733
+ // "buyingCurrency": "EUR",
1734
+ // "sellingCurrency": "ETH",
1735
+ // "userID": "65671262d93d9525ac009e36",
1736
+ // "closedQty": 0.03,
1737
+ // "sellingQty": 0.03,
1738
+ // "buyingQty": 58.8,
1739
+ // "creationTime": 1703015281205,
1740
+ // "margin": true,
1741
+ // "timeInForce": 1,
1742
+ // "boughtQty": 59.31,
1743
+ // "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8",
1744
+ // "lastFillTime": 1703015281206,
1745
+ // "soldQty": 0.03,
1746
+ // "closedTime": 1703015488488,
1747
+ // "closedVal": 59.375,
1748
+ // "trade": true,
1749
+ // "takerQty": 59.31,
1750
+ // "firstFillTime": 1703015281206,
1751
+ // "completionTime": 1703015281206,
1752
+ // "fills": [
1753
+ // {
1754
+ // "_id": "658201d060a95424499394a3",
1755
+ // "seqNumber": 10925300212,
1756
+ // "side": "sell",
1757
+ // "price": 1977,
1758
+ // "qty": 0.03,
1759
+ // "timestamp": 1703015281206
1760
+ // },
1761
+ // {
1762
+ // "_id": "658201d060a95424499394a4",
1763
+ // "seqNumber": 10925321178,
1764
+ // "timestamp": 1703015488483,
1765
+ // "qty": 0.03,
1766
+ // "price": 1979.1666666666667,
1767
+ // "side": "buy"
1768
+ // }
1769
+ // ],
1770
+ // "fees": 0.11875000200000001,
1771
+ // "settledQtys": {
1772
+ // "ETH": -0.000092842104710025
1773
+ // },
1774
+ // "isAncillary": false,
1775
+ // "canceled": false
1776
+ // }
1777
+ //
1778
+ // fetchOrder
1779
+ // {
1780
+ // "_id": "657b4e6d60a954244939ac6f",
1781
+ // "userID": "65671262d93d9525ac009e36",
1782
+ // "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
1783
+ // "orderType": "market",
1784
+ // "buyingCurrency": "ETH",
1785
+ // "sellingCurrency": "USDC",
1786
+ // "buyingQty": 0.004,
1787
+ // "timeInForce": 4,
1788
+ // "boughtQty": 0.004,
1789
+ // "soldQty": 9.236,
1790
+ // "creationTime": 1702576531995,
1791
+ // "seqNumber": 10874644062,
1792
+ // "firstFillTime": 1702576531995,
1793
+ // "lastFillTime": 1702576531995,
1794
+ // "fills": [
1795
+ // {
1796
+ // "_id": "657b4e6d60a954244939ac70",
1797
+ // "seqNumber": 10874644061,
1798
+ // "timestamp": 1702576531995,
1799
+ // "qty": 0.004,
1800
+ // "price": 2309,
1801
+ // "side": "buy"
1802
+ // }
1803
+ // ],
1804
+ // "completionTime": 1702576531995,
1805
+ // "takerQty": 0.004,
1806
+ // "fees": 0.000004,
1807
+ // "isAncillary": false,
1808
+ // "margin": false,
1809
+ // "trade": false,
1810
+ // "canceled": false
1811
+ // }
1812
+ //
1813
+ let timestamp = this.safeInteger(order, 'creationTime');
1814
+ const isCanceled = this.safeValue(order, 'canceled');
1815
+ let status = undefined;
1816
+ if (isCanceled === true) {
1817
+ if (timestamp === undefined) {
1818
+ timestamp = this.safeInteger(order, 'completionTime'); // market orders with bad price gain IOC - we mark them as 'rejected'?
1819
+ status = 'rejected'; // these orders don't have the 'creationTime` param and have 'canceled': true
1820
+ }
1821
+ else {
1822
+ status = 'canceled';
1823
+ }
1824
+ }
1825
+ else {
1826
+ status = this.safeString(order, 'status');
1827
+ order = this.omit(order, 'status'); // we mark orders from fetchOpenOrders with param 'status': 'open'
1828
+ }
1829
+ const type = this.safeString(order, 'orderType');
1830
+ let buyingQty = this.safeString(order, 'buyingQty');
1831
+ let sellingQty = this.safeString(order, 'sellingQty');
1832
+ const boughtQty = this.safeString(order, 'boughtQty');
1833
+ const soldQty = this.safeString(order, 'soldQty');
1834
+ if (type === 'market') {
1835
+ if ((buyingQty === undefined) && (boughtQty !== undefined) && (boughtQty !== '0')) {
1836
+ buyingQty = boughtQty;
1837
+ }
1838
+ if ((sellingQty === undefined) && (soldQty !== undefined) && (soldQty !== '0')) {
1839
+ sellingQty = soldQty;
1840
+ }
1841
+ }
1842
+ const buyingCurrencyId = this.safeString(order, 'buyingCurrency', '');
1843
+ const sellingCurrencyId = this.safeString(order, 'sellingCurrency', '');
1844
+ const byuingIdPlusSellingId = buyingCurrencyId + sellingCurrencyId;
1845
+ const sellingIdPlusBuyingId = sellingCurrencyId + buyingCurrencyId;
1846
+ let side = undefined;
1847
+ let marketId = undefined;
1848
+ let baseAmount = buyingQty;
1849
+ let quoteAmount = buyingQty;
1850
+ let filled = undefined;
1851
+ let cost = undefined;
1852
+ let feeInBaseOrQuote = undefined;
1853
+ const marketsById = this.indexBy(this.markets, 'id');
1854
+ if (this.safeValue(marketsById, byuingIdPlusSellingId) !== undefined) {
1855
+ side = 'buy';
1856
+ marketId = byuingIdPlusSellingId;
1857
+ quoteAmount = sellingQty;
1858
+ filled = boughtQty;
1859
+ cost = soldQty;
1860
+ feeInBaseOrQuote = 'base';
1861
+ }
1862
+ else if (this.safeValue(marketsById, sellingIdPlusBuyingId) !== undefined) {
1863
+ side = 'sell';
1864
+ marketId = sellingIdPlusBuyingId;
1865
+ baseAmount = sellingQty;
1866
+ filled = soldQty;
1867
+ cost = boughtQty;
1868
+ feeInBaseOrQuote = 'quote';
1869
+ }
1870
+ let price = undefined;
1871
+ if ((baseAmount !== undefined) && (quoteAmount !== undefined)) {
1872
+ price = Precise.stringDiv(quoteAmount, baseAmount);
1873
+ }
1874
+ market = this.safeMarket(marketId, market);
1875
+ let fee = undefined;
1876
+ const feeCost = this.safeString(order, 'fees');
1877
+ if ((feeCost !== undefined) && (feeInBaseOrQuote !== undefined)) {
1878
+ fee = {
1879
+ 'currency': market[feeInBaseOrQuote],
1880
+ 'cost': feeCost,
1881
+ 'rate': undefined,
1882
+ };
1883
+ }
1884
+ const trades = this.safeValue(order, 'fills', []);
1885
+ const userData = this.safeValue(order, 'userData', {});
1886
+ const clientOrderId = this.safeString(userData, 'comment');
1887
+ const takeProfitPrice = this.safeString(userData, 'takeProfit');
1888
+ const stopLossPrice = this.safeString(userData, 'stopLoss');
1889
+ return this.safeOrder({
1890
+ 'id': this.safeString(order, 'orderID'),
1891
+ 'clientOrderId': clientOrderId,
1892
+ 'timestamp': timestamp,
1893
+ 'datetime': this.iso8601(timestamp),
1894
+ 'lastTradeTimestamp': this.safeInteger(order, 'lastFillTime'),
1895
+ 'status': status,
1896
+ 'symbol': market['symbol'],
1897
+ 'type': type,
1898
+ 'timeInForce': this.parseOrderTimeInForce(this.safeInteger(order, 'timeInForce')),
1899
+ 'side': side,
1900
+ 'price': price,
1901
+ 'triggerPrice': this.safeString(order, 'stopPrice'),
1902
+ 'takeProfitPrice': takeProfitPrice,
1903
+ 'stopLossPrice': stopLossPrice,
1904
+ 'average': undefined,
1905
+ 'amount': baseAmount,
1906
+ 'cost': cost,
1907
+ 'filled': filled,
1908
+ 'remaining': undefined,
1909
+ 'fee': fee,
1910
+ 'fees': undefined,
1911
+ 'trades': trades,
1912
+ 'info': order,
1913
+ }, market);
1914
+ }
1915
+ parseOrderTimeInForce(timeInForce) {
1916
+ const timeInForceTypes = [
1917
+ undefined,
1918
+ 'GTC',
1919
+ 'IOC',
1920
+ 'GTD',
1921
+ 'FOK',
1922
+ ];
1923
+ return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
1924
+ }
1925
+ /**
1926
+ * @method
1927
+ * @name coinmetro#borrowCrossMargin
1928
+ * @description create a loan to borrow margin
1929
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
1930
+ * @param {string} code unified currency code of the currency to borrow
1931
+ * @param {float} amount the amount to borrow
1932
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1933
+ * @returns {object} a [margin loan structure]{@link https://docs.ccxt.com/#/?id=margin-loan-structure}
1934
+ */
1935
+ async borrowCrossMargin(code, amount, params = {}) {
1936
+ await this.loadMarkets();
1937
+ const currency = this.currency(code);
1938
+ const currencyId = currency['id'];
1939
+ const request = {};
1940
+ request[currencyId] = this.currencyToPrecision(code, amount);
1941
+ const response = await this.privatePutUsersMarginCollateral(this.extend(request, params));
1942
+ //
1943
+ // { "message": "OK" }
1944
+ //
1945
+ const result = this.safeValue(response, 'result', {});
1946
+ const transaction = this.parseMarginLoan(result, currency);
1947
+ return this.extend(transaction, {
1948
+ 'amount': amount,
1949
+ });
1950
+ }
1951
+ parseMarginLoan(info, currency = undefined) {
1952
+ const currencyId = this.safeString(info, 'coin');
1953
+ return {
1954
+ 'id': undefined,
1955
+ 'currency': this.safeCurrencyCode(currencyId, currency),
1956
+ 'amount': undefined,
1957
+ 'symbol': undefined,
1958
+ 'timestamp': undefined,
1959
+ 'datetime': undefined,
1960
+ 'info': info,
1961
+ };
1962
+ }
1963
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1964
+ const request = this.omit(params, this.extractParams(path));
1965
+ const endpoint = '/' + this.implodeParams(path, params);
1966
+ let url = this.urls['api'][api] + endpoint;
1967
+ const query = this.urlencode(request);
1968
+ if (headers === undefined) {
1969
+ headers = {};
1970
+ }
1971
+ headers['CCXT'] = 'true';
1972
+ if (api === 'private') {
1973
+ if ((this.uid === undefined) && (this.apiKey !== undefined)) {
1974
+ this.uid = this.apiKey;
1975
+ }
1976
+ if ((this.token === undefined) && (this.secret !== undefined)) {
1977
+ this.token = this.secret;
1978
+ }
1979
+ if (url === 'https://api.coinmetro.com/jwt') { // handle with headers for login endpoint
1980
+ headers['X-Device-Id'] = 'bypass';
1981
+ if (this.twofa !== undefined) {
1982
+ headers['X-OTP'] = this.twofa;
1983
+ }
1984
+ }
1985
+ else if (url === 'https://api.coinmetro.com/jwtDevice') { // handle with headers for long lived token login endpoint
1986
+ headers['X-Device-Id'] = this.uid;
1987
+ if (this.twofa !== undefined) {
1988
+ headers['X-OTP'] = this.twofa;
1989
+ }
1990
+ }
1991
+ else {
1992
+ headers['Authorization'] = 'Bearer ' + this.token;
1993
+ if (!url.startsWith('https://api.coinmetro.com/open')) { // if not sandbox endpoint
1994
+ this.checkRequiredCredentials();
1995
+ headers['X-Device-Id'] = this.uid;
1996
+ }
1997
+ }
1998
+ if ((method === 'POST') || (method === 'PUT')) {
1999
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
2000
+ body = this.urlencode(request);
2001
+ }
2002
+ }
2003
+ else if (query.length !== 0) {
2004
+ url += '?' + query;
2005
+ }
2006
+ while (url.endsWith('/')) {
2007
+ url = url.slice(0, url.length - 1);
2008
+ }
2009
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2010
+ }
2011
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2012
+ if (response === undefined) {
2013
+ return undefined;
2014
+ }
2015
+ if ((code !== 200) && (code !== 201) && (code !== 202)) {
2016
+ const feedback = this.id + ' ' + body;
2017
+ const message = this.safeString(response, 'message');
2018
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
2019
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2020
+ throw new ExchangeError(feedback);
2021
+ }
2022
+ return undefined;
2023
+ }
2024
+ }