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,2050 @@
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/bittrade.js';
9
+ import { AuthenticationError, ExchangeError, PermissionDenied, ExchangeNotAvailable, OnMaintenance, InvalidOrder, OrderNotFound, InsufficientFunds, BadSymbol, BadRequest, RequestTimeout, NetworkError, ArgumentsRequired, NotSupported } from './base/errors.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { TRUNCATE, TICK_SIZE } from './base/functions/number.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * @class bittrade
16
+ * @augments Exchange
17
+ */
18
+ export default class bittrade extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'bittrade',
22
+ 'name': 'BitTrade',
23
+ 'countries': ['JP'],
24
+ 'rateLimit': 100,
25
+ 'userAgent': this.userAgents['chrome39'],
26
+ 'certified': false,
27
+ 'version': 'v1',
28
+ 'hostname': 'api-cloud.bittrade.co.jp',
29
+ 'pro': true,
30
+ 'has': {
31
+ 'CORS': undefined,
32
+ 'spot': true,
33
+ 'margin': undefined,
34
+ 'swap': false,
35
+ 'future': false,
36
+ 'option': false,
37
+ 'cancelAllOrders': true,
38
+ 'cancelOrder': true,
39
+ 'cancelOrders': true,
40
+ 'createMarketBuyOrderWithCost': true,
41
+ 'createMarketOrderWithCost': false,
42
+ 'createMarketSellOrderWithCost': false,
43
+ 'createOrder': true,
44
+ 'createStopLimitOrder': false,
45
+ 'createStopMarketOrder': false,
46
+ 'createStopOrder': false,
47
+ 'fetchAccounts': true,
48
+ 'fetchBalance': true,
49
+ 'fetchClosedOrders': true,
50
+ 'fetchCurrencies': true,
51
+ 'fetchDepositAddress': false,
52
+ 'fetchDepositAddressesByNetwork': false,
53
+ 'fetchDeposits': true,
54
+ 'fetchFundingHistory': false,
55
+ 'fetchFundingRate': false,
56
+ 'fetchFundingRateHistory': false,
57
+ 'fetchFundingRates': false,
58
+ 'fetchIndexOHLCV': false,
59
+ 'fetchMarkets': true,
60
+ 'fetchMarkOHLCV': false,
61
+ 'fetchMyTrades': true,
62
+ 'fetchOHLCV': true,
63
+ 'fetchOpenOrders': true,
64
+ 'fetchOrder': true,
65
+ 'fetchOrderBook': true,
66
+ 'fetchOrders': true,
67
+ 'fetchOrderTrades': true,
68
+ 'fetchPremiumIndexOHLCV': false,
69
+ 'fetchTicker': true,
70
+ 'fetchTickers': true,
71
+ 'fetchTime': true,
72
+ 'fetchTrades': true,
73
+ 'fetchTradingLimits': true,
74
+ 'fetchWithdrawals': true,
75
+ 'withdraw': true,
76
+ },
77
+ 'timeframes': {
78
+ '1m': '1min',
79
+ '5m': '5min',
80
+ '15m': '15min',
81
+ '30m': '30min',
82
+ '1h': '60min',
83
+ '4h': '4hour',
84
+ '1d': '1day',
85
+ '1w': '1week',
86
+ '1M': '1mon',
87
+ '1y': '1year',
88
+ },
89
+ 'urls': {
90
+ 'logo': 'https://user-images.githubusercontent.com/1294454/85734211-85755480-b705-11ea-8b35-0b7f1db33a2f.jpg',
91
+ 'api': {
92
+ 'market': 'https://{hostname}',
93
+ 'public': 'https://{hostname}',
94
+ 'private': 'https://{hostname}',
95
+ 'v2Public': 'https://{hostname}',
96
+ 'v2Private': 'https://{hostname}',
97
+ },
98
+ 'www': 'https://www.bittrade.co.jp',
99
+ 'referral': 'https://www.bittrade.co.jp/register/?invite_code=znnq3',
100
+ 'doc': 'https://api-doc.bittrade.co.jp',
101
+ 'fees': 'https://www.bittrade.co.jp/ja-jp/support/fee',
102
+ },
103
+ 'api': {
104
+ 'v2Public': {
105
+ 'get': {
106
+ 'reference/currencies': 1,
107
+ 'market-status': 1, // 获取当前市场状态
108
+ },
109
+ },
110
+ 'v2Private': {
111
+ 'get': {
112
+ 'account/ledger': 1,
113
+ 'account/withdraw/quota': 1,
114
+ 'account/withdraw/address': 1,
115
+ 'account/deposit/address': 1,
116
+ 'account/repayment': 5,
117
+ 'reference/transact-fee-rate': 1,
118
+ 'account/asset-valuation': 0.2,
119
+ 'point/account': 5,
120
+ 'sub-user/user-list': 1,
121
+ 'sub-user/user-state': 1,
122
+ 'sub-user/account-list': 1,
123
+ 'sub-user/deposit-address': 1,
124
+ 'sub-user/query-deposit': 1,
125
+ 'user/api-key': 1,
126
+ 'user/uid': 1,
127
+ 'algo-orders/opening': 1,
128
+ 'algo-orders/history': 1,
129
+ 'algo-orders/specific': 1,
130
+ 'c2c/offers': 1,
131
+ 'c2c/offer': 1,
132
+ 'c2c/transactions': 1,
133
+ 'c2c/repayment': 1,
134
+ 'c2c/account': 1,
135
+ 'etp/reference': 1,
136
+ 'etp/transactions': 5,
137
+ 'etp/transaction': 5,
138
+ 'etp/rebalance': 1,
139
+ 'etp/limit': 1, // 获取ETP持仓限额
140
+ },
141
+ 'post': {
142
+ 'account/transfer': 1,
143
+ 'account/repayment': 5,
144
+ 'point/transfer': 5,
145
+ 'sub-user/management': 1,
146
+ 'sub-user/creation': 1,
147
+ 'sub-user/tradable-market': 1,
148
+ 'sub-user/transferability': 1,
149
+ 'sub-user/api-key-generation': 1,
150
+ 'sub-user/api-key-modification': 1,
151
+ 'sub-user/api-key-deletion': 1,
152
+ 'sub-user/deduct-mode': 1,
153
+ 'algo-orders': 1,
154
+ 'algo-orders/cancel-all-after': 1,
155
+ 'algo-orders/cancellation': 1,
156
+ 'c2c/offer': 1,
157
+ 'c2c/cancellation': 1,
158
+ 'c2c/cancel-all': 1,
159
+ 'c2c/repayment': 1,
160
+ 'c2c/transfer': 1,
161
+ 'etp/creation': 5,
162
+ 'etp/redemption': 5,
163
+ 'etp/{transactId}/cancel': 10,
164
+ 'etp/batch-cancel': 50, // 杠杆ETP批量撤单
165
+ },
166
+ },
167
+ 'market': {
168
+ 'get': {
169
+ 'history/kline': 1,
170
+ 'detail/merged': 1,
171
+ 'depth': 1,
172
+ 'trade': 1,
173
+ 'history/trade': 1,
174
+ 'detail': 1,
175
+ 'tickers': 1,
176
+ 'etp': 1, // 获取杠杆ETP实时净值
177
+ },
178
+ },
179
+ 'public': {
180
+ 'get': {
181
+ 'common/symbols': 1,
182
+ 'common/currencys': 1,
183
+ 'common/timestamp': 1,
184
+ 'common/exchange': 1,
185
+ 'settings/currencys': 1, // ?language=en-US
186
+ },
187
+ },
188
+ 'private': {
189
+ 'get': {
190
+ 'account/accounts': 0.2,
191
+ 'account/accounts/{id}/balance': 0.2,
192
+ 'account/accounts/{sub-uid}': 1,
193
+ 'account/history': 4,
194
+ 'cross-margin/loan-info': 1,
195
+ 'margin/loan-info': 1,
196
+ 'fee/fee-rate/get': 1,
197
+ 'order/openOrders': 0.4,
198
+ 'order/orders': 0.4,
199
+ 'order/orders/{id}': 0.4,
200
+ 'order/orders/{id}/matchresults': 0.4,
201
+ 'order/orders/getClientOrder': 0.4,
202
+ 'order/history': 1,
203
+ 'order/matchresults': 1,
204
+ // 'dw/withdraw-virtual/addresses', // 查询虚拟币提现地址(Deprecated)
205
+ 'query/deposit-withdraw': 1,
206
+ // 'margin/loan-info', // duplicate
207
+ 'margin/loan-orders': 0.2,
208
+ 'margin/accounts/balance': 0.2,
209
+ 'cross-margin/loan-orders': 1,
210
+ 'cross-margin/accounts/balance': 1,
211
+ 'points/actions': 1,
212
+ 'points/orders': 1,
213
+ 'subuser/aggregate-balance': 10,
214
+ 'stable-coin/exchange_rate': 1,
215
+ 'stable-coin/quote': 1,
216
+ },
217
+ 'post': {
218
+ 'account/transfer': 1,
219
+ 'futures/transfer': 1,
220
+ 'order/batch-orders': 0.4,
221
+ 'order/orders/place': 0.2,
222
+ 'order/orders/submitCancelClientOrder': 0.2,
223
+ 'order/orders/batchCancelOpenOrders': 0.4,
224
+ // 'order/orders', // 创建一个新的订单请求 (仅创建订单,不执行下单)
225
+ // 'order/orders/{id}/place', // 执行一个订单 (仅执行已创建的订单)
226
+ 'order/orders/{id}/submitcancel': 0.2,
227
+ 'order/orders/batchcancel': 0.4,
228
+ // 'dw/balance/transfer', // 资产划转
229
+ 'dw/withdraw/api/create': 1,
230
+ // 'dw/withdraw-virtual/create', // 申请提现虚拟币
231
+ // 'dw/withdraw-virtual/{id}/place', // 确认申请虚拟币提现(Deprecated)
232
+ 'dw/withdraw-virtual/{id}/cancel': 1,
233
+ 'dw/transfer-in/margin': 10,
234
+ 'dw/transfer-out/margin': 10,
235
+ 'margin/orders': 10,
236
+ 'margin/orders/{id}/repay': 10,
237
+ 'cross-margin/transfer-in': 1,
238
+ 'cross-margin/transfer-out': 1,
239
+ 'cross-margin/orders': 1,
240
+ 'cross-margin/orders/{id}/repay': 1,
241
+ 'stable-coin/exchange': 1,
242
+ 'subuser/transfer': 10,
243
+ },
244
+ },
245
+ },
246
+ 'fees': {
247
+ 'trading': {
248
+ 'feeSide': 'get',
249
+ 'tierBased': false,
250
+ 'percentage': true,
251
+ 'maker': this.parseNumber('0.002'),
252
+ 'taker': this.parseNumber('0.002'),
253
+ },
254
+ },
255
+ 'features': {
256
+ 'spot': {
257
+ 'sandbox': false,
258
+ 'createOrder': {
259
+ 'marginMode': false,
260
+ 'triggerPrice': true,
261
+ 'triggerPriceType': undefined,
262
+ 'triggerDirection': false,
263
+ 'stopLossPrice': false,
264
+ 'takeProfitPrice': false,
265
+ 'attachedStopLossTakeProfit': undefined,
266
+ 'timeInForce': {
267
+ 'IOC': false,
268
+ 'FOK': false,
269
+ 'PO': false,
270
+ 'GTD': false,
271
+ },
272
+ 'hedged': false,
273
+ 'selfTradePrevention': false,
274
+ 'trailing': false,
275
+ 'leverage': false,
276
+ 'marketBuyByCost': true,
277
+ 'marketBuyRequiresPrice': false,
278
+ 'iceberg': false,
279
+ },
280
+ 'createOrders': undefined,
281
+ 'fetchMyTrades': {
282
+ 'marginMode': false,
283
+ 'limit': 100,
284
+ 'daysBack': 120,
285
+ 'untilDays': 2,
286
+ 'symbolRequired': false,
287
+ },
288
+ 'fetchOrder': {
289
+ 'marginMode': false,
290
+ 'trigger': false,
291
+ 'trailing': false,
292
+ 'symbolRequired': false,
293
+ },
294
+ 'fetchOpenOrders': {
295
+ 'marginMode': false,
296
+ 'limit': undefined,
297
+ 'trigger': false,
298
+ 'trailing': false,
299
+ 'symbolRequired': false,
300
+ },
301
+ 'fetchOrders': {
302
+ 'marginMode': false,
303
+ 'limit': undefined,
304
+ 'daysBack': undefined,
305
+ 'untilDays': undefined,
306
+ 'trigger': false,
307
+ 'trailing': false,
308
+ 'symbolRequired': false,
309
+ },
310
+ 'fetchClosedOrders': {
311
+ 'marginMode': false,
312
+ 'limit': undefined,
313
+ 'daysBack': undefined,
314
+ 'daysBackCanceled': undefined,
315
+ 'untilDays': undefined,
316
+ 'trigger': false,
317
+ 'trailing': false,
318
+ 'symbolRequired': false,
319
+ },
320
+ 'fetchOHLCV': {
321
+ 'limit': 2000,
322
+ },
323
+ },
324
+ 'swap': {
325
+ 'linear': undefined,
326
+ 'inverse': undefined,
327
+ },
328
+ 'future': {
329
+ 'linear': undefined,
330
+ 'inverse': undefined,
331
+ },
332
+ },
333
+ 'precisionMode': TICK_SIZE,
334
+ 'exceptions': {
335
+ 'broad': {
336
+ 'contract is restricted of closing positions on API. Please contact customer service': OnMaintenance,
337
+ 'maintain': OnMaintenance,
338
+ },
339
+ 'exact': {
340
+ // err-code
341
+ 'bad-request': BadRequest,
342
+ 'base-date-limit-error': BadRequest,
343
+ 'api-not-support-temp-addr': PermissionDenied,
344
+ 'timeout': RequestTimeout,
345
+ 'gateway-internal-error': ExchangeNotAvailable,
346
+ 'account-frozen-balance-insufficient-error': InsufficientFunds,
347
+ 'invalid-amount': InvalidOrder,
348
+ 'order-limitorder-amount-min-error': InvalidOrder,
349
+ 'order-limitorder-amount-max-error': InvalidOrder,
350
+ 'order-marketorder-amount-min-error': InvalidOrder,
351
+ 'order-limitorder-price-min-error': InvalidOrder,
352
+ 'order-limitorder-price-max-error': InvalidOrder,
353
+ 'order-holding-limit-failed': InvalidOrder,
354
+ 'order-orderprice-precision-error': InvalidOrder,
355
+ 'order-etp-nav-price-max-error': InvalidOrder,
356
+ 'order-orderstate-error': OrderNotFound,
357
+ 'order-queryorder-invalid': OrderNotFound,
358
+ 'order-update-error': ExchangeNotAvailable,
359
+ 'api-signature-check-failed': AuthenticationError,
360
+ 'api-signature-not-valid': AuthenticationError,
361
+ 'base-record-invalid': OrderNotFound,
362
+ 'base-symbol-trade-disabled': BadSymbol,
363
+ 'base-symbol-error': BadSymbol,
364
+ 'system-maintenance': OnMaintenance,
365
+ // err-msg
366
+ 'invalid symbol': BadSymbol,
367
+ 'symbol trade not open now': BadSymbol,
368
+ 'invalid-address': BadRequest,
369
+ 'base-currency-chain-error': BadRequest,
370
+ 'dw-insufficient-balance': InsufficientFunds, // {"status":"error","err-code":"dw-insufficient-balance","err-msg":"Insufficient balance. You can only transfer `12.3456` at most.","data":null}
371
+ },
372
+ },
373
+ 'options': {
374
+ 'defaultNetwork': 'ERC20',
375
+ 'networks': {
376
+ 'ETH': 'erc20',
377
+ 'TRX': 'trc20',
378
+ 'HRC20': 'hrc20',
379
+ 'HECO': 'hrc20',
380
+ 'HT': 'hrc20',
381
+ 'ALGO': 'algo',
382
+ 'OMNI': '',
383
+ },
384
+ // https://github.com/ccxt/ccxt/issues/5376
385
+ 'fetchOrdersByStatesMethod': 'private_get_order_orders',
386
+ 'fetchOpenOrdersMethod': 'fetch_open_orders_v1',
387
+ 'createMarketBuyOrderRequiresPrice': true,
388
+ 'fetchMarketsMethod': 'publicGetCommonSymbols',
389
+ 'fetchBalanceMethod': 'privateGetAccountAccountsIdBalance',
390
+ 'createOrderMethod': 'privatePostOrderOrdersPlace',
391
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
392
+ 'language': 'en-US',
393
+ 'broker': {
394
+ 'id': 'AA03022abc',
395
+ },
396
+ },
397
+ 'commonCurrencies': {
398
+ // https://github.com/ccxt/ccxt/issues/6081
399
+ // https://github.com/ccxt/ccxt/issues/3365
400
+ // https://github.com/ccxt/ccxt/issues/2873
401
+ 'GET': 'Themis',
402
+ 'GTC': 'Game.com',
403
+ 'HIT': 'HitChain',
404
+ // https://github.com/ccxt/ccxt/issues/7399
405
+ // https://coinmarketcap.com/currencies/pnetwork/
406
+ // https://coinmarketcap.com/currencies/penta/markets/
407
+ // https://en.cryptonomist.ch/blog/eidoo/the-edo-to-pnt-upgrade-what-you-need-to-know-updated/
408
+ 'PNT': 'Penta',
409
+ 'SBTC': 'Super Bitcoin',
410
+ 'BIFI': 'Bitcoin File', // conflict with Beefy.Finance https://github.com/ccxt/ccxt/issues/8706
411
+ },
412
+ });
413
+ }
414
+ /**
415
+ * @method
416
+ * @name bittrade#fetchTime
417
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
418
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
419
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
420
+ */
421
+ async fetchTime(params = {}) {
422
+ const response = await this.publicGetCommonTimestamp(params);
423
+ return this.safeInteger(response, 'data');
424
+ }
425
+ async fetchTradingLimits(symbols = undefined, params = {}) {
426
+ // this method should not be called directly, use loadTradingLimits () instead
427
+ // by default it will try load withdrawal fees of all currencies (with separate requests)
428
+ // however if you define symbols = [ 'ETH/BTC', 'LTC/BTC' ] in args it will only load those
429
+ await this.loadMarkets();
430
+ if (symbols === undefined) {
431
+ symbols = this.symbols;
432
+ }
433
+ const result = {};
434
+ for (let i = 0; i < symbols.length; i++) {
435
+ const symbol = symbols[i];
436
+ result[symbol] = await this.fetchTradingLimitsById(this.marketId(symbol), params);
437
+ }
438
+ return result;
439
+ }
440
+ async fetchTradingLimitsById(id, params = {}) {
441
+ const request = {
442
+ 'symbol': id,
443
+ };
444
+ const response = await this.publicGetCommonExchange(this.extend(request, params));
445
+ //
446
+ // { status: "ok",
447
+ // "data": { symbol: "aidocbtc",
448
+ // "buy-limit-must-less-than": 1.1,
449
+ // "sell-limit-must-greater-than": 0.9,
450
+ // "limit-order-must-greater-than": 1,
451
+ // "limit-order-must-less-than": 5000000,
452
+ // "market-buy-order-must-greater-than": 0.0001,
453
+ // "market-buy-order-must-less-than": 100,
454
+ // "market-sell-order-must-greater-than": 1,
455
+ // "market-sell-order-must-less-than": 500000,
456
+ // "circuit-break-when-greater-than": 10000,
457
+ // "circuit-break-when-less-than": 10,
458
+ // "market-sell-order-rate-must-less-than": 0.1,
459
+ // "market-buy-order-rate-must-less-than": 0.1 } }
460
+ //
461
+ return this.parseTradingLimits(this.safeValue(response, 'data', {}));
462
+ }
463
+ parseTradingLimits(limits, symbol = undefined, params = {}) {
464
+ //
465
+ // { symbol: "aidocbtc",
466
+ // "buy-limit-must-less-than": 1.1,
467
+ // "sell-limit-must-greater-than": 0.9,
468
+ // "limit-order-must-greater-than": 1,
469
+ // "limit-order-must-less-than": 5000000,
470
+ // "market-buy-order-must-greater-than": 0.0001,
471
+ // "market-buy-order-must-less-than": 100,
472
+ // "market-sell-order-must-greater-than": 1,
473
+ // "market-sell-order-must-less-than": 500000,
474
+ // "circuit-break-when-greater-than": 10000,
475
+ // "circuit-break-when-less-than": 10,
476
+ // "market-sell-order-rate-must-less-than": 0.1,
477
+ // "market-buy-order-rate-must-less-than": 0.1 }
478
+ //
479
+ return {
480
+ 'info': limits,
481
+ 'limits': {
482
+ 'amount': {
483
+ 'min': this.safeNumber(limits, 'limit-order-must-greater-than'),
484
+ 'max': this.safeNumber(limits, 'limit-order-must-less-than'),
485
+ },
486
+ },
487
+ };
488
+ }
489
+ costToPrecision(symbol, cost) {
490
+ return this.decimalToPrecision(cost, TRUNCATE, this.markets[symbol]['precision']['cost'], this.precisionMode);
491
+ }
492
+ /**
493
+ * @method
494
+ * @name bittrade#fetchMarkets
495
+ * @description retrieves data on all markets for huobijp
496
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
497
+ * @returns {object[]} an array of objects representing market data
498
+ */
499
+ async fetchMarkets(params = {}) {
500
+ const method = this.options['fetchMarketsMethod'];
501
+ const response = await this[method](params);
502
+ //
503
+ // {
504
+ // "status": "ok",
505
+ // "data": [
506
+ // {
507
+ // "base-currency": "xrp",
508
+ // "quote-currency": "btc",
509
+ // "price-precision": 9,
510
+ // "amount-precision": 2,
511
+ // "symbol-partition": "default",
512
+ // "symbol": "xrpbtc",
513
+ // "state": "online",
514
+ // "value-precision": 8,
515
+ // "min-order-amt": 1,
516
+ // "max-order-amt": 5000000,
517
+ // "min-order-value": 0.0001,
518
+ // "limit-order-min-order-amt": 1,
519
+ // "limit-order-max-order-amt": 5000000,
520
+ // "limit-order-max-buy-amt": 5000000,
521
+ // "limit-order-max-sell-amt": 5000000,
522
+ // "sell-market-min-order-amt": 1,
523
+ // "sell-market-max-order-amt": 500000,
524
+ // "buy-market-max-order-value": 100,
525
+ // "leverage-ratio": 5,
526
+ // "super-margin-leverage-ratio": 3,
527
+ // "api-trading": "enabled",
528
+ // "tags": ""
529
+ // }
530
+ // ...
531
+ // ]
532
+ // }
533
+ //
534
+ const markets = this.safeValue(response, 'data', []);
535
+ const numMarkets = markets.length;
536
+ if (numMarkets < 1) {
537
+ throw new NetworkError(this.id + ' fetchMarkets() returned empty response: ' + this.json(markets));
538
+ }
539
+ const result = [];
540
+ for (let i = 0; i < markets.length; i++) {
541
+ const market = markets[i];
542
+ const baseId = this.safeString(market, 'base-currency');
543
+ const quoteId = this.safeString(market, 'quote-currency');
544
+ const base = this.safeCurrencyCode(baseId);
545
+ const quote = this.safeCurrencyCode(quoteId);
546
+ const state = this.safeString(market, 'state');
547
+ const leverageRatio = this.safeString(market, 'leverage-ratio', '1');
548
+ const superLeverageRatio = this.safeString(market, 'super-margin-leverage-ratio', '1');
549
+ const margin = Precise.stringGt(leverageRatio, '1') || Precise.stringGt(superLeverageRatio, '1');
550
+ const fee = (base === 'OMG') ? this.parseNumber('0') : this.parseNumber('0.002');
551
+ result.push({
552
+ 'id': baseId + quoteId,
553
+ 'symbol': base + '/' + quote,
554
+ 'base': base,
555
+ 'quote': quote,
556
+ 'settle': undefined,
557
+ 'baseId': baseId,
558
+ 'quoteId': quoteId,
559
+ 'settleId': undefined,
560
+ 'type': 'spot',
561
+ 'spot': true,
562
+ 'margin': margin,
563
+ 'swap': false,
564
+ 'future': false,
565
+ 'option': false,
566
+ 'active': (state === 'online'),
567
+ 'contract': false,
568
+ 'linear': undefined,
569
+ 'inverse': undefined,
570
+ 'taker': fee,
571
+ 'maker': fee,
572
+ 'contractSize': undefined,
573
+ 'expiry': undefined,
574
+ 'expiryDatetime': undefined,
575
+ 'strike': undefined,
576
+ 'optionType': undefined,
577
+ 'precision': {
578
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'price-precision'))),
579
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'amount-precision'))),
580
+ 'cost': this.parseNumber(this.parsePrecision(this.safeString(market, 'value-precision'))),
581
+ },
582
+ 'limits': {
583
+ 'leverage': {
584
+ 'min': this.parseNumber('1'),
585
+ 'max': this.parseNumber(leverageRatio),
586
+ 'superMax': this.parseNumber(superLeverageRatio),
587
+ },
588
+ 'amount': {
589
+ 'min': this.safeNumber(market, 'min-order-amt'),
590
+ 'max': this.safeNumber(market, 'max-order-amt'),
591
+ },
592
+ 'price': {
593
+ 'min': undefined,
594
+ 'max': undefined,
595
+ },
596
+ 'cost': {
597
+ 'min': this.safeNumber(market, 'min-order-value'),
598
+ 'max': undefined,
599
+ },
600
+ },
601
+ 'created': undefined,
602
+ 'info': market,
603
+ });
604
+ }
605
+ return result;
606
+ }
607
+ parseTicker(ticker, market = undefined) {
608
+ //
609
+ // fetchTicker
610
+ //
611
+ // {
612
+ // "amount": 26228.672978342216,
613
+ // "open": 9078.95,
614
+ // "close": 9146.86,
615
+ // "high": 9155.41,
616
+ // "id": 209988544334,
617
+ // "count": 265846,
618
+ // "low": 8988.0,
619
+ // "version": 209988544334,
620
+ // "ask": [ 9146.87, 0.156134 ],
621
+ // "vol": 2.3822168242201668E8,
622
+ // "bid": [ 9146.86, 0.080758 ],
623
+ // }
624
+ //
625
+ // fetchTickers
626
+ // {
627
+ // "symbol": "bhdht",
628
+ // "open": 2.3938,
629
+ // "high": 2.4151,
630
+ // "low": 2.3323,
631
+ // "close": 2.3909,
632
+ // "amount": 628.992,
633
+ // "vol": 1493.71841095,
634
+ // "count": 2088,
635
+ // "bid": 2.3643,
636
+ // "bidSize": 0.7136,
637
+ // "ask": 2.4061,
638
+ // "askSize": 0.4156
639
+ // }
640
+ //
641
+ const symbol = this.safeSymbol(undefined, market);
642
+ const timestamp = this.safeInteger(ticker, 'ts');
643
+ let bid = undefined;
644
+ let bidVolume = undefined;
645
+ let ask = undefined;
646
+ let askVolume = undefined;
647
+ if ('bid' in ticker) {
648
+ if (Array.isArray(ticker['bid'])) {
649
+ bid = this.safeString(ticker['bid'], 0);
650
+ bidVolume = this.safeString(ticker['bid'], 1);
651
+ }
652
+ else {
653
+ bid = this.safeString(ticker, 'bid');
654
+ bidVolume = this.safeString(ticker, 'bidSize');
655
+ }
656
+ }
657
+ if ('ask' in ticker) {
658
+ if (Array.isArray(ticker['ask'])) {
659
+ ask = this.safeString(ticker['ask'], 0);
660
+ askVolume = this.safeString(ticker['ask'], 1);
661
+ }
662
+ else {
663
+ ask = this.safeString(ticker, 'ask');
664
+ askVolume = this.safeString(ticker, 'askSize');
665
+ }
666
+ }
667
+ const open = this.safeString(ticker, 'open');
668
+ const close = this.safeString(ticker, 'close');
669
+ const baseVolume = this.safeString(ticker, 'amount');
670
+ const quoteVolume = this.safeString(ticker, 'vol');
671
+ return this.safeTicker({
672
+ 'symbol': symbol,
673
+ 'timestamp': timestamp,
674
+ 'datetime': this.iso8601(timestamp),
675
+ 'high': this.safeString(ticker, 'high'),
676
+ 'low': this.safeString(ticker, 'low'),
677
+ 'bid': bid,
678
+ 'bidVolume': bidVolume,
679
+ 'ask': ask,
680
+ 'askVolume': askVolume,
681
+ 'vwap': undefined,
682
+ 'open': open,
683
+ 'close': close,
684
+ 'last': close,
685
+ 'previousClose': undefined,
686
+ 'change': undefined,
687
+ 'percentage': undefined,
688
+ 'average': undefined,
689
+ 'baseVolume': baseVolume,
690
+ 'quoteVolume': quoteVolume,
691
+ 'info': ticker,
692
+ }, market);
693
+ }
694
+ /**
695
+ * @method
696
+ * @name bittrade#fetchOrderBook
697
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
698
+ * @param {string} symbol unified symbol of the market to fetch the order book for
699
+ * @param {int} [limit] the maximum amount of order book entries to return
700
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
701
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
702
+ */
703
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
704
+ await this.loadMarkets();
705
+ const market = this.market(symbol);
706
+ const request = {
707
+ 'symbol': market['id'],
708
+ 'type': 'step0',
709
+ };
710
+ const response = await this.marketGetDepth(this.extend(request, params));
711
+ //
712
+ // {
713
+ // "status": "ok",
714
+ // "ch": "market.btcusdt.depth.step0",
715
+ // "ts": 1583474832790,
716
+ // "tick": {
717
+ // "bids": [
718
+ // [ 9100.290000000000000000, 0.200000000000000000 ],
719
+ // [ 9099.820000000000000000, 0.200000000000000000 ],
720
+ // [ 9099.610000000000000000, 0.205000000000000000 ],
721
+ // ],
722
+ // "asks": [
723
+ // [ 9100.640000000000000000, 0.005904000000000000 ],
724
+ // [ 9101.010000000000000000, 0.287311000000000000 ],
725
+ // [ 9101.030000000000000000, 0.012121000000000000 ],
726
+ // ],
727
+ // "ts":1583474832008,
728
+ // "version":104999698780
729
+ // }
730
+ // }
731
+ //
732
+ if ('tick' in response) {
733
+ if (!response['tick']) {
734
+ throw new BadSymbol(this.id + ' fetchOrderBook() returned empty response: ' + this.json(response));
735
+ }
736
+ const tick = this.safeValue(response, 'tick');
737
+ const timestamp = this.safeInteger(tick, 'ts', this.safeInteger(response, 'ts'));
738
+ const result = this.parseOrderBook(tick, symbol, timestamp);
739
+ result['nonce'] = this.safeInteger(tick, 'version');
740
+ return result;
741
+ }
742
+ throw new ExchangeError(this.id + ' fetchOrderBook() returned unrecognized response: ' + this.json(response));
743
+ }
744
+ /**
745
+ * @method
746
+ * @name bittrade#fetchTicker
747
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
748
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
749
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
750
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
751
+ */
752
+ async fetchTicker(symbol, params = {}) {
753
+ await this.loadMarkets();
754
+ const market = this.market(symbol);
755
+ const request = {
756
+ 'symbol': market['id'],
757
+ };
758
+ const response = await this.marketGetDetailMerged(this.extend(request, params));
759
+ //
760
+ // {
761
+ // "status": "ok",
762
+ // "ch": "market.btcusdt.detail.merged",
763
+ // "ts": 1583494336669,
764
+ // "tick": {
765
+ // "amount": 26228.672978342216,
766
+ // "open": 9078.95,
767
+ // "close": 9146.86,
768
+ // "high": 9155.41,
769
+ // "id": 209988544334,
770
+ // "count": 265846,
771
+ // "low": 8988.0,
772
+ // "version": 209988544334,
773
+ // "ask": [ 9146.87, 0.156134 ],
774
+ // "vol": 2.3822168242201668E8,
775
+ // "bid": [ 9146.86, 0.080758 ],
776
+ // }
777
+ // }
778
+ //
779
+ const ticker = this.parseTicker(response['tick'], market);
780
+ const timestamp = this.safeInteger(response, 'ts');
781
+ ticker['timestamp'] = timestamp;
782
+ ticker['datetime'] = this.iso8601(timestamp);
783
+ return ticker;
784
+ }
785
+ /**
786
+ * @method
787
+ * @name bittrade#fetchTickers
788
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
789
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
790
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
791
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
792
+ */
793
+ async fetchTickers(symbols = undefined, params = {}) {
794
+ await this.loadMarkets();
795
+ symbols = this.marketSymbols(symbols);
796
+ const response = await this.marketGetTickers(params);
797
+ const tickers = this.safeValue(response, 'data', []);
798
+ const timestamp = this.safeInteger(response, 'ts');
799
+ const result = {};
800
+ for (let i = 0; i < tickers.length; i++) {
801
+ const marketId = this.safeString(tickers[i], 'symbol');
802
+ const market = this.safeMarket(marketId);
803
+ const symbol = market['symbol'];
804
+ const ticker = this.parseTicker(tickers[i], market);
805
+ ticker['timestamp'] = timestamp;
806
+ ticker['datetime'] = this.iso8601(timestamp);
807
+ result[symbol] = ticker;
808
+ }
809
+ return this.filterByArrayTickers(result, 'symbol', symbols);
810
+ }
811
+ parseTrade(trade, market = undefined) {
812
+ //
813
+ // fetchTrades (public)
814
+ //
815
+ // {
816
+ // "amount": 0.010411000000000000,
817
+ // "trade-id": 102090736910,
818
+ // "ts": 1583497692182,
819
+ // "id": 10500517034273194594947,
820
+ // "price": 9096.050000000000000000,
821
+ // "direction": "sell"
822
+ // }
823
+ //
824
+ // fetchMyTrades (private)
825
+ //
826
+ // {
827
+ // "symbol": "swftcbtc",
828
+ // "fee-currency": "swftc",
829
+ // "filled-fees": "0",
830
+ // "source": "spot-api",
831
+ // "id": 83789509854000,
832
+ // "type": "buy-limit",
833
+ // "order-id": 83711103204909,
834
+ // 'filled-points': "0.005826843283532154",
835
+ // "fee-deduct-currency": "ht",
836
+ // 'filled-amount': "45941.53",
837
+ // "price": "0.0000001401",
838
+ // "created-at": 1597933260729,
839
+ // "match-id": 100087455560,
840
+ // "role": "maker",
841
+ // "trade-id": 100050305348
842
+ // },
843
+ //
844
+ const marketId = this.safeString(trade, 'symbol');
845
+ const symbol = this.safeSymbol(marketId, market);
846
+ const timestamp = this.safeInteger2(trade, 'ts', 'created-at');
847
+ const order = this.safeString(trade, 'order-id');
848
+ let side = this.safeString(trade, 'direction');
849
+ let type = this.safeString(trade, 'type');
850
+ if (type !== undefined) {
851
+ const typeParts = type.split('-');
852
+ side = typeParts[0];
853
+ type = typeParts[1];
854
+ }
855
+ const takerOrMaker = this.safeString(trade, 'role');
856
+ const price = this.safeString(trade, 'price');
857
+ const amount = this.safeString2(trade, 'filled-amount', 'amount');
858
+ const cost = Precise.stringMul(price, amount);
859
+ let fee = undefined;
860
+ let feeCost = this.safeString(trade, 'filled-fees');
861
+ let feeCurrency = this.safeCurrencyCode(this.safeString(trade, 'fee-currency'));
862
+ const filledPoints = this.safeString(trade, 'filled-points');
863
+ if (filledPoints !== undefined) {
864
+ if ((feeCost === undefined) || (Precise.stringEq(feeCost, '0.0'))) {
865
+ feeCost = filledPoints;
866
+ feeCurrency = this.safeCurrencyCode(this.safeString(trade, 'fee-deduct-currency'));
867
+ }
868
+ }
869
+ if (feeCost !== undefined) {
870
+ fee = {
871
+ 'cost': feeCost,
872
+ 'currency': feeCurrency,
873
+ };
874
+ }
875
+ const tradeId = this.safeString2(trade, 'trade-id', 'tradeId');
876
+ const id = this.safeString(trade, 'id', tradeId);
877
+ return this.safeTrade({
878
+ 'info': trade,
879
+ 'id': id,
880
+ 'symbol': symbol,
881
+ 'order': order,
882
+ 'timestamp': timestamp,
883
+ 'datetime': this.iso8601(timestamp),
884
+ 'type': type,
885
+ 'side': side,
886
+ 'takerOrMaker': takerOrMaker,
887
+ 'price': price,
888
+ 'amount': amount,
889
+ 'cost': cost,
890
+ 'fee': fee,
891
+ });
892
+ }
893
+ /**
894
+ * @method
895
+ * @name bittrade#fetchOrderTrades
896
+ * @description fetch all the trades made from a single order
897
+ * @param {string} id order id
898
+ * @param {string} symbol unified market symbol
899
+ * @param {int} [since] the earliest time in ms to fetch trades for
900
+ * @param {int} [limit] the maximum number of trades to retrieve
901
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
902
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
903
+ */
904
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
905
+ await this.loadMarkets();
906
+ const request = {
907
+ 'id': id,
908
+ };
909
+ const response = await this.privateGetOrderOrdersIdMatchresults(this.extend(request, params));
910
+ return this.parseTrades(response['data'], undefined, since, limit);
911
+ }
912
+ /**
913
+ * @method
914
+ * @name bittrade#fetchMyTrades
915
+ * @description fetch all trades made by the user
916
+ * @param {string} symbol unified market symbol
917
+ * @param {int} [since] the earliest time in ms to fetch trades for
918
+ * @param {int} [limit] the maximum number of trades structures to retrieve
919
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
920
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
921
+ */
922
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
923
+ await this.loadMarkets();
924
+ let market = undefined;
925
+ const request = {};
926
+ if (symbol !== undefined) {
927
+ market = this.market(symbol);
928
+ request['symbol'] = market['id'];
929
+ }
930
+ if (limit !== undefined) {
931
+ request['size'] = limit; // 1-100 orders, default is 100
932
+ }
933
+ if (since !== undefined) {
934
+ request['start-time'] = since; // a date within 120 days from today
935
+ // request['end-time'] = this.sum (since, 172800000); // 48 hours window
936
+ }
937
+ const response = await this.privateGetOrderMatchresults(this.extend(request, params));
938
+ return this.parseTrades(response['data'], market, since, limit);
939
+ }
940
+ /**
941
+ * @method
942
+ * @name bittrade#fetchTrades
943
+ * @description get the list of most recent trades for a particular symbol
944
+ * @param {string} symbol unified symbol of the market to fetch trades for
945
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
946
+ * @param {int} [limit] the maximum amount of trades to fetch
947
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
948
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
949
+ */
950
+ async fetchTrades(symbol, since = undefined, limit = 1000, params = {}) {
951
+ await this.loadMarkets();
952
+ const market = this.market(symbol);
953
+ const request = {
954
+ 'symbol': market['id'],
955
+ };
956
+ if (limit !== undefined) {
957
+ request['size'] = Math.min(limit, 2000);
958
+ }
959
+ const response = await this.marketGetHistoryTrade(this.extend(request, params));
960
+ //
961
+ // {
962
+ // "status": "ok",
963
+ // "ch": "market.btcusdt.trade.detail",
964
+ // "ts": 1583497692365,
965
+ // "data": [
966
+ // {
967
+ // "id": 105005170342,
968
+ // "ts": 1583497692182,
969
+ // "data": [
970
+ // {
971
+ // "amount": 0.010411000000000000,
972
+ // "trade-id": 102090736910,
973
+ // "ts": 1583497692182,
974
+ // "id": 10500517034273194594947,
975
+ // "price": 9096.050000000000000000,
976
+ // "direction": "sell"
977
+ // }
978
+ // ]
979
+ // },
980
+ // // ...
981
+ // ]
982
+ // }
983
+ //
984
+ const data = this.safeValue(response, 'data', []);
985
+ let result = [];
986
+ for (let i = 0; i < data.length; i++) {
987
+ const trades = this.safeValue(data[i], 'data', []);
988
+ for (let j = 0; j < trades.length; j++) {
989
+ const trade = this.parseTrade(trades[j], market);
990
+ result.push(trade);
991
+ }
992
+ }
993
+ result = this.sortBy(result, 'timestamp');
994
+ return this.filterBySymbolSinceLimit(result, market['symbol'], since, limit);
995
+ }
996
+ parseOHLCV(ohlcv, market = undefined) {
997
+ //
998
+ // {
999
+ // "amount":1.2082,
1000
+ // "open":0.025096,
1001
+ // "close":0.025095,
1002
+ // "high":0.025096,
1003
+ // "id":1591515300,
1004
+ // "count":6,
1005
+ // "low":0.025095,
1006
+ // "vol":0.0303205097
1007
+ // }
1008
+ //
1009
+ return [
1010
+ this.safeTimestamp(ohlcv, 'id'),
1011
+ this.safeNumber(ohlcv, 'open'),
1012
+ this.safeNumber(ohlcv, 'high'),
1013
+ this.safeNumber(ohlcv, 'low'),
1014
+ this.safeNumber(ohlcv, 'close'),
1015
+ this.safeNumber(ohlcv, 'amount'),
1016
+ ];
1017
+ }
1018
+ /**
1019
+ * @method
1020
+ * @name bittrade#fetchOHLCV
1021
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1022
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1023
+ * @param {string} timeframe the length of time each candle represents
1024
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1025
+ * @param {int} [limit] the maximum amount of candles to fetch
1026
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1027
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1028
+ */
1029
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = 1000, params = {}) {
1030
+ await this.loadMarkets();
1031
+ const market = this.market(symbol);
1032
+ const request = {
1033
+ 'symbol': market['id'],
1034
+ 'period': this.safeString(this.timeframes, timeframe, timeframe),
1035
+ };
1036
+ if (limit !== undefined) {
1037
+ request['size'] = Math.min(limit, 2000);
1038
+ }
1039
+ const response = await this.marketGetHistoryKline(this.extend(request, params));
1040
+ //
1041
+ // {
1042
+ // "status":"ok",
1043
+ // "ch":"market.ethbtc.kline.1min",
1044
+ // "ts":1591515374371,
1045
+ // "data":[
1046
+ // {"amount":0.0,"open":0.025095,"close":0.025095,"high":0.025095,"id":1591515360,"count":0,"low":0.025095,"vol":0.0},
1047
+ // {"amount":1.2082,"open":0.025096,"close":0.025095,"high":0.025096,"id":1591515300,"count":6,"low":0.025095,"vol":0.0303205097},
1048
+ // {"amount":0.0648,"open":0.025096,"close":0.025096,"high":0.025096,"id":1591515240,"count":2,"low":0.025096,"vol":0.0016262208},
1049
+ // ]
1050
+ // }
1051
+ //
1052
+ const data = this.safeList(response, 'data', []);
1053
+ return this.parseOHLCVs(data, market, timeframe, since, limit);
1054
+ }
1055
+ /**
1056
+ * @method
1057
+ * @name bittrade#fetchAccounts
1058
+ * @description fetch all the accounts associated with a profile
1059
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1060
+ * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
1061
+ */
1062
+ async fetchAccounts(params = {}) {
1063
+ await this.loadMarkets();
1064
+ const response = await this.privateGetAccountAccounts(params);
1065
+ return response['data'];
1066
+ }
1067
+ /**
1068
+ * @method
1069
+ * @name bittrade#fetchCurrencies
1070
+ * @description fetches all available currencies on an exchange
1071
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1072
+ * @returns {object} an associative dictionary of currencies
1073
+ */
1074
+ async fetchCurrencies(params = {}) {
1075
+ const request = {
1076
+ 'language': this.options['language'],
1077
+ };
1078
+ const response = await this.publicGetSettingsCurrencys(this.extend(request, params));
1079
+ //
1080
+ // {
1081
+ // "status":"ok",
1082
+ // "data":[
1083
+ // {
1084
+ // "currency-addr-with-tag":false,
1085
+ // "fast-confirms":12,
1086
+ // "safe-confirms":12,
1087
+ // "currency-type":"eth",
1088
+ // "quote-currency":true,
1089
+ // "withdraw-enable-timestamp":1609430400000,
1090
+ // "deposit-enable-timestamp":1609430400000,
1091
+ // "currency-partition":"all",
1092
+ // "support-sites":["OTC","INSTITUTION","MINEPOOL"],
1093
+ // "withdraw-precision":6,
1094
+ // "visible-assets-timestamp":1508839200000,
1095
+ // "deposit-min-amount":"1",
1096
+ // "withdraw-min-amount":"10",
1097
+ // "show-precision":"8",
1098
+ // "tags":"",
1099
+ // "weight":23,
1100
+ // "full-name":"Tether USDT",
1101
+ // "otc-enable":1,
1102
+ // "visible":true,
1103
+ // "white-enabled":false,
1104
+ // "country-disabled":false,
1105
+ // "deposit-enabled":true,
1106
+ // "withdraw-enabled":true,
1107
+ // "name":"usdt",
1108
+ // "state":"online",
1109
+ // "display-name":"USDT",
1110
+ // "suspend-withdraw-desc":null,
1111
+ // "withdraw-desc":"Minimum withdrawal amount: 10 USDT (ERC20). !>_<!To ensure the safety of your funds, your withdrawal request will be manually reviewed if your security strategy or password is changed. Please wait for phone calls or emails from our staff.!>_<!Please make sure that your computer and browser are secure and your information is protected from being tampered or leaked.",
1112
+ // "suspend-deposit-desc":null,
1113
+ // "deposit-desc":"Please don’t deposit any other digital assets except USDT to the above address. Otherwise, you may lose your assets permanently. !>_<!Depositing to the above address requires confirmations of the entire network. It will arrive after 12 confirmations, and it will be available to withdraw after 12 confirmations. !>_<!Minimum deposit amount: 1 USDT. Any deposits less than the minimum will not be credited or refunded.!>_<!Your deposit address won’t change often. If there are any changes, we will notify you via announcement or email.!>_<!Please make sure that your computer and browser are secure and your information is protected from being tampered or leaked.",
1114
+ // "suspend-visible-desc":null
1115
+ // }
1116
+ // ]
1117
+ // }
1118
+ //
1119
+ const currencies = this.safeValue(response, 'data', []);
1120
+ const result = {};
1121
+ for (let i = 0; i < currencies.length; i++) {
1122
+ const currency = currencies[i];
1123
+ const id = this.safeValue(currency, 'name');
1124
+ const code = this.safeCurrencyCode(id);
1125
+ const depositEnabled = this.safeValue(currency, 'deposit-enabled');
1126
+ const withdrawEnabled = this.safeValue(currency, 'withdraw-enabled');
1127
+ const countryDisabled = this.safeValue(currency, 'country-disabled');
1128
+ const visible = this.safeBool(currency, 'visible', false);
1129
+ const state = this.safeString(currency, 'state');
1130
+ const active = visible && depositEnabled && withdrawEnabled && (state === 'online') && !countryDisabled;
1131
+ const name = this.safeString(currency, 'display-name');
1132
+ const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'withdraw-precision')));
1133
+ result[code] = {
1134
+ 'id': id,
1135
+ 'code': code,
1136
+ 'type': 'crypto',
1137
+ // 'payin': currency['deposit-enabled'],
1138
+ // 'payout': currency['withdraw-enabled'],
1139
+ // 'transfer': undefined,
1140
+ 'name': name,
1141
+ 'active': active,
1142
+ 'deposit': depositEnabled,
1143
+ 'withdraw': withdrawEnabled,
1144
+ 'fee': undefined,
1145
+ 'precision': precision,
1146
+ 'networks': undefined,
1147
+ 'limits': {
1148
+ 'amount': {
1149
+ 'min': precision,
1150
+ 'max': undefined,
1151
+ },
1152
+ 'deposit': {
1153
+ 'min': this.safeNumber(currency, 'deposit-min-amount'),
1154
+ 'max': undefined,
1155
+ },
1156
+ 'withdraw': {
1157
+ 'min': this.safeNumber(currency, 'withdraw-min-amount'),
1158
+ 'max': undefined,
1159
+ },
1160
+ },
1161
+ 'info': currency,
1162
+ };
1163
+ }
1164
+ return result;
1165
+ }
1166
+ parseBalance(response) {
1167
+ const balances = this.safeValue(response['data'], 'list', []);
1168
+ const result = { 'info': response };
1169
+ for (let i = 0; i < balances.length; i++) {
1170
+ const balance = balances[i];
1171
+ const currencyId = this.safeString(balance, 'currency');
1172
+ const code = this.safeCurrencyCode(currencyId);
1173
+ let account = undefined;
1174
+ if (code in result) {
1175
+ account = result[code];
1176
+ }
1177
+ else {
1178
+ account = this.account();
1179
+ }
1180
+ if (balance['type'] === 'trade') {
1181
+ account['free'] = this.safeString(balance, 'balance');
1182
+ }
1183
+ if (balance['type'] === 'frozen') {
1184
+ account['used'] = this.safeString(balance, 'balance');
1185
+ }
1186
+ result[code] = account;
1187
+ }
1188
+ return this.safeBalance(result);
1189
+ }
1190
+ /**
1191
+ * @method
1192
+ * @name bittrade#fetchBalance
1193
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1194
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1195
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1196
+ */
1197
+ async fetchBalance(params = {}) {
1198
+ await this.loadMarkets();
1199
+ await this.loadAccounts();
1200
+ const method = this.options['fetchBalanceMethod'];
1201
+ const request = {
1202
+ 'id': this.accounts[0]['id'],
1203
+ };
1204
+ const response = await this[method](this.extend(request, params));
1205
+ return this.parseBalance(response);
1206
+ }
1207
+ async fetchOrdersByStates(states, symbol = undefined, since = undefined, limit = undefined, params = {}) {
1208
+ await this.loadMarkets();
1209
+ const request = {
1210
+ 'states': states,
1211
+ };
1212
+ let market = undefined;
1213
+ if (symbol !== undefined) {
1214
+ market = this.market(symbol);
1215
+ request['symbol'] = market['id'];
1216
+ }
1217
+ const method = this.safeString(this.options, 'fetchOrdersByStatesMethod', 'private_get_order_orders');
1218
+ const response = await this[method](this.extend(request, params));
1219
+ //
1220
+ // { "status": "ok",
1221
+ // "data": [ { id: 13997833014,
1222
+ // "symbol": "ethbtc",
1223
+ // "account-id": 3398321,
1224
+ // "amount": "0.045000000000000000",
1225
+ // "price": "0.034014000000000000",
1226
+ // "created-at": 1545836976871,
1227
+ // "type": "sell-limit",
1228
+ // "field-amount": "0.045000000000000000",
1229
+ // "field-cash-amount": "0.001530630000000000",
1230
+ // "field-fees": "0.000003061260000000",
1231
+ // "finished-at": 1545837948214,
1232
+ // "source": "spot-api",
1233
+ // "state": "filled",
1234
+ // "canceled-at": 0 } ] }
1235
+ //
1236
+ return this.parseOrders(response['data'], market, since, limit);
1237
+ }
1238
+ /**
1239
+ * @method
1240
+ * @name bittrade#fetchOrder
1241
+ * @description fetches information on an order made by the user
1242
+ * @param {string} id order id
1243
+ * @param {string} symbol unified symbol of the market the order was made in
1244
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1245
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1246
+ */
1247
+ async fetchOrder(id, symbol = undefined, params = {}) {
1248
+ await this.loadMarkets();
1249
+ const request = {
1250
+ 'id': id,
1251
+ };
1252
+ const response = await this.privateGetOrderOrdersId(this.extend(request, params));
1253
+ const order = this.safeDict(response, 'data');
1254
+ return this.parseOrder(order);
1255
+ }
1256
+ /**
1257
+ * @method
1258
+ * @name bittrade#fetchOrders
1259
+ * @description fetches information on multiple orders made by the user
1260
+ * @param {string} symbol unified market symbol of the market orders were made in
1261
+ * @param {int} [since] the earliest time in ms to fetch orders for
1262
+ * @param {int} [limit] the maximum number of order structures to retrieve
1263
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1264
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1265
+ */
1266
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1267
+ return await this.fetchOrdersByStates('pre-submitted,submitted,partial-filled,filled,partial-canceled,canceled', symbol, since, limit, params);
1268
+ }
1269
+ /**
1270
+ * @method
1271
+ * @name bittrade#fetchOpenOrders
1272
+ * @description fetch all unfilled currently open orders
1273
+ * @param {string} symbol unified market symbol
1274
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1275
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1276
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1277
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1278
+ */
1279
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1280
+ const method = this.safeString(this.options, 'fetchOpenOrdersMethod', 'fetch_open_orders_v1');
1281
+ return await this[method](symbol, since, limit, params);
1282
+ }
1283
+ async fetchOpenOrdersV1(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1284
+ if (symbol === undefined) {
1285
+ throw new ArgumentsRequired(this.id + ' fetchOpenOrdersV1() requires a symbol argument');
1286
+ }
1287
+ return await this.fetchOrdersByStates('pre-submitted,submitted,partial-filled', symbol, since, limit, params);
1288
+ }
1289
+ /**
1290
+ * @method
1291
+ * @name bittrade#fetchClosedOrders
1292
+ * @description fetches information on multiple closed orders made by the user
1293
+ * @param {string} symbol unified market symbol of the market orders were made in
1294
+ * @param {int} [since] the earliest time in ms to fetch orders for
1295
+ * @param {int} [limit] the maximum number of order structures to retrieve
1296
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1297
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1298
+ */
1299
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1300
+ return await this.fetchOrdersByStates('filled,partial-canceled,canceled', symbol, since, limit, params);
1301
+ }
1302
+ async fetchOpenOrdersV2(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1303
+ await this.loadMarkets();
1304
+ const request = {};
1305
+ let market = undefined;
1306
+ if (symbol !== undefined) {
1307
+ market = this.market(symbol);
1308
+ request['symbol'] = market['id'];
1309
+ }
1310
+ let accountId = this.safeString(params, 'account-id');
1311
+ if (accountId === undefined) {
1312
+ // pick the first account
1313
+ await this.loadAccounts();
1314
+ for (let i = 0; i < this.accounts.length; i++) {
1315
+ const account = this.accounts[i];
1316
+ if (account['type'] === 'spot') {
1317
+ accountId = this.safeString(account, 'id');
1318
+ if (accountId !== undefined) {
1319
+ break;
1320
+ }
1321
+ }
1322
+ }
1323
+ }
1324
+ request['account-id'] = accountId;
1325
+ if (limit !== undefined) {
1326
+ request['size'] = limit;
1327
+ }
1328
+ const omitted = this.omit(params, 'account-id');
1329
+ const response = await this.privateGetOrderOpenOrders(this.extend(request, omitted));
1330
+ //
1331
+ // {
1332
+ // "status":"ok",
1333
+ // "data":[
1334
+ // {
1335
+ // "symbol":"ethusdt",
1336
+ // "source":"api",
1337
+ // "amount":"0.010000000000000000",
1338
+ // "account-id":1528640,
1339
+ // "created-at":1561597491963,
1340
+ // "price":"400.000000000000000000",
1341
+ // "filled-amount":"0.0",
1342
+ // "filled-cash-amount":"0.0",
1343
+ // "filled-fees":"0.0",
1344
+ // "id":38477101630,
1345
+ // "state":"submitted",
1346
+ // "type":"sell-limit"
1347
+ // }
1348
+ // ]
1349
+ // }
1350
+ //
1351
+ const data = this.safeList(response, 'data', []);
1352
+ return this.parseOrders(data, market, since, limit);
1353
+ }
1354
+ parseOrderStatus(status) {
1355
+ const statuses = {
1356
+ 'partial-filled': 'open',
1357
+ 'partial-canceled': 'canceled',
1358
+ 'filled': 'closed',
1359
+ 'canceled': 'canceled',
1360
+ 'submitted': 'open',
1361
+ };
1362
+ return this.safeString(statuses, status, status);
1363
+ }
1364
+ parseOrder(order, market = undefined) {
1365
+ //
1366
+ // { id: 13997833014,
1367
+ // "symbol": "ethbtc",
1368
+ // "account-id": 3398321,
1369
+ // "amount": "0.045000000000000000",
1370
+ // "price": "0.034014000000000000",
1371
+ // "created-at": 1545836976871,
1372
+ // "type": "sell-limit",
1373
+ // "field-amount": "0.045000000000000000", // they have fixed it for filled-amount
1374
+ // "field-cash-amount": "0.001530630000000000", // they have fixed it for filled-cash-amount
1375
+ // "field-fees": "0.000003061260000000", // they have fixed it for filled-fees
1376
+ // "finished-at": 1545837948214,
1377
+ // "source": "spot-api",
1378
+ // "state": "filled",
1379
+ // "canceled-at": 0 }
1380
+ //
1381
+ // { id: 20395337822,
1382
+ // "symbol": "ethbtc",
1383
+ // "account-id": 5685075,
1384
+ // "amount": "0.001000000000000000",
1385
+ // "price": "0.0",
1386
+ // "created-at": 1545831584023,
1387
+ // "type": "buy-market",
1388
+ // "field-amount": "0.029100000000000000", // they have fixed it for filled-amount
1389
+ // "field-cash-amount": "0.000999788700000000", // they have fixed it for filled-cash-amount
1390
+ // "field-fees": "0.000058200000000000", // they have fixed it for filled-fees
1391
+ // "finished-at": 1545831584181,
1392
+ // "source": "spot-api",
1393
+ // "state": "filled",
1394
+ // "canceled-at": 0 }
1395
+ //
1396
+ const id = this.safeString(order, 'id');
1397
+ let side = undefined;
1398
+ let type = undefined;
1399
+ let status = undefined;
1400
+ if ('type' in order) {
1401
+ const orderType = order['type'].split('-');
1402
+ side = orderType[0];
1403
+ type = orderType[1];
1404
+ status = this.parseOrderStatus(this.safeString(order, 'state'));
1405
+ }
1406
+ const marketId = this.safeString(order, 'symbol');
1407
+ market = this.safeMarket(marketId, market);
1408
+ const timestamp = this.safeInteger(order, 'created-at');
1409
+ const clientOrderId = this.safeString(order, 'client-order-id');
1410
+ const amount = this.safeString(order, 'amount');
1411
+ const filled = this.safeString2(order, 'filled-amount', 'field-amount'); // typo in their API, filled amount
1412
+ const price = this.safeString(order, 'price');
1413
+ const cost = this.safeString2(order, 'filled-cash-amount', 'field-cash-amount'); // same typo
1414
+ const feeCost = this.safeString2(order, 'filled-fees', 'field-fees'); // typo in their API, filled fees
1415
+ let fee = undefined;
1416
+ if (feeCost !== undefined) {
1417
+ const feeCurrency = (side === 'sell') ? market['quote'] : market['base'];
1418
+ fee = {
1419
+ 'cost': feeCost,
1420
+ 'currency': feeCurrency,
1421
+ };
1422
+ }
1423
+ return this.safeOrder({
1424
+ 'info': order,
1425
+ 'id': id,
1426
+ 'clientOrderId': clientOrderId,
1427
+ 'timestamp': timestamp,
1428
+ 'datetime': this.iso8601(timestamp),
1429
+ 'lastTradeTimestamp': undefined,
1430
+ 'symbol': market['symbol'],
1431
+ 'type': type,
1432
+ 'timeInForce': undefined,
1433
+ 'postOnly': undefined,
1434
+ 'side': side,
1435
+ 'price': price,
1436
+ 'triggerPrice': undefined,
1437
+ 'average': undefined,
1438
+ 'cost': cost,
1439
+ 'amount': amount,
1440
+ 'filled': filled,
1441
+ 'remaining': undefined,
1442
+ 'status': status,
1443
+ 'fee': fee,
1444
+ 'trades': undefined,
1445
+ }, market);
1446
+ }
1447
+ /**
1448
+ * @method
1449
+ * @name bittrade#createMarketBuyOrderWithCost
1450
+ * @description create a market buy order by providing the symbol and cost
1451
+ * @param {string} symbol unified symbol of the market to create an order in
1452
+ * @param {float} cost how much you want to trade in units of the quote currency
1453
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1454
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1455
+ */
1456
+ async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
1457
+ await this.loadMarkets();
1458
+ const market = this.market(symbol);
1459
+ if (!market['spot']) {
1460
+ throw new NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
1461
+ }
1462
+ params['createMarketBuyOrderRequiresPrice'] = false;
1463
+ return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
1464
+ }
1465
+ /**
1466
+ * @method
1467
+ * @name bittrade#createOrder
1468
+ * @description create a trade order
1469
+ * @param {string} symbol unified symbol of the market to create an order in
1470
+ * @param {string} type 'market' or 'limit'
1471
+ * @param {string} side 'buy' or 'sell'
1472
+ * @param {float} amount how much of currency you want to trade in units of base currency
1473
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1474
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1475
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1476
+ */
1477
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1478
+ await this.loadMarkets();
1479
+ await this.loadAccounts();
1480
+ const market = this.market(symbol);
1481
+ const request = {
1482
+ 'account-id': this.accounts[0]['id'],
1483
+ 'symbol': market['id'],
1484
+ 'type': side + '-' + type,
1485
+ };
1486
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'client-order-id'); // must be 64 chars max and unique within 24 hours
1487
+ if (clientOrderId === undefined) {
1488
+ const broker = this.safeValue(this.options, 'broker', {});
1489
+ const brokerId = this.safeString(broker, 'id');
1490
+ request['client-order-id'] = brokerId + this.uuid();
1491
+ }
1492
+ else {
1493
+ request['client-order-id'] = clientOrderId;
1494
+ }
1495
+ params = this.omit(params, ['clientOrderId', 'client-order-id']);
1496
+ if ((type === 'market') && (side === 'buy')) {
1497
+ let quoteAmount = undefined;
1498
+ let createMarketBuyOrderRequiresPrice = true;
1499
+ [createMarketBuyOrderRequiresPrice, params] = this.handleOptionAndParams(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', true);
1500
+ const cost = this.safeNumber(params, 'cost');
1501
+ params = this.omit(params, 'cost');
1502
+ if (cost !== undefined) {
1503
+ quoteAmount = this.amountToPrecision(symbol, cost);
1504
+ }
1505
+ else if (createMarketBuyOrderRequiresPrice) {
1506
+ if (price === undefined) {
1507
+ throw new InvalidOrder(this.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend in the amount argument');
1508
+ }
1509
+ else {
1510
+ // despite that cost = amount * price is in quote currency and should have quote precision
1511
+ // the exchange API requires the cost supplied in 'amount' to be of base precision
1512
+ // more about it here:
1513
+ // https://github.com/ccxt/ccxt/pull/4395
1514
+ // https://github.com/ccxt/ccxt/issues/7611
1515
+ // we use amountToPrecision here because the exchange requires cost in base precision
1516
+ const amountString = this.numberToString(amount);
1517
+ const priceString = this.numberToString(price);
1518
+ quoteAmount = this.amountToPrecision(symbol, Precise.stringMul(amountString, priceString));
1519
+ }
1520
+ }
1521
+ else {
1522
+ quoteAmount = this.amountToPrecision(symbol, amount);
1523
+ }
1524
+ request['amount'] = quoteAmount;
1525
+ }
1526
+ else {
1527
+ request['amount'] = this.amountToPrecision(symbol, amount);
1528
+ }
1529
+ if (type === 'limit' || type === 'ioc' || type === 'limit-maker' || type === 'stop-limit' || type === 'stop-limit-fok') {
1530
+ request['price'] = this.priceToPrecision(symbol, price);
1531
+ }
1532
+ const method = this.options['createOrderMethod'];
1533
+ const response = await this[method](this.extend(request, params));
1534
+ const id = this.safeString(response, 'data');
1535
+ return this.safeOrder({
1536
+ 'info': response,
1537
+ 'id': id,
1538
+ 'timestamp': undefined,
1539
+ 'datetime': undefined,
1540
+ 'lastTradeTimestamp': undefined,
1541
+ 'status': undefined,
1542
+ 'symbol': symbol,
1543
+ 'type': type,
1544
+ 'side': side,
1545
+ 'price': price,
1546
+ 'amount': amount,
1547
+ 'filled': undefined,
1548
+ 'remaining': undefined,
1549
+ 'cost': undefined,
1550
+ 'trades': undefined,
1551
+ 'fee': undefined,
1552
+ 'clientOrderId': undefined,
1553
+ 'average': undefined,
1554
+ }, market);
1555
+ }
1556
+ /**
1557
+ * @method
1558
+ * @name bittrade#cancelOrder
1559
+ * @description cancels an open order
1560
+ * @param {string} id order id
1561
+ * @param {string} symbol not used by bittrade cancelOrder ()
1562
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1563
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1564
+ */
1565
+ async cancelOrder(id, symbol = undefined, params = {}) {
1566
+ const response = await this.privatePostOrderOrdersIdSubmitcancel({ 'id': id });
1567
+ //
1568
+ // {
1569
+ // "status": "ok",
1570
+ // "data": "10138899000",
1571
+ // }
1572
+ //
1573
+ return this.extend(this.parseOrder(response), {
1574
+ 'id': id,
1575
+ 'status': 'canceled',
1576
+ });
1577
+ }
1578
+ /**
1579
+ * @method
1580
+ * @name bittrade#cancelOrders
1581
+ * @description cancel multiple orders
1582
+ * @param {string[]} ids order ids
1583
+ * @param {string} symbol not used by bittrade cancelOrders ()
1584
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1585
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1586
+ */
1587
+ async cancelOrders(ids, symbol = undefined, params = {}) {
1588
+ await this.loadMarkets();
1589
+ const clientOrderIds = this.safeValue2(params, 'clientOrderIds', 'client-order-ids');
1590
+ params = this.omit(params, ['clientOrderIds', 'client-order-ids']);
1591
+ const request = {};
1592
+ if (clientOrderIds === undefined) {
1593
+ request['order-ids'] = ids;
1594
+ }
1595
+ else {
1596
+ request['client-order-ids'] = clientOrderIds;
1597
+ }
1598
+ const response = await this.privatePostOrderOrdersBatchcancel(this.extend(request, params));
1599
+ //
1600
+ // {
1601
+ // "status": "ok",
1602
+ // "data": {
1603
+ // "success": [
1604
+ // "5983466"
1605
+ // ],
1606
+ // "failed": [
1607
+ // {
1608
+ // "err-msg": "Incorrect order state",
1609
+ // "order-state": 7,
1610
+ // "order-id": "",
1611
+ // "err-code": "order-orderstate-error",
1612
+ // "client-order-id": "first"
1613
+ // },
1614
+ // {
1615
+ // "err-msg": "Incorrect order state",
1616
+ // "order-state": 7,
1617
+ // "order-id": "",
1618
+ // "err-code": "order-orderstate-error",
1619
+ // "client-order-id": "second"
1620
+ // },
1621
+ // {
1622
+ // "err-msg": "The record is not found.",
1623
+ // "order-id": "",
1624
+ // "err-code": "base-not-found",
1625
+ // "client-order-id": "third"
1626
+ // }
1627
+ // ]
1628
+ // }
1629
+ // }
1630
+ //
1631
+ return this.parseCancelOrders(response);
1632
+ }
1633
+ parseCancelOrders(orders) {
1634
+ //
1635
+ // {
1636
+ // "success": [
1637
+ // "5983466"
1638
+ // ],
1639
+ // "failed": [
1640
+ // {
1641
+ // "err-msg": "Incorrect order state",
1642
+ // "order-state": 7,
1643
+ // "order-id": "",
1644
+ // "err-code": "order-orderstate-error",
1645
+ // "client-order-id": "first"
1646
+ // },
1647
+ // ...
1648
+ // ]
1649
+ // }
1650
+ //
1651
+ // {
1652
+ // "errors": [
1653
+ // {
1654
+ // "order_id": "769206471845261312",
1655
+ // "err_code": 1061,
1656
+ // "err_msg": "This order doesnt exist."
1657
+ // }
1658
+ // ],
1659
+ // "successes": "1258075374411399168,1258075393254871040"
1660
+ // }
1661
+ //
1662
+ const successes = this.safeString(orders, 'successes');
1663
+ let success = undefined;
1664
+ if (successes !== undefined) {
1665
+ success = successes.split(',');
1666
+ }
1667
+ else {
1668
+ success = this.safeList(orders, 'success', []);
1669
+ }
1670
+ const failed = this.safeList2(orders, 'errors', 'failed', []);
1671
+ const result = [];
1672
+ for (let i = 0; i < success.length; i++) {
1673
+ const order = success[i];
1674
+ result.push(this.safeOrder({
1675
+ 'info': order,
1676
+ 'id': order,
1677
+ 'status': 'canceled',
1678
+ }));
1679
+ }
1680
+ for (let i = 0; i < failed.length; i++) {
1681
+ const order = failed[i];
1682
+ result.push(this.safeOrder({
1683
+ 'info': order,
1684
+ 'id': this.safeString2(order, 'order-id', 'order_id'),
1685
+ 'status': 'failed',
1686
+ 'clientOrderId': this.safeString(order, 'client-order-id'),
1687
+ }));
1688
+ }
1689
+ return result;
1690
+ }
1691
+ /**
1692
+ * @method
1693
+ * @name bittrade#cancelAllOrders
1694
+ * @description cancel all open orders
1695
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1696
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1697
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1698
+ */
1699
+ async cancelAllOrders(symbol = undefined, params = {}) {
1700
+ await this.loadMarkets();
1701
+ const request = {
1702
+ // 'account-id' string false NA The account id used for this cancel Refer to GET /v1/account/accounts
1703
+ // 'symbol': market['id'], // a list of comma-separated symbols, all symbols by default
1704
+ // 'types' 'string', buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc, buy-stop-limit, sell-stop-limit, buy-limit-fok, sell-limit-fok, buy-stop-limit-fok, sell-stop-limit-fok
1705
+ // 'side': 'buy', // or 'sell'
1706
+ // 'size': 100, // the number of orders to cancel 1-100
1707
+ };
1708
+ let market = undefined;
1709
+ if (symbol !== undefined) {
1710
+ market = this.market(symbol);
1711
+ request['symbol'] = market['id'];
1712
+ }
1713
+ const response = await this.privatePostOrderOrdersBatchCancelOpenOrders(this.extend(request, params));
1714
+ //
1715
+ // {
1716
+ // "code": 200,
1717
+ // "data": {
1718
+ // "success-count": 2,
1719
+ // "failed-count": 0,
1720
+ // "next-id": 5454600
1721
+ // }
1722
+ // }
1723
+ //
1724
+ const data = this.safeDict(response, 'data', {});
1725
+ return [
1726
+ this.safeOrder({
1727
+ 'info': data,
1728
+ }),
1729
+ ];
1730
+ }
1731
+ parseDepositAddress(depositAddress, currency = undefined) {
1732
+ //
1733
+ // {
1734
+ // "currency": "usdt",
1735
+ // "address": "0xf7292eb9ba7bc50358e27f0e025a4d225a64127b",
1736
+ // "addressTag": "",
1737
+ // "chain": "usdterc20", // trc20usdt, hrc20usdt, usdt, algousdt
1738
+ // }
1739
+ //
1740
+ const address = this.safeString(depositAddress, 'address');
1741
+ const tag = this.safeString(depositAddress, 'addressTag');
1742
+ const currencyId = this.safeString(depositAddress, 'currency');
1743
+ currency = this.safeCurrency(currencyId, currency);
1744
+ const code = this.safeCurrencyCode(currencyId, currency);
1745
+ const networkId = this.safeString(depositAddress, 'chain');
1746
+ const networks = this.safeValue(currency, 'networks', {});
1747
+ const networksById = this.indexBy(networks, 'id');
1748
+ const networkValue = this.safeValue(networksById, networkId, networkId);
1749
+ const network = this.safeString(networkValue, 'network');
1750
+ this.checkAddress(address);
1751
+ return {
1752
+ 'currency': code,
1753
+ 'address': address,
1754
+ 'tag': tag,
1755
+ 'network': network,
1756
+ 'info': depositAddress,
1757
+ };
1758
+ }
1759
+ /**
1760
+ * @method
1761
+ * @name bittrade#fetchDeposits
1762
+ * @description fetch all deposits made to an account
1763
+ * @param {string} code unified currency code
1764
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1765
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1766
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1767
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1768
+ */
1769
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1770
+ if (limit === undefined || limit > 100) {
1771
+ limit = 100;
1772
+ }
1773
+ await this.loadMarkets();
1774
+ let currency = undefined;
1775
+ if (code !== undefined) {
1776
+ currency = this.currency(code);
1777
+ }
1778
+ const request = {
1779
+ 'type': 'deposit',
1780
+ 'from': 0, // From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1781
+ };
1782
+ if (currency !== undefined) {
1783
+ request['currency'] = currency['id'];
1784
+ }
1785
+ if (limit !== undefined) {
1786
+ request['size'] = limit; // max 100
1787
+ }
1788
+ const response = await this.privateGetQueryDepositWithdraw(this.extend(request, params));
1789
+ // return response
1790
+ return this.parseTransactions(response['data'], currency, since, limit);
1791
+ }
1792
+ /**
1793
+ * @method
1794
+ * @name bittrade#fetchWithdrawals
1795
+ * @description fetch all withdrawals made from an account
1796
+ * @param {string} code unified currency code
1797
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1798
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1799
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1800
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1801
+ */
1802
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1803
+ if (limit === undefined || limit > 100) {
1804
+ limit = 100;
1805
+ }
1806
+ await this.loadMarkets();
1807
+ let currency = undefined;
1808
+ if (code !== undefined) {
1809
+ currency = this.currency(code);
1810
+ }
1811
+ const request = {
1812
+ 'type': 'withdraw',
1813
+ 'from': 0, // From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1814
+ };
1815
+ if (currency !== undefined) {
1816
+ request['currency'] = currency['id'];
1817
+ }
1818
+ if (limit !== undefined) {
1819
+ request['size'] = limit; // max 100
1820
+ }
1821
+ const response = await this.privateGetQueryDepositWithdraw(this.extend(request, params));
1822
+ // return response
1823
+ return this.parseTransactions(response['data'], currency, since, limit);
1824
+ }
1825
+ parseTransaction(transaction, currency = undefined) {
1826
+ //
1827
+ // fetchDeposits
1828
+ //
1829
+ // {
1830
+ // "id": 8211029,
1831
+ // "type": "deposit",
1832
+ // "currency": "eth",
1833
+ // "chain": "eth",
1834
+ // 'tx-hash': "bd315....",
1835
+ // "amount": 0.81162421,
1836
+ // "address": "4b8b....",
1837
+ // 'address-tag": '",
1838
+ // "fee": 0,
1839
+ // "state": "safe",
1840
+ // "created-at": 1542180380965,
1841
+ // "updated-at": 1542180788077
1842
+ // }
1843
+ //
1844
+ // fetchWithdrawals
1845
+ //
1846
+ // {
1847
+ // "id": 6908275,
1848
+ // "type": "withdraw",
1849
+ // "currency": "btc",
1850
+ // "chain": "btc",
1851
+ // 'tx-hash': "c1a1a....",
1852
+ // "amount": 0.80257005,
1853
+ // "address": "1QR....",
1854
+ // 'address-tag": '",
1855
+ // "fee": 0.0005,
1856
+ // "state": "confirmed",
1857
+ // "created-at": 1552107295685,
1858
+ // "updated-at": 1552108032859
1859
+ // }
1860
+ //
1861
+ // withdraw
1862
+ //
1863
+ // {
1864
+ // "status": "ok",
1865
+ // "data": "99562054"
1866
+ // }
1867
+ //
1868
+ const timestamp = this.safeInteger(transaction, 'created-at');
1869
+ const code = this.safeCurrencyCode(this.safeString(transaction, 'currency'));
1870
+ let type = this.safeString(transaction, 'type');
1871
+ if (type === 'withdraw') {
1872
+ type = 'withdrawal';
1873
+ }
1874
+ let feeCost = this.safeString(transaction, 'fee');
1875
+ if (feeCost !== undefined) {
1876
+ feeCost = Precise.stringAbs(feeCost);
1877
+ }
1878
+ return {
1879
+ 'info': transaction,
1880
+ 'id': this.safeString2(transaction, 'id', 'data'),
1881
+ 'txid': this.safeString(transaction, 'tx-hash'),
1882
+ 'timestamp': timestamp,
1883
+ 'datetime': this.iso8601(timestamp),
1884
+ 'network': this.safeStringUpper(transaction, 'chain'),
1885
+ 'address': this.safeString(transaction, 'address'),
1886
+ 'addressTo': undefined,
1887
+ 'addressFrom': undefined,
1888
+ 'tag': this.safeString(transaction, 'address-tag'),
1889
+ 'tagTo': undefined,
1890
+ 'tagFrom': undefined,
1891
+ 'type': type,
1892
+ 'amount': this.safeNumber(transaction, 'amount'),
1893
+ 'currency': code,
1894
+ 'status': this.parseTransactionStatus(this.safeString(transaction, 'state')),
1895
+ 'updated': this.safeInteger(transaction, 'updated-at'),
1896
+ 'comment': undefined,
1897
+ 'internal': undefined,
1898
+ 'fee': {
1899
+ 'currency': code,
1900
+ 'cost': this.parseNumber(feeCost),
1901
+ 'rate': undefined,
1902
+ },
1903
+ };
1904
+ }
1905
+ parseTransactionStatus(status) {
1906
+ const statuses = {
1907
+ // deposit statuses
1908
+ 'unknown': 'failed',
1909
+ 'confirming': 'pending',
1910
+ 'confirmed': 'ok',
1911
+ 'safe': 'ok',
1912
+ 'orphan': 'failed',
1913
+ // withdrawal statuses
1914
+ 'submitted': 'pending',
1915
+ 'canceled': 'canceled',
1916
+ 'reexamine': 'pending',
1917
+ 'reject': 'failed',
1918
+ 'pass': 'pending',
1919
+ 'wallet-reject': 'failed',
1920
+ // 'confirmed': 'ok', // present in deposit statuses
1921
+ 'confirm-error': 'failed',
1922
+ 'repealed': 'failed',
1923
+ 'wallet-transfer': 'pending',
1924
+ 'pre-transfer': 'pending',
1925
+ };
1926
+ return this.safeString(statuses, status, status);
1927
+ }
1928
+ /**
1929
+ * @method
1930
+ * @name bittrade#withdraw
1931
+ * @description make a withdrawal
1932
+ * @param {string} code unified currency code
1933
+ * @param {float} amount the amount to withdraw
1934
+ * @param {string} address the address to withdraw to
1935
+ * @param {string} tag
1936
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1937
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1938
+ */
1939
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1940
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1941
+ await this.loadMarkets();
1942
+ this.checkAddress(address);
1943
+ const currency = this.currency(code);
1944
+ const request = {
1945
+ 'address': address,
1946
+ 'amount': amount,
1947
+ 'currency': currency['id'].toLowerCase(),
1948
+ };
1949
+ if (tag !== undefined) {
1950
+ request['addr-tag'] = tag; // only for XRP?
1951
+ }
1952
+ const networks = this.safeValue(this.options, 'networks', {});
1953
+ let network = this.safeStringUpper(params, 'network'); // this line allows the user to specify either ERC20 or ETH
1954
+ network = this.safeStringLower(networks, network, network); // handle ETH>ERC20 alias
1955
+ if (network !== undefined) {
1956
+ // possible chains - usdterc20, trc20usdt, hrc20usdt, usdt, algousdt
1957
+ if (network === 'erc20') {
1958
+ request['chain'] = currency['id'] + network;
1959
+ }
1960
+ else {
1961
+ request['chain'] = network + currency['id'];
1962
+ }
1963
+ params = this.omit(params, 'network');
1964
+ }
1965
+ const response = await this.privatePostDwWithdrawApiCreate(this.extend(request, params));
1966
+ //
1967
+ // {
1968
+ // "status": "ok",
1969
+ // "data": "99562054"
1970
+ // }
1971
+ //
1972
+ return this.parseTransaction(response, currency);
1973
+ }
1974
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1975
+ let url = '/';
1976
+ if (api === 'market') {
1977
+ url += api;
1978
+ }
1979
+ else if ((api === 'public') || (api === 'private')) {
1980
+ url += this.version;
1981
+ }
1982
+ else if ((api === 'v2Public') || (api === 'v2Private')) {
1983
+ url += 'v2';
1984
+ }
1985
+ url += '/' + this.implodeParams(path, params);
1986
+ const query = this.omit(params, this.extractParams(path));
1987
+ if (api === 'private' || api === 'v2Private') {
1988
+ this.checkRequiredCredentials();
1989
+ const timestamp = this.ymdhms(this.milliseconds(), 'T');
1990
+ let request = {
1991
+ 'SignatureMethod': 'HmacSHA256',
1992
+ 'SignatureVersion': '2',
1993
+ 'AccessKeyId': this.apiKey,
1994
+ 'Timestamp': timestamp,
1995
+ };
1996
+ if (method !== 'POST') {
1997
+ request = this.extend(request, query);
1998
+ }
1999
+ const requestSorted = this.keysort(request);
2000
+ let auth = this.urlencode(requestSorted);
2001
+ // unfortunately, PHP demands double quotes for the escaped newline symbol
2002
+ // eslint-disable-next-line quotes
2003
+ const payload = [method, this.hostname, url, auth].join("\n");
2004
+ const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256, 'base64');
2005
+ auth += '&' + this.urlencode({ 'Signature': signature });
2006
+ url += '?' + auth;
2007
+ if (method === 'POST') {
2008
+ body = this.json(query);
2009
+ headers = {
2010
+ 'Content-Type': 'application/json',
2011
+ };
2012
+ }
2013
+ else {
2014
+ headers = {
2015
+ 'Content-Type': 'application/x-www-form-urlencoded',
2016
+ };
2017
+ }
2018
+ }
2019
+ else {
2020
+ if (Object.keys(params).length) {
2021
+ url += '?' + this.urlencode(params);
2022
+ }
2023
+ }
2024
+ url = this.implodeParams(this.urls['api'][api], {
2025
+ 'hostname': this.hostname,
2026
+ }) + url;
2027
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2028
+ }
2029
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2030
+ if (response === undefined) {
2031
+ return undefined; // fallback to default error handler
2032
+ }
2033
+ if ('status' in response) {
2034
+ //
2035
+ // {"status":"error","err-code":"order-limitorder-amount-min-error","err-msg":"limit order amount error, min: `0.001`","data":null}
2036
+ //
2037
+ const status = this.safeString(response, 'status');
2038
+ if (status === 'error') {
2039
+ const code = this.safeString(response, 'err-code');
2040
+ const feedback = this.id + ' ' + body;
2041
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2042
+ this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
2043
+ const message = this.safeString(response, 'err-msg');
2044
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2045
+ throw new ExchangeError(feedback);
2046
+ }
2047
+ }
2048
+ return undefined;
2049
+ }
2050
+ }