ccxt-ir 4.9.32 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +7 -1
  4. package/dist/cjs/package.json +1 -1
  5. package/dist/cjs/src/abstract/asretether.js +11 -0
  6. package/dist/cjs/src/abstract/bidarz.js +11 -0
  7. package/dist/cjs/src/asretether.js +325 -0
  8. package/dist/cjs/src/bidarz.js +337 -0
  9. package/dist/cjs/src/bit24.js +4 -3
  10. package/dist/cjs/src/raastin.js +144 -16
  11. package/js/ccxt.d.ts +8 -2
  12. package/js/ccxt.js +6 -2
  13. package/js/src/abstract/asretether.d.ts +8 -0
  14. package/js/src/abstract/asretether.js +11 -0
  15. package/js/src/abstract/bidarz.d.ts +9 -0
  16. package/js/src/abstract/bidarz.js +11 -0
  17. package/js/src/abstract/raastin.d.ts +1 -0
  18. package/js/src/asretether.d.ts +21 -0
  19. package/js/src/asretether.js +324 -0
  20. package/js/src/bidarz.d.ts +22 -0
  21. package/js/src/bidarz.js +336 -0
  22. package/js/src/bit24.js +4 -3
  23. package/js/src/raastin.d.ts +2 -0
  24. package/js/src/raastin.js +144 -16
  25. package/js/src/src/abantether.d.ts +21 -0
  26. package/js/src/src/abantether.js +353 -0
  27. package/js/src/src/abstract/abantether.d.ts +8 -0
  28. package/js/src/src/abstract/abantether.js +11 -0
  29. package/js/src/src/abstract/afratether.d.ts +9 -0
  30. package/js/src/src/abstract/afratether.js +11 -0
  31. package/js/src/src/abstract/alpaca.d.ts +77 -0
  32. package/js/src/src/abstract/alpaca.js +11 -0
  33. package/js/src/src/abstract/apex.d.ts +34 -0
  34. package/js/src/src/abstract/apex.js +11 -0
  35. package/js/src/src/abstract/arzinja.d.ts +8 -0
  36. package/js/src/src/abstract/arzinja.js +11 -0
  37. package/js/src/src/abstract/arzplus.d.ts +11 -0
  38. package/js/src/src/abstract/arzplus.js +11 -0
  39. package/js/src/src/abstract/ascendex.d.ts +80 -0
  40. package/js/src/src/abstract/ascendex.js +11 -0
  41. package/js/src/src/abstract/asretether.d.ts +8 -0
  42. package/js/src/src/abstract/asretether.js +11 -0
  43. package/js/src/src/abstract/bidarz.d.ts +9 -0
  44. package/js/src/src/abstract/bidarz.js +11 -0
  45. package/js/src/src/abstract/bigone.d.ts +48 -0
  46. package/js/src/src/abstract/bigone.js +11 -0
  47. package/js/src/src/abstract/binance.d.ts +773 -0
  48. package/js/src/src/abstract/binance.js +11 -0
  49. package/js/src/src/abstract/bingx.d.ts +165 -0
  50. package/js/src/src/abstract/bingx.js +11 -0
  51. package/js/src/src/abstract/bit24.d.ts +9 -0
  52. package/js/src/src/abstract/bit24.js +11 -0
  53. package/js/src/src/abstract/bit2c.d.ts +30 -0
  54. package/js/src/src/abstract/bit2c.js +11 -0
  55. package/js/src/src/abstract/bitbank.d.ts +35 -0
  56. package/js/src/src/abstract/bitbank.js +11 -0
  57. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  58. package/js/src/src/abstract/bitbarg.js +11 -0
  59. package/js/src/src/abstract/bitbns.d.ts +43 -0
  60. package/js/src/src/abstract/bitbns.js +11 -0
  61. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  62. package/js/src/src/abstract/bitfinex.js +11 -0
  63. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  64. package/js/src/src/abstract/bitflyer.js +11 -0
  65. package/js/src/src/abstract/bitget.d.ts +578 -0
  66. package/js/src/src/abstract/bitget.js +11 -0
  67. package/js/src/src/abstract/bithumb.d.ts +35 -0
  68. package/js/src/src/abstract/bithumb.js +11 -0
  69. package/js/src/src/abstract/bitimen.d.ts +10 -0
  70. package/js/src/src/abstract/bitimen.js +11 -0
  71. package/js/src/src/abstract/bitir.d.ts +10 -0
  72. package/js/src/src/abstract/bitir.js +11 -0
  73. package/js/src/src/abstract/bitmart.d.ts +120 -0
  74. package/js/src/src/abstract/bitmart.js +11 -0
  75. package/js/src/src/abstract/bitmex.d.ts +100 -0
  76. package/js/src/src/abstract/bitmex.js +11 -0
  77. package/js/src/src/abstract/bitopro.d.ts +33 -0
  78. package/js/src/src/abstract/bitopro.js +11 -0
  79. package/js/src/src/abstract/bitpin.d.ts +11 -0
  80. package/js/src/src/abstract/bitpin.js +11 -0
  81. package/js/src/src/abstract/bitrue.d.ts +75 -0
  82. package/js/src/src/abstract/bitrue.js +11 -0
  83. package/js/src/src/abstract/bitso.d.ts +46 -0
  84. package/js/src/src/abstract/bitso.js +11 -0
  85. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  86. package/js/src/src/abstract/bitstamp.js +11 -0
  87. package/js/src/src/abstract/bitteam.d.ts +32 -0
  88. package/js/src/src/abstract/bitteam.js +11 -0
  89. package/js/src/src/abstract/bittrade.d.ts +117 -0
  90. package/js/src/src/abstract/bittrade.js +11 -0
  91. package/js/src/src/abstract/bitunix.d.ts +9 -0
  92. package/js/src/src/abstract/bitunix.js +11 -0
  93. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  94. package/js/src/src/abstract/bitvavo.js +11 -0
  95. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  96. package/js/src/src/abstract/blockchaincom.js +11 -0
  97. package/js/src/src/abstract/blofin.d.ts +70 -0
  98. package/js/src/src/abstract/blofin.js +11 -0
  99. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  100. package/js/src/src/abstract/btcalpha.js +11 -0
  101. package/js/src/src/abstract/btcbox.d.ts +18 -0
  102. package/js/src/src/abstract/btcbox.js +11 -0
  103. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  104. package/js/src/src/abstract/btcmarkets.js +11 -0
  105. package/js/src/src/abstract/btcturk.d.ts +23 -0
  106. package/js/src/src/abstract/btcturk.js +11 -0
  107. package/js/src/src/abstract/bybit.d.ts +316 -0
  108. package/js/src/src/abstract/bybit.js +11 -0
  109. package/js/src/src/abstract/bydfi.d.ts +11 -0
  110. package/js/src/src/abstract/bydfi.js +11 -0
  111. package/js/src/src/abstract/cafearz.d.ts +8 -0
  112. package/js/src/src/abstract/cafearz.js +11 -0
  113. package/js/src/src/abstract/cex.d.ts +35 -0
  114. package/js/src/src/abstract/cex.js +11 -0
  115. package/js/src/src/abstract/coinbase.d.ts +97 -0
  116. package/js/src/src/abstract/coinbase.js +11 -0
  117. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  118. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  119. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  120. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  121. package/js/src/src/abstract/coincatch.d.ts +97 -0
  122. package/js/src/src/abstract/coincatch.js +11 -0
  123. package/js/src/src/abstract/coincheck.d.ts +36 -0
  124. package/js/src/src/abstract/coincheck.js +11 -0
  125. package/js/src/src/abstract/coinex.d.ts +240 -0
  126. package/js/src/src/abstract/coinex.js +11 -0
  127. package/js/src/src/abstract/coinmate.d.ts +65 -0
  128. package/js/src/src/abstract/coinmate.js +11 -0
  129. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  130. package/js/src/src/abstract/coinmetro.js +11 -0
  131. package/js/src/src/abstract/coinone.d.ts +70 -0
  132. package/js/src/src/abstract/coinone.js +11 -0
  133. package/js/src/src/abstract/coinsph.d.ts +57 -0
  134. package/js/src/src/abstract/coinsph.js +11 -0
  135. package/js/src/src/abstract/coinspot.d.ts +31 -0
  136. package/js/src/src/abstract/coinspot.js +11 -0
  137. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  138. package/js/src/src/abstract/cryptocom.js +11 -0
  139. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  140. package/js/src/src/abstract/cryptomus.js +11 -0
  141. package/js/src/src/abstract/defx.d.ts +72 -0
  142. package/js/src/src/abstract/defx.js +11 -0
  143. package/js/src/src/abstract/delta.d.ts +53 -0
  144. package/js/src/src/abstract/delta.js +11 -0
  145. package/js/src/src/abstract/deribit.d.ts +129 -0
  146. package/js/src/src/abstract/deribit.js +11 -0
  147. package/js/src/src/abstract/derive.d.ts +120 -0
  148. package/js/src/src/abstract/derive.js +11 -0
  149. package/js/src/src/abstract/digifinex.d.ts +95 -0
  150. package/js/src/src/abstract/digifinex.js +11 -0
  151. package/js/src/src/abstract/ellipx.d.ts +28 -0
  152. package/js/src/src/abstract/ellipx.js +11 -0
  153. package/js/src/src/abstract/eterex.d.ts +8 -0
  154. package/js/src/src/abstract/eterex.js +11 -0
  155. package/js/src/src/abstract/excoino.d.ts +10 -0
  156. package/js/src/src/abstract/excoino.js +11 -0
  157. package/js/src/src/abstract/exir.d.ts +11 -0
  158. package/js/src/src/abstract/exir.js +11 -0
  159. package/js/src/src/abstract/exmo.d.ts +58 -0
  160. package/js/src/src/abstract/exmo.js +11 -0
  161. package/js/src/src/abstract/exnovin.d.ts +9 -0
  162. package/js/src/src/abstract/exnovin.js +11 -0
  163. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  164. package/js/src/src/abstract/farhadexchange.js +11 -0
  165. package/js/src/src/abstract/foxbit.d.ts +29 -0
  166. package/js/src/src/abstract/foxbit.js +11 -0
  167. package/js/src/src/abstract/gate.d.ts +287 -0
  168. package/js/src/src/abstract/gate.js +11 -0
  169. package/js/src/src/abstract/gemini.d.ts +62 -0
  170. package/js/src/src/abstract/gemini.js +11 -0
  171. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  172. package/js/src/src/abstract/hamtapay.js +11 -0
  173. package/js/src/src/abstract/hashkey.d.ts +70 -0
  174. package/js/src/src/abstract/hashkey.js +11 -0
  175. package/js/src/src/abstract/hibachi.d.ts +29 -0
  176. package/js/src/src/abstract/hibachi.js +11 -0
  177. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  178. package/js/src/src/abstract/hitbtc.js +11 -0
  179. package/js/src/src/abstract/hitobit.d.ts +11 -0
  180. package/js/src/src/abstract/hitobit.js +11 -0
  181. package/js/src/src/abstract/hollaex.d.ts +36 -0
  182. package/js/src/src/abstract/hollaex.js +11 -0
  183. package/js/src/src/abstract/htx.d.ts +551 -0
  184. package/js/src/src/abstract/htx.js +11 -0
  185. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  186. package/js/src/src/abstract/hyperliquid.js +11 -0
  187. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  188. package/js/src/src/abstract/independentreserve.js +11 -0
  189. package/js/src/src/abstract/indodax.d.ts +29 -0
  190. package/js/src/src/abstract/indodax.js +11 -0
  191. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  192. package/js/src/src/abstract/iranexchange.js +11 -0
  193. package/js/src/src/abstract/jibitex.d.ts +10 -0
  194. package/js/src/src/abstract/jibitex.js +11 -0
  195. package/js/src/src/abstract/kcex.d.ts +10 -0
  196. package/js/src/src/abstract/kcex.js +11 -0
  197. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  198. package/js/src/src/abstract/kifpoolme.js +11 -0
  199. package/js/src/src/abstract/kraken.d.ts +61 -0
  200. package/js/src/src/abstract/kraken.js +11 -0
  201. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  202. package/js/src/src/abstract/krakenfutures.js +11 -0
  203. package/js/src/src/abstract/kucoin.d.ts +227 -0
  204. package/js/src/src/abstract/kucoin.js +11 -0
  205. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  206. package/js/src/src/abstract/kucoinfutures.js +11 -0
  207. package/js/src/src/abstract/latoken.d.ts +59 -0
  208. package/js/src/src/abstract/latoken.js +11 -0
  209. package/js/src/src/abstract/lbank.d.ts +65 -0
  210. package/js/src/src/abstract/lbank.js +11 -0
  211. package/js/src/src/abstract/luno.d.ts +41 -0
  212. package/js/src/src/abstract/luno.js +11 -0
  213. package/js/src/src/abstract/mazdax.d.ts +11 -0
  214. package/js/src/src/abstract/mazdax.js +11 -0
  215. package/js/src/src/abstract/mercado.d.ts +28 -0
  216. package/js/src/src/abstract/mercado.js +11 -0
  217. package/js/src/src/abstract/mexc.d.ts +183 -0
  218. package/js/src/src/abstract/mexc.js +11 -0
  219. package/js/src/src/abstract/modetrade.d.ts +122 -0
  220. package/js/src/src/abstract/modetrade.js +11 -0
  221. package/js/src/src/abstract/ndax.d.ts +100 -0
  222. package/js/src/src/abstract/ndax.js +11 -0
  223. package/js/src/src/abstract/nobitex.d.ts +10 -0
  224. package/js/src/src/abstract/nobitex.js +11 -0
  225. package/js/src/src/abstract/novadax.d.ts +32 -0
  226. package/js/src/src/abstract/novadax.js +11 -0
  227. package/js/src/src/abstract/oceanex.d.ts +30 -0
  228. package/js/src/src/abstract/oceanex.js +11 -0
  229. package/js/src/src/abstract/okcoin.d.ts +77 -0
  230. package/js/src/src/abstract/okcoin.js +11 -0
  231. package/js/src/src/abstract/okexchange.d.ts +11 -0
  232. package/js/src/src/abstract/okexchange.js +11 -0
  233. package/js/src/src/abstract/okx.d.ts +352 -0
  234. package/js/src/src/abstract/okx.js +11 -0
  235. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  236. package/js/src/src/abstract/ompfinex.js +11 -0
  237. package/js/src/src/abstract/onetrading.d.ts +26 -0
  238. package/js/src/src/abstract/onetrading.js +11 -0
  239. package/js/src/src/abstract/oxfun.d.ts +37 -0
  240. package/js/src/src/abstract/oxfun.js +11 -0
  241. package/js/src/src/abstract/p2b.d.ts +25 -0
  242. package/js/src/src/abstract/p2b.js +11 -0
  243. package/js/src/src/abstract/paradex.d.ts +66 -0
  244. package/js/src/src/abstract/paradex.js +11 -0
  245. package/js/src/src/abstract/paymium.d.ts +31 -0
  246. package/js/src/src/abstract/paymium.js +11 -0
  247. package/js/src/src/abstract/phemex.d.ts +120 -0
  248. package/js/src/src/abstract/phemex.js +11 -0
  249. package/js/src/src/abstract/pingi.d.ts +9 -0
  250. package/js/src/src/abstract/pingi.js +11 -0
  251. package/js/src/src/abstract/poloniex.d.ts +108 -0
  252. package/js/src/src/abstract/poloniex.js +11 -0
  253. package/js/src/src/abstract/pooleno.d.ts +8 -0
  254. package/js/src/src/abstract/pooleno.js +11 -0
  255. package/js/src/src/abstract/probit.d.ts +26 -0
  256. package/js/src/src/abstract/probit.js +11 -0
  257. package/js/src/src/abstract/raastin.d.ts +11 -0
  258. package/js/src/src/abstract/raastin.js +11 -0
  259. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  260. package/js/src/src/abstract/ramzinex.js +11 -0
  261. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  262. package/js/src/src/abstract/sarmayex.js +11 -0
  263. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  264. package/js/src/src/abstract/sarrafex.js +11 -0
  265. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  266. package/js/src/src/abstract/tabdeal.js +11 -0
  267. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  268. package/js/src/src/abstract/tehran_exchange.js +11 -0
  269. package/js/src/src/abstract/tetherland.d.ts +8 -0
  270. package/js/src/src/abstract/tetherland.js +11 -0
  271. package/js/src/src/abstract/timex.d.ts +65 -0
  272. package/js/src/src/abstract/timex.js +11 -0
  273. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  274. package/js/src/src/abstract/tokocrypto.js +11 -0
  275. package/js/src/src/abstract/toobit.d.ts +10 -0
  276. package/js/src/src/abstract/toobit.js +11 -0
  277. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  278. package/js/src/src/abstract/tradeogre.js +11 -0
  279. package/js/src/src/abstract/twox.d.ts +8 -0
  280. package/js/src/src/abstract/twox.js +11 -0
  281. package/js/src/src/abstract/ubitex.d.ts +10 -0
  282. package/js/src/src/abstract/ubitex.js +11 -0
  283. package/js/src/src/abstract/upbit.d.ts +58 -0
  284. package/js/src/src/abstract/upbit.js +11 -0
  285. package/js/src/src/abstract/vertex.d.ts +22 -0
  286. package/js/src/src/abstract/vertex.js +11 -0
  287. package/js/src/src/abstract/wallex.d.ts +11 -0
  288. package/js/src/src/abstract/wallex.js +11 -0
  289. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  290. package/js/src/src/abstract/wavesexchange.js +11 -0
  291. package/js/src/src/abstract/whitebit.d.ts +117 -0
  292. package/js/src/src/abstract/whitebit.js +11 -0
  293. package/js/src/src/abstract/woo.d.ts +144 -0
  294. package/js/src/src/abstract/woo.js +11 -0
  295. package/js/src/src/abstract/woofipro.d.ts +122 -0
  296. package/js/src/src/abstract/woofipro.js +11 -0
  297. package/js/src/src/abstract/xt.d.ts +160 -0
  298. package/js/src/src/abstract/xt.js +11 -0
  299. package/js/src/src/abstract/yobit.d.ts +19 -0
  300. package/js/src/src/abstract/yobit.js +11 -0
  301. package/js/src/src/abstract/zaif.d.ts +41 -0
  302. package/js/src/src/abstract/zaif.js +11 -0
  303. package/js/src/src/abstract/zonda.d.ts +56 -0
  304. package/js/src/src/abstract/zonda.js +11 -0
  305. package/js/src/src/afratether.d.ts +21 -0
  306. package/js/src/src/afratether.js +356 -0
  307. package/js/src/src/alpaca.d.ts +332 -0
  308. package/js/src/src/alpaca.js +1908 -0
  309. package/js/src/src/apex.d.ts +333 -0
  310. package/js/src/src/apex.js +1942 -0
  311. package/js/src/src/arzinja.d.ts +21 -0
  312. package/js/src/src/arzinja.js +298 -0
  313. package/js/src/src/arzplus.d.ts +26 -0
  314. package/js/src/src/arzplus.js +581 -0
  315. package/js/src/src/ascendex.d.ts +424 -0
  316. package/js/src/src/ascendex.js +3699 -0
  317. package/js/src/src/asretether.d.ts +21 -0
  318. package/js/src/src/asretether.js +324 -0
  319. package/js/src/src/base/Exchange.d.ts +926 -0
  320. package/js/src/src/base/Exchange.js +7399 -0
  321. package/js/src/src/base/Precise.d.ts +42 -0
  322. package/js/src/src/base/Precise.js +275 -0
  323. package/js/src/src/base/errors.d.ts +168 -0
  324. package/js/src/src/base/errors.js +255 -0
  325. package/js/src/src/base/functions/crypto.d.ts +16 -0
  326. package/js/src/src/base/functions/crypto.js +131 -0
  327. package/js/src/src/base/functions/encode.d.ts +4 -0
  328. package/js/src/src/base/functions/encode.js +32 -0
  329. package/js/src/src/base/functions/generic.d.ts +29 -0
  330. package/js/src/src/base/functions/generic.js +203 -0
  331. package/js/src/src/base/functions/misc.d.ts +9 -0
  332. package/js/src/src/base/functions/misc.js +101 -0
  333. package/js/src/src/base/functions/number.d.ts +27 -0
  334. package/js/src/src/base/functions/number.js +313 -0
  335. package/js/src/src/base/functions/platform.d.ts +7 -0
  336. package/js/src/src/base/functions/platform.js +27 -0
  337. package/js/src/src/base/functions/rsa.d.ts +5 -0
  338. package/js/src/src/base/functions/rsa.js +49 -0
  339. package/js/src/src/base/functions/string.d.ts +7 -0
  340. package/js/src/src/base/functions/string.js +44 -0
  341. package/js/src/src/base/functions/throttle.d.ts +6 -0
  342. package/js/src/src/base/functions/throttle.js +67 -0
  343. package/js/src/src/base/functions/time.d.ts +21 -0
  344. package/js/src/src/base/functions/time.js +171 -0
  345. package/js/src/src/base/functions/totp.d.ts +3 -0
  346. package/js/src/src/base/functions/totp.js +25 -0
  347. package/js/src/src/base/functions/type.d.ts +37 -0
  348. package/js/src/src/base/functions/type.js +179 -0
  349. package/js/src/src/base/functions.d.ts +10 -0
  350. package/js/src/src/base/functions.js +18 -0
  351. package/js/src/src/base/types.d.ts +586 -0
  352. package/js/src/src/base/types.js +7 -0
  353. package/js/src/src/base/ws/Cache.d.ts +27 -0
  354. package/js/src/src/base/ws/Cache.js +260 -0
  355. package/js/src/src/base/ws/Client.d.ts +53 -0
  356. package/js/src/src/base/ws/Client.js +307 -0
  357. package/js/src/src/base/ws/Future.d.ts +8 -0
  358. package/js/src/src/base/ws/Future.js +35 -0
  359. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  360. package/js/src/src/base/ws/OrderBook.js +130 -0
  361. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  362. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  363. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  364. package/js/src/src/base/ws/WsClient.js +69 -0
  365. package/js/src/src/bequant.d.ts +4 -0
  366. package/js/src/src/bequant.js +35 -0
  367. package/js/src/src/bidarz.d.ts +16 -0
  368. package/js/src/src/bidarz.js +327 -0
  369. package/js/src/src/bigone.d.ts +296 -0
  370. package/js/src/src/bigone.js +2340 -0
  371. package/js/src/src/binance.d.ts +1667 -0
  372. package/js/src/src/binance.js +14400 -0
  373. package/js/src/src/binancecoinm.d.ts +6 -0
  374. package/js/src/src/binancecoinm.js +51 -0
  375. package/js/src/src/binanceus.d.ts +4 -0
  376. package/js/src/src/binanceus.js +225 -0
  377. package/js/src/src/binanceusdm.d.ts +6 -0
  378. package/js/src/src/binanceusdm.js +63 -0
  379. package/js/src/src/bingx.d.ts +778 -0
  380. package/js/src/src/bingx.js +6705 -0
  381. package/js/src/src/bit24.d.ts +24 -0
  382. package/js/src/src/bit24.js +520 -0
  383. package/js/src/src/bit2c.d.ts +146 -0
  384. package/js/src/src/bit2c.js +1029 -0
  385. package/js/src/src/bitbank.d.ts +181 -0
  386. package/js/src/src/bitbank.js +1146 -0
  387. package/js/src/src/bitbarg.d.ts +21 -0
  388. package/js/src/src/bitbarg.js +312 -0
  389. package/js/src/src/bitbns.d.ts +184 -0
  390. package/js/src/src/bitbns.js +1288 -0
  391. package/js/src/src/bitfinex.d.ts +516 -0
  392. package/js/src/src/bitfinex.js +3951 -0
  393. package/js/src/src/bitflyer.d.ts +229 -0
  394. package/js/src/src/bitflyer.js +1209 -0
  395. package/js/src/src/bitget.d.ts +1109 -0
  396. package/js/src/src/bitget.js +11033 -0
  397. package/js/src/src/bithumb.d.ts +165 -0
  398. package/js/src/src/bithumb.js +1257 -0
  399. package/js/src/src/bitimen.d.ts +23 -0
  400. package/js/src/src/bitimen.js +424 -0
  401. package/js/src/src/bitir.d.ts +23 -0
  402. package/js/src/src/bitir.js +521 -0
  403. package/js/src/src/bitmart.d.ts +736 -0
  404. package/js/src/src/bitmart.js +5639 -0
  405. package/js/src/src/bitmex.d.ts +395 -0
  406. package/js/src/src/bitmex.js +3088 -0
  407. package/js/src/src/bitopro.d.ts +295 -0
  408. package/js/src/src/bitopro.js +1892 -0
  409. package/js/src/src/bitpin.d.ts +23 -0
  410. package/js/src/src/bitpin.js +487 -0
  411. package/js/src/src/bitrue.d.ts +384 -0
  412. package/js/src/src/bitrue.js +3382 -0
  413. package/js/src/src/bitso.d.ts +270 -0
  414. package/js/src/src/bitso.js +1881 -0
  415. package/js/src/src/bitstamp.d.ts +355 -0
  416. package/js/src/src/bitstamp.js +2445 -0
  417. package/js/src/src/bitteam.d.ts +229 -0
  418. package/js/src/src/bitteam.js +2420 -0
  419. package/js/src/src/bittrade.d.ts +298 -0
  420. package/js/src/src/bittrade.js +2050 -0
  421. package/js/src/src/bitunix.d.ts +21 -0
  422. package/js/src/src/bitunix.js +326 -0
  423. package/js/src/src/bitvavo.d.ts +311 -0
  424. package/js/src/src/bitvavo.js +2204 -0
  425. package/js/src/src/blockchaincom.d.ts +256 -0
  426. package/js/src/src/blockchaincom.js +1259 -0
  427. package/js/src/src/blofin.d.ts +439 -0
  428. package/js/src/src/blofin.js +2576 -0
  429. package/js/src/src/btcalpha.d.ts +209 -0
  430. package/js/src/src/btcalpha.js +1056 -0
  431. package/js/src/src/btcbox.d.ts +144 -0
  432. package/js/src/src/btcbox.js +834 -0
  433. package/js/src/src/btcmarkets.d.ts +253 -0
  434. package/js/src/src/btcmarkets.js +1418 -0
  435. package/js/src/src/btcturk.d.ts +161 -0
  436. package/js/src/src/btcturk.js +1058 -0
  437. package/js/src/src/bybit.d.ts +1097 -0
  438. package/js/src/src/bybit.js +9382 -0
  439. package/js/src/src/bydfi.d.ts +23 -0
  440. package/js/src/src/bydfi.js +434 -0
  441. package/js/src/src/cafearz.d.ts +21 -0
  442. package/js/src/src/cafearz.js +346 -0
  443. package/js/src/src/cex.d.ts +286 -0
  444. package/js/src/src/cex.js +1799 -0
  445. package/js/src/src/coinbase.d.ts +623 -0
  446. package/js/src/src/coinbase.js +5220 -0
  447. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  448. package/js/src/src/coinbaseadvanced.js +18 -0
  449. package/js/src/src/coinbaseexchange.d.ts +334 -0
  450. package/js/src/src/coinbaseexchange.js +2127 -0
  451. package/js/src/src/coinbaseinternational.d.ts +443 -0
  452. package/js/src/src/coinbaseinternational.js +2336 -0
  453. package/js/src/src/coincatch.d.ts +786 -0
  454. package/js/src/src/coincatch.js +5492 -0
  455. package/js/src/src/coincheck.d.ts +147 -0
  456. package/js/src/src/coincheck.js +962 -0
  457. package/js/src/src/coinex.d.ts +719 -0
  458. package/js/src/src/coinex.js +6166 -0
  459. package/js/src/src/coinmate.d.ts +202 -0
  460. package/js/src/src/coinmate.js +1215 -0
  461. package/js/src/src/coinmetro.d.ts +244 -0
  462. package/js/src/src/coinmetro.js +2024 -0
  463. package/js/src/src/coinone.d.ts +158 -0
  464. package/js/src/src/coinone.js +1278 -0
  465. package/js/src/src/coinsph.d.ts +310 -0
  466. package/js/src/src/coinsph.js +2203 -0
  467. package/js/src/src/coinspot.d.ts +108 -0
  468. package/js/src/src/coinspot.js +653 -0
  469. package/js/src/src/cryptocom.d.ts +463 -0
  470. package/js/src/src/cryptocom.js +3549 -0
  471. package/js/src/src/cryptomus.d.ts +158 -0
  472. package/js/src/src/cryptomus.js +1169 -0
  473. package/js/src/src/defx.d.ts +348 -0
  474. package/js/src/src/defx.js +2139 -0
  475. package/js/src/src/delta.d.ts +407 -0
  476. package/js/src/src/delta.js +3654 -0
  477. package/js/src/src/deribit.d.ts +516 -0
  478. package/js/src/src/deribit.js +3790 -0
  479. package/js/src/src/derive.d.ts +324 -0
  480. package/js/src/src/derive.js +2655 -0
  481. package/js/src/src/digifinex.d.ts +544 -0
  482. package/js/src/src/digifinex.js +4453 -0
  483. package/js/src/src/ellipx.d.ts +237 -0
  484. package/js/src/src/ellipx.js +2071 -0
  485. package/js/src/src/eterex.d.ts +21 -0
  486. package/js/src/src/eterex.js +299 -0
  487. package/js/src/src/excoino.d.ts +23 -0
  488. package/js/src/src/excoino.js +426 -0
  489. package/js/src/src/exir.d.ts +23 -0
  490. package/js/src/src/exir.js +403 -0
  491. package/js/src/src/exmo.d.ts +426 -0
  492. package/js/src/src/exmo.js +2825 -0
  493. package/js/src/src/exnovin.d.ts +22 -0
  494. package/js/src/src/exnovin.js +378 -0
  495. package/js/src/src/farhadexchange.d.ts +21 -0
  496. package/js/src/src/farhadexchange.js +280 -0
  497. package/js/src/src/fmfwio.d.ts +4 -0
  498. package/js/src/src/fmfwio.js +35 -0
  499. package/js/src/src/foxbit.d.ts +352 -0
  500. package/js/src/src/foxbit.js +2016 -0
  501. package/js/src/src/gate.d.ts +1071 -0
  502. package/js/src/src/gate.js +8282 -0
  503. package/js/src/src/gateio.d.ts +4 -0
  504. package/js/src/src/gateio.js +17 -0
  505. package/js/src/src/gemini.d.ts +257 -0
  506. package/js/src/src/gemini.js +2006 -0
  507. package/js/src/src/hamtapay.d.ts +21 -0
  508. package/js/src/src/hamtapay.js +303 -0
  509. package/js/src/src/hashkey.d.ts +628 -0
  510. package/js/src/src/hashkey.js +4363 -0
  511. package/js/src/src/hibachi.d.ts +346 -0
  512. package/js/src/src/hibachi.js +2137 -0
  513. package/js/src/src/hitbtc.d.ts +558 -0
  514. package/js/src/src/hitbtc.js +3847 -0
  515. package/js/src/src/hitobit.d.ts +23 -0
  516. package/js/src/src/hitobit.js +412 -0
  517. package/js/src/src/hollaex.d.ts +305 -0
  518. package/js/src/src/hollaex.js +2046 -0
  519. package/js/src/src/htx.d.ts +961 -0
  520. package/js/src/src/htx.js +9668 -0
  521. package/js/src/src/huobi.d.ts +4 -0
  522. package/js/src/src/huobi.js +17 -0
  523. package/js/src/src/hyperliquid.d.ts +651 -0
  524. package/js/src/src/hyperliquid.js +3937 -0
  525. package/js/src/src/independentreserve.d.ts +169 -0
  526. package/js/src/src/independentreserve.js +1115 -0
  527. package/js/src/src/indodax.d.ts +217 -0
  528. package/js/src/src/indodax.js +1454 -0
  529. package/js/src/src/iranexchange.d.ts +21 -0
  530. package/js/src/src/iranexchange.js +399 -0
  531. package/js/src/src/jibitex.d.ts +23 -0
  532. package/js/src/src/jibitex.js +416 -0
  533. package/js/src/src/kcex.d.ts +21 -0
  534. package/js/src/src/kcex.js +335 -0
  535. package/js/src/src/kifpoolme.d.ts +23 -0
  536. package/js/src/src/kifpoolme.js +410 -0
  537. package/js/src/src/kraken.d.ts +484 -0
  538. package/js/src/src/kraken.js +3518 -0
  539. package/js/src/src/krakenfutures.d.ts +362 -0
  540. package/js/src/src/krakenfutures.js +2885 -0
  541. package/js/src/src/kucoin.d.ts +759 -0
  542. package/js/src/src/kucoin.js +5153 -0
  543. package/js/src/src/kucoinfutures.d.ts +521 -0
  544. package/js/src/src/kucoinfutures.js +3381 -0
  545. package/js/src/src/latoken.d.ts +274 -0
  546. package/js/src/src/latoken.js +1824 -0
  547. package/js/src/src/lbank.d.ts +350 -0
  548. package/js/src/src/lbank.js +3146 -0
  549. package/js/src/src/luno.d.ts +252 -0
  550. package/js/src/src/luno.js +1479 -0
  551. package/js/src/src/mazdax.d.ts +23 -0
  552. package/js/src/src/mazdax.js +534 -0
  553. package/js/src/src/mercado.d.ts +160 -0
  554. package/js/src/src/mercado.js +1011 -0
  555. package/js/src/src/mexc.d.ts +768 -0
  556. package/js/src/src/mexc.js +6102 -0
  557. package/js/src/src/modetrade.d.ts +496 -0
  558. package/js/src/src/modetrade.js +2936 -0
  559. package/js/src/src/myokx.d.ts +4 -0
  560. package/js/src/src/myokx.js +54 -0
  561. package/js/src/src/ndax.d.ts +285 -0
  562. package/js/src/src/ndax.js +2598 -0
  563. package/js/src/src/nobitex.d.ts +23 -0
  564. package/js/src/src/nobitex.js +454 -0
  565. package/js/src/src/novadax.d.ts +279 -0
  566. package/js/src/src/novadax.js +1676 -0
  567. package/js/src/src/oceanex.d.ts +231 -0
  568. package/js/src/src/oceanex.js +1123 -0
  569. package/js/src/src/okcoin.d.ts +346 -0
  570. package/js/src/src/okcoin.js +3211 -0
  571. package/js/src/src/okexchange.d.ts +23 -0
  572. package/js/src/src/okexchange.js +373 -0
  573. package/js/src/src/okx.d.ts +1125 -0
  574. package/js/src/src/okx.js +9009 -0
  575. package/js/src/src/okxus.d.ts +4 -0
  576. package/js/src/src/okxus.js +54 -0
  577. package/js/src/src/ompfinex.d.ts +23 -0
  578. package/js/src/src/ompfinex.js +510 -0
  579. package/js/src/src/onetrading.d.ts +228 -0
  580. package/js/src/src/onetrading.js +1769 -0
  581. package/js/src/src/oxfun.d.ts +442 -0
  582. package/js/src/src/oxfun.js +2920 -0
  583. package/js/src/src/p2b.d.ts +189 -0
  584. package/js/src/src/p2b.js +1344 -0
  585. package/js/src/src/paradex.d.ts +389 -0
  586. package/js/src/src/paradex.js +2607 -0
  587. package/js/src/src/paymium.d.ts +133 -0
  588. package/js/src/src/paymium.js +644 -0
  589. package/js/src/src/phemex.d.ts +497 -0
  590. package/js/src/src/phemex.js +5333 -0
  591. package/js/src/src/pingi.d.ts +22 -0
  592. package/js/src/src/pingi.js +446 -0
  593. package/js/src/src/poloniex.d.ts +441 -0
  594. package/js/src/src/poloniex.js +3681 -0
  595. package/js/src/src/pooleno.d.ts +21 -0
  596. package/js/src/src/pooleno.js +347 -0
  597. package/js/src/src/pro/alpaca.d.ts +95 -0
  598. package/js/src/src/pro/alpaca.js +724 -0
  599. package/js/src/src/pro/apex.d.ts +160 -0
  600. package/js/src/src/pro/apex.js +1044 -0
  601. package/js/src/src/pro/ascendex.d.ts +99 -0
  602. package/js/src/src/pro/ascendex.js +1012 -0
  603. package/js/src/src/pro/bequant.d.ts +4 -0
  604. package/js/src/src/pro/bequant.js +42 -0
  605. package/js/src/src/pro/binance.d.ts +796 -0
  606. package/js/src/src/pro/binance.js +4373 -0
  607. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  608. package/js/src/src/pro/binancecoinm.js +32 -0
  609. package/js/src/src/pro/binanceus.d.ts +4 -0
  610. package/js/src/src/pro/binanceus.js +52 -0
  611. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  612. package/js/src/src/pro/binanceusdm.js +37 -0
  613. package/js/src/src/pro/bingx.d.ts +151 -0
  614. package/js/src/src/pro/bingx.js +1568 -0
  615. package/js/src/src/pro/bitfinex.d.ts +99 -0
  616. package/js/src/src/pro/bitfinex.js +1165 -0
  617. package/js/src/src/pro/bitget.d.ts +257 -0
  618. package/js/src/src/pro/bitget.js +2327 -0
  619. package/js/src/src/pro/bithumb.d.ts +59 -0
  620. package/js/src/src/pro/bithumb.js +395 -0
  621. package/js/src/src/pro/bitmart.d.ts +168 -0
  622. package/js/src/src/pro/bitmart.js +1686 -0
  623. package/js/src/src/pro/bitmex.d.ts +170 -0
  624. package/js/src/src/pro/bitmex.js +1760 -0
  625. package/js/src/src/pro/bitopro.d.ts +69 -0
  626. package/js/src/src/pro/bitopro.js +477 -0
  627. package/js/src/src/pro/bitrue.d.ts +40 -0
  628. package/js/src/src/pro/bitrue.js +461 -0
  629. package/js/src/src/pro/bitstamp.d.ts +53 -0
  630. package/js/src/src/pro/bitstamp.js +587 -0
  631. package/js/src/src/pro/bittrade.d.ts +66 -0
  632. package/js/src/src/pro/bittrade.js +606 -0
  633. package/js/src/src/pro/bitvavo.d.ts +321 -0
  634. package/js/src/src/pro/bitvavo.js +1451 -0
  635. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  636. package/js/src/src/pro/blockchaincom.js +777 -0
  637. package/js/src/src/pro/blofin.d.ts +174 -0
  638. package/js/src/src/pro/blofin.js +743 -0
  639. package/js/src/src/pro/bybit.d.ts +397 -0
  640. package/js/src/src/pro/bybit.js +2519 -0
  641. package/js/src/src/pro/cex.d.ts +220 -0
  642. package/js/src/src/pro/cex.js +1535 -0
  643. package/js/src/src/pro/coinbase.d.ts +119 -0
  644. package/js/src/src/pro/coinbase.js +736 -0
  645. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  646. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  647. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  648. package/js/src/src/pro/coinbaseexchange.js +969 -0
  649. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  650. package/js/src/src/pro/coinbaseinternational.js +804 -0
  651. package/js/src/src/pro/coincatch.d.ts +207 -0
  652. package/js/src/src/pro/coincatch.js +1562 -0
  653. package/js/src/src/pro/coincheck.d.ts +33 -0
  654. package/js/src/src/pro/coincheck.js +210 -0
  655. package/js/src/src/pro/coinex.d.ts +147 -0
  656. package/js/src/src/pro/coinex.js +1426 -0
  657. package/js/src/src/pro/coinone.d.ts +51 -0
  658. package/js/src/src/pro/coinone.js +413 -0
  659. package/js/src/src/pro/cryptocom.d.ts +300 -0
  660. package/js/src/src/pro/cryptocom.js +1414 -0
  661. package/js/src/src/pro/defx.d.ts +236 -0
  662. package/js/src/src/pro/defx.js +865 -0
  663. package/js/src/src/pro/deribit.d.ts +163 -0
  664. package/js/src/src/pro/deribit.js +1066 -0
  665. package/js/src/src/pro/derive.d.ts +100 -0
  666. package/js/src/src/pro/derive.js +753 -0
  667. package/js/src/src/pro/exmo.d.ts +97 -0
  668. package/js/src/src/pro/exmo.js +903 -0
  669. package/js/src/src/pro/gate.d.ts +360 -0
  670. package/js/src/src/pro/gate.js +2119 -0
  671. package/js/src/src/pro/gateio.d.ts +4 -0
  672. package/js/src/src/pro/gateio.js +17 -0
  673. package/js/src/src/pro/gemini.d.ts +106 -0
  674. package/js/src/src/pro/gemini.js +932 -0
  675. package/js/src/src/pro/hashkey.d.ts +121 -0
  676. package/js/src/src/pro/hashkey.js +843 -0
  677. package/js/src/src/pro/hitbtc.d.ts +235 -0
  678. package/js/src/src/pro/hitbtc.js +1400 -0
  679. package/js/src/src/pro/hollaex.d.ts +77 -0
  680. package/js/src/src/pro/hollaex.js +604 -0
  681. package/js/src/src/pro/htx.d.ts +141 -0
  682. package/js/src/src/pro/htx.js +2415 -0
  683. package/js/src/src/pro/huobi.d.ts +4 -0
  684. package/js/src/src/pro/huobi.js +17 -0
  685. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  686. package/js/src/src/pro/hyperliquid.js +1126 -0
  687. package/js/src/src/pro/independentreserve.d.ts +36 -0
  688. package/js/src/src/pro/independentreserve.js +287 -0
  689. package/js/src/src/pro/kraken.d.ts +233 -0
  690. package/js/src/src/pro/kraken.js +1785 -0
  691. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  692. package/js/src/src/pro/krakenfutures.js +1592 -0
  693. package/js/src/src/pro/kucoin.d.ts +221 -0
  694. package/js/src/src/pro/kucoin.js +1430 -0
  695. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  696. package/js/src/src/pro/kucoinfutures.js +1295 -0
  697. package/js/src/src/pro/lbank.d.ts +134 -0
  698. package/js/src/src/pro/lbank.js +950 -0
  699. package/js/src/src/pro/luno.d.ts +44 -0
  700. package/js/src/src/pro/luno.js +322 -0
  701. package/js/src/src/pro/mexc.d.ts +210 -0
  702. package/js/src/src/pro/mexc.js +2009 -0
  703. package/js/src/src/pro/modetrade.d.ts +155 -0
  704. package/js/src/src/pro/modetrade.js +1335 -0
  705. package/js/src/src/pro/myokx.d.ts +4 -0
  706. package/js/src/src/pro/myokx.js +39 -0
  707. package/js/src/src/pro/ndax.d.ts +60 -0
  708. package/js/src/src/pro/ndax.js +545 -0
  709. package/js/src/src/pro/okcoin.d.ts +91 -0
  710. package/js/src/src/pro/okcoin.js +763 -0
  711. package/js/src/src/pro/okx.d.ts +408 -0
  712. package/js/src/src/pro/okx.js +2479 -0
  713. package/js/src/src/pro/okxus.d.ts +4 -0
  714. package/js/src/src/pro/okxus.js +39 -0
  715. package/js/src/src/pro/onetrading.d.ts +107 -0
  716. package/js/src/src/pro/onetrading.js +1343 -0
  717. package/js/src/src/pro/oxfun.d.ts +234 -0
  718. package/js/src/src/pro/oxfun.js +1112 -0
  719. package/js/src/src/pro/p2b.d.ts +104 -0
  720. package/js/src/src/pro/p2b.js +506 -0
  721. package/js/src/src/pro/paradex.d.ts +54 -0
  722. package/js/src/src/pro/paradex.js +370 -0
  723. package/js/src/src/pro/phemex.d.ts +129 -0
  724. package/js/src/src/pro/phemex.js +1569 -0
  725. package/js/src/src/pro/poloniex.d.ts +214 -0
  726. package/js/src/src/pro/poloniex.js +1318 -0
  727. package/js/src/src/pro/probit.d.ts +91 -0
  728. package/js/src/src/pro/probit.js +593 -0
  729. package/js/src/src/pro/tradeogre.d.ts +49 -0
  730. package/js/src/src/pro/tradeogre.js +284 -0
  731. package/js/src/src/pro/upbit.d.ts +124 -0
  732. package/js/src/src/pro/upbit.js +689 -0
  733. package/js/src/src/pro/vertex.d.ts +104 -0
  734. package/js/src/src/pro/vertex.js +999 -0
  735. package/js/src/src/pro/whitebit.d.ts +123 -0
  736. package/js/src/src/pro/whitebit.js +971 -0
  737. package/js/src/src/pro/woo.d.ts +161 -0
  738. package/js/src/src/pro/woo.js +1351 -0
  739. package/js/src/src/pro/woofipro.d.ts +155 -0
  740. package/js/src/src/pro/woofipro.js +1335 -0
  741. package/js/src/src/pro/xt.d.ts +165 -0
  742. package/js/src/src/pro/xt.js +1230 -0
  743. package/js/src/src/probit.d.ts +283 -0
  744. package/js/src/src/probit.js +1935 -0
  745. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  746. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  747. package/js/src/src/raastin.d.ts +24 -0
  748. package/js/src/src/raastin.js +494 -0
  749. package/js/src/src/ramzinex.d.ts +23 -0
  750. package/js/src/src/ramzinex.js +510 -0
  751. package/js/src/src/sarmayex.d.ts +21 -0
  752. package/js/src/src/sarmayex.js +376 -0
  753. package/js/src/src/sarrafex.d.ts +23 -0
  754. package/js/src/src/sarrafex.js +501 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  756. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  758. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  760. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  762. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  764. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  766. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  768. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  770. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  772. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  774. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  776. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  778. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  780. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  782. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  784. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  786. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  788. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  790. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  792. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  794. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  796. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  797. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  798. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  799. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  800. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  801. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  802. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  806. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  808. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  810. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  812. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  814. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  816. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  818. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  820. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  826. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  828. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  830. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  832. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  833. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  834. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  838. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  860. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  862. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  878. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  880. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  882. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  884. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  890. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  892. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  894. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  896. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  904. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  906. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  910. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  912. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  916. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  917. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  918. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  919. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  920. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  921. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  922. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  923. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  924. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  925. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  926. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  927. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  928. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  930. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  931. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  932. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  933. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  934. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  936. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  938. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  940. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  950. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  952. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  954. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  960. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  994. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  996. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1010. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1012. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1014. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1016. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1017. package/js/src/src/tabdeal.d.ts +23 -0
  1018. package/js/src/src/tabdeal.js +387 -0
  1019. package/js/src/src/tehran_exchange.d.ts +21 -0
  1020. package/js/src/src/tehran_exchange.js +333 -0
  1021. package/js/src/src/tetherland.d.ts +21 -0
  1022. package/js/src/src/tetherland.js +367 -0
  1023. package/js/src/src/timex.d.ts +247 -0
  1024. package/js/src/src/timex.js +1792 -0
  1025. package/js/src/src/tokocrypto.d.ts +261 -0
  1026. package/js/src/src/tokocrypto.js +2641 -0
  1027. package/js/src/src/toobit.d.ts +22 -0
  1028. package/js/src/src/toobit.js +445 -0
  1029. package/js/src/src/tradeogre.d.ts +149 -0
  1030. package/js/src/src/tradeogre.js +878 -0
  1031. package/js/src/src/twox.d.ts +21 -0
  1032. package/js/src/src/twox.js +371 -0
  1033. package/js/src/src/ubitex.d.ts +23 -0
  1034. package/js/src/src/ubitex.js +433 -0
  1035. package/js/src/src/upbit.d.ts +377 -0
  1036. package/js/src/src/upbit.js +2340 -0
  1037. package/js/src/src/vertex.d.ts +346 -0
  1038. package/js/src/src/vertex.js +3146 -0
  1039. package/js/src/src/wallex.d.ts +23 -0
  1040. package/js/src/src/wallex.js +467 -0
  1041. package/js/src/src/wavesexchange.d.ts +244 -0
  1042. package/js/src/src/wavesexchange.js +2747 -0
  1043. package/js/src/src/whitebit.d.ts +571 -0
  1044. package/js/src/src/whitebit.js +3437 -0
  1045. package/js/src/src/woo.d.ts +727 -0
  1046. package/js/src/src/woo.js +4183 -0
  1047. package/js/src/src/woofipro.d.ts +497 -0
  1048. package/js/src/src/woofipro.js +2941 -0
  1049. package/js/src/src/xt.d.ts +568 -0
  1050. package/js/src/src/xt.js +5184 -0
  1051. package/js/src/src/yobit.d.ts +197 -0
  1052. package/js/src/src/yobit.js +1453 -0
  1053. package/js/src/src/zaif.d.ts +136 -0
  1054. package/js/src/src/zaif.js +821 -0
  1055. package/js/src/src/zonda.d.ts +214 -0
  1056. package/js/src/src/zonda.js +1984 -0
  1057. package/js/test.d.ts +1 -1
  1058. package/js/test.js +33 -33
  1059. package/package.json +1 -1
@@ -0,0 +1,1892 @@
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/bitopro.js';
9
+ import { ExchangeError, ArgumentsRequired, AuthenticationError, InvalidOrder, InsufficientFunds, BadRequest } from './base/errors.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { TICK_SIZE } from './base/functions/number.js';
12
+ import { sha384 } from './static_dependencies/noble-hashes/sha512.js';
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * @class bitopro
16
+ * @augments Exchange
17
+ */
18
+ export default class bitopro extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'bitopro',
22
+ 'name': 'BitoPro',
23
+ 'countries': ['TW'],
24
+ 'version': 'v3',
25
+ 'rateLimit': 100,
26
+ 'pro': true,
27
+ 'has': {
28
+ 'CORS': undefined,
29
+ 'spot': true,
30
+ 'margin': false,
31
+ 'swap': false,
32
+ 'future': false,
33
+ 'option': false,
34
+ 'addMargin': false,
35
+ 'borrowCrossMargin': false,
36
+ 'borrowIsolatedMargin': false,
37
+ 'borrowMargin': false,
38
+ 'cancelAllOrders': true,
39
+ 'cancelOrder': true,
40
+ 'cancelOrders': true,
41
+ 'closeAllPositions': false,
42
+ 'closePosition': false,
43
+ 'createOrder': true,
44
+ 'createOrderWithTakeProfitAndStopLoss': false,
45
+ 'createOrderWithTakeProfitAndStopLossWs': false,
46
+ 'createReduceOnlyOrder': false,
47
+ 'createStopOrder': true,
48
+ 'createTriggerOrder': true,
49
+ 'editOrder': false,
50
+ 'fetchBalance': true,
51
+ 'fetchBorrowInterest': false,
52
+ 'fetchBorrowRate': false,
53
+ 'fetchBorrowRateHistories': false,
54
+ 'fetchBorrowRateHistory': false,
55
+ 'fetchBorrowRates': false,
56
+ 'fetchBorrowRatesPerSymbol': false,
57
+ 'fetchClosedOrders': true,
58
+ 'fetchCrossBorrowRate': false,
59
+ 'fetchCrossBorrowRates': false,
60
+ 'fetchCurrencies': true,
61
+ 'fetchDepositAddress': false,
62
+ 'fetchDeposits': true,
63
+ 'fetchDepositsWithdrawals': false,
64
+ 'fetchDepositWithdrawFee': 'emulated',
65
+ 'fetchDepositWithdrawFees': true,
66
+ 'fetchFundingHistory': false,
67
+ 'fetchFundingInterval': false,
68
+ 'fetchFundingIntervals': false,
69
+ 'fetchFundingRate': false,
70
+ 'fetchFundingRateHistory': false,
71
+ 'fetchFundingRates': false,
72
+ 'fetchGreeks': false,
73
+ 'fetchIndexOHLCV': false,
74
+ 'fetchIsolatedBorrowRate': false,
75
+ 'fetchIsolatedBorrowRates': false,
76
+ 'fetchIsolatedPositions': false,
77
+ 'fetchLeverage': false,
78
+ 'fetchLeverages': false,
79
+ 'fetchLeverageTiers': false,
80
+ 'fetchLiquidations': false,
81
+ 'fetchLongShortRatio': false,
82
+ 'fetchLongShortRatioHistory': false,
83
+ 'fetchMarginAdjustmentHistory': false,
84
+ 'fetchMarginMode': false,
85
+ 'fetchMarginModes': false,
86
+ 'fetchMarketLeverageTiers': false,
87
+ 'fetchMarkets': true,
88
+ 'fetchMarkOHLCV': false,
89
+ 'fetchMarkPrices': false,
90
+ 'fetchMyLiquidations': false,
91
+ 'fetchMySettlementHistory': false,
92
+ 'fetchMyTrades': true,
93
+ 'fetchOHLCV': true,
94
+ 'fetchOpenInterest': false,
95
+ 'fetchOpenInterestHistory': false,
96
+ 'fetchOpenInterests': false,
97
+ 'fetchOpenOrders': true,
98
+ 'fetchOption': false,
99
+ 'fetchOptionChain': false,
100
+ 'fetchOrder': true,
101
+ 'fetchOrderBook': true,
102
+ 'fetchOrders': false,
103
+ 'fetchOrderTrades': false,
104
+ 'fetchPosition': false,
105
+ 'fetchPositionHistory': false,
106
+ 'fetchPositionMode': false,
107
+ 'fetchPositions': false,
108
+ 'fetchPositionsForSymbol': false,
109
+ 'fetchPositionsHistory': false,
110
+ 'fetchPositionsRisk': false,
111
+ 'fetchPremiumIndexOHLCV': false,
112
+ 'fetchSettlementHistory': false,
113
+ 'fetchTicker': true,
114
+ 'fetchTickers': true,
115
+ 'fetchTime': false,
116
+ 'fetchTrades': true,
117
+ 'fetchTradingFee': false,
118
+ 'fetchTradingFees': true,
119
+ 'fetchTransactionFees': false,
120
+ 'fetchTransactions': false,
121
+ 'fetchTransfer': false,
122
+ 'fetchTransfers': false,
123
+ 'fetchVolatilityHistory': false,
124
+ 'fetchWithdrawal': true,
125
+ 'fetchWithdrawals': true,
126
+ 'reduceMargin': false,
127
+ 'repayCrossMargin': false,
128
+ 'repayIsolatedMargin': false,
129
+ 'setLeverage': false,
130
+ 'setMargin': false,
131
+ 'setMarginMode': false,
132
+ 'setPositionMode': false,
133
+ 'transfer': false,
134
+ 'withdraw': true,
135
+ },
136
+ 'timeframes': {
137
+ '1m': '1m',
138
+ '5m': '5m',
139
+ '15m': '15m',
140
+ '30m': '30m',
141
+ '1h': '1h',
142
+ '3h': '3h',
143
+ '6h': '6h',
144
+ '12h': '12h',
145
+ '1d': '1d',
146
+ '1w': '1w',
147
+ '1M': '1M',
148
+ },
149
+ 'urls': {
150
+ 'logo': 'https://github.com/user-attachments/assets/affc6337-b95a-44bf-aacd-04f9722364f6',
151
+ 'api': {
152
+ 'rest': 'https://api.bitopro.com/v3',
153
+ },
154
+ 'www': 'https://www.bitopro.com',
155
+ 'doc': [
156
+ 'https://github.com/bitoex/bitopro-offical-api-docs/blob/master/v3-1/rest-1/rest.md',
157
+ ],
158
+ 'fees': 'https://www.bitopro.com/fees',
159
+ },
160
+ 'requiredCredentials': {
161
+ 'apiKey': true,
162
+ 'secret': true,
163
+ },
164
+ 'api': {
165
+ 'public': {
166
+ 'get': {
167
+ 'order-book/{pair}': 1,
168
+ 'tickers': 1,
169
+ 'tickers/{pair}': 1,
170
+ 'trades/{pair}': 1,
171
+ 'provisioning/currencies': 1,
172
+ 'provisioning/trading-pairs': 1,
173
+ 'provisioning/limitations-and-fees': 1,
174
+ 'trading-history/{pair}': 1,
175
+ 'price/otc/{currency}': 1,
176
+ },
177
+ },
178
+ 'private': {
179
+ 'get': {
180
+ 'accounts/balance': 1,
181
+ 'orders/history': 1,
182
+ 'orders/all/{pair}': 1,
183
+ 'orders/trades/{pair}': 1,
184
+ 'orders/{pair}/{orderId}': 1,
185
+ 'wallet/withdraw/{currency}/{serial}': 1,
186
+ 'wallet/withdraw/{currency}/id/{id}': 1,
187
+ 'wallet/depositHistory/{currency}': 1,
188
+ 'wallet/withdrawHistory/{currency}': 1,
189
+ 'orders/open': 1,
190
+ },
191
+ 'post': {
192
+ 'orders/{pair}': 1 / 2,
193
+ 'orders/batch': 20 / 3,
194
+ 'wallet/withdraw/{currency}': 10, // 60/m => 1/s => 10/1 = 10
195
+ },
196
+ 'put': {
197
+ 'orders': 5, // 2/s => 10/2 = 5
198
+ },
199
+ 'delete': {
200
+ 'orders/{pair}/{id}': 2 / 3,
201
+ 'orders/all': 5,
202
+ 'orders/{pair}': 5, // 2/s => 10/2 = 5
203
+ },
204
+ },
205
+ },
206
+ 'fees': {
207
+ 'trading': {
208
+ 'tierBased': true,
209
+ 'percentage': true,
210
+ 'maker': this.parseNumber('0.001'),
211
+ 'taker': this.parseNumber('0.002'),
212
+ 'tiers': {
213
+ 'taker': [
214
+ [this.parseNumber('0'), this.parseNumber('0.002')],
215
+ [this.parseNumber('3000000'), this.parseNumber('0.00194')],
216
+ [this.parseNumber('5000000'), this.parseNumber('0.0015')],
217
+ [this.parseNumber('30000000'), this.parseNumber('0.0014')],
218
+ [this.parseNumber('300000000'), this.parseNumber('0.0013')],
219
+ [this.parseNumber('550000000'), this.parseNumber('0.0012')],
220
+ [this.parseNumber('1300000000'), this.parseNumber('0.0011')],
221
+ ],
222
+ 'maker': [
223
+ [this.parseNumber('0'), this.parseNumber('0.001')],
224
+ [this.parseNumber('3000000'), this.parseNumber('0.00097')],
225
+ [this.parseNumber('5000000'), this.parseNumber('0.0007')],
226
+ [this.parseNumber('30000000'), this.parseNumber('0.0006')],
227
+ [this.parseNumber('300000000'), this.parseNumber('0.0005')],
228
+ [this.parseNumber('550000000'), this.parseNumber('0.0004')],
229
+ [this.parseNumber('1300000000'), this.parseNumber('0.0003')],
230
+ ],
231
+ },
232
+ },
233
+ },
234
+ 'options': {
235
+ 'networks': {
236
+ 'ERC20': 'ERC20',
237
+ 'ETH': 'ERC20',
238
+ 'TRX': 'TRX',
239
+ 'TRC20': 'TRX',
240
+ 'BEP20': 'BSC',
241
+ 'BSC': 'BSC',
242
+ },
243
+ 'fiatCurrencies': ['TWD'], // the only fiat currency for exchange
244
+ },
245
+ 'features': {
246
+ 'spot': {
247
+ 'sandbox': false,
248
+ 'createOrder': {
249
+ 'marginMode': false,
250
+ 'triggerPrice': true,
251
+ 'triggerPriceType': undefined,
252
+ 'triggerDirection': true,
253
+ 'stopLossPrice': false,
254
+ 'takeProfitPrice': false,
255
+ 'attachedStopLossTakeProfit': undefined,
256
+ 'timeInForce': {
257
+ 'IOC': false,
258
+ 'FOK': false,
259
+ 'PO': true,
260
+ 'GTD': false,
261
+ },
262
+ 'hedged': false,
263
+ 'trailing': false,
264
+ 'leverage': false,
265
+ 'marketBuyRequiresPrice': false,
266
+ 'marketBuyByCost': false,
267
+ 'selfTradePrevention': false,
268
+ 'iceberg': false,
269
+ },
270
+ 'createOrders': undefined,
271
+ 'fetchMyTrades': {
272
+ 'marginMode': false,
273
+ 'limit': 1000,
274
+ 'daysBack': 100000,
275
+ 'untilDays': 100000,
276
+ 'symbolRequired': true,
277
+ },
278
+ 'fetchOrder': {
279
+ 'marginMode': false,
280
+ 'trigger': false,
281
+ 'trailing': false,
282
+ 'symbolRequired': true,
283
+ },
284
+ // todo: implement through fetchOrders
285
+ 'fetchOpenOrders': {
286
+ 'marginMode': false,
287
+ 'limit': undefined,
288
+ 'trigger': false,
289
+ 'trailing': false,
290
+ 'symbolRequired': false,
291
+ },
292
+ 'fetchOrders': {
293
+ 'marginMode': false,
294
+ 'limit': 1000,
295
+ 'daysBack': 100000,
296
+ 'untilDays': 100000,
297
+ 'trigger': false,
298
+ 'trailing': false,
299
+ 'symbolRequired': true,
300
+ },
301
+ 'fetchClosedOrders': {
302
+ 'marginMode': false,
303
+ 'limit': 1000,
304
+ 'daysBack': 100000,
305
+ 'daysBackCanceled': 1,
306
+ 'untilDays': 10000,
307
+ 'trigger': false,
308
+ 'trailing': false,
309
+ 'symbolRequired': true,
310
+ },
311
+ 'fetchOHLCV': {
312
+ 'limit': 1000,
313
+ },
314
+ },
315
+ 'swap': {
316
+ 'linear': undefined,
317
+ 'inverse': undefined,
318
+ },
319
+ 'future': {
320
+ 'linear': undefined,
321
+ 'inverse': undefined,
322
+ },
323
+ },
324
+ 'precisionMode': TICK_SIZE,
325
+ 'exceptions': {
326
+ 'exact': {
327
+ 'Unsupported currency.': BadRequest,
328
+ 'Unsupported order type': BadRequest,
329
+ 'Invalid body': BadRequest,
330
+ 'Invalid Signature': AuthenticationError,
331
+ 'Address not in whitelist.': BadRequest,
332
+ },
333
+ 'broad': {
334
+ 'Invalid amount': InvalidOrder,
335
+ 'Balance for ': InsufficientFunds,
336
+ 'Invalid ': BadRequest,
337
+ 'Wrong parameter': BadRequest, // {"error":"Wrong parameter: from"}
338
+ },
339
+ },
340
+ 'commonCurrencies': {},
341
+ });
342
+ }
343
+ /**
344
+ * @method
345
+ * @name bitopro#fetchCurrencies
346
+ * @description fetches all available currencies on an exchange
347
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_currency_info.md
348
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
349
+ * @returns {object} an associative dictionary of currencies
350
+ */
351
+ async fetchCurrencies(params = {}) {
352
+ const response = await this.publicGetProvisioningCurrencies(params);
353
+ const currencies = this.safeList(response, 'data', []);
354
+ //
355
+ // {
356
+ // "data":[
357
+ // {
358
+ // "currency":"eth",
359
+ // "withdrawFee":"0.007",
360
+ // "minWithdraw":"0.001",
361
+ // "maxWithdraw":"1000",
362
+ // "maxDailyWithdraw":"2000",
363
+ // "withdraw":true,
364
+ // "deposit":true,
365
+ // "depositConfirmation":"12"
366
+ // }
367
+ // ]
368
+ // }
369
+ //
370
+ const result = {};
371
+ const fiatCurrencies = this.safeList(this.options, 'fiatCurrencies', []);
372
+ for (let i = 0; i < currencies.length; i++) {
373
+ const currency = currencies[i];
374
+ const currencyId = this.safeString(currency, 'currency');
375
+ const code = this.safeCurrencyCode(currencyId);
376
+ const deposit = this.safeBool(currency, 'deposit');
377
+ const withdraw = this.safeBool(currency, 'withdraw');
378
+ const fee = this.safeNumber(currency, 'withdrawFee');
379
+ const withdrawMin = this.safeNumber(currency, 'minWithdraw');
380
+ const withdrawMax = this.safeNumber(currency, 'maxWithdraw');
381
+ const limits = {
382
+ 'withdraw': {
383
+ 'min': withdrawMin,
384
+ 'max': withdrawMax,
385
+ },
386
+ 'amount': {
387
+ 'min': undefined,
388
+ 'max': undefined,
389
+ },
390
+ };
391
+ const isFiat = this.inArray(code, fiatCurrencies);
392
+ result[code] = {
393
+ 'id': currencyId,
394
+ 'code': code,
395
+ 'info': currency,
396
+ 'type': isFiat ? 'fiat' : 'crypto',
397
+ 'name': undefined,
398
+ 'active': deposit && withdraw,
399
+ 'deposit': deposit,
400
+ 'withdraw': withdraw,
401
+ 'fee': fee,
402
+ 'precision': undefined,
403
+ 'limits': limits,
404
+ 'networks': undefined,
405
+ };
406
+ }
407
+ return result;
408
+ }
409
+ /**
410
+ * @method
411
+ * @name bitopro#fetchMarkets
412
+ * @description retrieves data on all markets for bitopro
413
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_trading_pair_info.md
414
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
415
+ * @returns {object[]} an array of objects representing market data
416
+ */
417
+ async fetchMarkets(params = {}) {
418
+ const response = await this.publicGetProvisioningTradingPairs();
419
+ const markets = this.safeList(response, 'data', []);
420
+ //
421
+ // {
422
+ // "data":[
423
+ // {
424
+ // "pair":"shib_twd",
425
+ // "base":"shib",
426
+ // "quote":"twd",
427
+ // "basePrecision":"8",
428
+ // "quotePrecision":"6",
429
+ // "minLimitBaseAmount":"100000",
430
+ // "maxLimitBaseAmount":"5500000000",
431
+ // "minMarketBuyQuoteAmount":"1000",
432
+ // "orderOpenLimit":"200",
433
+ // "maintain":false,
434
+ // "orderBookQuotePrecision":"6",
435
+ // "orderBookQuoteScaleLevel":"5"
436
+ // }
437
+ // ]
438
+ // }
439
+ //
440
+ return this.parseMarkets(markets);
441
+ }
442
+ parseMarket(market) {
443
+ const active = !this.safeBool(market, 'maintain');
444
+ const id = this.safeString(market, 'pair');
445
+ const uppercaseId = id.toUpperCase();
446
+ const baseId = this.safeString(market, 'base');
447
+ const quoteId = this.safeString(market, 'quote');
448
+ const base = this.safeCurrencyCode(baseId);
449
+ const quote = this.safeCurrencyCode(quoteId);
450
+ const symbol = base + '/' + quote;
451
+ const limits = {
452
+ 'amount': {
453
+ 'min': this.safeNumber(market, 'minLimitBaseAmount'),
454
+ 'max': this.safeNumber(market, 'maxLimitBaseAmount'),
455
+ },
456
+ 'price': {
457
+ 'min': undefined,
458
+ 'max': undefined,
459
+ },
460
+ 'cost': {
461
+ 'min': undefined,
462
+ 'max': undefined,
463
+ },
464
+ 'leverage': {
465
+ 'min': undefined,
466
+ 'max': undefined,
467
+ },
468
+ };
469
+ return {
470
+ 'id': id,
471
+ 'uppercaseId': uppercaseId,
472
+ 'symbol': symbol,
473
+ 'base': base,
474
+ 'quote': quote,
475
+ 'baseId': base,
476
+ 'quoteId': quote,
477
+ 'settle': undefined,
478
+ 'settleId': undefined,
479
+ 'type': 'spot',
480
+ 'spot': true,
481
+ 'margin': false,
482
+ 'swap': false,
483
+ 'future': false,
484
+ 'option': false,
485
+ 'contract': false,
486
+ 'linear': undefined,
487
+ 'inverse': undefined,
488
+ 'contractSize': undefined,
489
+ 'expiry': undefined,
490
+ 'expiryDatetime': undefined,
491
+ 'strike': undefined,
492
+ 'optionType': undefined,
493
+ 'limits': limits,
494
+ 'precision': {
495
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
496
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
497
+ },
498
+ 'active': active,
499
+ 'created': undefined,
500
+ 'info': market,
501
+ };
502
+ }
503
+ parseTicker(ticker, market = undefined) {
504
+ //
505
+ // {
506
+ // "pair":"btc_twd",
507
+ // "lastPrice":"1182449.00000000",
508
+ // "isBuyer":false,
509
+ // "priceChange24hr":"-1.99",
510
+ // "volume24hr":"9.13089740",
511
+ // "high24hr":"1226097.00000000",
512
+ // "low24hr":"1181000.00000000"
513
+ // }
514
+ //
515
+ const marketId = this.safeString(ticker, 'pair');
516
+ market = this.safeMarket(marketId, market);
517
+ const symbol = this.safeString(market, 'symbol');
518
+ return this.safeTicker({
519
+ 'symbol': symbol,
520
+ 'timestamp': undefined,
521
+ 'datetime': undefined,
522
+ 'high': this.safeString(ticker, 'high24hr'),
523
+ 'low': this.safeString(ticker, 'low24hr'),
524
+ 'bid': undefined,
525
+ 'bidVolume': undefined,
526
+ 'ask': undefined,
527
+ 'askVolume': undefined,
528
+ 'vwap': undefined,
529
+ 'open': undefined,
530
+ 'close': this.safeString(ticker, 'lastPrice'),
531
+ 'last': this.safeString(ticker, 'lastPrice'),
532
+ 'previousClose': undefined,
533
+ 'change': undefined,
534
+ 'percentage': this.safeString(ticker, 'priceChange24hr'),
535
+ 'average': undefined,
536
+ 'baseVolume': this.safeString(ticker, 'volume24hr'),
537
+ 'quoteVolume': undefined,
538
+ 'info': ticker,
539
+ }, market);
540
+ }
541
+ /**
542
+ * @method
543
+ * @name bitopro#fetchTicker
544
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
545
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ticker_data.md
546
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
547
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
548
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
549
+ */
550
+ async fetchTicker(symbol, params = {}) {
551
+ await this.loadMarkets();
552
+ const market = this.market(symbol);
553
+ const request = {
554
+ 'pair': market['id'],
555
+ };
556
+ const response = await this.publicGetTickersPair(this.extend(request, params));
557
+ const ticker = this.safeDict(response, 'data', {});
558
+ //
559
+ // {
560
+ // "data":{
561
+ // "pair":"btc_twd",
562
+ // "lastPrice":"1182449.00000000",
563
+ // "isBuyer":false,
564
+ // "priceChange24hr":"-1.99",
565
+ // "volume24hr":"9.13089740",
566
+ // "high24hr":"1226097.00000000",
567
+ // "low24hr":"1181000.00000000"
568
+ // }
569
+ // }
570
+ //
571
+ return this.parseTicker(ticker, market);
572
+ }
573
+ /**
574
+ * @method
575
+ * @name bitopro#fetchTickers
576
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
577
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ticker_data.md
578
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
579
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
580
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
581
+ */
582
+ async fetchTickers(symbols = undefined, params = {}) {
583
+ await this.loadMarkets();
584
+ const response = await this.publicGetTickers();
585
+ const tickers = this.safeList(response, 'data', []);
586
+ //
587
+ // {
588
+ // "data":[
589
+ // {
590
+ // "pair":"xrp_twd",
591
+ // "lastPrice":"21.26110000",
592
+ // "isBuyer":false,
593
+ // "priceChange24hr":"-6.53",
594
+ // "volume24hr":"102846.47084802",
595
+ // "high24hr":"23.24460000",
596
+ // "low24hr":"21.13730000"
597
+ // }
598
+ // ]
599
+ // }
600
+ //
601
+ return this.parseTickers(tickers, symbols);
602
+ }
603
+ /**
604
+ * @method
605
+ * @name bitopro#fetchOrderBook
606
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
607
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_orderbook_data.md
608
+ * @param {string} symbol unified symbol of the market to fetch the order book for
609
+ * @param {int} [limit] the maximum amount of order book entries to return
610
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
611
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
612
+ */
613
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
614
+ await this.loadMarkets();
615
+ const market = this.market(symbol);
616
+ const request = {
617
+ 'pair': market['id'],
618
+ };
619
+ if (limit !== undefined) {
620
+ request['limit'] = limit;
621
+ }
622
+ const response = await this.publicGetOrderBookPair(this.extend(request, params));
623
+ //
624
+ // {
625
+ // "bids":[
626
+ // {
627
+ // "price":"1175271",
628
+ // "amount":"0.00022804",
629
+ // "count":1,
630
+ // "total":"0.00022804"
631
+ // }
632
+ // ],
633
+ // "asks":[
634
+ // {
635
+ // "price":"1176906",
636
+ // "amount":"0.0496",
637
+ // "count":1,
638
+ // "total":"0.0496"
639
+ // }
640
+ // ]
641
+ // }
642
+ //
643
+ return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'price', 'amount');
644
+ }
645
+ parseTrade(trade, market = undefined) {
646
+ //
647
+ // fetchTrades
648
+ // {
649
+ // "timestamp":1644651458,
650
+ // "price":"1180785.00000000",
651
+ // "amount":"0.00020000",
652
+ // "isBuyer":false
653
+ // }
654
+ //
655
+ // fetchMyTrades
656
+ // {
657
+ // "tradeId":"5685030251",
658
+ // "orderId":"9669168142",
659
+ // "price":"11821.8",
660
+ // "action":"SELL",
661
+ // "baseAmount":"0.01",
662
+ // "quoteAmount":"118.218",
663
+ // "fee":"0.236436",
664
+ // "feeSymbol":"BNB",
665
+ // "isTaker":true,
666
+ // "timestamp":1644905714862,
667
+ // "createdTimestamp":1644905714862
668
+ // }
669
+ //
670
+ const id = this.safeString(trade, 'tradeId');
671
+ const orderId = this.safeString(trade, 'orderId');
672
+ let timestamp = undefined;
673
+ if (id === undefined) {
674
+ timestamp = this.safeTimestamp(trade, 'timestamp');
675
+ }
676
+ else {
677
+ timestamp = this.safeInteger(trade, 'timestamp');
678
+ }
679
+ const marketId = this.safeString(trade, 'pair');
680
+ market = this.safeMarket(marketId, market);
681
+ const symbol = this.safeString(market, 'symbol');
682
+ const price = this.safeString(trade, 'price');
683
+ const type = this.safeStringLower(trade, 'type');
684
+ let side = this.safeStringLower(trade, 'action');
685
+ if (side === undefined) {
686
+ const isBuyer = this.safeBool(trade, 'isBuyer');
687
+ if (isBuyer) {
688
+ side = 'buy';
689
+ }
690
+ else {
691
+ side = 'sell';
692
+ }
693
+ }
694
+ let amount = this.safeString(trade, 'amount');
695
+ if (amount === undefined) {
696
+ amount = this.safeString(trade, 'baseAmount');
697
+ }
698
+ let fee = undefined;
699
+ const feeAmount = this.safeString(trade, 'fee');
700
+ const feeSymbol = this.safeCurrencyCode(this.safeString(trade, 'feeSymbol'));
701
+ if (feeAmount !== undefined) {
702
+ fee = {
703
+ 'cost': feeAmount,
704
+ 'currency': feeSymbol,
705
+ 'rate': undefined,
706
+ };
707
+ }
708
+ const isTaker = this.safeBool(trade, 'isTaker');
709
+ let takerOrMaker = undefined;
710
+ if (isTaker !== undefined) {
711
+ if (isTaker) {
712
+ takerOrMaker = 'taker';
713
+ }
714
+ else {
715
+ takerOrMaker = 'maker';
716
+ }
717
+ }
718
+ return this.safeTrade({
719
+ 'id': id,
720
+ 'info': trade,
721
+ 'order': orderId,
722
+ 'timestamp': timestamp,
723
+ 'datetime': this.iso8601(timestamp),
724
+ 'symbol': symbol,
725
+ 'takerOrMaker': takerOrMaker,
726
+ 'type': type,
727
+ 'side': side,
728
+ 'price': price,
729
+ 'amount': amount,
730
+ 'cost': undefined,
731
+ 'fee': fee,
732
+ }, market);
733
+ }
734
+ /**
735
+ * @method
736
+ * @name bitopro#fetchTrades
737
+ * @description get the list of most recent trades for a particular symbol
738
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_trades_data.md
739
+ * @param {string} symbol unified symbol of the market to fetch trades for
740
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
741
+ * @param {int} [limit] the maximum amount of trades to fetch
742
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
743
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
744
+ */
745
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
746
+ await this.loadMarkets();
747
+ const market = this.market(symbol);
748
+ const request = {
749
+ 'pair': market['id'],
750
+ };
751
+ const response = await this.publicGetTradesPair(this.extend(request, params));
752
+ const trades = this.safeList(response, 'data', []);
753
+ //
754
+ // {
755
+ // "data":[
756
+ // {
757
+ // "timestamp":1644651458,
758
+ // "price":"1180785.00000000",
759
+ // "amount":"0.00020000",
760
+ // "isBuyer":false
761
+ // }
762
+ // ]
763
+ // }
764
+ //
765
+ return this.parseTrades(trades, market, since, limit);
766
+ }
767
+ /**
768
+ * @method
769
+ * @name bitopro#fetchTradingFees
770
+ * @description fetch the trading fees for multiple markets
771
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_limitations_and_fees.md
772
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
773
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
774
+ */
775
+ async fetchTradingFees(params = {}) {
776
+ await this.loadMarkets();
777
+ const response = await this.publicGetProvisioningLimitationsAndFees(params);
778
+ const tradingFeeRate = this.safeDict(response, 'tradingFeeRate', {});
779
+ const first = this.safeValue(tradingFeeRate, 0);
780
+ //
781
+ // {
782
+ // "tradingFeeRate":[
783
+ // {
784
+ // "rank":0,
785
+ // "twdVolumeSymbol":"\u003c",
786
+ // "twdVolume":"3000000",
787
+ // "bitoAmountSymbol":"\u003c",
788
+ // "bitoAmount":"7500",
789
+ // "makerFee":"0.001",
790
+ // "takerFee":"0.002",
791
+ // "makerBitoFee":"0.0008",
792
+ // "takerBitoFee":"0.0016"
793
+ // }
794
+ // ],
795
+ // "orderFeesAndLimitations":[
796
+ // {
797
+ // "pair":"BTC/TWD",
798
+ // "minimumOrderAmount":"0.0001",
799
+ // "minimumOrderAmountBase":"BTC",
800
+ // "minimumOrderNumberOfDigits":"0"
801
+ // }
802
+ // ],
803
+ // "restrictionsOfWithdrawalFees":[
804
+ // {
805
+ // "currency":"TWD",
806
+ // "fee":"15",
807
+ // "minimumTradingAmount":"100",
808
+ // "maximumTradingAmount":"1000000",
809
+ // "dailyCumulativeMaximumAmount":"2000000",
810
+ // "remarks":"",
811
+ // "protocol":""
812
+ // }
813
+ // ],
814
+ // "cryptocurrencyDepositFeeAndConfirmation":[
815
+ // {
816
+ // "currency":"TWD",
817
+ // "generalDepositFees":"0",
818
+ // "blockchainConfirmationRequired":""
819
+ // }
820
+ // ],
821
+ // "ttCheckFeesAndLimitationsLevel1":[
822
+ // {
823
+ // "currency":"TWD",
824
+ // "redeemDailyCumulativeMaximumAmount":"",
825
+ // "generateMinimumTradingAmount":"",
826
+ // "generateMaximumTradingAmount":"",
827
+ // "generateDailyCumulativeMaximumAmount":""
828
+ // }
829
+ // ],
830
+ // "ttCheckFeesAndLimitationsLevel2":[
831
+ // {
832
+ // "currency":"TWD",
833
+ // "redeemDailyCumulativeMaximumAmount":"20000000",
834
+ // "generateMinimumTradingAmount":"30",
835
+ // "generateMaximumTradingAmount":"10000000",
836
+ // "generateDailyCumulativeMaximumAmount":"10000000"
837
+ // }
838
+ // ]
839
+ // }
840
+ //
841
+ const result = {};
842
+ const maker = this.safeNumber(first, 'makerFee');
843
+ const taker = this.safeNumber(first, 'takerFee');
844
+ for (let i = 0; i < this.symbols.length; i++) {
845
+ const symbol = this.symbols[i];
846
+ result[symbol] = {
847
+ 'info': first,
848
+ 'symbol': symbol,
849
+ 'maker': maker,
850
+ 'taker': taker,
851
+ 'percentage': true,
852
+ 'tierBased': true,
853
+ };
854
+ }
855
+ return result;
856
+ }
857
+ parseOHLCV(ohlcv, market = undefined) {
858
+ return [
859
+ this.safeInteger(ohlcv, 'timestamp'),
860
+ this.safeNumber(ohlcv, 'open'),
861
+ this.safeNumber(ohlcv, 'high'),
862
+ this.safeNumber(ohlcv, 'low'),
863
+ this.safeNumber(ohlcv, 'close'),
864
+ this.safeNumber(ohlcv, 'volume'),
865
+ ];
866
+ }
867
+ /**
868
+ * @method
869
+ * @name bitopro#fetchOHLCV
870
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
871
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_ohlc_data.md
872
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
873
+ * @param {string} timeframe the length of time each candle represents
874
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
875
+ * @param {int} [limit] the maximum amount of candles to fetch
876
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
877
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
878
+ */
879
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
880
+ await this.loadMarkets();
881
+ const market = this.market(symbol);
882
+ const resolution = this.safeString(this.timeframes, timeframe, timeframe);
883
+ const request = {
884
+ 'pair': market['id'],
885
+ 'resolution': resolution,
886
+ };
887
+ // we need to have a limit argument because "to" and "from" are required
888
+ if (limit === undefined) {
889
+ limit = 500;
890
+ }
891
+ else {
892
+ limit = Math.min(limit, 75000); // supports slightly more than 75k candles atm, but limit here to avoid errors
893
+ }
894
+ const timeframeInSeconds = this.parseTimeframe(timeframe);
895
+ let alignedSince = undefined;
896
+ if (since === undefined) {
897
+ request['to'] = this.seconds();
898
+ request['from'] = request['to'] - (limit * timeframeInSeconds);
899
+ }
900
+ else {
901
+ const timeframeInMilliseconds = timeframeInSeconds * 1000;
902
+ alignedSince = Math.floor(since / timeframeInMilliseconds) * timeframeInMilliseconds;
903
+ request['from'] = Math.floor(since / 1000);
904
+ request['to'] = this.sum(request['from'], limit * timeframeInSeconds);
905
+ }
906
+ const response = await this.publicGetTradingHistoryPair(this.extend(request, params));
907
+ const data = this.safeList(response, 'data', []);
908
+ //
909
+ // {
910
+ // "data":[
911
+ // {
912
+ // "timestamp":1644581100000,
913
+ // "open":"1214737",
914
+ // "high":"1215110",
915
+ // "low":"1214737",
916
+ // "close":"1215110",
917
+ // "volume":"0.08423959"
918
+ // }
919
+ // ]
920
+ // }
921
+ //
922
+ const sparse = this.parseOHLCVs(data, market, timeframe, since, limit);
923
+ return this.insertMissingCandles(sparse, timeframeInSeconds, alignedSince, limit);
924
+ }
925
+ insertMissingCandles(candles, distance, since, limit) {
926
+ // the exchange doesn't send zero volume candles so we emulate them instead
927
+ // otherwise sending a limit arg leads to unexpected results
928
+ const length = candles.length;
929
+ if (length === 0) {
930
+ return candles;
931
+ }
932
+ const result = [];
933
+ let copyFrom = candles[0];
934
+ let timestamp = undefined;
935
+ if (since === undefined) {
936
+ timestamp = copyFrom[0];
937
+ }
938
+ else {
939
+ timestamp = since;
940
+ }
941
+ let i = 0;
942
+ const candleLength = candles.length;
943
+ let resultLength = 0;
944
+ while ((resultLength < limit) && (i < candleLength)) {
945
+ const candle = candles[i];
946
+ if (candle[0] === timestamp) {
947
+ result.push(candle);
948
+ i = this.sum(i, 1);
949
+ }
950
+ else {
951
+ const copy = this.arrayConcat([], copyFrom);
952
+ copy[0] = timestamp;
953
+ // set open, high, low to close
954
+ copy[1] = copy[4];
955
+ copy[2] = copy[4];
956
+ copy[3] = copy[4];
957
+ copy[5] = this.parseNumber('0');
958
+ result.push(copy);
959
+ }
960
+ timestamp = this.sum(timestamp, distance * 1000);
961
+ resultLength = result.length;
962
+ copyFrom = result[resultLength - 1];
963
+ }
964
+ return result;
965
+ }
966
+ parseBalance(response) {
967
+ //
968
+ // [{
969
+ // "currency":"twd",
970
+ // "amount":"0",
971
+ // "available":"0",
972
+ // "stake":"0",
973
+ // "tradable":true
974
+ // }]
975
+ //
976
+ const result = {
977
+ 'info': response,
978
+ };
979
+ for (let i = 0; i < response.length; i++) {
980
+ const balance = response[i];
981
+ const currencyId = this.safeString(balance, 'currency');
982
+ const code = this.safeCurrencyCode(currencyId);
983
+ const amount = this.safeString(balance, 'amount');
984
+ const available = this.safeString(balance, 'available');
985
+ const account = {
986
+ 'free': available,
987
+ 'total': amount,
988
+ };
989
+ result[code] = account;
990
+ }
991
+ return this.safeBalance(result);
992
+ }
993
+ /**
994
+ * @method
995
+ * @name bitopro#fetchBalance
996
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
997
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_account_balance.md
998
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
999
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1000
+ */
1001
+ async fetchBalance(params = {}) {
1002
+ await this.loadMarkets();
1003
+ const response = await this.privateGetAccountsBalance(params);
1004
+ const balances = this.safeList(response, 'data', []);
1005
+ //
1006
+ // {
1007
+ // "data":[
1008
+ // {
1009
+ // "currency":"twd",
1010
+ // "amount":"0",
1011
+ // "available":"0",
1012
+ // "stake":"0",
1013
+ // "tradable":true
1014
+ // }
1015
+ // ]
1016
+ // }
1017
+ //
1018
+ return this.parseBalance(balances);
1019
+ }
1020
+ parseOrderStatus(status) {
1021
+ const statuses = {
1022
+ '-1': 'open',
1023
+ '0': 'open',
1024
+ '1': 'open',
1025
+ '2': 'closed',
1026
+ '3': 'closed',
1027
+ '4': 'canceled',
1028
+ '6': 'canceled',
1029
+ };
1030
+ return this.safeString(statuses, status, undefined);
1031
+ }
1032
+ parseOrder(order, market = undefined) {
1033
+ //
1034
+ // createOrder
1035
+ // {
1036
+ // "orderId": "2220595581",
1037
+ // "timestamp": "1644896744886",
1038
+ // "action": "SELL",
1039
+ // "amount": "0.01",
1040
+ // "price": "15000",
1041
+ // "timeInForce": "GTC"
1042
+ // }
1043
+ //
1044
+ // fetchOrder
1045
+ // {
1046
+ // "id":"8777138788",
1047
+ // "pair":"bnb_twd",
1048
+ // "price":"16000",
1049
+ // "avgExecutionPrice":"0",
1050
+ // "action":"SELL",
1051
+ // "type":"LIMIT",
1052
+ // "timestamp":1644899002598,
1053
+ // "status":4,
1054
+ // "originalAmount":"0.01",
1055
+ // "remainingAmount":"0.01",
1056
+ // "executedAmount":"0",
1057
+ // "fee":"0",
1058
+ // "feeSymbol":"twd",
1059
+ // "bitoFee":"0",
1060
+ // "total":"0",
1061
+ // "seq":"BNBTWD548774666",
1062
+ // "timeInForce":"GTC",
1063
+ // "createdTimestamp":1644898944074,
1064
+ // "updatedTimestamp":1644899002598
1065
+ // }
1066
+ //
1067
+ const id = this.safeString2(order, 'id', 'orderId');
1068
+ const timestamp = this.safeInteger2(order, 'timestamp', 'createdTimestamp');
1069
+ let side = this.safeString(order, 'action');
1070
+ side = side.toLowerCase();
1071
+ const amount = this.safeString2(order, 'amount', 'originalAmount');
1072
+ const price = this.safeString(order, 'price');
1073
+ const marketId = this.safeString(order, 'pair');
1074
+ market = this.safeMarket(marketId, market, '_');
1075
+ const symbol = this.safeString(market, 'symbol');
1076
+ const orderStatus = this.safeString(order, 'status');
1077
+ const status = this.parseOrderStatus(orderStatus);
1078
+ const type = this.safeStringLower(order, 'type');
1079
+ const average = this.safeString(order, 'avgExecutionPrice');
1080
+ const filled = this.safeString(order, 'executedAmount');
1081
+ const remaining = this.safeString(order, 'remainingAmount');
1082
+ const timeInForce = this.safeString(order, 'timeInForce');
1083
+ let postOnly = undefined;
1084
+ if (timeInForce === 'POST_ONLY') {
1085
+ postOnly = true;
1086
+ }
1087
+ let fee = undefined;
1088
+ const feeAmount = this.safeString(order, 'fee');
1089
+ const feeSymbol = this.safeCurrencyCode(this.safeString(order, 'feeSymbol'));
1090
+ if (Precise.stringGt(feeAmount, '0')) {
1091
+ fee = {
1092
+ 'currency': feeSymbol,
1093
+ 'cost': feeAmount,
1094
+ };
1095
+ }
1096
+ return this.safeOrder({
1097
+ 'id': id,
1098
+ 'clientOrderId': undefined,
1099
+ 'timestamp': timestamp,
1100
+ 'datetime': this.iso8601(timestamp),
1101
+ 'lastTradeTimestamp': this.safeInteger(order, 'updatedTimestamp'),
1102
+ 'symbol': symbol,
1103
+ 'type': type,
1104
+ 'timeInForce': timeInForce,
1105
+ 'postOnly': postOnly,
1106
+ 'side': side,
1107
+ 'price': price,
1108
+ 'triggerPrice': undefined,
1109
+ 'amount': amount,
1110
+ 'cost': undefined,
1111
+ 'average': average,
1112
+ 'filled': filled,
1113
+ 'remaining': remaining,
1114
+ 'status': status,
1115
+ 'fee': fee,
1116
+ 'trades': undefined,
1117
+ 'info': order,
1118
+ }, market);
1119
+ }
1120
+ /**
1121
+ * @method
1122
+ * @name bitopro#createOrder
1123
+ * @description create a trade order
1124
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/create_an_order.md
1125
+ * @param {string} symbol unified symbol of the market to create an order in
1126
+ * @param {string} type 'market' or 'limit'
1127
+ * @param {string} side 'buy' or 'sell'
1128
+ * @param {float} amount how much of currency you want to trade in units of base currency
1129
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1130
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1131
+ * @param {object} [params.triggerPrice] the price at which a trigger order is triggered at
1132
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1133
+ */
1134
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1135
+ await this.loadMarkets();
1136
+ const market = this.market(symbol);
1137
+ const request = {
1138
+ 'type': type,
1139
+ 'pair': market['id'],
1140
+ 'action': side,
1141
+ 'amount': this.amountToPrecision(symbol, amount),
1142
+ 'timestamp': this.milliseconds(),
1143
+ };
1144
+ const orderType = type.toUpperCase();
1145
+ if (orderType === 'LIMIT') {
1146
+ request['price'] = this.priceToPrecision(symbol, price);
1147
+ }
1148
+ if (orderType === 'STOP_LIMIT') {
1149
+ request['price'] = this.priceToPrecision(symbol, price);
1150
+ const triggerPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
1151
+ params = this.omit(params, ['triggerPrice', 'stopPrice']);
1152
+ if (triggerPrice === undefined) {
1153
+ throw new InvalidOrder(this.id + ' createOrder() requires a triggerPrice parameter for ' + orderType + ' orders');
1154
+ }
1155
+ else {
1156
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
1157
+ }
1158
+ const condition = this.safeString(params, 'condition');
1159
+ if (condition === undefined) {
1160
+ throw new InvalidOrder(this.id + ' createOrder() requires a condition parameter for ' + orderType + ' orders');
1161
+ }
1162
+ else {
1163
+ request['condition'] = condition;
1164
+ }
1165
+ }
1166
+ const postOnly = this.isPostOnly(orderType === 'MARKET', undefined, params);
1167
+ if (postOnly) {
1168
+ request['timeInForce'] = 'POST_ONLY';
1169
+ }
1170
+ const response = await this.privatePostOrdersPair(this.extend(request, params));
1171
+ //
1172
+ // {
1173
+ // "orderId": "2220595581",
1174
+ // "timestamp": "1644896744886",
1175
+ // "action": "SELL",
1176
+ // "amount": "0.01",
1177
+ // "price": "15000",
1178
+ // "timeInForce": "GTC"
1179
+ // }
1180
+ //
1181
+ return this.parseOrder(response, market);
1182
+ }
1183
+ /**
1184
+ * @method
1185
+ * @name bitopro#cancelOrder
1186
+ * @description cancels an open order
1187
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_an_order.md
1188
+ * @param {string} id order id
1189
+ * @param {string} symbol unified symbol of the market the order was made in
1190
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1191
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1192
+ */
1193
+ async cancelOrder(id, symbol = undefined, params = {}) {
1194
+ if (symbol === undefined) {
1195
+ throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
1196
+ }
1197
+ await this.loadMarkets();
1198
+ const market = this.market(symbol);
1199
+ const request = {
1200
+ 'id': id,
1201
+ 'pair': market['id'],
1202
+ };
1203
+ const response = await this.privateDeleteOrdersPairId(this.extend(request, params));
1204
+ //
1205
+ // {
1206
+ // "orderId":"8777138788",
1207
+ // "action":"SELL",
1208
+ // "timestamp":1644899002465,
1209
+ // "price":"16000",
1210
+ // "amount":"0.01"
1211
+ // }
1212
+ //
1213
+ return this.parseOrder(response, market);
1214
+ }
1215
+ parseCancelOrders(data) {
1216
+ const dataKeys = Object.keys(data);
1217
+ const orders = [];
1218
+ for (let i = 0; i < dataKeys.length; i++) {
1219
+ const marketId = dataKeys[i];
1220
+ const orderIds = data[marketId];
1221
+ for (let j = 0; j < orderIds.length; j++) {
1222
+ orders.push(this.safeOrder({
1223
+ 'info': orderIds[j],
1224
+ 'id': orderIds[j],
1225
+ 'symbol': this.safeSymbol(marketId),
1226
+ }));
1227
+ }
1228
+ }
1229
+ return orders;
1230
+ }
1231
+ /**
1232
+ * @method
1233
+ * @name bitopro#cancelOrders
1234
+ * @description cancel multiple orders
1235
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_batch_orders.md
1236
+ * @param {string[]} ids order ids
1237
+ * @param {string} symbol unified market symbol
1238
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1239
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1240
+ */
1241
+ async cancelOrders(ids, symbol = undefined, params = {}) {
1242
+ if (symbol === undefined) {
1243
+ throw new ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
1244
+ }
1245
+ await this.loadMarkets();
1246
+ const market = this.market(symbol);
1247
+ const id = market['uppercaseId'];
1248
+ const request = {};
1249
+ request[id] = ids;
1250
+ const response = await this.privatePutOrders(this.extend(request, params));
1251
+ //
1252
+ // {
1253
+ // "data":{
1254
+ // "BNB_TWD":[
1255
+ // "5236347105",
1256
+ // "359488711"
1257
+ // ]
1258
+ // }
1259
+ // }
1260
+ //
1261
+ const data = this.safeDict(response, 'data');
1262
+ return this.parseCancelOrders(data);
1263
+ }
1264
+ /**
1265
+ * @method
1266
+ * @name bitopro#cancelAllOrders
1267
+ * @description cancel all open orders
1268
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/cancel_all_orders.md
1269
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1270
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1271
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1272
+ */
1273
+ async cancelAllOrders(symbol = undefined, params = {}) {
1274
+ await this.loadMarkets();
1275
+ const request = {
1276
+ // 'pair': market['id'], // optional
1277
+ };
1278
+ let response = undefined;
1279
+ if (symbol !== undefined) {
1280
+ const market = this.market(symbol);
1281
+ request['pair'] = market['id'];
1282
+ response = await this.privateDeleteOrdersPair(this.extend(request, params));
1283
+ }
1284
+ else {
1285
+ response = await this.privateDeleteOrdersAll(this.extend(request, params));
1286
+ }
1287
+ const data = this.safeDict(response, 'data', {});
1288
+ //
1289
+ // {
1290
+ // "data":{
1291
+ // "BNB_TWD":[
1292
+ // "9515988421",
1293
+ // "4639130027"
1294
+ // ]
1295
+ // }
1296
+ // }
1297
+ //
1298
+ return this.parseCancelOrders(data);
1299
+ }
1300
+ /**
1301
+ * @method
1302
+ * @name bitopro#fetchOrder
1303
+ * @description fetches information on an order made by the user
1304
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_an_order_data.md
1305
+ * @param {string} id the order id
1306
+ * @param {string} symbol unified symbol of the market the order was made in
1307
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1308
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1309
+ */
1310
+ async fetchOrder(id, symbol = undefined, params = {}) {
1311
+ if (symbol === undefined) {
1312
+ throw new ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
1313
+ }
1314
+ await this.loadMarkets();
1315
+ const market = this.market(symbol);
1316
+ const request = {
1317
+ 'orderId': id,
1318
+ 'pair': market['id'],
1319
+ };
1320
+ const response = await this.privateGetOrdersPairOrderId(this.extend(request, params));
1321
+ //
1322
+ // {
1323
+ // "id":"8777138788",
1324
+ // "pair":"bnb_twd",
1325
+ // "price":"16000",
1326
+ // "avgExecutionPrice":"0",
1327
+ // "action":"SELL",
1328
+ // "type":"LIMIT",
1329
+ // "timestamp":1644899002598,
1330
+ // "status":4,
1331
+ // "originalAmount":"0.01",
1332
+ // "remainingAmount":"0.01",
1333
+ // "executedAmount":"0",
1334
+ // "fee":"0",
1335
+ // "feeSymbol":"twd",
1336
+ // "bitoFee":"0",
1337
+ // "total":"0",
1338
+ // "seq":"BNBTWD548774666",
1339
+ // "timeInForce":"GTC",
1340
+ // "createdTimestamp":1644898944074,
1341
+ // "updatedTimestamp":1644899002598
1342
+ // }
1343
+ //
1344
+ return this.parseOrder(response, market);
1345
+ }
1346
+ /**
1347
+ * @method
1348
+ * @name bitopro#fetchOrders
1349
+ * @description fetches information on multiple orders made by the user
1350
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
1351
+ * @param {string} symbol unified market symbol of the market orders were made in
1352
+ * @param {int} [since] the earliest time in ms to fetch orders for
1353
+ * @param {int} [limit] the maximum number of order structures to retrieve
1354
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1355
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1356
+ */
1357
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1358
+ if (symbol === undefined) {
1359
+ throw new ArgumentsRequired(this.id + ' fetchOrders() requires a symbol argument');
1360
+ }
1361
+ await this.loadMarkets();
1362
+ const market = this.market(symbol);
1363
+ const request = {
1364
+ 'pair': market['id'],
1365
+ // 'startTimestamp': 0,
1366
+ // 'endTimestamp': 0,
1367
+ // 'statusKind': '',
1368
+ // 'orderId': '',
1369
+ };
1370
+ if (since !== undefined) {
1371
+ request['startTimestamp'] = since;
1372
+ }
1373
+ if (limit !== undefined) {
1374
+ request['limit'] = limit;
1375
+ }
1376
+ const response = await this.privateGetOrdersAllPair(this.extend(request, params));
1377
+ let orders = this.safeList(response, 'data', []);
1378
+ if (orders === undefined) {
1379
+ orders = [];
1380
+ }
1381
+ //
1382
+ // {
1383
+ // "data":[
1384
+ // {
1385
+ // "id":"2220595581",
1386
+ // "pair":"bnb_twd",
1387
+ // "price":"15000",
1388
+ // "avgExecutionPrice":"0",
1389
+ // "action":"SELL",
1390
+ // "type":"LIMIT",
1391
+ // "createdTimestamp":1644896744886,
1392
+ // "updatedTimestamp":1644898706236,
1393
+ // "status":4,
1394
+ // "originalAmount":"0.01",
1395
+ // "remainingAmount":"0.01",
1396
+ // "executedAmount":"0",
1397
+ // "fee":"0",
1398
+ // "feeSymbol":"twd",
1399
+ // "bitoFee":"0",
1400
+ // "total":"0",
1401
+ // "seq":"BNBTWD8540871774",
1402
+ // "timeInForce":"GTC"
1403
+ // }
1404
+ // ]
1405
+ // }
1406
+ //
1407
+ return this.parseOrders(orders, market, since, limit);
1408
+ }
1409
+ /**
1410
+ * @method
1411
+ * @name bitopro#fetchOpenOrders
1412
+ * @description fetch all unfilled currently open orders
1413
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_open_orders_data.md
1414
+ * @param {string} symbol unified market symbol
1415
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1416
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1417
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1418
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1419
+ */
1420
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1421
+ await this.loadMarkets();
1422
+ const request = {};
1423
+ let market = undefined;
1424
+ if (symbol !== undefined) {
1425
+ market = this.market(symbol);
1426
+ request['pair'] = market['id'];
1427
+ }
1428
+ const response = await this.privateGetOrdersOpen(this.extend(request, params));
1429
+ const orders = this.safeList(response, 'data', []);
1430
+ return this.parseOrders(orders, market, since, limit);
1431
+ }
1432
+ /**
1433
+ * @method
1434
+ * @name bitopro#fetchClosedOrders
1435
+ * @description fetches information on multiple closed orders made by the user
1436
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
1437
+ * @param {string} symbol unified market symbol of the market orders were made in
1438
+ * @param {int} [since] the earliest time in ms to fetch orders for
1439
+ * @param {int} [limit] the maximum number of order structures to retrieve
1440
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1441
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1442
+ */
1443
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1444
+ const request = {
1445
+ 'statusKind': 'DONE',
1446
+ };
1447
+ return this.fetchOrders(symbol, since, limit, this.extend(request, params));
1448
+ }
1449
+ /**
1450
+ * @method
1451
+ * @name bitopro#fetchMyTrades
1452
+ * @description fetch all trades made by the user
1453
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_trades_data.md
1454
+ * @param {string} symbol unified market symbol
1455
+ * @param {int} [since] the earliest time in ms to fetch trades for
1456
+ * @param {int} [limit] the maximum number of trades structures to retrieve
1457
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1458
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1459
+ */
1460
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1461
+ if (symbol === undefined) {
1462
+ throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1463
+ }
1464
+ await this.loadMarkets();
1465
+ const market = this.market(symbol);
1466
+ const request = {
1467
+ 'pair': market['id'],
1468
+ };
1469
+ const response = await this.privateGetOrdersTradesPair(this.extend(request, params));
1470
+ const trades = this.safeList(response, 'data', []);
1471
+ //
1472
+ // {
1473
+ // "data":[
1474
+ // {
1475
+ // "tradeId":"5685030251",
1476
+ // "orderId":"9669168142",
1477
+ // "price":"11821.8",
1478
+ // "action":"SELL",
1479
+ // "baseAmount":"0.01",
1480
+ // "quoteAmount":"118.218",
1481
+ // "fee":"0.236436",
1482
+ // "feeSymbol":"BNB",
1483
+ // "isTaker":true,
1484
+ // "timestamp":1644905714862,
1485
+ // "createdTimestamp":1644905714862
1486
+ // }
1487
+ // ]
1488
+ // }
1489
+ //
1490
+ return this.parseTrades(trades, market, since, limit);
1491
+ }
1492
+ parseTransactionStatus(status) {
1493
+ const states = {
1494
+ 'COMPLETE': 'ok',
1495
+ 'INVALID': 'failed',
1496
+ 'PROCESSING': 'pending',
1497
+ 'WAIT_PROCESS': 'pending',
1498
+ 'FAILED': 'failed',
1499
+ 'EXPIRED': 'failed',
1500
+ 'CANCELLED': 'failed',
1501
+ 'EMAIL_VERIFICATION': 'pending',
1502
+ 'WAIT_CONFIRMATION': 'pending',
1503
+ };
1504
+ return this.safeString(states, status, status);
1505
+ }
1506
+ parseTransaction(transaction, currency = undefined) {
1507
+ //
1508
+ // fetchDeposits
1509
+ //
1510
+ // {
1511
+ // "serial": "20220214X766799",
1512
+ // "timestamp": "1644833015053",
1513
+ // "address": "bnb1xml62k5a9dcewgc542fha75fyxdcp0zv8eqfsh",
1514
+ // "amount": "0.20000000",
1515
+ // "fee": "0.00000000",
1516
+ // "total": "0.20000000",
1517
+ // "status": "COMPLETE",
1518
+ // "txid": "A3CC4F6828CC752B9F3737F48B5826B9EC2857040CB5141D0CC955F7E53DB6D9",
1519
+ // "message": "778553959",
1520
+ // "protocol": "MAIN",
1521
+ // "id": "2905906537"
1522
+ // }
1523
+ //
1524
+ // fetchWithdrawals || fetchWithdraw
1525
+ //
1526
+ // {
1527
+ // "serial": "20220215BW14069838",
1528
+ // "timestamp": "1644907716044",
1529
+ // "address": "TKrwMaZaGiAvtXCFT41xHuusNcs4LPWS7w",
1530
+ // "amount": "8.00000000",
1531
+ // "fee": "2.00000000",
1532
+ // "total": "10.00000000",
1533
+ // "status": "COMPLETE",
1534
+ // "txid": "50bf250c71a582f40cf699fb58bab978437ea9bdf7259ff8072e669aab30c32b",
1535
+ // "protocol": "TRX",
1536
+ // "id": "9925310345"
1537
+ // }
1538
+ //
1539
+ // withdraw
1540
+ //
1541
+ // {
1542
+ // "serial": "20220215BW14069838",
1543
+ // "currency": "USDT",
1544
+ // "protocol": "TRX",
1545
+ // "address": "TKrwMaZaGiAvtXCFT41xHuusNcs4LPWS7w",
1546
+ // "amount": "8",
1547
+ // "fee": "2",
1548
+ // "total": "10"
1549
+ // }
1550
+ //
1551
+ const currencyId = this.safeString(transaction, 'coin');
1552
+ const code = this.safeCurrencyCode(currencyId, currency);
1553
+ const timestamp = this.safeInteger(transaction, 'timestamp');
1554
+ const address = this.safeString(transaction, 'address');
1555
+ const tag = this.safeString(transaction, 'message');
1556
+ const status = this.safeString(transaction, 'status');
1557
+ let networkId = this.safeString(transaction, 'protocol');
1558
+ if (networkId === 'MAIN') {
1559
+ networkId = code;
1560
+ }
1561
+ return {
1562
+ 'info': transaction,
1563
+ 'id': this.safeString(transaction, 'serial'),
1564
+ 'txid': this.safeString(transaction, 'txid'),
1565
+ 'type': undefined,
1566
+ 'currency': code,
1567
+ 'network': this.networkIdToCode(networkId),
1568
+ 'amount': this.safeNumber(transaction, 'total'),
1569
+ 'status': this.parseTransactionStatus(status),
1570
+ 'timestamp': timestamp,
1571
+ 'datetime': this.iso8601(timestamp),
1572
+ 'address': address,
1573
+ 'addressFrom': undefined,
1574
+ 'addressTo': address,
1575
+ 'tag': tag,
1576
+ 'tagFrom': undefined,
1577
+ 'tagTo': tag,
1578
+ 'updated': undefined,
1579
+ 'comment': undefined,
1580
+ 'internal': undefined,
1581
+ 'fee': {
1582
+ 'currency': code,
1583
+ 'cost': this.safeNumber(transaction, 'fee'),
1584
+ 'rate': undefined,
1585
+ },
1586
+ };
1587
+ }
1588
+ /**
1589
+ * @method
1590
+ * @name bitopro#fetchDeposits
1591
+ * @description fetch all deposits made to an account
1592
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_deposit_invoices_data.md
1593
+ * @param {string} code unified currency code
1594
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1595
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1596
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1597
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1598
+ */
1599
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1600
+ if (code === undefined) {
1601
+ throw new ArgumentsRequired(this.id + ' fetchDeposits() requires the code argument');
1602
+ }
1603
+ await this.loadMarkets();
1604
+ const currency = this.safeCurrency(code);
1605
+ const request = {
1606
+ 'currency': currency['id'],
1607
+ // 'endTimestamp': 0,
1608
+ // 'id': '',
1609
+ // 'statuses': '', // 'ROCESSING,COMPLETE,INVALID,WAIT_PROCESS,CANCELLED,FAILED'
1610
+ };
1611
+ if (since !== undefined) {
1612
+ request['startTimestamp'] = since;
1613
+ }
1614
+ if (limit !== undefined) {
1615
+ request['limit'] = limit;
1616
+ }
1617
+ const response = await this.privateGetWalletDepositHistoryCurrency(this.extend(request, params));
1618
+ const result = this.safeList(response, 'data', []);
1619
+ //
1620
+ // {
1621
+ // "data":[
1622
+ // {
1623
+ // "serial":"20220214X766799",
1624
+ // "timestamp":"1644833015053",
1625
+ // "address":"bnb1xml62k5a9dcewgc542fha75fyxdcp0zv8eqfsh",
1626
+ // "amount":"0.20000000",
1627
+ // "fee":"0.00000000",
1628
+ // "total":"0.20000000",
1629
+ // "status":"COMPLETE",
1630
+ // "txid":"A3CC4F6828CC752B9F3737F48B5826B9EC2857040CB5141D0CC955F7E53DB6D9",
1631
+ // "message":"778553959",
1632
+ // "protocol":"MAIN",
1633
+ // "id":"2905906537"
1634
+ // }
1635
+ // ]
1636
+ // }
1637
+ //
1638
+ return this.parseTransactions(result, currency, since, limit, { 'type': 'deposit' });
1639
+ }
1640
+ /**
1641
+ * @method
1642
+ * @name bitopro#fetchWithdrawals
1643
+ * @description fetch all withdrawals made from an account
1644
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_withdraw_invoices_data.md
1645
+ * @param {string} code unified currency code
1646
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1647
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1648
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1649
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1650
+ */
1651
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1652
+ if (code === undefined) {
1653
+ throw new ArgumentsRequired(this.id + ' fetchWithdrawals() requires the code argument');
1654
+ }
1655
+ await this.loadMarkets();
1656
+ const currency = this.safeCurrency(code);
1657
+ const request = {
1658
+ 'currency': currency['id'],
1659
+ // 'endTimestamp': 0,
1660
+ // 'id': '',
1661
+ // 'statuses': '', // 'PROCESSING,COMPLETE,EXPIRED,INVALID,WAIT_PROCESS,WAIT_CONFIRMATION,EMAIL_VERIFICATION,CANCELLED'
1662
+ };
1663
+ if (since !== undefined) {
1664
+ request['startTimestamp'] = since;
1665
+ }
1666
+ if (limit !== undefined) {
1667
+ request['limit'] = limit;
1668
+ }
1669
+ const response = await this.privateGetWalletWithdrawHistoryCurrency(this.extend(request, params));
1670
+ const result = this.safeList(response, 'data', []);
1671
+ //
1672
+ // {
1673
+ // "data":[
1674
+ // {
1675
+ // "serial":"20220215BW14069838",
1676
+ // "timestamp":"1644907716044",
1677
+ // "address":"TKrwMaZaGiAvtXCFT41xHuusNcs4LPWS7w",
1678
+ // "amount":"8.00000000",
1679
+ // "fee":"2.00000000",
1680
+ // "total":"10.00000000",
1681
+ // "status":"COMPLETE",
1682
+ // "txid":"50bf250c71a582f40cf699fb58bab978437ea9bdf7259ff8072e669aab30c32b",
1683
+ // "protocol":"TRX",
1684
+ // "id":"9925310345"
1685
+ // }
1686
+ // ]
1687
+ // }
1688
+ //
1689
+ return this.parseTransactions(result, currency, since, limit, { 'type': 'withdrawal' });
1690
+ }
1691
+ /**
1692
+ * @method
1693
+ * @name bitopro#fetchWithdrawal
1694
+ * @description fetch data on a currency withdrawal via the withdrawal id
1695
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_an_withdraw_invoice_data.md
1696
+ * @param {string} id withdrawal id
1697
+ * @param {string} code unified currency code of the currency withdrawn, default is undefined
1698
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1699
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1700
+ */
1701
+ async fetchWithdrawal(id, code = undefined, params = {}) {
1702
+ if (code === undefined) {
1703
+ throw new ArgumentsRequired(this.id + ' fetchWithdrawal() requires the code argument');
1704
+ }
1705
+ await this.loadMarkets();
1706
+ const currency = this.safeCurrency(code);
1707
+ const request = {
1708
+ 'serial': id,
1709
+ 'currency': currency['id'],
1710
+ };
1711
+ const response = await this.privateGetWalletWithdrawCurrencySerial(this.extend(request, params));
1712
+ const result = this.safeDict(response, 'data', {});
1713
+ //
1714
+ // {
1715
+ // "data":{
1716
+ // "serial":"20220215BW14069838",
1717
+ // "address":"TKrwMaZaGiAvtXCFT41xHuusNcs4LPWS7w",
1718
+ // "amount":"8.00000000",
1719
+ // "fee":"2.00000000",
1720
+ // "total":"10.00000000",
1721
+ // "status":"COMPLETE",
1722
+ // "txid":"50bf250c71a582f40cf699fb58bab978437ea9bdf7259ff8072e669aab30c32b",
1723
+ // "protocol":"TRX",
1724
+ // "id":"9925310345",
1725
+ // "timestamp":"1644907716044"
1726
+ // }
1727
+ // }
1728
+ //
1729
+ return this.parseTransaction(result, currency);
1730
+ }
1731
+ /**
1732
+ * @method
1733
+ * @name bitopro#withdraw
1734
+ * @description make a withdrawal
1735
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/create_an_withdraw_invoice.md
1736
+ * @param {string} code unified currency code
1737
+ * @param {float} amount the amount to withdraw
1738
+ * @param {string} address the address to withdraw to
1739
+ * @param {string} tag
1740
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1741
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1742
+ */
1743
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1744
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1745
+ await this.loadMarkets();
1746
+ this.checkAddress(address);
1747
+ const currency = this.currency(code);
1748
+ const request = {
1749
+ 'currency': currency['id'],
1750
+ 'amount': this.numberToString(amount),
1751
+ 'address': address,
1752
+ };
1753
+ if ('network' in params) {
1754
+ const networks = this.safeDict(this.options, 'networks', {});
1755
+ const requestedNetwork = this.safeStringUpper(params, 'network');
1756
+ params = this.omit(params, ['network']);
1757
+ const networkId = this.safeString(networks, requestedNetwork);
1758
+ if (networkId === undefined) {
1759
+ throw new ExchangeError(this.id + ' invalid network ' + requestedNetwork);
1760
+ }
1761
+ request['protocol'] = networkId;
1762
+ }
1763
+ if (tag !== undefined) {
1764
+ request['message'] = tag;
1765
+ }
1766
+ const response = await this.privatePostWalletWithdrawCurrency(this.extend(request, params));
1767
+ const result = this.safeDict(response, 'data', {});
1768
+ //
1769
+ // {
1770
+ // "data":{
1771
+ // "serial":"20220215BW14069838",
1772
+ // "currency":"USDT",
1773
+ // "protocol":"TRX",
1774
+ // "address":"TKrwMaZaGiAvtXCFT41xHuusNcs4LPWS7w",
1775
+ // "amount":"8",
1776
+ // "fee":"2",
1777
+ // "total":"10"
1778
+ // }
1779
+ // }
1780
+ //
1781
+ return this.parseTransaction(result, currency);
1782
+ }
1783
+ parseDepositWithdrawFee(fee, currency = undefined) {
1784
+ // {
1785
+ // "currency":"eth",
1786
+ // "withdrawFee":"0.007",
1787
+ // "minWithdraw":"0.001",
1788
+ // "maxWithdraw":"1000",
1789
+ // "maxDailyWithdraw":"2000",
1790
+ // "withdraw":true,
1791
+ // "deposit":true,
1792
+ // "depositConfirmation":"12"
1793
+ // }
1794
+ return {
1795
+ 'info': fee,
1796
+ 'withdraw': {
1797
+ 'fee': this.safeNumber(fee, 'withdrawFee'),
1798
+ 'percentage': false,
1799
+ },
1800
+ 'deposit': {
1801
+ 'fee': undefined,
1802
+ 'percentage': undefined,
1803
+ },
1804
+ 'networks': {},
1805
+ };
1806
+ }
1807
+ /**
1808
+ * @method
1809
+ * @name bitopro#fetchDepositWithdrawFees
1810
+ * @description fetch deposit and withdraw fees
1811
+ * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/public/get_currency_info.md
1812
+ * @param {string[]|undefined} codes list of unified currency codes
1813
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1814
+ * @returns {object} a list of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
1815
+ */
1816
+ async fetchDepositWithdrawFees(codes = undefined, params = {}) {
1817
+ await this.loadMarkets();
1818
+ const response = await this.publicGetProvisioningCurrencies(params);
1819
+ //
1820
+ // {
1821
+ // "data":[
1822
+ // {
1823
+ // "currency":"eth",
1824
+ // "withdrawFee":"0.007",
1825
+ // "minWithdraw":"0.001",
1826
+ // "maxWithdraw":"1000",
1827
+ // "maxDailyWithdraw":"2000",
1828
+ // "withdraw":true,
1829
+ // "deposit":true,
1830
+ // "depositConfirmation":"12"
1831
+ // }
1832
+ // ]
1833
+ // }
1834
+ //
1835
+ const data = this.safeList(response, 'data', []);
1836
+ return this.parseDepositWithdrawFees(data, codes, 'currency');
1837
+ }
1838
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1839
+ let url = '/' + this.implodeParams(path, params);
1840
+ const query = this.omit(params, this.extractParams(path));
1841
+ if (headers === undefined) {
1842
+ headers = {};
1843
+ }
1844
+ headers['X-BITOPRO-API'] = 'ccxt';
1845
+ if (api === 'private') {
1846
+ this.checkRequiredCredentials();
1847
+ if (method === 'POST' || method === 'PUT') {
1848
+ body = this.json(params);
1849
+ const payload = this.stringToBase64(body);
1850
+ const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha384);
1851
+ headers['X-BITOPRO-APIKEY'] = this.apiKey;
1852
+ headers['X-BITOPRO-PAYLOAD'] = payload;
1853
+ headers['X-BITOPRO-SIGNATURE'] = signature;
1854
+ }
1855
+ else if (method === 'GET' || method === 'DELETE') {
1856
+ if (Object.keys(query).length) {
1857
+ url += '?' + this.urlencode(query);
1858
+ }
1859
+ const nonce = this.milliseconds();
1860
+ const rawData = {
1861
+ 'nonce': nonce,
1862
+ };
1863
+ const data = this.json(rawData);
1864
+ const payload = this.stringToBase64(data);
1865
+ const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha384);
1866
+ headers['X-BITOPRO-APIKEY'] = this.apiKey;
1867
+ headers['X-BITOPRO-PAYLOAD'] = payload;
1868
+ headers['X-BITOPRO-SIGNATURE'] = signature;
1869
+ }
1870
+ }
1871
+ else if (api === 'public' && method === 'GET') {
1872
+ if (Object.keys(query).length) {
1873
+ url += '?' + this.urlencode(query);
1874
+ }
1875
+ }
1876
+ url = this.urls['api']['rest'] + url;
1877
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1878
+ }
1879
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1880
+ if (response === undefined) {
1881
+ return undefined; // fallback to the default error handler
1882
+ }
1883
+ if (code >= 200 && code < 300) {
1884
+ return undefined;
1885
+ }
1886
+ const feedback = this.id + ' ' + body;
1887
+ const error = this.safeString(response, 'error');
1888
+ this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
1889
+ this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
1890
+ throw new ExchangeError(feedback); // unknown message
1891
+ }
1892
+ }