ccxt-ir 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +10 -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/dist/cjs/src/changefa.js +342 -0
  8. package/dist/cjs/src/ourbit.js +445 -0
  9. package/js/ccxt.d.ts +11 -2
  10. package/js/ccxt.js +8 -2
  11. package/js/src/abstract/bidarz.d.ts +9 -0
  12. package/js/src/abstract/bidarz.js +11 -0
  13. package/js/src/abstract/changefa.d.ts +8 -0
  14. package/js/src/abstract/changefa.js +11 -0
  15. package/js/src/abstract/ourbit.d.ts +10 -0
  16. package/js/src/abstract/ourbit.js +11 -0
  17. package/js/src/bidarz.d.ts +22 -0
  18. package/js/src/bidarz.js +336 -0
  19. package/js/src/bit24.js +4 -3
  20. package/js/src/changefa.d.ts +20 -0
  21. package/js/src/changefa.js +341 -0
  22. package/js/src/ourbit.d.ts +21 -0
  23. package/js/src/ourbit.js +444 -0
  24. package/js/src/src/abantether.d.ts +21 -0
  25. package/js/src/src/abantether.js +353 -0
  26. package/js/src/src/abstract/abantether.d.ts +8 -0
  27. package/js/src/src/abstract/abantether.js +11 -0
  28. package/js/src/src/abstract/afratether.d.ts +9 -0
  29. package/js/src/src/abstract/afratether.js +11 -0
  30. package/js/src/src/abstract/alpaca.d.ts +77 -0
  31. package/js/src/src/abstract/alpaca.js +11 -0
  32. package/js/src/src/abstract/apex.d.ts +34 -0
  33. package/js/src/src/abstract/apex.js +11 -0
  34. package/js/src/src/abstract/arzinja.d.ts +8 -0
  35. package/js/src/src/abstract/arzinja.js +11 -0
  36. package/js/src/src/abstract/arzplus.d.ts +11 -0
  37. package/js/src/src/abstract/arzplus.js +11 -0
  38. package/js/src/src/abstract/ascendex.d.ts +80 -0
  39. package/js/src/src/abstract/ascendex.js +11 -0
  40. package/js/src/src/abstract/asretether.d.ts +8 -0
  41. package/js/src/src/abstract/asretether.js +11 -0
  42. package/js/src/src/abstract/bidarz.d.ts +9 -0
  43. package/js/src/src/abstract/bidarz.js +11 -0
  44. package/js/src/src/abstract/bigone.d.ts +48 -0
  45. package/js/src/src/abstract/bigone.js +11 -0
  46. package/js/src/src/abstract/binance.d.ts +773 -0
  47. package/js/src/src/abstract/binance.js +11 -0
  48. package/js/src/src/abstract/bingx.d.ts +165 -0
  49. package/js/src/src/abstract/bingx.js +11 -0
  50. package/js/src/src/abstract/bit24.d.ts +9 -0
  51. package/js/src/src/abstract/bit24.js +11 -0
  52. package/js/src/src/abstract/bit2c.d.ts +30 -0
  53. package/js/src/src/abstract/bit2c.js +11 -0
  54. package/js/src/src/abstract/bitbank.d.ts +35 -0
  55. package/js/src/src/abstract/bitbank.js +11 -0
  56. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  57. package/js/src/src/abstract/bitbarg.js +11 -0
  58. package/js/src/src/abstract/bitbns.d.ts +43 -0
  59. package/js/src/src/abstract/bitbns.js +11 -0
  60. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  61. package/js/src/src/abstract/bitfinex.js +11 -0
  62. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  63. package/js/src/src/abstract/bitflyer.js +11 -0
  64. package/js/src/src/abstract/bitget.d.ts +578 -0
  65. package/js/src/src/abstract/bitget.js +11 -0
  66. package/js/src/src/abstract/bithumb.d.ts +35 -0
  67. package/js/src/src/abstract/bithumb.js +11 -0
  68. package/js/src/src/abstract/bitimen.d.ts +10 -0
  69. package/js/src/src/abstract/bitimen.js +11 -0
  70. package/js/src/src/abstract/bitir.d.ts +10 -0
  71. package/js/src/src/abstract/bitir.js +11 -0
  72. package/js/src/src/abstract/bitmart.d.ts +120 -0
  73. package/js/src/src/abstract/bitmart.js +11 -0
  74. package/js/src/src/abstract/bitmex.d.ts +100 -0
  75. package/js/src/src/abstract/bitmex.js +11 -0
  76. package/js/src/src/abstract/bitopro.d.ts +33 -0
  77. package/js/src/src/abstract/bitopro.js +11 -0
  78. package/js/src/src/abstract/bitpin.d.ts +11 -0
  79. package/js/src/src/abstract/bitpin.js +11 -0
  80. package/js/src/src/abstract/bitrue.d.ts +75 -0
  81. package/js/src/src/abstract/bitrue.js +11 -0
  82. package/js/src/src/abstract/bitso.d.ts +46 -0
  83. package/js/src/src/abstract/bitso.js +11 -0
  84. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  85. package/js/src/src/abstract/bitstamp.js +11 -0
  86. package/js/src/src/abstract/bitteam.d.ts +32 -0
  87. package/js/src/src/abstract/bitteam.js +11 -0
  88. package/js/src/src/abstract/bittrade.d.ts +117 -0
  89. package/js/src/src/abstract/bittrade.js +11 -0
  90. package/js/src/src/abstract/bitunix.d.ts +9 -0
  91. package/js/src/src/abstract/bitunix.js +11 -0
  92. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  93. package/js/src/src/abstract/bitvavo.js +11 -0
  94. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  95. package/js/src/src/abstract/blockchaincom.js +11 -0
  96. package/js/src/src/abstract/blofin.d.ts +70 -0
  97. package/js/src/src/abstract/blofin.js +11 -0
  98. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  99. package/js/src/src/abstract/btcalpha.js +11 -0
  100. package/js/src/src/abstract/btcbox.d.ts +18 -0
  101. package/js/src/src/abstract/btcbox.js +11 -0
  102. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  103. package/js/src/src/abstract/btcmarkets.js +11 -0
  104. package/js/src/src/abstract/btcturk.d.ts +23 -0
  105. package/js/src/src/abstract/btcturk.js +11 -0
  106. package/js/src/src/abstract/bybit.d.ts +316 -0
  107. package/js/src/src/abstract/bybit.js +11 -0
  108. package/js/src/src/abstract/bydfi.d.ts +11 -0
  109. package/js/src/src/abstract/bydfi.js +11 -0
  110. package/js/src/src/abstract/cafearz.d.ts +8 -0
  111. package/js/src/src/abstract/cafearz.js +11 -0
  112. package/js/src/src/abstract/cex.d.ts +35 -0
  113. package/js/src/src/abstract/cex.js +11 -0
  114. package/js/src/src/abstract/coinbase.d.ts +97 -0
  115. package/js/src/src/abstract/coinbase.js +11 -0
  116. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  117. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  118. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  119. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  120. package/js/src/src/abstract/coincatch.d.ts +97 -0
  121. package/js/src/src/abstract/coincatch.js +11 -0
  122. package/js/src/src/abstract/coincheck.d.ts +36 -0
  123. package/js/src/src/abstract/coincheck.js +11 -0
  124. package/js/src/src/abstract/coinex.d.ts +240 -0
  125. package/js/src/src/abstract/coinex.js +11 -0
  126. package/js/src/src/abstract/coinmate.d.ts +65 -0
  127. package/js/src/src/abstract/coinmate.js +11 -0
  128. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  129. package/js/src/src/abstract/coinmetro.js +11 -0
  130. package/js/src/src/abstract/coinone.d.ts +70 -0
  131. package/js/src/src/abstract/coinone.js +11 -0
  132. package/js/src/src/abstract/coinsph.d.ts +57 -0
  133. package/js/src/src/abstract/coinsph.js +11 -0
  134. package/js/src/src/abstract/coinspot.d.ts +31 -0
  135. package/js/src/src/abstract/coinspot.js +11 -0
  136. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  137. package/js/src/src/abstract/cryptocom.js +11 -0
  138. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  139. package/js/src/src/abstract/cryptomus.js +11 -0
  140. package/js/src/src/abstract/defx.d.ts +72 -0
  141. package/js/src/src/abstract/defx.js +11 -0
  142. package/js/src/src/abstract/delta.d.ts +53 -0
  143. package/js/src/src/abstract/delta.js +11 -0
  144. package/js/src/src/abstract/deribit.d.ts +129 -0
  145. package/js/src/src/abstract/deribit.js +11 -0
  146. package/js/src/src/abstract/derive.d.ts +120 -0
  147. package/js/src/src/abstract/derive.js +11 -0
  148. package/js/src/src/abstract/digifinex.d.ts +95 -0
  149. package/js/src/src/abstract/digifinex.js +11 -0
  150. package/js/src/src/abstract/ellipx.d.ts +28 -0
  151. package/js/src/src/abstract/ellipx.js +11 -0
  152. package/js/src/src/abstract/eterex.d.ts +8 -0
  153. package/js/src/src/abstract/eterex.js +11 -0
  154. package/js/src/src/abstract/excoino.d.ts +10 -0
  155. package/js/src/src/abstract/excoino.js +11 -0
  156. package/js/src/src/abstract/exir.d.ts +11 -0
  157. package/js/src/src/abstract/exir.js +11 -0
  158. package/js/src/src/abstract/exmo.d.ts +58 -0
  159. package/js/src/src/abstract/exmo.js +11 -0
  160. package/js/src/src/abstract/exnovin.d.ts +9 -0
  161. package/js/src/src/abstract/exnovin.js +11 -0
  162. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  163. package/js/src/src/abstract/farhadexchange.js +11 -0
  164. package/js/src/src/abstract/foxbit.d.ts +29 -0
  165. package/js/src/src/abstract/foxbit.js +11 -0
  166. package/js/src/src/abstract/gate.d.ts +287 -0
  167. package/js/src/src/abstract/gate.js +11 -0
  168. package/js/src/src/abstract/gemini.d.ts +62 -0
  169. package/js/src/src/abstract/gemini.js +11 -0
  170. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  171. package/js/src/src/abstract/hamtapay.js +11 -0
  172. package/js/src/src/abstract/hashkey.d.ts +70 -0
  173. package/js/src/src/abstract/hashkey.js +11 -0
  174. package/js/src/src/abstract/hibachi.d.ts +29 -0
  175. package/js/src/src/abstract/hibachi.js +11 -0
  176. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  177. package/js/src/src/abstract/hitbtc.js +11 -0
  178. package/js/src/src/abstract/hitobit.d.ts +11 -0
  179. package/js/src/src/abstract/hitobit.js +11 -0
  180. package/js/src/src/abstract/hollaex.d.ts +36 -0
  181. package/js/src/src/abstract/hollaex.js +11 -0
  182. package/js/src/src/abstract/htx.d.ts +551 -0
  183. package/js/src/src/abstract/htx.js +11 -0
  184. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  185. package/js/src/src/abstract/hyperliquid.js +11 -0
  186. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  187. package/js/src/src/abstract/independentreserve.js +11 -0
  188. package/js/src/src/abstract/indodax.d.ts +29 -0
  189. package/js/src/src/abstract/indodax.js +11 -0
  190. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  191. package/js/src/src/abstract/iranexchange.js +11 -0
  192. package/js/src/src/abstract/jibitex.d.ts +10 -0
  193. package/js/src/src/abstract/jibitex.js +11 -0
  194. package/js/src/src/abstract/kcex.d.ts +10 -0
  195. package/js/src/src/abstract/kcex.js +11 -0
  196. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  197. package/js/src/src/abstract/kifpoolme.js +11 -0
  198. package/js/src/src/abstract/kraken.d.ts +61 -0
  199. package/js/src/src/abstract/kraken.js +11 -0
  200. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  201. package/js/src/src/abstract/krakenfutures.js +11 -0
  202. package/js/src/src/abstract/kucoin.d.ts +227 -0
  203. package/js/src/src/abstract/kucoin.js +11 -0
  204. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  205. package/js/src/src/abstract/kucoinfutures.js +11 -0
  206. package/js/src/src/abstract/latoken.d.ts +59 -0
  207. package/js/src/src/abstract/latoken.js +11 -0
  208. package/js/src/src/abstract/lbank.d.ts +65 -0
  209. package/js/src/src/abstract/lbank.js +11 -0
  210. package/js/src/src/abstract/luno.d.ts +41 -0
  211. package/js/src/src/abstract/luno.js +11 -0
  212. package/js/src/src/abstract/mazdax.d.ts +11 -0
  213. package/js/src/src/abstract/mazdax.js +11 -0
  214. package/js/src/src/abstract/mercado.d.ts +28 -0
  215. package/js/src/src/abstract/mercado.js +11 -0
  216. package/js/src/src/abstract/mexc.d.ts +183 -0
  217. package/js/src/src/abstract/mexc.js +11 -0
  218. package/js/src/src/abstract/modetrade.d.ts +122 -0
  219. package/js/src/src/abstract/modetrade.js +11 -0
  220. package/js/src/src/abstract/ndax.d.ts +100 -0
  221. package/js/src/src/abstract/ndax.js +11 -0
  222. package/js/src/src/abstract/nobitex.d.ts +10 -0
  223. package/js/src/src/abstract/nobitex.js +11 -0
  224. package/js/src/src/abstract/novadax.d.ts +32 -0
  225. package/js/src/src/abstract/novadax.js +11 -0
  226. package/js/src/src/abstract/oceanex.d.ts +30 -0
  227. package/js/src/src/abstract/oceanex.js +11 -0
  228. package/js/src/src/abstract/okcoin.d.ts +77 -0
  229. package/js/src/src/abstract/okcoin.js +11 -0
  230. package/js/src/src/abstract/okexchange.d.ts +11 -0
  231. package/js/src/src/abstract/okexchange.js +11 -0
  232. package/js/src/src/abstract/okx.d.ts +352 -0
  233. package/js/src/src/abstract/okx.js +11 -0
  234. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  235. package/js/src/src/abstract/ompfinex.js +11 -0
  236. package/js/src/src/abstract/onetrading.d.ts +26 -0
  237. package/js/src/src/abstract/onetrading.js +11 -0
  238. package/js/src/src/abstract/oxfun.d.ts +37 -0
  239. package/js/src/src/abstract/oxfun.js +11 -0
  240. package/js/src/src/abstract/p2b.d.ts +25 -0
  241. package/js/src/src/abstract/p2b.js +11 -0
  242. package/js/src/src/abstract/paradex.d.ts +66 -0
  243. package/js/src/src/abstract/paradex.js +11 -0
  244. package/js/src/src/abstract/paymium.d.ts +31 -0
  245. package/js/src/src/abstract/paymium.js +11 -0
  246. package/js/src/src/abstract/phemex.d.ts +120 -0
  247. package/js/src/src/abstract/phemex.js +11 -0
  248. package/js/src/src/abstract/pingi.d.ts +9 -0
  249. package/js/src/src/abstract/pingi.js +11 -0
  250. package/js/src/src/abstract/poloniex.d.ts +108 -0
  251. package/js/src/src/abstract/poloniex.js +11 -0
  252. package/js/src/src/abstract/pooleno.d.ts +8 -0
  253. package/js/src/src/abstract/pooleno.js +11 -0
  254. package/js/src/src/abstract/probit.d.ts +26 -0
  255. package/js/src/src/abstract/probit.js +11 -0
  256. package/js/src/src/abstract/raastin.d.ts +11 -0
  257. package/js/src/src/abstract/raastin.js +11 -0
  258. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  259. package/js/src/src/abstract/ramzinex.js +11 -0
  260. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  261. package/js/src/src/abstract/sarmayex.js +11 -0
  262. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  263. package/js/src/src/abstract/sarrafex.js +11 -0
  264. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  265. package/js/src/src/abstract/tabdeal.js +11 -0
  266. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  267. package/js/src/src/abstract/tehran_exchange.js +11 -0
  268. package/js/src/src/abstract/tetherland.d.ts +8 -0
  269. package/js/src/src/abstract/tetherland.js +11 -0
  270. package/js/src/src/abstract/timex.d.ts +65 -0
  271. package/js/src/src/abstract/timex.js +11 -0
  272. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  273. package/js/src/src/abstract/tokocrypto.js +11 -0
  274. package/js/src/src/abstract/toobit.d.ts +10 -0
  275. package/js/src/src/abstract/toobit.js +11 -0
  276. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  277. package/js/src/src/abstract/tradeogre.js +11 -0
  278. package/js/src/src/abstract/twox.d.ts +8 -0
  279. package/js/src/src/abstract/twox.js +11 -0
  280. package/js/src/src/abstract/ubitex.d.ts +10 -0
  281. package/js/src/src/abstract/ubitex.js +11 -0
  282. package/js/src/src/abstract/upbit.d.ts +58 -0
  283. package/js/src/src/abstract/upbit.js +11 -0
  284. package/js/src/src/abstract/vertex.d.ts +22 -0
  285. package/js/src/src/abstract/vertex.js +11 -0
  286. package/js/src/src/abstract/wallex.d.ts +11 -0
  287. package/js/src/src/abstract/wallex.js +11 -0
  288. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  289. package/js/src/src/abstract/wavesexchange.js +11 -0
  290. package/js/src/src/abstract/whitebit.d.ts +117 -0
  291. package/js/src/src/abstract/whitebit.js +11 -0
  292. package/js/src/src/abstract/woo.d.ts +144 -0
  293. package/js/src/src/abstract/woo.js +11 -0
  294. package/js/src/src/abstract/woofipro.d.ts +122 -0
  295. package/js/src/src/abstract/woofipro.js +11 -0
  296. package/js/src/src/abstract/xt.d.ts +160 -0
  297. package/js/src/src/abstract/xt.js +11 -0
  298. package/js/src/src/abstract/yobit.d.ts +19 -0
  299. package/js/src/src/abstract/yobit.js +11 -0
  300. package/js/src/src/abstract/zaif.d.ts +41 -0
  301. package/js/src/src/abstract/zaif.js +11 -0
  302. package/js/src/src/abstract/zonda.d.ts +56 -0
  303. package/js/src/src/abstract/zonda.js +11 -0
  304. package/js/src/src/afratether.d.ts +21 -0
  305. package/js/src/src/afratether.js +356 -0
  306. package/js/src/src/alpaca.d.ts +332 -0
  307. package/js/src/src/alpaca.js +1908 -0
  308. package/js/src/src/apex.d.ts +333 -0
  309. package/js/src/src/apex.js +1942 -0
  310. package/js/src/src/arzinja.d.ts +21 -0
  311. package/js/src/src/arzinja.js +298 -0
  312. package/js/src/src/arzplus.d.ts +26 -0
  313. package/js/src/src/arzplus.js +581 -0
  314. package/js/src/src/ascendex.d.ts +424 -0
  315. package/js/src/src/ascendex.js +3699 -0
  316. package/js/src/src/asretether.d.ts +21 -0
  317. package/js/src/src/asretether.js +324 -0
  318. package/js/src/src/base/Exchange.d.ts +926 -0
  319. package/js/src/src/base/Exchange.js +7399 -0
  320. package/js/src/src/base/Precise.d.ts +42 -0
  321. package/js/src/src/base/Precise.js +275 -0
  322. package/js/src/src/base/errors.d.ts +168 -0
  323. package/js/src/src/base/errors.js +255 -0
  324. package/js/src/src/base/functions/crypto.d.ts +16 -0
  325. package/js/src/src/base/functions/crypto.js +131 -0
  326. package/js/src/src/base/functions/encode.d.ts +4 -0
  327. package/js/src/src/base/functions/encode.js +32 -0
  328. package/js/src/src/base/functions/generic.d.ts +29 -0
  329. package/js/src/src/base/functions/generic.js +203 -0
  330. package/js/src/src/base/functions/misc.d.ts +9 -0
  331. package/js/src/src/base/functions/misc.js +101 -0
  332. package/js/src/src/base/functions/number.d.ts +27 -0
  333. package/js/src/src/base/functions/number.js +313 -0
  334. package/js/src/src/base/functions/platform.d.ts +7 -0
  335. package/js/src/src/base/functions/platform.js +27 -0
  336. package/js/src/src/base/functions/rsa.d.ts +5 -0
  337. package/js/src/src/base/functions/rsa.js +49 -0
  338. package/js/src/src/base/functions/string.d.ts +7 -0
  339. package/js/src/src/base/functions/string.js +44 -0
  340. package/js/src/src/base/functions/throttle.d.ts +6 -0
  341. package/js/src/src/base/functions/throttle.js +67 -0
  342. package/js/src/src/base/functions/time.d.ts +21 -0
  343. package/js/src/src/base/functions/time.js +171 -0
  344. package/js/src/src/base/functions/totp.d.ts +3 -0
  345. package/js/src/src/base/functions/totp.js +25 -0
  346. package/js/src/src/base/functions/type.d.ts +37 -0
  347. package/js/src/src/base/functions/type.js +179 -0
  348. package/js/src/src/base/functions.d.ts +10 -0
  349. package/js/src/src/base/functions.js +18 -0
  350. package/js/src/src/base/types.d.ts +586 -0
  351. package/js/src/src/base/types.js +7 -0
  352. package/js/src/src/base/ws/Cache.d.ts +27 -0
  353. package/js/src/src/base/ws/Cache.js +260 -0
  354. package/js/src/src/base/ws/Client.d.ts +53 -0
  355. package/js/src/src/base/ws/Client.js +307 -0
  356. package/js/src/src/base/ws/Future.d.ts +8 -0
  357. package/js/src/src/base/ws/Future.js +35 -0
  358. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  359. package/js/src/src/base/ws/OrderBook.js +130 -0
  360. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  361. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  362. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  363. package/js/src/src/base/ws/WsClient.js +69 -0
  364. package/js/src/src/bequant.d.ts +4 -0
  365. package/js/src/src/bequant.js +35 -0
  366. package/js/src/src/bidarz.d.ts +16 -0
  367. package/js/src/src/bidarz.js +327 -0
  368. package/js/src/src/bigone.d.ts +296 -0
  369. package/js/src/src/bigone.js +2340 -0
  370. package/js/src/src/binance.d.ts +1667 -0
  371. package/js/src/src/binance.js +14400 -0
  372. package/js/src/src/binancecoinm.d.ts +6 -0
  373. package/js/src/src/binancecoinm.js +51 -0
  374. package/js/src/src/binanceus.d.ts +4 -0
  375. package/js/src/src/binanceus.js +225 -0
  376. package/js/src/src/binanceusdm.d.ts +6 -0
  377. package/js/src/src/binanceusdm.js +63 -0
  378. package/js/src/src/bingx.d.ts +778 -0
  379. package/js/src/src/bingx.js +6705 -0
  380. package/js/src/src/bit24.d.ts +24 -0
  381. package/js/src/src/bit24.js +520 -0
  382. package/js/src/src/bit2c.d.ts +146 -0
  383. package/js/src/src/bit2c.js +1029 -0
  384. package/js/src/src/bitbank.d.ts +181 -0
  385. package/js/src/src/bitbank.js +1146 -0
  386. package/js/src/src/bitbarg.d.ts +21 -0
  387. package/js/src/src/bitbarg.js +312 -0
  388. package/js/src/src/bitbns.d.ts +184 -0
  389. package/js/src/src/bitbns.js +1288 -0
  390. package/js/src/src/bitfinex.d.ts +516 -0
  391. package/js/src/src/bitfinex.js +3951 -0
  392. package/js/src/src/bitflyer.d.ts +229 -0
  393. package/js/src/src/bitflyer.js +1209 -0
  394. package/js/src/src/bitget.d.ts +1109 -0
  395. package/js/src/src/bitget.js +11033 -0
  396. package/js/src/src/bithumb.d.ts +165 -0
  397. package/js/src/src/bithumb.js +1257 -0
  398. package/js/src/src/bitimen.d.ts +23 -0
  399. package/js/src/src/bitimen.js +424 -0
  400. package/js/src/src/bitir.d.ts +23 -0
  401. package/js/src/src/bitir.js +521 -0
  402. package/js/src/src/bitmart.d.ts +736 -0
  403. package/js/src/src/bitmart.js +5639 -0
  404. package/js/src/src/bitmex.d.ts +395 -0
  405. package/js/src/src/bitmex.js +3088 -0
  406. package/js/src/src/bitopro.d.ts +295 -0
  407. package/js/src/src/bitopro.js +1892 -0
  408. package/js/src/src/bitpin.d.ts +23 -0
  409. package/js/src/src/bitpin.js +487 -0
  410. package/js/src/src/bitrue.d.ts +384 -0
  411. package/js/src/src/bitrue.js +3382 -0
  412. package/js/src/src/bitso.d.ts +270 -0
  413. package/js/src/src/bitso.js +1881 -0
  414. package/js/src/src/bitstamp.d.ts +355 -0
  415. package/js/src/src/bitstamp.js +2445 -0
  416. package/js/src/src/bitteam.d.ts +229 -0
  417. package/js/src/src/bitteam.js +2420 -0
  418. package/js/src/src/bittrade.d.ts +298 -0
  419. package/js/src/src/bittrade.js +2050 -0
  420. package/js/src/src/bitunix.d.ts +21 -0
  421. package/js/src/src/bitunix.js +326 -0
  422. package/js/src/src/bitvavo.d.ts +311 -0
  423. package/js/src/src/bitvavo.js +2204 -0
  424. package/js/src/src/blockchaincom.d.ts +256 -0
  425. package/js/src/src/blockchaincom.js +1259 -0
  426. package/js/src/src/blofin.d.ts +439 -0
  427. package/js/src/src/blofin.js +2576 -0
  428. package/js/src/src/btcalpha.d.ts +209 -0
  429. package/js/src/src/btcalpha.js +1056 -0
  430. package/js/src/src/btcbox.d.ts +144 -0
  431. package/js/src/src/btcbox.js +834 -0
  432. package/js/src/src/btcmarkets.d.ts +253 -0
  433. package/js/src/src/btcmarkets.js +1418 -0
  434. package/js/src/src/btcturk.d.ts +161 -0
  435. package/js/src/src/btcturk.js +1058 -0
  436. package/js/src/src/bybit.d.ts +1097 -0
  437. package/js/src/src/bybit.js +9382 -0
  438. package/js/src/src/bydfi.d.ts +23 -0
  439. package/js/src/src/bydfi.js +434 -0
  440. package/js/src/src/cafearz.d.ts +21 -0
  441. package/js/src/src/cafearz.js +346 -0
  442. package/js/src/src/cex.d.ts +286 -0
  443. package/js/src/src/cex.js +1799 -0
  444. package/js/src/src/coinbase.d.ts +623 -0
  445. package/js/src/src/coinbase.js +5220 -0
  446. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  447. package/js/src/src/coinbaseadvanced.js +18 -0
  448. package/js/src/src/coinbaseexchange.d.ts +334 -0
  449. package/js/src/src/coinbaseexchange.js +2127 -0
  450. package/js/src/src/coinbaseinternational.d.ts +443 -0
  451. package/js/src/src/coinbaseinternational.js +2336 -0
  452. package/js/src/src/coincatch.d.ts +786 -0
  453. package/js/src/src/coincatch.js +5492 -0
  454. package/js/src/src/coincheck.d.ts +147 -0
  455. package/js/src/src/coincheck.js +962 -0
  456. package/js/src/src/coinex.d.ts +719 -0
  457. package/js/src/src/coinex.js +6166 -0
  458. package/js/src/src/coinmate.d.ts +202 -0
  459. package/js/src/src/coinmate.js +1215 -0
  460. package/js/src/src/coinmetro.d.ts +244 -0
  461. package/js/src/src/coinmetro.js +2024 -0
  462. package/js/src/src/coinone.d.ts +158 -0
  463. package/js/src/src/coinone.js +1278 -0
  464. package/js/src/src/coinsph.d.ts +310 -0
  465. package/js/src/src/coinsph.js +2203 -0
  466. package/js/src/src/coinspot.d.ts +108 -0
  467. package/js/src/src/coinspot.js +653 -0
  468. package/js/src/src/cryptocom.d.ts +463 -0
  469. package/js/src/src/cryptocom.js +3549 -0
  470. package/js/src/src/cryptomus.d.ts +158 -0
  471. package/js/src/src/cryptomus.js +1169 -0
  472. package/js/src/src/defx.d.ts +348 -0
  473. package/js/src/src/defx.js +2139 -0
  474. package/js/src/src/delta.d.ts +407 -0
  475. package/js/src/src/delta.js +3654 -0
  476. package/js/src/src/deribit.d.ts +516 -0
  477. package/js/src/src/deribit.js +3790 -0
  478. package/js/src/src/derive.d.ts +324 -0
  479. package/js/src/src/derive.js +2655 -0
  480. package/js/src/src/digifinex.d.ts +544 -0
  481. package/js/src/src/digifinex.js +4453 -0
  482. package/js/src/src/ellipx.d.ts +237 -0
  483. package/js/src/src/ellipx.js +2071 -0
  484. package/js/src/src/eterex.d.ts +21 -0
  485. package/js/src/src/eterex.js +299 -0
  486. package/js/src/src/excoino.d.ts +23 -0
  487. package/js/src/src/excoino.js +426 -0
  488. package/js/src/src/exir.d.ts +23 -0
  489. package/js/src/src/exir.js +403 -0
  490. package/js/src/src/exmo.d.ts +426 -0
  491. package/js/src/src/exmo.js +2825 -0
  492. package/js/src/src/exnovin.d.ts +22 -0
  493. package/js/src/src/exnovin.js +378 -0
  494. package/js/src/src/farhadexchange.d.ts +21 -0
  495. package/js/src/src/farhadexchange.js +280 -0
  496. package/js/src/src/fmfwio.d.ts +4 -0
  497. package/js/src/src/fmfwio.js +35 -0
  498. package/js/src/src/foxbit.d.ts +352 -0
  499. package/js/src/src/foxbit.js +2016 -0
  500. package/js/src/src/gate.d.ts +1071 -0
  501. package/js/src/src/gate.js +8282 -0
  502. package/js/src/src/gateio.d.ts +4 -0
  503. package/js/src/src/gateio.js +17 -0
  504. package/js/src/src/gemini.d.ts +257 -0
  505. package/js/src/src/gemini.js +2006 -0
  506. package/js/src/src/hamtapay.d.ts +21 -0
  507. package/js/src/src/hamtapay.js +303 -0
  508. package/js/src/src/hashkey.d.ts +628 -0
  509. package/js/src/src/hashkey.js +4363 -0
  510. package/js/src/src/hibachi.d.ts +346 -0
  511. package/js/src/src/hibachi.js +2137 -0
  512. package/js/src/src/hitbtc.d.ts +558 -0
  513. package/js/src/src/hitbtc.js +3847 -0
  514. package/js/src/src/hitobit.d.ts +23 -0
  515. package/js/src/src/hitobit.js +412 -0
  516. package/js/src/src/hollaex.d.ts +305 -0
  517. package/js/src/src/hollaex.js +2046 -0
  518. package/js/src/src/htx.d.ts +961 -0
  519. package/js/src/src/htx.js +9668 -0
  520. package/js/src/src/huobi.d.ts +4 -0
  521. package/js/src/src/huobi.js +17 -0
  522. package/js/src/src/hyperliquid.d.ts +651 -0
  523. package/js/src/src/hyperliquid.js +3937 -0
  524. package/js/src/src/independentreserve.d.ts +169 -0
  525. package/js/src/src/independentreserve.js +1115 -0
  526. package/js/src/src/indodax.d.ts +217 -0
  527. package/js/src/src/indodax.js +1454 -0
  528. package/js/src/src/iranexchange.d.ts +21 -0
  529. package/js/src/src/iranexchange.js +399 -0
  530. package/js/src/src/jibitex.d.ts +23 -0
  531. package/js/src/src/jibitex.js +416 -0
  532. package/js/src/src/kcex.d.ts +21 -0
  533. package/js/src/src/kcex.js +335 -0
  534. package/js/src/src/kifpoolme.d.ts +23 -0
  535. package/js/src/src/kifpoolme.js +410 -0
  536. package/js/src/src/kraken.d.ts +484 -0
  537. package/js/src/src/kraken.js +3518 -0
  538. package/js/src/src/krakenfutures.d.ts +362 -0
  539. package/js/src/src/krakenfutures.js +2885 -0
  540. package/js/src/src/kucoin.d.ts +759 -0
  541. package/js/src/src/kucoin.js +5153 -0
  542. package/js/src/src/kucoinfutures.d.ts +521 -0
  543. package/js/src/src/kucoinfutures.js +3381 -0
  544. package/js/src/src/latoken.d.ts +274 -0
  545. package/js/src/src/latoken.js +1824 -0
  546. package/js/src/src/lbank.d.ts +350 -0
  547. package/js/src/src/lbank.js +3146 -0
  548. package/js/src/src/luno.d.ts +252 -0
  549. package/js/src/src/luno.js +1479 -0
  550. package/js/src/src/mazdax.d.ts +23 -0
  551. package/js/src/src/mazdax.js +534 -0
  552. package/js/src/src/mercado.d.ts +160 -0
  553. package/js/src/src/mercado.js +1011 -0
  554. package/js/src/src/mexc.d.ts +768 -0
  555. package/js/src/src/mexc.js +6102 -0
  556. package/js/src/src/modetrade.d.ts +496 -0
  557. package/js/src/src/modetrade.js +2936 -0
  558. package/js/src/src/myokx.d.ts +4 -0
  559. package/js/src/src/myokx.js +54 -0
  560. package/js/src/src/ndax.d.ts +285 -0
  561. package/js/src/src/ndax.js +2598 -0
  562. package/js/src/src/nobitex.d.ts +23 -0
  563. package/js/src/src/nobitex.js +454 -0
  564. package/js/src/src/novadax.d.ts +279 -0
  565. package/js/src/src/novadax.js +1676 -0
  566. package/js/src/src/oceanex.d.ts +231 -0
  567. package/js/src/src/oceanex.js +1123 -0
  568. package/js/src/src/okcoin.d.ts +346 -0
  569. package/js/src/src/okcoin.js +3211 -0
  570. package/js/src/src/okexchange.d.ts +23 -0
  571. package/js/src/src/okexchange.js +373 -0
  572. package/js/src/src/okx.d.ts +1125 -0
  573. package/js/src/src/okx.js +9009 -0
  574. package/js/src/src/okxus.d.ts +4 -0
  575. package/js/src/src/okxus.js +54 -0
  576. package/js/src/src/ompfinex.d.ts +23 -0
  577. package/js/src/src/ompfinex.js +510 -0
  578. package/js/src/src/onetrading.d.ts +228 -0
  579. package/js/src/src/onetrading.js +1769 -0
  580. package/js/src/src/oxfun.d.ts +442 -0
  581. package/js/src/src/oxfun.js +2920 -0
  582. package/js/src/src/p2b.d.ts +189 -0
  583. package/js/src/src/p2b.js +1344 -0
  584. package/js/src/src/paradex.d.ts +389 -0
  585. package/js/src/src/paradex.js +2607 -0
  586. package/js/src/src/paymium.d.ts +133 -0
  587. package/js/src/src/paymium.js +644 -0
  588. package/js/src/src/phemex.d.ts +497 -0
  589. package/js/src/src/phemex.js +5333 -0
  590. package/js/src/src/pingi.d.ts +22 -0
  591. package/js/src/src/pingi.js +446 -0
  592. package/js/src/src/poloniex.d.ts +441 -0
  593. package/js/src/src/poloniex.js +3681 -0
  594. package/js/src/src/pooleno.d.ts +21 -0
  595. package/js/src/src/pooleno.js +347 -0
  596. package/js/src/src/pro/alpaca.d.ts +95 -0
  597. package/js/src/src/pro/alpaca.js +724 -0
  598. package/js/src/src/pro/apex.d.ts +160 -0
  599. package/js/src/src/pro/apex.js +1044 -0
  600. package/js/src/src/pro/ascendex.d.ts +99 -0
  601. package/js/src/src/pro/ascendex.js +1012 -0
  602. package/js/src/src/pro/bequant.d.ts +4 -0
  603. package/js/src/src/pro/bequant.js +42 -0
  604. package/js/src/src/pro/binance.d.ts +796 -0
  605. package/js/src/src/pro/binance.js +4373 -0
  606. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  607. package/js/src/src/pro/binancecoinm.js +32 -0
  608. package/js/src/src/pro/binanceus.d.ts +4 -0
  609. package/js/src/src/pro/binanceus.js +52 -0
  610. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  611. package/js/src/src/pro/binanceusdm.js +37 -0
  612. package/js/src/src/pro/bingx.d.ts +151 -0
  613. package/js/src/src/pro/bingx.js +1568 -0
  614. package/js/src/src/pro/bitfinex.d.ts +99 -0
  615. package/js/src/src/pro/bitfinex.js +1165 -0
  616. package/js/src/src/pro/bitget.d.ts +257 -0
  617. package/js/src/src/pro/bitget.js +2327 -0
  618. package/js/src/src/pro/bithumb.d.ts +59 -0
  619. package/js/src/src/pro/bithumb.js +395 -0
  620. package/js/src/src/pro/bitmart.d.ts +168 -0
  621. package/js/src/src/pro/bitmart.js +1686 -0
  622. package/js/src/src/pro/bitmex.d.ts +170 -0
  623. package/js/src/src/pro/bitmex.js +1760 -0
  624. package/js/src/src/pro/bitopro.d.ts +69 -0
  625. package/js/src/src/pro/bitopro.js +477 -0
  626. package/js/src/src/pro/bitrue.d.ts +40 -0
  627. package/js/src/src/pro/bitrue.js +461 -0
  628. package/js/src/src/pro/bitstamp.d.ts +53 -0
  629. package/js/src/src/pro/bitstamp.js +587 -0
  630. package/js/src/src/pro/bittrade.d.ts +66 -0
  631. package/js/src/src/pro/bittrade.js +606 -0
  632. package/js/src/src/pro/bitvavo.d.ts +321 -0
  633. package/js/src/src/pro/bitvavo.js +1451 -0
  634. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  635. package/js/src/src/pro/blockchaincom.js +777 -0
  636. package/js/src/src/pro/blofin.d.ts +174 -0
  637. package/js/src/src/pro/blofin.js +743 -0
  638. package/js/src/src/pro/bybit.d.ts +397 -0
  639. package/js/src/src/pro/bybit.js +2519 -0
  640. package/js/src/src/pro/cex.d.ts +220 -0
  641. package/js/src/src/pro/cex.js +1535 -0
  642. package/js/src/src/pro/coinbase.d.ts +119 -0
  643. package/js/src/src/pro/coinbase.js +736 -0
  644. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  645. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  646. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  647. package/js/src/src/pro/coinbaseexchange.js +969 -0
  648. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  649. package/js/src/src/pro/coinbaseinternational.js +804 -0
  650. package/js/src/src/pro/coincatch.d.ts +207 -0
  651. package/js/src/src/pro/coincatch.js +1562 -0
  652. package/js/src/src/pro/coincheck.d.ts +33 -0
  653. package/js/src/src/pro/coincheck.js +210 -0
  654. package/js/src/src/pro/coinex.d.ts +147 -0
  655. package/js/src/src/pro/coinex.js +1426 -0
  656. package/js/src/src/pro/coinone.d.ts +51 -0
  657. package/js/src/src/pro/coinone.js +413 -0
  658. package/js/src/src/pro/cryptocom.d.ts +300 -0
  659. package/js/src/src/pro/cryptocom.js +1414 -0
  660. package/js/src/src/pro/defx.d.ts +236 -0
  661. package/js/src/src/pro/defx.js +865 -0
  662. package/js/src/src/pro/deribit.d.ts +163 -0
  663. package/js/src/src/pro/deribit.js +1066 -0
  664. package/js/src/src/pro/derive.d.ts +100 -0
  665. package/js/src/src/pro/derive.js +753 -0
  666. package/js/src/src/pro/exmo.d.ts +97 -0
  667. package/js/src/src/pro/exmo.js +903 -0
  668. package/js/src/src/pro/gate.d.ts +360 -0
  669. package/js/src/src/pro/gate.js +2119 -0
  670. package/js/src/src/pro/gateio.d.ts +4 -0
  671. package/js/src/src/pro/gateio.js +17 -0
  672. package/js/src/src/pro/gemini.d.ts +106 -0
  673. package/js/src/src/pro/gemini.js +932 -0
  674. package/js/src/src/pro/hashkey.d.ts +121 -0
  675. package/js/src/src/pro/hashkey.js +843 -0
  676. package/js/src/src/pro/hitbtc.d.ts +235 -0
  677. package/js/src/src/pro/hitbtc.js +1400 -0
  678. package/js/src/src/pro/hollaex.d.ts +77 -0
  679. package/js/src/src/pro/hollaex.js +604 -0
  680. package/js/src/src/pro/htx.d.ts +141 -0
  681. package/js/src/src/pro/htx.js +2415 -0
  682. package/js/src/src/pro/huobi.d.ts +4 -0
  683. package/js/src/src/pro/huobi.js +17 -0
  684. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  685. package/js/src/src/pro/hyperliquid.js +1126 -0
  686. package/js/src/src/pro/independentreserve.d.ts +36 -0
  687. package/js/src/src/pro/independentreserve.js +287 -0
  688. package/js/src/src/pro/kraken.d.ts +233 -0
  689. package/js/src/src/pro/kraken.js +1785 -0
  690. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  691. package/js/src/src/pro/krakenfutures.js +1592 -0
  692. package/js/src/src/pro/kucoin.d.ts +221 -0
  693. package/js/src/src/pro/kucoin.js +1430 -0
  694. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  695. package/js/src/src/pro/kucoinfutures.js +1295 -0
  696. package/js/src/src/pro/lbank.d.ts +134 -0
  697. package/js/src/src/pro/lbank.js +950 -0
  698. package/js/src/src/pro/luno.d.ts +44 -0
  699. package/js/src/src/pro/luno.js +322 -0
  700. package/js/src/src/pro/mexc.d.ts +210 -0
  701. package/js/src/src/pro/mexc.js +2009 -0
  702. package/js/src/src/pro/modetrade.d.ts +155 -0
  703. package/js/src/src/pro/modetrade.js +1335 -0
  704. package/js/src/src/pro/myokx.d.ts +4 -0
  705. package/js/src/src/pro/myokx.js +39 -0
  706. package/js/src/src/pro/ndax.d.ts +60 -0
  707. package/js/src/src/pro/ndax.js +545 -0
  708. package/js/src/src/pro/okcoin.d.ts +91 -0
  709. package/js/src/src/pro/okcoin.js +763 -0
  710. package/js/src/src/pro/okx.d.ts +408 -0
  711. package/js/src/src/pro/okx.js +2479 -0
  712. package/js/src/src/pro/okxus.d.ts +4 -0
  713. package/js/src/src/pro/okxus.js +39 -0
  714. package/js/src/src/pro/onetrading.d.ts +107 -0
  715. package/js/src/src/pro/onetrading.js +1343 -0
  716. package/js/src/src/pro/oxfun.d.ts +234 -0
  717. package/js/src/src/pro/oxfun.js +1112 -0
  718. package/js/src/src/pro/p2b.d.ts +104 -0
  719. package/js/src/src/pro/p2b.js +506 -0
  720. package/js/src/src/pro/paradex.d.ts +54 -0
  721. package/js/src/src/pro/paradex.js +370 -0
  722. package/js/src/src/pro/phemex.d.ts +129 -0
  723. package/js/src/src/pro/phemex.js +1569 -0
  724. package/js/src/src/pro/poloniex.d.ts +214 -0
  725. package/js/src/src/pro/poloniex.js +1318 -0
  726. package/js/src/src/pro/probit.d.ts +91 -0
  727. package/js/src/src/pro/probit.js +593 -0
  728. package/js/src/src/pro/tradeogre.d.ts +49 -0
  729. package/js/src/src/pro/tradeogre.js +284 -0
  730. package/js/src/src/pro/upbit.d.ts +124 -0
  731. package/js/src/src/pro/upbit.js +689 -0
  732. package/js/src/src/pro/vertex.d.ts +104 -0
  733. package/js/src/src/pro/vertex.js +999 -0
  734. package/js/src/src/pro/whitebit.d.ts +123 -0
  735. package/js/src/src/pro/whitebit.js +971 -0
  736. package/js/src/src/pro/woo.d.ts +161 -0
  737. package/js/src/src/pro/woo.js +1351 -0
  738. package/js/src/src/pro/woofipro.d.ts +155 -0
  739. package/js/src/src/pro/woofipro.js +1335 -0
  740. package/js/src/src/pro/xt.d.ts +165 -0
  741. package/js/src/src/pro/xt.js +1230 -0
  742. package/js/src/src/probit.d.ts +283 -0
  743. package/js/src/src/probit.js +1935 -0
  744. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  745. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  746. package/js/src/src/raastin.d.ts +24 -0
  747. package/js/src/src/raastin.js +494 -0
  748. package/js/src/src/ramzinex.d.ts +23 -0
  749. package/js/src/src/ramzinex.js +510 -0
  750. package/js/src/src/sarmayex.d.ts +21 -0
  751. package/js/src/src/sarmayex.js +376 -0
  752. package/js/src/src/sarrafex.d.ts +23 -0
  753. package/js/src/src/sarrafex.js +501 -0
  754. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  756. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  758. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  760. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  762. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  764. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  766. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  768. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  770. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  772. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  774. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  778. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  780. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  782. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  784. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  786. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  788. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  790. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  792. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  794. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  796. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  797. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  798. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  799. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  800. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  801. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  802. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  806. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  808. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  810. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  812. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  814. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  816. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  818. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  820. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  826. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  828. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  830. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  832. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  833. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  834. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  860. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  878. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  880. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  882. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  884. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  890. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  892. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  894. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  896. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  904. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  906. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  910. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  912. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  916. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  917. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  918. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  919. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  920. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  921. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  922. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  923. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  924. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  925. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  926. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  927. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  928. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  930. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  931. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  932. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  933. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  934. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  938. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  940. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  950. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  952. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  954. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  994. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  996. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1010. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1012. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1014. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1016. package/js/src/src/tabdeal.d.ts +23 -0
  1017. package/js/src/src/tabdeal.js +387 -0
  1018. package/js/src/src/tehran_exchange.d.ts +21 -0
  1019. package/js/src/src/tehran_exchange.js +333 -0
  1020. package/js/src/src/tetherland.d.ts +21 -0
  1021. package/js/src/src/tetherland.js +367 -0
  1022. package/js/src/src/timex.d.ts +247 -0
  1023. package/js/src/src/timex.js +1792 -0
  1024. package/js/src/src/tokocrypto.d.ts +261 -0
  1025. package/js/src/src/tokocrypto.js +2641 -0
  1026. package/js/src/src/toobit.d.ts +22 -0
  1027. package/js/src/src/toobit.js +445 -0
  1028. package/js/src/src/tradeogre.d.ts +149 -0
  1029. package/js/src/src/tradeogre.js +878 -0
  1030. package/js/src/src/twox.d.ts +21 -0
  1031. package/js/src/src/twox.js +371 -0
  1032. package/js/src/src/ubitex.d.ts +23 -0
  1033. package/js/src/src/ubitex.js +433 -0
  1034. package/js/src/src/upbit.d.ts +377 -0
  1035. package/js/src/src/upbit.js +2340 -0
  1036. package/js/src/src/vertex.d.ts +346 -0
  1037. package/js/src/src/vertex.js +3146 -0
  1038. package/js/src/src/wallex.d.ts +23 -0
  1039. package/js/src/src/wallex.js +467 -0
  1040. package/js/src/src/wavesexchange.d.ts +244 -0
  1041. package/js/src/src/wavesexchange.js +2747 -0
  1042. package/js/src/src/whitebit.d.ts +571 -0
  1043. package/js/src/src/whitebit.js +3437 -0
  1044. package/js/src/src/woo.d.ts +727 -0
  1045. package/js/src/src/woo.js +4183 -0
  1046. package/js/src/src/woofipro.d.ts +497 -0
  1047. package/js/src/src/woofipro.js +2941 -0
  1048. package/js/src/src/xt.d.ts +568 -0
  1049. package/js/src/src/xt.js +5184 -0
  1050. package/js/src/src/yobit.d.ts +197 -0
  1051. package/js/src/src/yobit.js +1453 -0
  1052. package/js/src/src/zaif.d.ts +136 -0
  1053. package/js/src/src/zaif.js +821 -0
  1054. package/js/src/src/zonda.d.ts +214 -0
  1055. package/js/src/src/zonda.js +1984 -0
  1056. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  1057. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
  1058. package/js/test.js +9 -17
  1059. package/package.json +1 -1
@@ -0,0 +1,2340 @@
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/upbit.js';
9
+ import { ExchangeError, BadRequest, AuthenticationError, InvalidOrder, InsufficientFunds, OrderNotFound, PermissionDenied, AddressPending, ArgumentsRequired } from './base/errors.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { TICK_SIZE } from './base/functions/number.js';
12
+ import { sha512 } from './static_dependencies/noble-hashes/sha512.js';
13
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
14
+ import { jwt } from './base/functions/rsa.js';
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * @class upbit
18
+ * @augments Exchange
19
+ */
20
+ export default class upbit extends Exchange {
21
+ describe() {
22
+ return this.deepExtend(super.describe(), {
23
+ 'id': 'upbit',
24
+ 'name': 'Upbit',
25
+ 'countries': ['KR'],
26
+ 'version': 'v1',
27
+ 'rateLimit': 50,
28
+ 'pro': true,
29
+ // new metainfo interface
30
+ 'has': {
31
+ 'CORS': true,
32
+ 'spot': true,
33
+ 'margin': undefined,
34
+ 'swap': false,
35
+ 'future': false,
36
+ 'option': false,
37
+ 'cancelOrder': true,
38
+ 'createDepositAddress': true,
39
+ 'createMarketBuyOrderWithCost': true,
40
+ 'createMarketOrder': true,
41
+ 'createMarketOrderWithCost': false,
42
+ 'createMarketSellOrderWithCost': false,
43
+ 'createOrder': true,
44
+ 'editOrder': true,
45
+ 'fetchBalance': true,
46
+ 'fetchCanceledOrders': true,
47
+ 'fetchClosedOrders': true,
48
+ 'fetchDeposit': true,
49
+ 'fetchDepositAddress': true,
50
+ 'fetchDepositAddresses': true,
51
+ 'fetchDepositAddressesByNetwork': false,
52
+ 'fetchDeposits': true,
53
+ 'fetchFundingHistory': false,
54
+ 'fetchFundingRate': false,
55
+ 'fetchFundingRateHistory': false,
56
+ 'fetchFundingRates': false,
57
+ 'fetchIndexOHLCV': false,
58
+ 'fetchMarginMode': false,
59
+ 'fetchMarkets': true,
60
+ 'fetchMarkOHLCV': false,
61
+ 'fetchMyTrades': false,
62
+ 'fetchOHLCV': true,
63
+ 'fetchOpenInterestHistory': false,
64
+ 'fetchOpenOrders': true,
65
+ 'fetchOrder': true,
66
+ 'fetchOrderBook': true,
67
+ 'fetchOrderBooks': true,
68
+ 'fetchOrders': false,
69
+ 'fetchPositionMode': false,
70
+ 'fetchPremiumIndexOHLCV': false,
71
+ 'fetchTicker': true,
72
+ 'fetchTickers': true,
73
+ 'fetchTrades': true,
74
+ 'fetchTradingFee': true,
75
+ 'fetchTradingFees': true,
76
+ 'fetchTransactions': false,
77
+ 'fetchWithdrawal': true,
78
+ 'fetchWithdrawals': true,
79
+ 'transfer': false,
80
+ 'withdraw': true,
81
+ },
82
+ 'timeframes': {
83
+ '1s': 'seconds',
84
+ '1m': 'minutes',
85
+ '3m': 'minutes',
86
+ '5m': 'minutes',
87
+ '10m': 'minutes',
88
+ '15m': 'minutes',
89
+ '30m': 'minutes',
90
+ '1h': 'minutes',
91
+ '4h': 'minutes',
92
+ '1d': 'days',
93
+ '1w': 'weeks',
94
+ '1M': 'months',
95
+ '1y': 'years',
96
+ },
97
+ 'hostname': 'api.upbit.com',
98
+ 'urls': {
99
+ 'logo': 'https://user-images.githubusercontent.com/1294454/49245610-eeaabe00-f423-11e8-9cba-4b0aed794799.jpg',
100
+ 'api': {
101
+ 'public': 'https://{hostname}',
102
+ 'private': 'https://{hostname}',
103
+ },
104
+ 'www': 'https://upbit.com',
105
+ 'doc': 'https://docs.upbit.com/docs/%EC%9A%94%EC%B2%AD-%EC%88%98-%EC%A0%9C%ED%95%9C',
106
+ 'fees': 'https://upbit.com/service_center/guide',
107
+ },
108
+ 'api': {
109
+ // 'endpoint','API Cost'
110
+ // cost = 1000 / (rateLimit * RPS)
111
+ 'public': {
112
+ 'get': {
113
+ 'market/all': 2,
114
+ 'candles/{timeframe}': 2,
115
+ 'candles/{timeframe}/{unit}': 2,
116
+ 'candles/seconds': 2,
117
+ 'candles/minutes/{unit}': 2,
118
+ 'candles/minutes/1': 2,
119
+ 'candles/minutes/3': 2,
120
+ 'candles/minutes/5': 2,
121
+ 'candles/minutes/10': 2,
122
+ 'candles/minutes/15': 2,
123
+ 'candles/minutes/30': 2,
124
+ 'candles/minutes/60': 2,
125
+ 'candles/minutes/240': 2,
126
+ 'candles/days': 2,
127
+ 'candles/weeks': 2,
128
+ 'candles/months': 2,
129
+ 'candles/years': 2,
130
+ 'trades/ticks': 2,
131
+ 'ticker': 2,
132
+ 'ticker/all': 2,
133
+ 'orderbook': 2,
134
+ 'orderbook/supported_levels': 2, // Upbit KR only
135
+ },
136
+ },
137
+ 'private': {
138
+ 'get': {
139
+ 'accounts': 0.67,
140
+ 'orders/chance': 0.67,
141
+ 'order': 0.67,
142
+ 'orders/closed': 0.67,
143
+ 'orders/open': 0.67,
144
+ 'orders/uuids': 0.67,
145
+ 'withdraws': 0.67,
146
+ 'withdraw': 0.67,
147
+ 'withdraws/chance': 0.67,
148
+ 'withdraws/coin_addresses': 0.67,
149
+ 'deposits': 0.67,
150
+ 'deposits/chance/coin': 0.67,
151
+ 'deposit': 0.67,
152
+ 'deposits/coin_addresses': 0.67,
153
+ 'deposits/coin_address': 0.67,
154
+ 'travel_rule/vasps': 0.67,
155
+ 'status/wallet': 0.67,
156
+ 'api_keys': 0.67, // Upbit KR only
157
+ },
158
+ 'post': {
159
+ 'orders': 2.5,
160
+ 'orders/cancel_and_new': 2.5,
161
+ 'withdraws/coin': 0.67,
162
+ 'withdraws/krw': 0.67,
163
+ 'deposits/krw': 0.67,
164
+ 'deposits/generate_coin_address': 0.67,
165
+ 'travel_rule/deposit/uuid': 0.67,
166
+ 'travel_rule/deposit/txid': 0.67, // RPS: 30, but each deposit can only be queried once every 10 minutes
167
+ },
168
+ 'delete': {
169
+ 'order': 0.67,
170
+ 'orders/open': 40,
171
+ 'orders/uuids': 0.67,
172
+ },
173
+ },
174
+ },
175
+ 'fees': {
176
+ 'trading': {
177
+ 'tierBased': false,
178
+ 'percentage': true,
179
+ 'maker': this.parseNumber('0.0025'),
180
+ 'taker': this.parseNumber('0.0025'),
181
+ },
182
+ 'funding': {
183
+ 'tierBased': false,
184
+ 'percentage': false,
185
+ 'withdraw': {},
186
+ 'deposit': {},
187
+ },
188
+ },
189
+ 'features': {
190
+ 'spot': {
191
+ 'sandbox': false,
192
+ 'createOrder': {
193
+ 'marginMode': false,
194
+ 'triggerPrice': false,
195
+ 'triggerPriceType': undefined,
196
+ 'triggerDirection': false,
197
+ 'stopLossPrice': false,
198
+ 'takeProfitPrice': false,
199
+ 'attachedStopLossTakeProfit': undefined,
200
+ 'timeInForce': {
201
+ 'IOC': true,
202
+ 'FOK': true,
203
+ 'PO': false,
204
+ 'GTD': false,
205
+ },
206
+ 'hedged': false,
207
+ 'leverage': false,
208
+ 'marketBuyByCost': false,
209
+ 'marketBuyRequiresPrice': false,
210
+ 'selfTradePrevention': false,
211
+ 'trailing': false,
212
+ 'iceberg': false,
213
+ },
214
+ 'createOrders': undefined,
215
+ 'fetchMyTrades': undefined,
216
+ 'fetchOrder': {
217
+ 'marginMode': false,
218
+ 'trigger': false,
219
+ 'trailing': false,
220
+ 'symbolRequired': false,
221
+ },
222
+ 'fetchOpenOrders': {
223
+ 'marginMode': true,
224
+ 'limit': 100,
225
+ 'trigger': false,
226
+ 'trailing': false,
227
+ 'symbolRequired': false,
228
+ },
229
+ 'fetchOrders': undefined,
230
+ 'fetchClosedOrders': {
231
+ 'marginMode': false,
232
+ 'limit': 1000,
233
+ 'daysBack': 100000,
234
+ 'daysBackCanceled': 1,
235
+ 'untilDays': 7,
236
+ 'trigger': false,
237
+ 'trailing': false,
238
+ 'symbolRequired': false,
239
+ },
240
+ 'fetchOHLCV': {
241
+ 'limit': 200,
242
+ },
243
+ },
244
+ 'swap': {
245
+ 'linear': undefined,
246
+ 'inverse': undefined,
247
+ },
248
+ 'future': {
249
+ 'linear': undefined,
250
+ 'inverse': undefined,
251
+ },
252
+ },
253
+ 'precisionMode': TICK_SIZE,
254
+ 'exceptions': {
255
+ 'exact': {
256
+ 'This key has expired.': AuthenticationError,
257
+ 'Missing request parameter error. Check the required parameters!': BadRequest,
258
+ 'side is missing, side does not have a valid value': InvalidOrder,
259
+ },
260
+ 'broad': {
261
+ 'thirdparty_agreement_required': PermissionDenied,
262
+ 'out_of_scope': PermissionDenied,
263
+ 'order_not_found': OrderNotFound,
264
+ 'insufficient_funds': InsufficientFunds,
265
+ 'invalid_access_key': AuthenticationError,
266
+ 'jwt_verification': AuthenticationError,
267
+ 'create_ask_error': ExchangeError,
268
+ 'create_bid_error': ExchangeError,
269
+ 'volume_too_large': InvalidOrder,
270
+ 'invalid_funds': InvalidOrder,
271
+ },
272
+ },
273
+ 'options': {
274
+ 'createMarketBuyOrderRequiresPrice': true,
275
+ 'tradingFeesByQuoteCurrency': {
276
+ 'KRW': 0.0005,
277
+ },
278
+ },
279
+ 'commonCurrencies': {
280
+ 'TON': 'Tokamak Network',
281
+ },
282
+ });
283
+ }
284
+ async fetchCurrency(code, params = {}) {
285
+ // this method is for retrieving funding fees and limits per currency
286
+ // it requires private access and API keys properly set up
287
+ await this.loadMarkets();
288
+ const currency = this.currency(code);
289
+ return await this.fetchCurrencyById(currency['id'], params);
290
+ }
291
+ async fetchCurrencyById(id, params = {}) {
292
+ // this method is for retrieving funding fees and limits per currency
293
+ // it requires private access and API keys properly set up
294
+ const request = {
295
+ 'currency': id,
296
+ };
297
+ const response = await this.privateGetWithdrawsChance(this.extend(request, params));
298
+ //
299
+ // {
300
+ // "member_level": {
301
+ // "security_level": 3,
302
+ // "fee_level": 0,
303
+ // "email_verified": true,
304
+ // "identity_auth_verified": true,
305
+ // "bank_account_verified": true,
306
+ // "kakao_pay_auth_verified": false,
307
+ // "locked": false,
308
+ // "wallet_locked": false
309
+ // },
310
+ // "currency": {
311
+ // "code": "BTC",
312
+ // "withdraw_fee": "0.0005",
313
+ // "is_coin": true,
314
+ // "wallet_state": "working",
315
+ // "wallet_support": [ "deposit", "withdraw" ]
316
+ // },
317
+ // "account": {
318
+ // "currency": "BTC",
319
+ // "balance": "10.0",
320
+ // "locked": "0.0",
321
+ // "avg_krw_buy_price": "8042000",
322
+ // "modified": false
323
+ // },
324
+ // "withdraw_limit": {
325
+ // "currency": "BTC",
326
+ // "minimum": null,
327
+ // "onetime": null,
328
+ // "daily": "10.0",
329
+ // "remaining_daily": "10.0",
330
+ // "remaining_daily_krw": "0.0",
331
+ // "fixed": null,
332
+ // "can_withdraw": true
333
+ // }
334
+ // }
335
+ //
336
+ const memberInfo = this.safeValue(response, 'member_level', {});
337
+ const currencyInfo = this.safeValue(response, 'currency', {});
338
+ const withdrawLimits = this.safeValue(response, 'withdraw_limit', {});
339
+ const canWithdraw = this.safeValue(withdrawLimits, 'can_withdraw');
340
+ const walletState = this.safeString(currencyInfo, 'wallet_state');
341
+ const walletLocked = this.safeValue(memberInfo, 'wallet_locked');
342
+ const locked = this.safeValue(memberInfo, 'locked');
343
+ let active = true;
344
+ if ((canWithdraw !== undefined) && !canWithdraw) {
345
+ active = false;
346
+ }
347
+ else if (walletState !== 'working') {
348
+ active = false;
349
+ }
350
+ else if ((walletLocked !== undefined) && walletLocked) {
351
+ active = false;
352
+ }
353
+ else if ((locked !== undefined) && locked) {
354
+ active = false;
355
+ }
356
+ const maxOnetimeWithdrawal = this.safeString(withdrawLimits, 'onetime');
357
+ const maxDailyWithdrawal = this.safeString(withdrawLimits, 'daily', maxOnetimeWithdrawal);
358
+ const remainingDailyWithdrawal = this.safeString(withdrawLimits, 'remaining_daily', maxDailyWithdrawal);
359
+ let maxWithdrawLimit = undefined;
360
+ if (Precise.stringGt(remainingDailyWithdrawal, '0')) {
361
+ maxWithdrawLimit = remainingDailyWithdrawal;
362
+ }
363
+ else {
364
+ maxWithdrawLimit = maxDailyWithdrawal;
365
+ }
366
+ const currencyId = this.safeString(currencyInfo, 'code');
367
+ const code = this.safeCurrencyCode(currencyId);
368
+ return {
369
+ 'info': response,
370
+ 'id': currencyId,
371
+ 'code': code,
372
+ 'name': code,
373
+ 'active': active,
374
+ 'fee': this.safeNumber(currencyInfo, 'withdraw_fee'),
375
+ 'precision': undefined,
376
+ 'limits': {
377
+ 'withdraw': {
378
+ 'min': this.safeNumber(withdrawLimits, 'minimum'),
379
+ 'max': this.parseNumber(maxWithdrawLimit),
380
+ },
381
+ },
382
+ };
383
+ }
384
+ async fetchMarket(symbol, params = {}) {
385
+ // this method is for retrieving trading fees and limits per market
386
+ // it requires private access and API keys properly set up
387
+ await this.loadMarkets();
388
+ const market = this.market(symbol);
389
+ return await this.fetchMarketById(market['id'], params);
390
+ }
391
+ async fetchMarketById(id, params = {}) {
392
+ // this method is for retrieving trading fees and limits per market
393
+ // it requires private access and API keys properly set up
394
+ const request = {
395
+ 'market': id,
396
+ };
397
+ const response = await this.privateGetOrdersChance(this.extend(request, params));
398
+ //
399
+ // {
400
+ // "bid_fee": "0.0015",
401
+ // "ask_fee": "0.0015",
402
+ // "market": {
403
+ // "id": "KRW-BTC",
404
+ // "name": "BTC/KRW",
405
+ // "order_types": [ "limit" ],
406
+ // "order_sides": [ "ask", "bid" ],
407
+ // "bid": { "currency": "KRW", "price_unit": null, "min_total": 1000 },
408
+ // "ask": { "currency": "BTC", "price_unit": null, "min_total": 1000 },
409
+ // "max_total": "100000000.0",
410
+ // "state": "active",
411
+ // },
412
+ // "bid_account": {
413
+ // "currency": "KRW",
414
+ // "balance": "0.0",
415
+ // "locked": "0.0",
416
+ // "avg_buy_price": "0",
417
+ // "avg_buy_price_modified": false,
418
+ // "unit_currency": "KRW",
419
+ // },
420
+ // "ask_account": {
421
+ // "currency": "BTC",
422
+ // "balance": "10.0",
423
+ // "locked": "0.0",
424
+ // "avg_buy_price": "8042000",
425
+ // "avg_buy_price_modified": false,
426
+ // "unit_currency": "KRW",
427
+ // }
428
+ // }
429
+ //
430
+ const marketInfo = this.safeValue(response, 'market');
431
+ const bid = this.safeValue(marketInfo, 'bid');
432
+ const ask = this.safeValue(marketInfo, 'ask');
433
+ const marketId = this.safeString(marketInfo, 'id');
434
+ const baseId = this.safeString(ask, 'currency');
435
+ const quoteId = this.safeString(bid, 'currency');
436
+ const base = this.safeCurrencyCode(baseId);
437
+ const quote = this.safeCurrencyCode(quoteId);
438
+ const state = this.safeString(marketInfo, 'state');
439
+ const bidFee = this.safeString(response, 'bid_fee');
440
+ const askFee = this.safeString(response, 'ask_fee');
441
+ const fee = this.parseNumber(Precise.stringMax(bidFee, askFee));
442
+ return this.safeMarketStructure({
443
+ 'id': marketId,
444
+ 'symbol': base + '/' + quote,
445
+ 'base': base,
446
+ 'quote': quote,
447
+ 'settle': undefined,
448
+ 'baseId': baseId,
449
+ 'quoteId': quoteId,
450
+ 'settleId': undefined,
451
+ 'type': 'spot',
452
+ 'spot': true,
453
+ 'margin': false,
454
+ 'swap': false,
455
+ 'future': false,
456
+ 'option': false,
457
+ 'active': (state === 'active'),
458
+ 'contract': false,
459
+ 'linear': undefined,
460
+ 'inverse': undefined,
461
+ 'taker': fee,
462
+ 'maker': fee,
463
+ 'contractSize': undefined,
464
+ 'expiry': undefined,
465
+ 'expiryDatetime': undefined,
466
+ 'strike': undefined,
467
+ 'optionType': undefined,
468
+ 'precision': {
469
+ 'amount': this.parseNumber('1e-8'),
470
+ 'price': this.parseNumber('1e-8'),
471
+ },
472
+ 'limits': {
473
+ 'leverage': {
474
+ 'min': undefined,
475
+ 'max': undefined,
476
+ },
477
+ 'amount': {
478
+ 'min': this.safeNumber(ask, 'min_total'),
479
+ 'max': undefined,
480
+ },
481
+ 'price': {
482
+ 'min': undefined,
483
+ 'max': undefined,
484
+ },
485
+ 'cost': {
486
+ 'min': this.safeNumber(bid, 'min_total'),
487
+ 'max': this.safeNumber(marketInfo, 'max_total'),
488
+ },
489
+ 'info': response,
490
+ },
491
+ });
492
+ }
493
+ /**
494
+ * @method
495
+ * @name upbit#fetchMarkets
496
+ * @see https://docs.upbit.com/kr/reference/마켓-코드-조회
497
+ * @see https://global-docs.upbit.com/reference/listing-market-list
498
+ * @description retrieves data on all markets for upbit
499
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
500
+ * @returns {object[]} an array of objects representing market data
501
+ */
502
+ async fetchMarkets(params = {}) {
503
+ const response = await this.publicGetMarketAll(params);
504
+ //
505
+ // [
506
+ // {
507
+ // "market": "KRW-BTC",
508
+ // "korean_name": "비트코인",
509
+ // "english_name": "Bitcoin"
510
+ // },
511
+ // ...,
512
+ // ]
513
+ //
514
+ return this.parseMarkets(response);
515
+ }
516
+ parseMarket(market) {
517
+ const id = this.safeString(market, 'market');
518
+ const [quoteId, baseId] = id.split('-');
519
+ const base = this.safeCurrencyCode(baseId);
520
+ const quote = this.safeCurrencyCode(quoteId);
521
+ return this.safeMarketStructure({
522
+ 'id': id,
523
+ 'symbol': base + '/' + quote,
524
+ 'base': base,
525
+ 'quote': quote,
526
+ 'settle': undefined,
527
+ 'baseId': baseId,
528
+ 'quoteId': quoteId,
529
+ 'settleId': undefined,
530
+ 'type': 'spot',
531
+ 'spot': true,
532
+ 'margin': false,
533
+ 'swap': false,
534
+ 'future': false,
535
+ 'option': false,
536
+ 'active': true,
537
+ 'contract': false,
538
+ 'linear': undefined,
539
+ 'inverse': undefined,
540
+ 'taker': this.safeNumber(this.options['tradingFeesByQuoteCurrency'], quote, this.fees['trading']['taker']),
541
+ 'maker': this.safeNumber(this.options['tradingFeesByQuoteCurrency'], quote, this.fees['trading']['maker']),
542
+ 'contractSize': undefined,
543
+ 'expiry': undefined,
544
+ 'expiryDatetime': undefined,
545
+ 'strike': undefined,
546
+ 'optionType': undefined,
547
+ 'precision': {
548
+ 'price': this.parseNumber('1e-8'),
549
+ 'amount': this.parseNumber('1e-8'),
550
+ },
551
+ 'limits': {
552
+ 'leverage': {
553
+ 'min': undefined,
554
+ 'max': undefined,
555
+ },
556
+ 'amount': {
557
+ 'min': undefined,
558
+ 'max': undefined,
559
+ },
560
+ 'price': {
561
+ 'min': undefined,
562
+ 'max': undefined,
563
+ },
564
+ 'cost': {
565
+ 'min': undefined,
566
+ 'max': undefined,
567
+ },
568
+ },
569
+ 'created': undefined,
570
+ 'info': market,
571
+ });
572
+ }
573
+ parseBalance(response) {
574
+ const result = {
575
+ 'info': response,
576
+ 'timestamp': undefined,
577
+ 'datetime': undefined,
578
+ };
579
+ for (let i = 0; i < response.length; i++) {
580
+ const balance = response[i];
581
+ const currencyId = this.safeString(balance, 'currency');
582
+ const code = this.safeCurrencyCode(currencyId);
583
+ const account = this.account();
584
+ account['free'] = this.safeString(balance, 'balance');
585
+ account['used'] = this.safeString(balance, 'locked');
586
+ result[code] = account;
587
+ }
588
+ return this.safeBalance(result);
589
+ }
590
+ /**
591
+ * @method
592
+ * @name upbit#fetchBalance
593
+ * @see https://docs.upbit.com/kr/reference/전체-계좌-조회
594
+ * @see https://global-docs.upbit.com/reference/overall-account-inquiry
595
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
596
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
597
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
598
+ */
599
+ async fetchBalance(params = {}) {
600
+ await this.loadMarkets();
601
+ const response = await this.privateGetAccounts(params);
602
+ //
603
+ // [ { currency: "BTC",
604
+ // "balance": "0.005",
605
+ // "locked": "0.0",
606
+ // "avg_krw_buy_price": "7446000",
607
+ // "modified": false },
608
+ // { currency: "ETH",
609
+ // "balance": "0.1",
610
+ // "locked": "0.0",
611
+ // "avg_krw_buy_price": "250000",
612
+ // "modified": false } ]
613
+ //
614
+ return this.parseBalance(response);
615
+ }
616
+ /**
617
+ * @method
618
+ * @name upbit#fetchOrderBooks
619
+ * @see https://docs.upbit.com/kr/reference/호가-정보-조회
620
+ * @see https://global-docs.upbit.com/reference/order-book-list
621
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data for multiple markets
622
+ * @param {string[]|undefined} symbols list of unified market symbols, all symbols fetched if undefined, default is undefined
623
+ * @param {int} [limit] not used by upbit fetchOrderBooks ()
624
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
625
+ * @returns {object} a dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbol
626
+ */
627
+ async fetchOrderBooks(symbols = undefined, limit = undefined, params = {}) {
628
+ await this.loadMarkets();
629
+ let ids = undefined;
630
+ if (symbols === undefined) {
631
+ ids = this.ids.join(',');
632
+ }
633
+ else {
634
+ ids = this.marketIds(symbols);
635
+ ids = ids.join(',');
636
+ }
637
+ const request = {
638
+ 'markets': ids,
639
+ };
640
+ const response = await this.publicGetOrderbook(this.extend(request, params));
641
+ //
642
+ // [ { market: "BTC-ETH",
643
+ // "timestamp": 1542899030043,
644
+ // "total_ask_size": 109.57065201,
645
+ // "total_bid_size": 125.74430631,
646
+ // "orderbook_units": [ { ask_price: 0.02926679,
647
+ // "bid_price": 0.02919904,
648
+ // "ask_size": 4.20293961,
649
+ // "bid_size": 11.65043576 },
650
+ // ...,
651
+ // { ask_price: 0.02938209,
652
+ // "bid_price": 0.0291231,
653
+ // "ask_size": 0.05135782,
654
+ // "bid_size": 13.5595 } ] },
655
+ // { market: "KRW-BTC",
656
+ // "timestamp": 1542899034662,
657
+ // "total_ask_size": 12.89790974,
658
+ // "total_bid_size": 4.88395783,
659
+ // "orderbook_units": [ { ask_price: 5164000,
660
+ // "bid_price": 5162000,
661
+ // "ask_size": 2.57606495,
662
+ // "bid_size": 0.214 },
663
+ // ...,
664
+ // { ask_price: 5176000,
665
+ // "bid_price": 5152000,
666
+ // "ask_size": 2.752,
667
+ // "bid_size": 0.4650305 } ] } ]
668
+ //
669
+ const result = {};
670
+ for (let i = 0; i < response.length; i++) {
671
+ const orderbook = response[i];
672
+ const marketId = this.safeString(orderbook, 'market');
673
+ const symbol = this.safeSymbol(marketId, undefined, '-');
674
+ const timestamp = this.safeInteger(orderbook, 'timestamp');
675
+ result[symbol] = {
676
+ 'symbol': symbol,
677
+ 'bids': this.sortBy(this.parseBidsAsks(orderbook['orderbook_units'], 'bid_price', 'bid_size'), 0, true),
678
+ 'asks': this.sortBy(this.parseBidsAsks(orderbook['orderbook_units'], 'ask_price', 'ask_size'), 0),
679
+ 'timestamp': timestamp,
680
+ 'datetime': this.iso8601(timestamp),
681
+ 'nonce': undefined,
682
+ };
683
+ }
684
+ return result;
685
+ }
686
+ /**
687
+ * @method
688
+ * @name upbit#fetchOrderBook
689
+ * @see https://docs.upbit.com/kr/reference/호가-정보-조회
690
+ * @see https://global-docs.upbit.com/reference/order-book-list
691
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
692
+ * @param {string} symbol unified symbol of the market to fetch the order book for
693
+ * @param {int} [limit] the maximum amount of order book entries to return
694
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
695
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
696
+ */
697
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
698
+ const orderbooks = await this.fetchOrderBooks([symbol], limit, params);
699
+ return this.safeValue(orderbooks, symbol);
700
+ }
701
+ parseTicker(ticker, market = undefined) {
702
+ //
703
+ // { market: "BTC-ETH",
704
+ // "trade_date": "20181122",
705
+ // "trade_time": "104543",
706
+ // "trade_date_kst": "20181122",
707
+ // "trade_time_kst": "194543",
708
+ // "trade_timestamp": 1542883543096,
709
+ // "opening_price": 0.02976455,
710
+ // "high_price": 0.02992577,
711
+ // "low_price": 0.02934283,
712
+ // "trade_price": 0.02947773,
713
+ // "prev_closing_price": 0.02966,
714
+ // "change": "FALL",
715
+ // "change_price": 0.00018227,
716
+ // "change_rate": 0.0061453136,
717
+ // "signed_change_price": -0.00018227,
718
+ // "signed_change_rate": -0.0061453136,
719
+ // "trade_volume": 1.00000005,
720
+ // "acc_trade_price": 100.95825586,
721
+ // "acc_trade_price_24h": 289.58650166,
722
+ // "acc_trade_volume": 3409.85311036,
723
+ // "acc_trade_volume_24h": 9754.40510513,
724
+ // "highest_52_week_price": 0.12345678,
725
+ // "highest_52_week_date": "2018-02-01",
726
+ // "lowest_52_week_price": 0.023936,
727
+ // "lowest_52_week_date": "2017-12-08",
728
+ // "timestamp": 1542883543813 }
729
+ //
730
+ const timestamp = this.safeInteger(ticker, 'trade_timestamp');
731
+ const marketId = this.safeString2(ticker, 'market', 'code');
732
+ market = this.safeMarket(marketId, market, '-');
733
+ const last = this.safeString(ticker, 'trade_price');
734
+ return this.safeTicker({
735
+ 'symbol': market['symbol'],
736
+ 'timestamp': timestamp,
737
+ 'datetime': this.iso8601(timestamp),
738
+ 'high': this.safeString(ticker, 'high_price'),
739
+ 'low': this.safeString(ticker, 'low_price'),
740
+ 'bid': undefined,
741
+ 'bidVolume': undefined,
742
+ 'ask': undefined,
743
+ 'askVolume': undefined,
744
+ 'vwap': undefined,
745
+ 'open': this.safeString(ticker, 'opening_price'),
746
+ 'close': last,
747
+ 'last': last,
748
+ 'previousClose': this.safeString(ticker, 'prev_closing_price'),
749
+ 'change': this.safeString(ticker, 'signed_change_price'),
750
+ 'percentage': this.safeString(ticker, 'signed_change_rate'),
751
+ 'average': undefined,
752
+ 'baseVolume': this.safeString(ticker, 'acc_trade_volume_24h'),
753
+ 'quoteVolume': this.safeString(ticker, 'acc_trade_price_24h'),
754
+ 'info': ticker,
755
+ }, market);
756
+ }
757
+ /**
758
+ * @method
759
+ * @name upbit#fetchTickers
760
+ * @see https://docs.upbit.com/kr/reference/ticker현재가-정보
761
+ * @see https://global-docs.upbit.com/reference/tickers
762
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
763
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
764
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
765
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
766
+ */
767
+ async fetchTickers(symbols = undefined, params = {}) {
768
+ await this.loadMarkets();
769
+ symbols = this.marketSymbols(symbols);
770
+ let ids = undefined;
771
+ if (symbols === undefined) {
772
+ ids = this.ids.join(',');
773
+ }
774
+ else {
775
+ ids = this.marketIds(symbols);
776
+ ids = ids.join(',');
777
+ }
778
+ const request = {
779
+ 'markets': ids,
780
+ };
781
+ const response = await this.publicGetTicker(this.extend(request, params));
782
+ //
783
+ // [ { market: "BTC-ETH",
784
+ // "trade_date": "20181122",
785
+ // "trade_time": "104543",
786
+ // "trade_date_kst": "20181122",
787
+ // "trade_time_kst": "194543",
788
+ // "trade_timestamp": 1542883543097,
789
+ // "opening_price": 0.02976455,
790
+ // "high_price": 0.02992577,
791
+ // "low_price": 0.02934283,
792
+ // "trade_price": 0.02947773,
793
+ // "prev_closing_price": 0.02966,
794
+ // "change": "FALL",
795
+ // "change_price": 0.00018227,
796
+ // "change_rate": 0.0061453136,
797
+ // "signed_change_price": -0.00018227,
798
+ // "signed_change_rate": -0.0061453136,
799
+ // "trade_volume": 1.00000005,
800
+ // "acc_trade_price": 100.95825586,
801
+ // "acc_trade_price_24h": 289.58650166,
802
+ // "acc_trade_volume": 3409.85311036,
803
+ // "acc_trade_volume_24h": 9754.40510513,
804
+ // "highest_52_week_price": 0.12345678,
805
+ // "highest_52_week_date": "2018-02-01",
806
+ // "lowest_52_week_price": 0.023936,
807
+ // "lowest_52_week_date": "2017-12-08",
808
+ // "timestamp": 1542883543813 } ]
809
+ //
810
+ const result = {};
811
+ for (let t = 0; t < response.length; t++) {
812
+ const ticker = this.parseTicker(response[t]);
813
+ const symbol = ticker['symbol'];
814
+ result[symbol] = ticker;
815
+ }
816
+ return this.filterByArrayTickers(result, 'symbol', symbols);
817
+ }
818
+ /**
819
+ * @method
820
+ * @name upbit#fetchTicker
821
+ * @see https://docs.upbit.com/kr/reference/ticker현재가-정보
822
+ * @see https://global-docs.upbit.com/reference/tickers
823
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
824
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
825
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
826
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
827
+ */
828
+ async fetchTicker(symbol, params = {}) {
829
+ const tickers = await this.fetchTickers([symbol], params);
830
+ return this.safeValue(tickers, symbol);
831
+ }
832
+ parseTrade(trade, market = undefined) {
833
+ //
834
+ // fetchTrades
835
+ //
836
+ // { market: "BTC-ETH",
837
+ // "trade_date_utc": "2018-11-22",
838
+ // "trade_time_utc": "13:55:24",
839
+ // "timestamp": 1542894924397,
840
+ // "trade_price": 0.02914289,
841
+ // "trade_volume": 0.20074397,
842
+ // "prev_closing_price": 0.02966,
843
+ // "change_price": -0.00051711,
844
+ // "ask_bid": "ASK",
845
+ // "sequential_id": 15428949259430000 }
846
+ //
847
+ // fetchOrder trades
848
+ //
849
+ // {
850
+ // "market": "KRW-BTC",
851
+ // "uuid": "78162304-1a4d-4524-b9e6-c9a9e14d76c3",
852
+ // "price": "101000.0",
853
+ // "volume": "0.77368323",
854
+ // "funds": "78142.00623",
855
+ // "ask_fee": "117.213009345",
856
+ // "bid_fee": "117.213009345",
857
+ // "created_at": "2018-04-05T14:09:15+09:00",
858
+ // "side": "bid",
859
+ // }
860
+ //
861
+ const id = this.safeString2(trade, 'sequential_id', 'uuid');
862
+ const orderId = undefined;
863
+ let timestamp = this.safeInteger(trade, 'timestamp');
864
+ if (timestamp === undefined) {
865
+ timestamp = this.parse8601(this.safeString(trade, 'created_at'));
866
+ }
867
+ let side = undefined;
868
+ const askOrBid = this.safeStringLower2(trade, 'ask_bid', 'side');
869
+ if (askOrBid === 'ask') {
870
+ side = 'sell';
871
+ }
872
+ else if (askOrBid === 'bid') {
873
+ side = 'buy';
874
+ }
875
+ const cost = this.safeString(trade, 'funds');
876
+ const price = this.safeString2(trade, 'trade_price', 'price');
877
+ const amount = this.safeString2(trade, 'trade_volume', 'volume');
878
+ const marketId = this.safeString2(trade, 'market', 'code');
879
+ market = this.safeMarket(marketId, market, '-');
880
+ let fee = undefined;
881
+ const feeCost = this.safeString(trade, askOrBid + '_fee');
882
+ if (feeCost !== undefined) {
883
+ fee = {
884
+ 'currency': market['quote'],
885
+ 'cost': feeCost,
886
+ };
887
+ }
888
+ return this.safeTrade({
889
+ 'id': id,
890
+ 'info': trade,
891
+ 'order': orderId,
892
+ 'timestamp': timestamp,
893
+ 'datetime': this.iso8601(timestamp),
894
+ 'symbol': market['symbol'],
895
+ 'type': undefined,
896
+ 'side': side,
897
+ 'takerOrMaker': undefined,
898
+ 'price': price,
899
+ 'amount': amount,
900
+ 'cost': cost,
901
+ 'fee': fee,
902
+ }, market);
903
+ }
904
+ /**
905
+ * @method
906
+ * @name upbit#fetchTrades
907
+ * @see https://docs.upbit.com/kr/reference/최근-체결-내역
908
+ * @see https://global-docs.upbit.com/reference/today-trades-history
909
+ * @description get the list of most recent trades for a particular symbol
910
+ * @param {string} symbol unified symbol of the market to fetch trades for
911
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
912
+ * @param {int} [limit] the maximum amount of trades to fetch
913
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
914
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
915
+ */
916
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
917
+ await this.loadMarkets();
918
+ const market = this.market(symbol);
919
+ if (limit === undefined) {
920
+ limit = 200;
921
+ }
922
+ const request = {
923
+ 'market': market['id'],
924
+ 'count': limit,
925
+ };
926
+ const response = await this.publicGetTradesTicks(this.extend(request, params));
927
+ //
928
+ // [ { market: "BTC-ETH",
929
+ // "trade_date_utc": "2018-11-22",
930
+ // "trade_time_utc": "13:55:24",
931
+ // "timestamp": 1542894924397,
932
+ // "trade_price": 0.02914289,
933
+ // "trade_volume": 0.20074397,
934
+ // "prev_closing_price": 0.02966,
935
+ // "change_price": -0.00051711,
936
+ // "ask_bid": "ASK",
937
+ // "sequential_id": 15428949259430000 },
938
+ // { market: "BTC-ETH",
939
+ // "trade_date_utc": "2018-11-22",
940
+ // "trade_time_utc": "13:03:10",
941
+ // "timestamp": 1542891790123,
942
+ // "trade_price": 0.02917,
943
+ // "trade_volume": 7.392,
944
+ // "prev_closing_price": 0.02966,
945
+ // "change_price": -0.00049,
946
+ // "ask_bid": "ASK",
947
+ // "sequential_id": 15428917910540000 } ]
948
+ //
949
+ return this.parseTrades(response, market, since, limit);
950
+ }
951
+ /**
952
+ * @method
953
+ * @name upbit#fetchTradingFee
954
+ * @see https://docs.upbit.com/kr/reference/주문-가능-정보
955
+ * @see https://global-docs.upbit.com/reference/available-order-information
956
+ * @description fetch the trading fees for a market
957
+ * @param {string} symbol unified market symbol
958
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
959
+ * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
960
+ */
961
+ async fetchTradingFee(symbol, params = {}) {
962
+ await this.loadMarkets();
963
+ const market = this.market(symbol);
964
+ const request = {
965
+ 'market': market['id'],
966
+ };
967
+ const response = await this.privateGetOrdersChance(this.extend(request, params));
968
+ //
969
+ // {
970
+ // "bid_fee": "0.0005",
971
+ // "ask_fee": "0.0005",
972
+ // "maker_bid_fee": "0.0005",
973
+ // "maker_ask_fee": "0.0005",
974
+ // "market": {
975
+ // "id": "KRW-BTC",
976
+ // "name": "BTC/KRW",
977
+ // "order_types": [ "limit" ],
978
+ // "order_sides": [ "ask", "bid" ],
979
+ // "bid": { "currency": "KRW", "price_unit": null, "min_total": 5000 },
980
+ // "ask": { "currency": "BTC", "price_unit": null, "min_total": 5000 },
981
+ // "max_total": "1000000000.0",
982
+ // "state": "active"
983
+ // },
984
+ // "bid_account": {
985
+ // "currency": "KRW",
986
+ // "balance": "0.34202415",
987
+ // "locked": "4999.99999922",
988
+ // "avg_buy_price": "0",
989
+ // "avg_buy_price_modified": true,
990
+ // "unit_currency": "KRW"
991
+ // },
992
+ // "ask_account": {
993
+ // "currency": "BTC",
994
+ // "balance": "0.00048",
995
+ // "locked": "0.0",
996
+ // "avg_buy_price": "20870000",
997
+ // "avg_buy_price_modified": false,
998
+ // "unit_currency": "KRW"
999
+ // }
1000
+ // }
1001
+ //
1002
+ const askFee = this.safeString(response, 'ask_fee');
1003
+ const bidFee = this.safeString(response, 'bid_fee');
1004
+ const taker = Precise.stringMax(askFee, bidFee);
1005
+ const makerAskFee = this.safeString(response, 'maker_ask_fee');
1006
+ const makerBidFee = this.safeString(response, 'maker_bid_fee');
1007
+ const maker = Precise.stringMax(makerAskFee, makerBidFee);
1008
+ return {
1009
+ 'info': response,
1010
+ 'symbol': symbol,
1011
+ 'maker': this.parseNumber(maker),
1012
+ 'taker': this.parseNumber(taker),
1013
+ 'percentage': true,
1014
+ 'tierBased': false,
1015
+ };
1016
+ }
1017
+ /**
1018
+ * @method
1019
+ * @name upbit#fetchTradingFees
1020
+ * @description fetch the trading fees for markets
1021
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1022
+ * @returns {object} a [trading fee structure]{@link https://docs.ccxt.com/#/?id=trading-fee-structure}
1023
+ */
1024
+ async fetchTradingFees(params = {}) {
1025
+ await this.loadMarkets();
1026
+ const fetchMarketResponse = await this.fetchMarkets(params);
1027
+ const response = {};
1028
+ for (let i = 0; i < fetchMarketResponse.length; i++) {
1029
+ const element = {};
1030
+ element['maker'] = this.safeNumber(fetchMarketResponse[i], 'maker');
1031
+ element['taker'] = this.safeNumber(fetchMarketResponse[i], 'taker');
1032
+ element['symbol'] = this.safeString(fetchMarketResponse[i], 'symbol');
1033
+ element['percentage'] = true;
1034
+ element['tierBased'] = false;
1035
+ element['info'] = fetchMarketResponse[i];
1036
+ response[this.safeString(fetchMarketResponse[i], 'symbol')] = element;
1037
+ }
1038
+ return response;
1039
+ }
1040
+ parseOHLCV(ohlcv, market = undefined) {
1041
+ //
1042
+ // {
1043
+ // "market": "BTC-ETH",
1044
+ // "candle_date_time_utc": "2018-11-22T13:47:00",
1045
+ // "candle_date_time_kst": "2018-11-22T22:47:00",
1046
+ // "opening_price": 0.02915963,
1047
+ // "high_price": 0.02915963,
1048
+ // "low_price": 0.02915448,
1049
+ // "trade_price": 0.02915448,
1050
+ // "timestamp": 1542894473674,
1051
+ // "candle_acc_trade_price": 0.0981629437535248,
1052
+ // "candle_acc_trade_volume": 3.36693173,
1053
+ // "unit": 1
1054
+ // }
1055
+ //
1056
+ return [
1057
+ this.parse8601(this.safeString(ohlcv, 'candle_date_time_utc')),
1058
+ this.safeNumber(ohlcv, 'opening_price'),
1059
+ this.safeNumber(ohlcv, 'high_price'),
1060
+ this.safeNumber(ohlcv, 'low_price'),
1061
+ this.safeNumber(ohlcv, 'trade_price'),
1062
+ this.safeNumber(ohlcv, 'candle_acc_trade_volume'), // base volume
1063
+ ];
1064
+ }
1065
+ /**
1066
+ * @method
1067
+ * @name upbit#fetchOHLCV
1068
+ * @see https://docs.upbit.com/kr/reference/분minute-캔들-1
1069
+ * @see https://global-docs.upbit.com/reference/minutes
1070
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1071
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1072
+ * @param {string} timeframe the length of time each candle represents
1073
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1074
+ * @param {int} [limit] the maximum amount of candles to fetch
1075
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1076
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1077
+ */
1078
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1079
+ await this.loadMarkets();
1080
+ const market = this.market(symbol);
1081
+ const timeframePeriod = this.parseTimeframe(timeframe);
1082
+ const timeframeValue = this.safeString(this.timeframes, timeframe, timeframe);
1083
+ if (limit === undefined) {
1084
+ limit = 200;
1085
+ }
1086
+ const request = {
1087
+ 'market': market['id'],
1088
+ 'timeframe': timeframeValue,
1089
+ 'count': limit,
1090
+ };
1091
+ let response = undefined;
1092
+ if (since !== undefined) {
1093
+ // convert `since` to `to` value
1094
+ request['to'] = this.iso8601(this.sum(since, timeframePeriod * limit * 1000));
1095
+ }
1096
+ if (timeframeValue === 'minutes') {
1097
+ const numMinutes = Math.round(timeframePeriod / 60);
1098
+ request['unit'] = numMinutes;
1099
+ response = await this.publicGetCandlesTimeframeUnit(this.extend(request, params));
1100
+ }
1101
+ else {
1102
+ response = await this.publicGetCandlesTimeframe(this.extend(request, params));
1103
+ }
1104
+ //
1105
+ // [
1106
+ // {
1107
+ // "market": "BTC-ETH",
1108
+ // "candle_date_time_utc": "2018-11-22T13:47:00",
1109
+ // "candle_date_time_kst": "2018-11-22T22:47:00",
1110
+ // "opening_price": 0.02915963,
1111
+ // "high_price": 0.02915963,
1112
+ // "low_price": 0.02915448,
1113
+ // "trade_price": 0.02915448,
1114
+ // "timestamp": 1542894473674,
1115
+ // "candle_acc_trade_price": 0.0981629437535248,
1116
+ // "candle_acc_trade_volume": 3.36693173,
1117
+ // "unit": 1
1118
+ // },
1119
+ // {
1120
+ // "market": "BTC-ETH",
1121
+ // "candle_date_time_utc": "2018-11-22T10:06:00",
1122
+ // "candle_date_time_kst": "2018-11-22T19:06:00",
1123
+ // "opening_price": 0.0294,
1124
+ // "high_price": 0.02940882,
1125
+ // "low_price": 0.02934283,
1126
+ // "trade_price": 0.02937354,
1127
+ // "timestamp": 1542881219276,
1128
+ // "candle_acc_trade_price": 0.0762597110943884,
1129
+ // "candle_acc_trade_volume": 2.5949617,
1130
+ // "unit": 1
1131
+ // }
1132
+ // ]
1133
+ //
1134
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
1135
+ }
1136
+ calcOrderPrice(symbol, amount, price = undefined, params = {}) {
1137
+ let quoteAmount = undefined;
1138
+ const createMarketBuyOrderRequiresPrice = this.safeValue(this.options, 'createMarketBuyOrderRequiresPrice');
1139
+ const cost = this.safeString(params, 'cost');
1140
+ if (cost !== undefined) {
1141
+ quoteAmount = this.costToPrecision(symbol, cost);
1142
+ }
1143
+ else if (createMarketBuyOrderRequiresPrice) {
1144
+ if (price === undefined || amount === undefined) {
1145
+ throw new InvalidOrder(this.id + ' createOrder() requires the price and amount argument for market buy orders to calculate the total cost to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend (quote quantity) in the amount argument');
1146
+ }
1147
+ const amountString = this.numberToString(amount);
1148
+ const priceString = this.numberToString(price);
1149
+ const costRequest = Precise.stringMul(amountString, priceString);
1150
+ quoteAmount = this.costToPrecision(symbol, costRequest);
1151
+ }
1152
+ else {
1153
+ if (amount === undefined) {
1154
+ throw new ArgumentsRequired(this.id + ' When createMarketBuyOrderRequiresPrice is false, "amount" is required and should be the total quote amount to spend.');
1155
+ }
1156
+ quoteAmount = this.costToPrecision(symbol, amount);
1157
+ }
1158
+ return quoteAmount;
1159
+ }
1160
+ /**
1161
+ * @method
1162
+ * @name upbit#createOrder
1163
+ * @description create a trade order
1164
+ * @see https://docs.upbit.com/kr/reference/주문하기
1165
+ * @see https://global-docs.upbit.com/reference/order
1166
+ * @param {string} symbol unified symbol of the market to create an order in
1167
+ * @param {string} type supports 'market' and 'limit'. if params.ordType is set to best, a best-type order will be created regardless of the value of type.
1168
+ * @param {string} side 'buy' or 'sell'
1169
+ * @param {float} amount how much you want to trade in units of the base currency
1170
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1171
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1172
+ * @param {float} [params.cost] for market buy and best buy orders, the quote quantity that can be used as an alternative for the amount
1173
+ * @param {string} [params.ordType] this field can be used to place a ‘best’ type order
1174
+ * @param {string} [params.timeInForce] 'IOC' or 'FOK'. only for limit or best type orders. this field is required when the order type is 'best'.
1175
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1176
+ */
1177
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1178
+ await this.loadMarkets();
1179
+ const market = this.market(symbol);
1180
+ let orderSide = undefined;
1181
+ if (side === 'buy') {
1182
+ orderSide = 'bid';
1183
+ }
1184
+ else if (side === 'sell') {
1185
+ orderSide = 'ask';
1186
+ }
1187
+ else {
1188
+ throw new InvalidOrder(this.id + ' createOrder() supports only buy or sell in the side argument.');
1189
+ }
1190
+ const request = {
1191
+ 'market': market['id'],
1192
+ 'side': orderSide,
1193
+ };
1194
+ if (type === 'limit') {
1195
+ if (price === undefined || amount === undefined) {
1196
+ throw new ArgumentsRequired(this.id + ' the limit type order in createOrder() is required price and amount.');
1197
+ }
1198
+ request['ord_type'] = 'limit';
1199
+ request['price'] = this.priceToPrecision(symbol, price);
1200
+ request['volume'] = this.amountToPrecision(symbol, amount);
1201
+ }
1202
+ else if (type === 'market') {
1203
+ if (side === 'buy') {
1204
+ request['ord_type'] = 'price';
1205
+ const orderPrice = this.calcOrderPrice(symbol, amount, price, params);
1206
+ request['price'] = orderPrice;
1207
+ }
1208
+ else {
1209
+ if (amount === undefined) {
1210
+ throw new ArgumentsRequired(this.id + ' the market sell type order in createOrder() is required amount.');
1211
+ }
1212
+ request['ord_type'] = 'market';
1213
+ request['volume'] = this.amountToPrecision(symbol, amount);
1214
+ }
1215
+ }
1216
+ else {
1217
+ throw new InvalidOrder(this.id + ' createOrder() supports only limit or market types in the type argument.');
1218
+ }
1219
+ const customType = this.safeString2(params, 'ordType', 'ord_type');
1220
+ if (customType === 'best') {
1221
+ params = this.omit(params, ['ordType', 'ord_type']);
1222
+ request['ord_type'] = 'best';
1223
+ if (side === 'buy') {
1224
+ const orderPrice = this.calcOrderPrice(symbol, amount, price, params);
1225
+ request['price'] = orderPrice;
1226
+ }
1227
+ else {
1228
+ if (amount === undefined) {
1229
+ throw new ArgumentsRequired(this.id + ' the best sell type order in createOrder() is required amount.');
1230
+ }
1231
+ request['volume'] = this.amountToPrecision(symbol, amount);
1232
+ }
1233
+ }
1234
+ const clientOrderId = this.safeString(params, 'clientOrderId');
1235
+ if (clientOrderId !== undefined) {
1236
+ request['identifier'] = clientOrderId;
1237
+ }
1238
+ if (request['ord_type'] !== 'market' && request['ord_type'] !== 'price') {
1239
+ const timeInForce = this.safeStringLower2(params, 'timeInForce', 'time_in_force');
1240
+ params = this.omit(params, ['timeInForce']);
1241
+ if (timeInForce !== undefined) {
1242
+ request['time_in_force'] = timeInForce;
1243
+ }
1244
+ else {
1245
+ if (request['ord_type'] === 'best') {
1246
+ throw new ArgumentsRequired(this.id + ' the best type order in createOrder() is required timeInForce.');
1247
+ }
1248
+ }
1249
+ }
1250
+ params = this.omit(params, ['clientOrderId', 'cost']);
1251
+ const response = await this.privatePostOrders(this.extend(request, params));
1252
+ //
1253
+ // {
1254
+ // "uuid": "cdd92199-2897-4e14-9448-f923320408ad",
1255
+ // "side": "bid",
1256
+ // "ord_type": "limit",
1257
+ // "price": "100.0",
1258
+ // "avg_price": "0.0",
1259
+ // "state": "wait",
1260
+ // "market": "KRW-BTC",
1261
+ // "created_at": "2018-04-10T15:42:23+09:00",
1262
+ // "volume": "0.01",
1263
+ // "remaining_volume": "0.01",
1264
+ // "reserved_fee": "0.0015",
1265
+ // "remaining_fee": "0.0015",
1266
+ // "paid_fee": "0.0",
1267
+ // "locked": "1.0015",
1268
+ // "executed_volume": "0.0",
1269
+ // "trades_count": 0
1270
+ // }
1271
+ //
1272
+ return this.parseOrder(response);
1273
+ }
1274
+ /**
1275
+ * @method
1276
+ * @name upbit#cancelOrder
1277
+ * @see https://docs.upbit.com/kr/reference/주문-취소
1278
+ * @see https://global-docs.upbit.com/reference/order-cancel
1279
+ * @description cancels an open order
1280
+ * @param {string} id order id
1281
+ * @param {string} symbol not used by upbit cancelOrder ()
1282
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1283
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1284
+ */
1285
+ async cancelOrder(id, symbol = undefined, params = {}) {
1286
+ await this.loadMarkets();
1287
+ const request = {
1288
+ 'uuid': id,
1289
+ };
1290
+ const response = await this.privateDeleteOrder(this.extend(request, params));
1291
+ //
1292
+ // {
1293
+ // "uuid": "cdd92199-2897-4e14-9448-f923320408ad",
1294
+ // "side": "bid",
1295
+ // "ord_type": "limit",
1296
+ // "price": "100.0",
1297
+ // "state": "wait",
1298
+ // "market": "KRW-BTC",
1299
+ // "created_at": "2018-04-10T15:42:23+09:00",
1300
+ // "volume": "0.01",
1301
+ // "remaining_volume": "0.01",
1302
+ // "reserved_fee": "0.0015",
1303
+ // "remaining_fee": "0.0015",
1304
+ // "paid_fee": "0.0",
1305
+ // "locked": "1.0015",
1306
+ // "executed_volume": "0.0",
1307
+ // "trades_count": 0
1308
+ // }
1309
+ //
1310
+ return this.parseOrder(response);
1311
+ }
1312
+ /**
1313
+ * @method
1314
+ * @name upbit#editOrder
1315
+ * @see https://docs.upbit.com/kr/reference/취소-후-재주문
1316
+ * @see https://global-docs.upbit.com/reference/cancel-and-new
1317
+ * @description canceled existing order and create new order. It's only generated same side and symbol as the canceled order. it returns the data of the canceled order, except for `new_order_uuid` and `new_identifier`. to get the details of the new order, use `fetchOrder(new_order_uuid)`.
1318
+ * @param {string} id the uuid of the previous order you want to edit.
1319
+ * @param {string} symbol the symbol of the new order. it must be the same as the symbol of the previous order.
1320
+ * @param {string} type the type of the new order. only limit or market is accepted. if params.newOrdType is set to best, a best-type order will be created regardless of the value of type.
1321
+ * @param {string} side the side of the new order. it must be the same as the side of the previous order.
1322
+ * @param {number} amount the amount of the asset you want to buy or sell. It could be overridden by specifying the new_volume parameter in params.
1323
+ * @param {number} price the price of the asset you want to buy or sell. It could be overridden by specifying the new_price parameter in params.
1324
+ * @param {object} [params] extra parameters specific to the exchange API endpoint.
1325
+ * @param {string} [params.clientOrderId] to identify the previous order, either the id or this field is required in this method.
1326
+ * @param {float} [params.cost] for market buy and best buy orders, the quote quantity that can be used as an alternative for the amount.
1327
+ * @param {string} [params.newTimeInForce] 'IOC' or 'FOK'. only for limit or best type orders. this field is required when the order type is 'best'.
1328
+ * @param {string} [params.newClientOrderId] the order ID that the user can define.
1329
+ * @param {string} [params.newOrdType] this field only accepts limit, price, market, or best. You can refer to the Upbit developer documentation for details on how to use this field.
1330
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1331
+ */
1332
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1333
+ await this.loadMarkets();
1334
+ const request = {};
1335
+ const prevClientOrderId = this.safeString(params, 'clientOrderId');
1336
+ params = this.omit(params, 'clientOrderId');
1337
+ if (id !== undefined) {
1338
+ request['prev_order_uuid'] = id;
1339
+ }
1340
+ else if (prevClientOrderId !== undefined) {
1341
+ request['prev_order_identifier'] = prevClientOrderId;
1342
+ }
1343
+ else {
1344
+ throw new ArgumentsRequired(this.id + ' editOrder() is required id or clientOrderId.');
1345
+ }
1346
+ if (type === 'limit') {
1347
+ if (price === undefined || amount === undefined) {
1348
+ throw new ArgumentsRequired(this.id + ' editOrder() is required price and amount to create limit type order.');
1349
+ }
1350
+ request['new_ord_type'] = 'limit';
1351
+ request['new_price'] = this.priceToPrecision(symbol, price);
1352
+ request['new_volume'] = this.amountToPrecision(symbol, amount);
1353
+ }
1354
+ else if (type === 'market') {
1355
+ if (side === 'buy') {
1356
+ request['new_ord_type'] = 'price';
1357
+ const orderPrice = this.calcOrderPrice(symbol, amount, price, params);
1358
+ request['new_price'] = orderPrice;
1359
+ }
1360
+ else {
1361
+ if (amount === undefined) {
1362
+ throw new ArgumentsRequired(this.id + ' editOrder() is required amount to create market sell type order.');
1363
+ }
1364
+ request['new_ord_type'] = 'market';
1365
+ request['new_volume'] = this.amountToPrecision(symbol, amount);
1366
+ }
1367
+ }
1368
+ else {
1369
+ throw new InvalidOrder(this.id + ' editOrder() supports only limit or market types in the type argument.');
1370
+ }
1371
+ const customType = this.safeString2(params, 'newOrdType', 'new_ord_type');
1372
+ if (customType === 'best') {
1373
+ params = this.omit(params, ['newOrdType', 'new_ord_type']);
1374
+ request['new_ord_type'] = 'best';
1375
+ if (side === 'buy') {
1376
+ const orderPrice = this.calcOrderPrice(symbol, amount, price, params);
1377
+ request['new_price'] = orderPrice;
1378
+ }
1379
+ else {
1380
+ if (amount === undefined) {
1381
+ throw new ArgumentsRequired(this.id + ' editOrder() is required amount to create best sell order.');
1382
+ }
1383
+ request['new_volume'] = this.amountToPrecision(symbol, amount);
1384
+ }
1385
+ }
1386
+ const clientOrderId = this.safeString(params, 'newClientOrderId');
1387
+ if (clientOrderId !== undefined) {
1388
+ request['new_identifier'] = clientOrderId;
1389
+ }
1390
+ if (request['new_ord_type'] !== 'market' && request['new_ord_type'] !== 'price') {
1391
+ const timeInForce = this.safeStringLower2(params, 'newTimeInForce', 'new_time_in_force');
1392
+ params = this.omit(params, ['newTimeInForce', 'new_time_in_force']);
1393
+ if (timeInForce !== undefined) {
1394
+ request['new_time_in_force'] = timeInForce;
1395
+ }
1396
+ else {
1397
+ if (request['new_ord_type'] === 'best') {
1398
+ throw new ArgumentsRequired(this.id + ' the best type order is required timeInForce.');
1399
+ }
1400
+ }
1401
+ }
1402
+ params = this.omit(params, ['newClientOrderId', 'cost']);
1403
+ // console.log ('check the each request params: ', request);
1404
+ const response = await this.privatePostOrdersCancelAndNew(this.extend(request, params));
1405
+ // {
1406
+ // uuid: '63b38774-27db-4439-ac20-1be16a24d18e', //previous order data
1407
+ // side: 'bid', //previous order data
1408
+ // ord_type: 'limit', //previous order data
1409
+ // price: '100000000', //previous order data
1410
+ // state: 'wait', //previous order data
1411
+ // market: 'KRW-BTC', //previous order data
1412
+ // created_at: '2025-04-01T15:30:47+09:00', //previous order data
1413
+ // volume: '0.00008', //previous order data
1414
+ // remaining_volume: '0.00008', //previous order data
1415
+ // reserved_fee: '4', //previous order data
1416
+ // remaining_fee: '4', //previous order data
1417
+ // paid_fee: '0', //previous order data
1418
+ // locked: '8004', //previous order data
1419
+ // executed_volume: '0', //previous order data
1420
+ // trades_count: '0', //previous order data
1421
+ // identifier: '21', //previous order data
1422
+ // new_order_uuid: 'cb1cce56-6237-4a78-bc11-4cfffc1bb4c2', // new order data
1423
+ // new_order_identifier: '22' // new order data
1424
+ // }
1425
+ const result = {};
1426
+ result['uuid'] = this.safeString(response, 'new_order_uuid');
1427
+ result['identifier'] = this.safeString(response, 'new_order_identifier');
1428
+ result['side'] = this.safeString(response, 'side');
1429
+ result['market'] = this.safeString(response, 'market');
1430
+ return this.parseOrder(result);
1431
+ }
1432
+ /**
1433
+ * @method
1434
+ * @name upbit#fetchDeposits
1435
+ * @see https://docs.upbit.com/kr/reference/입금-리스트-조회
1436
+ * @see https://global-docs.upbit.com/reference/deposit-list-inquiry
1437
+ * @description fetch all deposits made to an account
1438
+ * @param {string} code unified currency code
1439
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1440
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1441
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1442
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1443
+ */
1444
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1445
+ await this.loadMarkets();
1446
+ const request = {
1447
+ // 'page': 1,
1448
+ // 'order_by': 'asc', // 'desc'
1449
+ };
1450
+ let currency = undefined;
1451
+ if (code !== undefined) {
1452
+ currency = this.currency(code);
1453
+ request['currency'] = currency['id'];
1454
+ }
1455
+ if (limit !== undefined) {
1456
+ request['limit'] = limit; // default is 100
1457
+ }
1458
+ const response = await this.privateGetDeposits(this.extend(request, params));
1459
+ //
1460
+ // [
1461
+ // {
1462
+ // "type": "deposit",
1463
+ // "uuid": "94332e99-3a87-4a35-ad98-28b0c969f830",
1464
+ // "currency": "KRW",
1465
+ // "txid": "9e37c537-6849-4c8b-a134-57313f5dfc5a",
1466
+ // "state": "ACCEPTED",
1467
+ // "created_at": "2017-12-08T15:38:02+09:00",
1468
+ // "done_at": "2017-12-08T15:38:02+09:00",
1469
+ // "amount": "100000.0",
1470
+ // "fee": "0.0"
1471
+ // },
1472
+ // ...,
1473
+ // ]
1474
+ //
1475
+ return this.parseTransactions(response, currency, since, limit);
1476
+ }
1477
+ /**
1478
+ * @method
1479
+ * @name upbit#fetchDeposit
1480
+ * @description fetch information on a deposit
1481
+ * @see https://docs.upbit.com/kr/reference/개별-입금-조회
1482
+ * @see https://global-docs.upbit.com/reference/individual-deposit-inquiry
1483
+ * @param {string} id the unique id for the deposit
1484
+ * @param {string} [code] unified currency code of the currency deposited
1485
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1486
+ * @param {string} [params.txid] withdrawal transaction id, the id argument is reserved for uuid
1487
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1488
+ */
1489
+ async fetchDeposit(id, code = undefined, params = {}) {
1490
+ await this.loadMarkets();
1491
+ const request = {
1492
+ 'uuid': id,
1493
+ };
1494
+ let currency = undefined;
1495
+ if (code !== undefined) {
1496
+ currency = this.currency(code);
1497
+ request['currency'] = currency['id'];
1498
+ }
1499
+ const response = await this.privateGetDeposit(this.extend(request, params));
1500
+ //
1501
+ // {
1502
+ // "type": "deposit",
1503
+ // "uuid": "7f54527e-2eee-4268-860e-fd8b9d7fe3c7",
1504
+ // "currency": "ADA",
1505
+ // "net_type": "ADA",
1506
+ // "txid": "99795bbfeca91eaa071068bb659b33eeb65d8aaff2551fdf7c78f345d188952b",
1507
+ // "state": "ACCEPTED",
1508
+ // "created_at": "2023-12-12T04:58:41Z",
1509
+ // "done_at": "2023-12-12T05:31:50Z",
1510
+ // "amount": "35.72344",
1511
+ // "fee": "0.0",
1512
+ // "transaction_type": "default"
1513
+ // }
1514
+ //
1515
+ return this.parseTransaction(response, currency);
1516
+ }
1517
+ /**
1518
+ * @method
1519
+ * @name upbit#fetchWithdrawals
1520
+ * @see https://docs.upbit.com/kr/reference/전체-출금-조회
1521
+ * @see https://global-docs.upbit.com/reference/withdrawal-list-inquiry
1522
+ * @description fetch all withdrawals made from an account
1523
+ * @param {string} code unified currency code
1524
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1525
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1526
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1527
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1528
+ */
1529
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1530
+ await this.loadMarkets();
1531
+ const request = {
1532
+ // 'state': 'submitting', // 'submitted', 'almost_accepted', 'rejected', 'accepted', 'processing', 'done', 'canceled'
1533
+ };
1534
+ let currency = undefined;
1535
+ if (code !== undefined) {
1536
+ currency = this.currency(code);
1537
+ request['currency'] = currency['id'];
1538
+ }
1539
+ if (limit !== undefined) {
1540
+ request['limit'] = limit; // default is 100
1541
+ }
1542
+ const response = await this.privateGetWithdraws(this.extend(request, params));
1543
+ //
1544
+ // [
1545
+ // {
1546
+ // "type": "withdraw",
1547
+ // "uuid": "9f432943-54e0-40b7-825f-b6fec8b42b79",
1548
+ // "currency": "BTC",
1549
+ // "txid": null,
1550
+ // "state": "processing",
1551
+ // "created_at": "2018-04-13T11:24:01+09:00",
1552
+ // "done_at": null,
1553
+ // "amount": "0.01",
1554
+ // "fee": "0.0",
1555
+ // "krw_amount": "80420.0"
1556
+ // },
1557
+ // ...,
1558
+ // ]
1559
+ //
1560
+ return this.parseTransactions(response, currency, since, limit);
1561
+ }
1562
+ /**
1563
+ * @method
1564
+ * @name upbit#fetchWithdrawal
1565
+ * @description fetch data on a currency withdrawal via the withdrawal id
1566
+ * @see https://docs.upbit.com/kr/reference/개별-출금-조회
1567
+ * @see https://global-docs.upbit.com/reference/individual-withdrawal-inquiry
1568
+ * @param {string} id the unique id for the withdrawal
1569
+ * @param {string} [code] unified currency code of the currency withdrawn
1570
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1571
+ * @param {string} [params.txid] withdrawal transaction id, the id argument is reserved for uuid
1572
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1573
+ */
1574
+ async fetchWithdrawal(id, code = undefined, params = {}) {
1575
+ await this.loadMarkets();
1576
+ const request = {
1577
+ 'uuid': id,
1578
+ };
1579
+ let currency = undefined;
1580
+ if (code !== undefined) {
1581
+ currency = this.currency(code);
1582
+ request['currency'] = currency['id'];
1583
+ }
1584
+ const response = await this.privateGetWithdraw(this.extend(request, params));
1585
+ //
1586
+ // {
1587
+ // "type": "withdraw",
1588
+ // "uuid": "95ef274b-23a6-4de4-95b0-5cbef4ca658f",
1589
+ // "currency": "ADA",
1590
+ // "net_type": "ADA",
1591
+ // "txid": "b1528f149297a71671b86636f731f8fdb0ff53da0f1d8c19093d59df96f34583",
1592
+ // "state": "DONE",
1593
+ // "created_at": "2023-12-14T02:46:52Z",
1594
+ // "done_at": "2023-12-14T03:10:11Z",
1595
+ // "amount": "35.22344",
1596
+ // "fee": "0.5",
1597
+ // "transaction_type": "default"
1598
+ // }
1599
+ //
1600
+ return this.parseTransaction(response, currency);
1601
+ }
1602
+ parseTransactionStatus(status) {
1603
+ const statuses = {
1604
+ 'submitting': 'pending',
1605
+ 'submitted': 'pending',
1606
+ 'almost_accepted': 'pending',
1607
+ 'rejected': 'failed',
1608
+ 'accepted': 'ok',
1609
+ 'processing': 'pending',
1610
+ 'done': 'ok',
1611
+ 'canceled': 'canceled', // 취소됨
1612
+ };
1613
+ return this.safeString(statuses, status, status);
1614
+ }
1615
+ parseTransaction(transaction, currency = undefined) {
1616
+ //
1617
+ // fetchDeposits, fetchDeposit
1618
+ //
1619
+ // {
1620
+ // "type": "deposit",
1621
+ // "uuid": "94332e99-3a87-4a35-ad98-28b0c969f830",
1622
+ // "currency": "KRW",
1623
+ // "txid": "9e37c537-6849-4c8b-a134-57313f5dfc5a",
1624
+ // "state": "ACCEPTED",
1625
+ // "created_at": "2017-12-08T15:38:02+09:00",
1626
+ // "done_at": "2017-12-08T15:38:02+09:00",
1627
+ // "amount": "100000.0",
1628
+ // "fee": "0.0"
1629
+ // }
1630
+ //
1631
+ // fetchWithdrawals, fetchWithdrawal
1632
+ //
1633
+ // {
1634
+ // "type": "withdraw",
1635
+ // "uuid": "9f432943-54e0-40b7-825f-b6fec8b42b79",
1636
+ // "currency": "BTC",
1637
+ // "txid": "cd81e9b45df8da29f936836e58c907a106057e454a45767a7b06fcb19b966bba",
1638
+ // "state": "processing",
1639
+ // "created_at": "2018-04-13T11:24:01+09:00",
1640
+ // "done_at": null,
1641
+ // "amount": "0.01",
1642
+ // "fee": "0.0",
1643
+ // "krw_amount": "80420.0"
1644
+ // }
1645
+ //
1646
+ const address = undefined; // not present in the data structure received from the exchange
1647
+ const tag = undefined; // not present in the data structure received from the exchange
1648
+ const updatedRaw = this.safeString(transaction, 'done_at');
1649
+ const timestamp = this.parse8601(this.safeString(transaction, 'created_at', updatedRaw));
1650
+ let type = this.safeString(transaction, 'type');
1651
+ if (type === 'withdraw') {
1652
+ type = 'withdrawal';
1653
+ }
1654
+ const currencyId = this.safeString(transaction, 'currency');
1655
+ const code = this.safeCurrencyCode(currencyId, currency);
1656
+ return {
1657
+ 'info': transaction,
1658
+ 'id': this.safeString(transaction, 'uuid'),
1659
+ 'currency': code,
1660
+ 'amount': this.safeNumber(transaction, 'amount'),
1661
+ 'network': undefined,
1662
+ 'address': address,
1663
+ 'addressTo': undefined,
1664
+ 'addressFrom': undefined,
1665
+ 'tag': tag,
1666
+ 'tagTo': undefined,
1667
+ 'tagFrom': undefined,
1668
+ 'status': this.parseTransactionStatus(this.safeStringLower(transaction, 'state')),
1669
+ 'type': type,
1670
+ 'updated': this.parse8601(updatedRaw),
1671
+ 'txid': this.safeString(transaction, 'txid'),
1672
+ 'timestamp': timestamp,
1673
+ 'datetime': this.iso8601(timestamp),
1674
+ 'internal': undefined,
1675
+ 'comment': undefined,
1676
+ 'fee': {
1677
+ 'currency': code,
1678
+ 'cost': this.safeNumber(transaction, 'fee'),
1679
+ },
1680
+ };
1681
+ }
1682
+ parseOrderStatus(status) {
1683
+ const statuses = {
1684
+ 'wait': 'open',
1685
+ 'done': 'closed',
1686
+ 'cancel': 'canceled',
1687
+ };
1688
+ return this.safeString(statuses, status, status);
1689
+ }
1690
+ parseOrder(order, market = undefined) {
1691
+ //
1692
+ // {
1693
+ // "uuid": "a08f09b1-1718-42e2-9358-f0e5e083d3ee",
1694
+ // "side": "bid",
1695
+ // "ord_type": "limit",
1696
+ // "price": "17417000.0",
1697
+ // "state": "done",
1698
+ // "market": "KRW-BTC",
1699
+ // "created_at": "2018-04-05T14:09:14+09:00",
1700
+ // "volume": "1.0",
1701
+ // "remaining_volume": "0.0",
1702
+ // "reserved_fee": "26125.5",
1703
+ // "remaining_fee": "25974.0",
1704
+ // "paid_fee": "151.5",
1705
+ // "locked": "17341974.0",
1706
+ // "executed_volume": "1.0",
1707
+ // "trades_count": 2,
1708
+ // "trades": [
1709
+ // {
1710
+ // "market": "KRW-BTC",
1711
+ // "uuid": "78162304-1a4d-4524-b9e6-c9a9e14d76c3",
1712
+ // "price": "101000.0",
1713
+ // "volume": "0.77368323",
1714
+ // "funds": "78142.00623",
1715
+ // "ask_fee": "117.213009345",
1716
+ // "bid_fee": "117.213009345",
1717
+ // "created_at": "2018-04-05T14:09:15+09:00",
1718
+ // "side": "bid",
1719
+ // },
1720
+ // {
1721
+ // "market": "KRW-BTC",
1722
+ // "uuid": "f73da467-c42f-407d-92fa-e10d86450a20",
1723
+ // "price": "101000.0",
1724
+ // "volume": "0.22631677",
1725
+ // "funds": "22857.99377",
1726
+ // "ask_fee": "34.286990655", // missing in market orders
1727
+ // "bid_fee": "34.286990655", // missing in market orders
1728
+ // "created_at": "2018-04-05T14:09:15+09:00", // missing in market orders
1729
+ // "side": "bid",
1730
+ // },
1731
+ // ],
1732
+ // }
1733
+ //
1734
+ // fetchOpenOrders, fetchClosedOrders, fetchCanceledOrders
1735
+ //
1736
+ // {
1737
+ // "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
1738
+ // "side": "ask",
1739
+ // "ord_type": "limit",
1740
+ // "price": "1.5",
1741
+ // "state": "wait",
1742
+ // "market": "SGD-XRP",
1743
+ // "created_at": "2024-06-05T09:37:10Z",
1744
+ // "volume": "10",
1745
+ // "remaining_volume": "10",
1746
+ // "reserved_fee": "0",
1747
+ // "remaining_fee": "0",
1748
+ // "paid_fee": "0",
1749
+ // "locked": "10",
1750
+ // "executed_volume": "0",
1751
+ // "executed_funds": "0",
1752
+ // "trades_count": 0,
1753
+ // "time_in_force": "ioc"
1754
+ // }
1755
+ //
1756
+ // {
1757
+ // uuid: '63b38774-27db-4439-ac20-1be16a24d18e',
1758
+ // side: 'bid',
1759
+ // ord_type: 'limit',
1760
+ // price: '100000000',
1761
+ // state: 'wait',
1762
+ // market: 'KRW-BTC',
1763
+ // created_at: '2025-04-01T15:30:47+09:00',
1764
+ // volume: '0.00008',
1765
+ // remaining_volume: '0.00008',
1766
+ // reserved_fee: '4',
1767
+ // remaining_fee: '4',
1768
+ // paid_fee: '0',
1769
+ // locked: '8004',
1770
+ // executed_volume: '0',
1771
+ // trades_count: '0',
1772
+ // identifier: '21',
1773
+ // new_order_uuid: 'cb1cce56-6237-4a78-bc11-4cfffc1bb4c2',
1774
+ // new_order_identifier: '22'
1775
+ // }
1776
+ const id = this.safeString(order, 'uuid');
1777
+ let side = this.safeString(order, 'side');
1778
+ if (side === 'bid') {
1779
+ side = 'buy';
1780
+ }
1781
+ else {
1782
+ side = 'sell';
1783
+ }
1784
+ const identifier = this.safeString(order, 'identifier');
1785
+ let type = this.safeString(order, 'ord_type');
1786
+ const timestamp = this.parse8601(this.safeString(order, 'created_at'));
1787
+ const status = this.parseOrderStatus(this.safeString(order, 'state'));
1788
+ let lastTradeTimestamp = undefined;
1789
+ let price = this.safeString(order, 'price');
1790
+ const amount = this.safeString(order, 'volume');
1791
+ const remaining = this.safeString(order, 'remaining_volume');
1792
+ const filled = this.safeString(order, 'executed_volume');
1793
+ let cost = undefined;
1794
+ if (type === 'price') {
1795
+ type = 'market';
1796
+ cost = price;
1797
+ price = undefined;
1798
+ }
1799
+ let average = undefined;
1800
+ let fee = undefined;
1801
+ let feeCost = this.safeString(order, 'paid_fee');
1802
+ const marketId = this.safeString(order, 'market');
1803
+ market = this.safeMarket(marketId, market);
1804
+ let trades = this.safeValue(order, 'trades', []);
1805
+ trades = this.parseTrades(trades, market, undefined, undefined, {
1806
+ 'order': id,
1807
+ 'type': type,
1808
+ });
1809
+ const numTrades = trades.length;
1810
+ if (numTrades > 0) {
1811
+ // the timestamp in fetchOrder trades is missing
1812
+ lastTradeTimestamp = trades[numTrades - 1]['timestamp'];
1813
+ let getFeesFromTrades = false;
1814
+ if (feeCost === undefined) {
1815
+ getFeesFromTrades = true;
1816
+ feeCost = '0';
1817
+ }
1818
+ cost = '0';
1819
+ for (let i = 0; i < numTrades; i++) {
1820
+ const trade = trades[i];
1821
+ cost = Precise.stringAdd(cost, this.safeString(trade, 'cost'));
1822
+ if (getFeesFromTrades) {
1823
+ const tradeFee = this.safeValue(trades[i], 'fee', {});
1824
+ const tradeFeeCost = this.safeString(tradeFee, 'cost');
1825
+ if (tradeFeeCost !== undefined) {
1826
+ feeCost = Precise.stringAdd(feeCost, tradeFeeCost);
1827
+ }
1828
+ }
1829
+ }
1830
+ average = Precise.stringDiv(cost, filled);
1831
+ }
1832
+ if (feeCost !== undefined) {
1833
+ fee = {
1834
+ 'currency': market['quote'],
1835
+ 'cost': feeCost,
1836
+ };
1837
+ }
1838
+ return this.safeOrder({
1839
+ 'info': order,
1840
+ 'id': id,
1841
+ 'clientOrderId': identifier,
1842
+ 'timestamp': timestamp,
1843
+ 'datetime': this.iso8601(timestamp),
1844
+ 'lastTradeTimestamp': lastTradeTimestamp,
1845
+ 'symbol': market['symbol'],
1846
+ 'type': type,
1847
+ 'timeInForce': this.safeStringUpper(order, 'time_in_force'),
1848
+ 'postOnly': undefined,
1849
+ 'side': side,
1850
+ 'price': price,
1851
+ 'triggerPrice': undefined,
1852
+ 'cost': this.parseNumber(cost),
1853
+ 'average': this.parseNumber(average),
1854
+ 'amount': amount,
1855
+ 'filled': filled,
1856
+ 'remaining': remaining,
1857
+ 'status': status,
1858
+ 'fee': fee,
1859
+ 'trades': trades,
1860
+ });
1861
+ }
1862
+ /**
1863
+ * @method
1864
+ * @name upbit#fetchOpenOrders
1865
+ * @description fetch all unfilled currently open orders
1866
+ * @see https://docs.upbit.com/kr/reference/대기-주문-조회
1867
+ * @see https://global-docs.upbit.com/reference/open-order
1868
+ * @param {string} symbol unified market symbol
1869
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1870
+ * @param {int} [limit] the maximum number of open order structures to retrieve
1871
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1872
+ * @param {string} [params.state] default is 'wait', set to 'watch' for stop limit orders
1873
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1874
+ */
1875
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1876
+ await this.loadMarkets();
1877
+ const request = {};
1878
+ let market = undefined;
1879
+ if (symbol !== undefined) {
1880
+ market = this.market(symbol);
1881
+ request['market'] = market['id'];
1882
+ }
1883
+ if (limit !== undefined) {
1884
+ request['limit'] = limit;
1885
+ }
1886
+ const response = await this.privateGetOrdersOpen(this.extend(request, params));
1887
+ //
1888
+ // [
1889
+ // {
1890
+ // "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
1891
+ // "side": "ask",
1892
+ // "ord_type": "limit",
1893
+ // "price": "1.5",
1894
+ // "state": "wait",
1895
+ // "market": "SGD-XRP",
1896
+ // "created_at": "2024-06-05T09:37:10Z",
1897
+ // "volume": "10",
1898
+ // "remaining_volume": "10",
1899
+ // "reserved_fee": "0",
1900
+ // "remaining_fee": "0",
1901
+ // "paid_fee": "0",
1902
+ // "locked": "10",
1903
+ // "executed_volume": "0",
1904
+ // "executed_funds": "0",
1905
+ // "trades_count": 0
1906
+ // }
1907
+ // ]
1908
+ //
1909
+ return this.parseOrders(response, market, since, limit);
1910
+ }
1911
+ /**
1912
+ * @method
1913
+ * @name upbit#fetchClosedOrders
1914
+ * @description fetches information on multiple closed orders made by the user
1915
+ * @see https://docs.upbit.com/kr/reference/종료-주문-조회
1916
+ * @see https://global-docs.upbit.com/reference/closed-order
1917
+ * @param {string} symbol unified market symbol of the market orders were made in
1918
+ * @param {int} [since] the earliest time in ms to fetch orders for
1919
+ * @param {int} [limit] the maximum number of order structures to retrieve
1920
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1921
+ * @param {int} [params.until] timestamp in ms of the latest order
1922
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1923
+ */
1924
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1925
+ await this.loadMarkets();
1926
+ let request = {
1927
+ 'state': 'done',
1928
+ };
1929
+ let market = undefined;
1930
+ if (symbol !== undefined) {
1931
+ market = this.market(symbol);
1932
+ request['market'] = market['id'];
1933
+ }
1934
+ if (since !== undefined) {
1935
+ request['start_time'] = since;
1936
+ }
1937
+ if (limit !== undefined) {
1938
+ request['limit'] = limit;
1939
+ }
1940
+ [request, params] = this.handleUntilOption('end_time', request, params);
1941
+ const response = await this.privateGetOrdersClosed(this.extend(request, params));
1942
+ //
1943
+ // [
1944
+ // {
1945
+ // "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
1946
+ // "side": "ask",
1947
+ // "ord_type": "limit",
1948
+ // "price": "1.5",
1949
+ // "state": "done",
1950
+ // "market": "SGD-XRP",
1951
+ // "created_at": "2024-06-05T09:37:10Z",
1952
+ // "volume": "10",
1953
+ // "remaining_volume": "10",
1954
+ // "reserved_fee": "0",
1955
+ // "remaining_fee": "0",
1956
+ // "paid_fee": "0",
1957
+ // "locked": "10",
1958
+ // "executed_volume": "0",
1959
+ // "executed_funds": "0",
1960
+ // "trades_count": 0,
1961
+ // "time_in_force": "ioc"
1962
+ // }
1963
+ // ]
1964
+ //
1965
+ return this.parseOrders(response, market, since, limit);
1966
+ }
1967
+ /**
1968
+ * @method
1969
+ * @name upbit#fetchCanceledOrders
1970
+ * @description fetches information on multiple canceled orders made by the user
1971
+ * @see https://docs.upbit.com/kr/reference/종료-주문-조회
1972
+ * @see https://global-docs.upbit.com/reference/closed-order
1973
+ * @param {string} symbol unified market symbol of the market orders were made in
1974
+ * @param {int} [since] timestamp in ms of the earliest order, default is undefined
1975
+ * @param {int} [limit] max number of orders to return, default is undefined
1976
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1977
+ * @param {int} [params.until] timestamp in ms of the latest order
1978
+ * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1979
+ */
1980
+ async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1981
+ await this.loadMarkets();
1982
+ let request = {
1983
+ 'state': 'cancel',
1984
+ };
1985
+ let market = undefined;
1986
+ if (symbol !== undefined) {
1987
+ market = this.market(symbol);
1988
+ request['market'] = market['id'];
1989
+ }
1990
+ if (since !== undefined) {
1991
+ request['start_time'] = since;
1992
+ }
1993
+ if (limit !== undefined) {
1994
+ request['limit'] = limit;
1995
+ }
1996
+ [request, params] = this.handleUntilOption('end_time', request, params);
1997
+ const response = await this.privateGetOrdersClosed(this.extend(request, params));
1998
+ //
1999
+ // [
2000
+ // {
2001
+ // "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
2002
+ // "side": "ask",
2003
+ // "ord_type": "limit",
2004
+ // "price": "1.5",
2005
+ // "state": "cancel",
2006
+ // "market": "SGD-XRP",
2007
+ // "created_at": "2024-06-05T09:37:10Z",
2008
+ // "volume": "10",
2009
+ // "remaining_volume": "10",
2010
+ // "reserved_fee": "0",
2011
+ // "remaining_fee": "0",
2012
+ // "paid_fee": "0",
2013
+ // "locked": "10",
2014
+ // "executed_volume": "0",
2015
+ // "executed_funds": "0",
2016
+ // "trades_count": 0,
2017
+ // "time_in_force": "ioc"
2018
+ // }
2019
+ // ]
2020
+ //
2021
+ return this.parseOrders(response, market, since, limit);
2022
+ }
2023
+ /**
2024
+ * @method
2025
+ * @name upbit#fetchOrder
2026
+ * @see https://docs.upbit.com/kr/reference/개별-주문-조회
2027
+ * @see https://global-docs.upbit.com/reference/individual-order-inquiry
2028
+ * @description fetches information on an order made by the user
2029
+ * @param {string} id order id
2030
+ * @param {string} symbol not used by upbit fetchOrder
2031
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2032
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2033
+ */
2034
+ async fetchOrder(id, symbol = undefined, params = {}) {
2035
+ await this.loadMarkets();
2036
+ const request = {
2037
+ 'uuid': id,
2038
+ };
2039
+ const response = await this.privateGetOrder(this.extend(request, params));
2040
+ //
2041
+ // {
2042
+ // "uuid": "a08f09b1-1718-42e2-9358-f0e5e083d3ee",
2043
+ // "side": "bid",
2044
+ // "ord_type": "limit",
2045
+ // "price": "17417000.0",
2046
+ // "state": "done",
2047
+ // "market": "KRW-BTC",
2048
+ // "created_at": "2018-04-05T14:09:14+09:00",
2049
+ // "volume": "1.0",
2050
+ // "remaining_volume": "0.0",
2051
+ // "reserved_fee": "26125.5",
2052
+ // "remaining_fee": "25974.0",
2053
+ // "paid_fee": "151.5",
2054
+ // "locked": "17341974.0",
2055
+ // "executed_volume": "1.0",
2056
+ // "trades_count": 2,
2057
+ // "trades": [
2058
+ // {
2059
+ // "market": "KRW-BTC",
2060
+ // "uuid": "78162304-1a4d-4524-b9e6-c9a9e14d76c3",
2061
+ // "price": "101000.0",
2062
+ // "volume": "0.77368323",
2063
+ // "funds": "78142.00623",
2064
+ // "ask_fee": "117.213009345",
2065
+ // "bid_fee": "117.213009345",
2066
+ // "created_at": "2018-04-05T14:09:15+09:00",
2067
+ // "side": "bid"
2068
+ // },
2069
+ // {
2070
+ // "market": "KRW-BTC",
2071
+ // "uuid": "f73da467-c42f-407d-92fa-e10d86450a20",
2072
+ // "price": "101000.0",
2073
+ // "volume": "0.22631677",
2074
+ // "funds": "22857.99377",
2075
+ // "ask_fee": "34.286990655",
2076
+ // "bid_fee": "34.286990655",
2077
+ // "created_at": "2018-04-05T14:09:15+09:00",
2078
+ // "side": "bid"
2079
+ // }
2080
+ // ]
2081
+ // }
2082
+ //
2083
+ return this.parseOrder(response);
2084
+ }
2085
+ /**
2086
+ * @method
2087
+ * @name upbit#fetchDepositAddresses
2088
+ * @see https://docs.upbit.com/kr/reference/전체-입금-주소-조회
2089
+ * @see https://global-docs.upbit.com/reference/general-deposit-address-inquiry
2090
+ * @description fetch deposit addresses for multiple currencies and chain types
2091
+ * @param {string[]|undefined} codes list of unified currency codes, default is undefined
2092
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2093
+ * @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
2094
+ */
2095
+ async fetchDepositAddresses(codes = undefined, params = {}) {
2096
+ await this.loadMarkets();
2097
+ const response = await this.privateGetDepositsCoinAddresses(params);
2098
+ //
2099
+ // [
2100
+ // {
2101
+ // "currency": "BTC",
2102
+ // "deposit_address": "3EusRwybuZUhVDeHL7gh3HSLmbhLcy7NqD",
2103
+ // "secondary_address": null
2104
+ // },
2105
+ // {
2106
+ // "currency": "ETH",
2107
+ // "deposit_address": "0x0d73e0a482b8cf568976d2e8688f4a899d29301c",
2108
+ // "secondary_address": null
2109
+ // },
2110
+ // {
2111
+ // "currency": "XRP",
2112
+ // "deposit_address": "rN9qNpgnBaZwqCg8CvUZRPqCcPPY7wfWep",
2113
+ // "secondary_address": "3057887915"
2114
+ // }
2115
+ // ]
2116
+ //
2117
+ return this.parseDepositAddresses(response, codes);
2118
+ }
2119
+ parseDepositAddress(depositAddress, currency = undefined) {
2120
+ //
2121
+ // {
2122
+ // currency: 'XRP',
2123
+ // net_type: 'XRP',
2124
+ // deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
2125
+ // secondary_address: '167029435'
2126
+ // }
2127
+ //
2128
+ const address = this.safeString(depositAddress, 'deposit_address');
2129
+ const tag = this.safeString(depositAddress, 'secondary_address');
2130
+ const currencyId = this.safeString(depositAddress, 'currency');
2131
+ const code = this.safeCurrencyCode(currencyId);
2132
+ const networkId = this.safeString(depositAddress, 'net_type');
2133
+ this.checkAddress(address);
2134
+ return {
2135
+ 'info': depositAddress,
2136
+ 'currency': code,
2137
+ 'network': this.networkIdToCode(networkId),
2138
+ 'address': address,
2139
+ 'tag': tag,
2140
+ };
2141
+ }
2142
+ /**
2143
+ * @method
2144
+ * @name upbit#fetchDepositAddress
2145
+ * @see https://docs.upbit.com/kr/reference/개별-입금-주소-조회
2146
+ * @see https://global-docs.upbit.com/reference/individual-deposit-address-inquiry
2147
+ * @description fetch the deposit address for a currency associated with this account
2148
+ * @param {string} code unified currency code
2149
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2150
+ * @param {string} params.network deposit chain, can view all chains via this.publicGetWalletAssets, default is eth, unless the currency has a default chain within this.options['networks']
2151
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2152
+ */
2153
+ async fetchDepositAddress(code, params = {}) {
2154
+ await this.loadMarkets();
2155
+ const currency = this.currency(code);
2156
+ let networkCode = undefined;
2157
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
2158
+ if (networkCode === undefined) {
2159
+ throw new ArgumentsRequired(this.id + ' fetchDepositAddress requires params["network"]');
2160
+ }
2161
+ const response = await this.privateGetDepositsCoinAddress(this.extend({
2162
+ 'currency': currency['id'],
2163
+ 'net_type': this.networkCodeToId(networkCode, currency['code']),
2164
+ }, params));
2165
+ //
2166
+ // {
2167
+ // currency: 'XRP',
2168
+ // net_type: 'XRP',
2169
+ // deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
2170
+ // secondary_address: '167029435'
2171
+ // }
2172
+ //
2173
+ return this.parseDepositAddress(response);
2174
+ }
2175
+ /**
2176
+ * @method
2177
+ * @name upbit#createDepositAddress
2178
+ * @see https://docs.upbit.com/kr/reference/입금-주소-생성-요청
2179
+ * @see https://global-docs.upbit.com/reference/deposit-address-generation
2180
+ * @description create a currency deposit address
2181
+ * @param {string} code unified currency code of the currency for the deposit address
2182
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2183
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2184
+ */
2185
+ async createDepositAddress(code, params = {}) {
2186
+ await this.loadMarkets();
2187
+ const currency = this.currency(code);
2188
+ const request = {
2189
+ 'currency': currency['id'],
2190
+ };
2191
+ // https://github.com/ccxt/ccxt/issues/6452
2192
+ const response = await this.privatePostDepositsGenerateCoinAddress(this.extend(request, params));
2193
+ //
2194
+ // https://docs.upbit.com/v1.0/reference#%EC%9E%85%EA%B8%88-%EC%A3%BC%EC%86%8C-%EC%83%9D%EC%84%B1-%EC%9A%94%EC%B2%AD
2195
+ // can be any of the two responses:
2196
+ //
2197
+ // {
2198
+ // "success" : true,
2199
+ // "message" : "Creating BTC deposit address."
2200
+ // }
2201
+ //
2202
+ // {
2203
+ // "currency": "BTC",
2204
+ // "deposit_address": "3EusRwybuZUhVDeHL7gh3HSLmbhLcy7NqD",
2205
+ // "secondary_address": null
2206
+ // }
2207
+ //
2208
+ const message = this.safeString(response, 'message');
2209
+ if (message !== undefined) {
2210
+ throw new AddressPending(this.id + ' is generating ' + code + ' deposit address, call fetchDepositAddress or createDepositAddress one more time later to retrieve the generated address');
2211
+ }
2212
+ return this.parseDepositAddress(response);
2213
+ }
2214
+ /**
2215
+ * @method
2216
+ * @name upbit#withdraw
2217
+ * @see https://docs.upbit.com/kr/reference/디지털자산-출금하기
2218
+ * @see https://global-docs.upbit.com/reference/withdrawal-digital-assets
2219
+ * @description make a withdrawal
2220
+ * @param {string} code unified currency code
2221
+ * @param {float} amount the amount to withdraw
2222
+ * @param {string} address the address to withdraw to
2223
+ * @param {string} tag
2224
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2225
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2226
+ */
2227
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
2228
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2229
+ await this.loadMarkets();
2230
+ const currency = this.currency(code);
2231
+ const request = {
2232
+ 'amount': amount,
2233
+ };
2234
+ let response = undefined;
2235
+ if (code !== 'KRW') {
2236
+ this.checkAddress(address);
2237
+ // 2023-05-23 Change to required parameters for digital assets
2238
+ const network = this.safeStringUpper2(params, 'network', 'net_type');
2239
+ if (network === undefined) {
2240
+ throw new ArgumentsRequired(this.id + ' withdraw() requires a network argument');
2241
+ }
2242
+ params = this.omit(params, ['network']);
2243
+ request['net_type'] = network;
2244
+ request['currency'] = currency['id'];
2245
+ request['address'] = address;
2246
+ if (tag !== undefined) {
2247
+ request['secondary_address'] = tag;
2248
+ }
2249
+ params = this.omit(params, 'network');
2250
+ response = await this.privatePostWithdrawsCoin(this.extend(request, params));
2251
+ }
2252
+ else {
2253
+ response = await this.privatePostWithdrawsKrw(this.extend(request, params));
2254
+ }
2255
+ //
2256
+ // {
2257
+ // "type": "withdraw",
2258
+ // "uuid": "9f432943-54e0-40b7-825f-b6fec8b42b79",
2259
+ // "currency": "BTC",
2260
+ // "txid": "ebe6937b-130e-4066-8ac6-4b0e67f28adc",
2261
+ // "state": "processing",
2262
+ // "created_at": "2018-04-13T11:24:01+09:00",
2263
+ // "done_at": null,
2264
+ // "amount": "0.01",
2265
+ // "fee": "0.0",
2266
+ // "krw_amount": "80420.0"
2267
+ // }
2268
+ //
2269
+ return this.parseTransaction(response);
2270
+ }
2271
+ nonce() {
2272
+ return this.milliseconds();
2273
+ }
2274
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2275
+ let url = this.implodeParams(this.urls['api'][api], {
2276
+ 'hostname': this.hostname,
2277
+ });
2278
+ url += '/' + this.version + '/' + this.implodeParams(path, params);
2279
+ const query = this.omit(params, this.extractParams(path));
2280
+ if (method !== 'POST') {
2281
+ if (Object.keys(query).length) {
2282
+ url += '?' + this.urlencode(query);
2283
+ }
2284
+ }
2285
+ if (api === 'private') {
2286
+ this.checkRequiredCredentials();
2287
+ headers = {};
2288
+ const nonce = this.uuid();
2289
+ const request = {
2290
+ 'access_key': this.apiKey,
2291
+ 'nonce': nonce,
2292
+ };
2293
+ const hasQuery = Object.keys(query).length;
2294
+ let auth = undefined;
2295
+ if ((method !== 'GET') && (method !== 'DELETE')) {
2296
+ body = this.json(params);
2297
+ headers['Content-Type'] = 'application/json';
2298
+ }
2299
+ if (hasQuery) {
2300
+ auth = this.rawencode(query);
2301
+ }
2302
+ if (auth !== undefined) {
2303
+ const hash = this.hash(this.encode(auth), sha512);
2304
+ request['query_hash'] = hash;
2305
+ request['query_hash_alg'] = 'SHA512';
2306
+ }
2307
+ const token = jwt(request, this.encode(this.secret), sha256);
2308
+ headers['Authorization'] = 'Bearer ' + token;
2309
+ }
2310
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2311
+ }
2312
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2313
+ if (response === undefined) {
2314
+ return undefined; // fallback to default error handler
2315
+ }
2316
+ //
2317
+ // { 'error': { 'message': "Missing request parameter error. Check the required parameters!", 'name': 400 } },
2318
+ // { 'error': { 'message': "side is missing, side does not have a valid value", 'name': "validation_error" } },
2319
+ // { 'error': { 'message': "개인정보 제 3자 제공 동의가 필요합니다.", 'name': "thirdparty_agreement_required" } },
2320
+ // { 'error': { 'message': "권한이 부족합니다.", 'name': "out_of_scope" } },
2321
+ // { 'error': { 'message': "주문을 찾지 못했습니다.", 'name': "order_not_found" } },
2322
+ // { 'error': { 'message': "주문가능한 금액(ETH)이 부족합니다.", 'name': "insufficient_funds_ask" } },
2323
+ // { 'error': { 'message': "주문가능한 금액(BTC)이 부족합니다.", 'name': "insufficient_funds_bid" } },
2324
+ // { 'error': { 'message': "잘못된 엑세스 키입니다.", 'name': "invalid_access_key" } },
2325
+ // { 'error': { 'message': "Jwt 토큰 검증에 실패했습니다.", 'name': "jwt_verification" } }
2326
+ //
2327
+ const error = this.safeValue(response, 'error');
2328
+ if (error !== undefined) {
2329
+ const message = this.safeString(error, 'message');
2330
+ const name = this.safeString(error, 'name');
2331
+ const feedback = this.id + ' ' + body;
2332
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2333
+ this.throwExactlyMatchedException(this.exceptions['exact'], name, feedback);
2334
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
2335
+ this.throwBroadlyMatchedException(this.exceptions['broad'], name, feedback);
2336
+ throw new ExchangeError(feedback); // unknown message
2337
+ }
2338
+ return undefined;
2339
+ }
2340
+ }