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,2641 @@
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/tokocrypto.js';
9
+ import { TRUNCATE, TICK_SIZE } from './base/functions/number.js';
10
+ import { ExchangeError, ExchangeNotAvailable, InsufficientFunds, OrderNotFound, InvalidOrder, DDoSProtection, InvalidNonce, AuthenticationError, RateLimitExceeded, PermissionDenied, NotSupported, BadRequest, BadSymbol, AccountSuspended, OrderImmediatelyFillable, OnMaintenance, BadResponse, RequestTimeout, OrderNotFillable, MarginModeAlreadySet, ArgumentsRequired } from './base/errors.js';
11
+ import { Precise } from './base/Precise.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * @class tokocrypto
16
+ * @augments Exchange
17
+ */
18
+ export default class tokocrypto extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'tokocrypto',
22
+ 'name': 'Tokocrypto',
23
+ 'countries': ['ID'],
24
+ 'certified': false,
25
+ 'pro': false,
26
+ 'version': 'v1',
27
+ // new metainfo interface
28
+ 'has': {
29
+ 'CORS': undefined,
30
+ 'spot': true,
31
+ 'margin': true,
32
+ 'swap': false,
33
+ 'future': false,
34
+ 'option': false,
35
+ 'addMargin': undefined,
36
+ 'borrowMargin': undefined,
37
+ 'cancelAllOrders': false,
38
+ 'cancelOrder': true,
39
+ 'cancelOrders': undefined,
40
+ 'createDepositAddress': false,
41
+ 'createMarketBuyOrderWithCost': true,
42
+ 'createMarketOrderWithCost': false,
43
+ 'createMarketSellOrderWithCost': false,
44
+ 'createOrder': true,
45
+ 'createReduceOnlyOrder': undefined,
46
+ 'createStopLimitOrder': true,
47
+ 'createStopMarketOrder': true,
48
+ 'createStopOrder': true,
49
+ 'fetchAccounts': false,
50
+ 'fetchBalance': true,
51
+ 'fetchBidsAsks': true,
52
+ 'fetchBorrowInterest': undefined,
53
+ 'fetchBorrowRateHistories': undefined,
54
+ 'fetchBorrowRateHistory': undefined,
55
+ 'fetchCanceledOrders': false,
56
+ 'fetchClosedOrder': false,
57
+ 'fetchClosedOrders': 'emulated',
58
+ 'fetchCrossBorrowRate': false,
59
+ 'fetchCrossBorrowRates': false,
60
+ 'fetchCurrencies': false,
61
+ 'fetchDeposit': false,
62
+ 'fetchDepositAddress': true,
63
+ 'fetchDepositAddresses': false,
64
+ 'fetchDepositAddressesByNetwork': false,
65
+ 'fetchDeposits': true,
66
+ 'fetchDepositsWithdrawals': false,
67
+ 'fetchFundingHistory': false,
68
+ 'fetchFundingRate': false,
69
+ 'fetchFundingRateHistory': false,
70
+ 'fetchFundingRates': false,
71
+ 'fetchIndexOHLCV': false,
72
+ 'fetchIsolatedBorrowRate': false,
73
+ 'fetchIsolatedBorrowRates': false,
74
+ 'fetchL3OrderBook': false,
75
+ 'fetchLedger': undefined,
76
+ 'fetchLeverage': false,
77
+ 'fetchLeverageTiers': false,
78
+ 'fetchMarketLeverageTiers': 'emulated',
79
+ 'fetchMarkets': true,
80
+ 'fetchMarkOHLCV': false,
81
+ 'fetchMyTrades': true,
82
+ 'fetchOHLCV': true,
83
+ 'fetchOpenInterestHistory': false,
84
+ 'fetchOpenOrder': false,
85
+ 'fetchOpenOrders': true,
86
+ 'fetchOrder': true,
87
+ 'fetchOrderBook': true,
88
+ 'fetchOrderBooks': false,
89
+ 'fetchOrders': true,
90
+ 'fetchOrderTrades': false,
91
+ 'fetchPosition': false,
92
+ 'fetchPositions': false,
93
+ 'fetchPositionsRisk': false,
94
+ 'fetchPremiumIndexOHLCV': false,
95
+ 'fetchStatus': false,
96
+ 'fetchTicker': false,
97
+ 'fetchTickers': false,
98
+ 'fetchTime': true,
99
+ 'fetchTrades': true,
100
+ 'fetchTradingFee': false,
101
+ 'fetchTradingFees': false,
102
+ 'fetchTradingLimits': false,
103
+ 'fetchTransactionFee': false,
104
+ 'fetchTransactionFees': false,
105
+ 'fetchTransactions': false,
106
+ 'fetchTransfers': false,
107
+ 'fetchWithdrawal': false,
108
+ 'fetchWithdrawals': true,
109
+ 'fetchWithdrawalWhitelist': false,
110
+ 'reduceMargin': false,
111
+ 'repayCrossMargin': false,
112
+ 'repayIsolatedMargin': false,
113
+ 'setLeverage': false,
114
+ 'setMargin': false,
115
+ 'setMarginMode': false,
116
+ 'setPositionMode': false,
117
+ 'signIn': false,
118
+ 'transfer': false,
119
+ 'withdraw': true,
120
+ },
121
+ 'timeframes': {
122
+ '1m': '1m',
123
+ '3m': '3m',
124
+ '5m': '5m',
125
+ '15m': '15m',
126
+ '30m': '30m',
127
+ '1h': '1h',
128
+ '2h': '2h',
129
+ '4h': '4h',
130
+ '6h': '6h',
131
+ '8h': '8h',
132
+ '12h': '12h',
133
+ '1d': '1d',
134
+ '3d': '3d',
135
+ '1w': '1w',
136
+ '1M': '1M',
137
+ },
138
+ 'urls': {
139
+ 'logo': 'https://user-images.githubusercontent.com/1294454/183870484-d3398d0c-f6a1-4cce-91b8-d58792308716.jpg',
140
+ 'api': {
141
+ 'rest': {
142
+ 'public': 'https://www.tokocrypto.com',
143
+ 'binance': 'https://api.binance.com/api/v3',
144
+ 'private': 'https://www.tokocrypto.com',
145
+ },
146
+ },
147
+ 'www': 'https://tokocrypto.com',
148
+ // 'referral': 'https://www.binance.us/?ref=35005074',
149
+ 'doc': 'https://www.tokocrypto.com/apidocs/',
150
+ 'fees': 'https://www.tokocrypto.com/fees/newschedule',
151
+ },
152
+ 'api': {
153
+ 'binance': {
154
+ 'get': {
155
+ 'ping': 1,
156
+ 'time': 1,
157
+ 'depth': { 'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]] },
158
+ 'trades': 1,
159
+ 'aggTrades': 1,
160
+ 'historicalTrades': 5,
161
+ 'klines': 1,
162
+ 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
163
+ 'ticker/price': { 'cost': 1, 'noSymbol': 2 },
164
+ 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
165
+ 'exchangeInfo': 10,
166
+ },
167
+ 'put': {
168
+ 'userDataStream': 1,
169
+ },
170
+ 'post': {
171
+ 'userDataStream': 1,
172
+ },
173
+ 'delete': {
174
+ 'userDataStream': 1,
175
+ },
176
+ },
177
+ 'public': {
178
+ 'get': {
179
+ 'open/v1/common/time': 1,
180
+ 'open/v1/common/symbols': 1,
181
+ // all the actual symbols are type 1
182
+ 'open/v1/market/depth': 1,
183
+ 'open/v1/market/trades': 1,
184
+ 'open/v1/market/agg-trades': 1,
185
+ 'open/v1/market/klines': 1, // when symbol type is not 1
186
+ },
187
+ },
188
+ 'private': {
189
+ 'get': {
190
+ 'open/v1/orders/detail': 1,
191
+ 'open/v1/orders': 1,
192
+ 'open/v1/account/spot': 1,
193
+ 'open/v1/account/spot/asset': 1,
194
+ 'open/v1/orders/trades': 1,
195
+ 'open/v1/withdraws': 1,
196
+ 'open/v1/deposits': 1,
197
+ 'open/v1/deposits/address': 1,
198
+ },
199
+ 'post': {
200
+ 'open/v1/orders': 1,
201
+ 'open/v1/orders/cancel': 1,
202
+ 'open/v1/orders/oco': 1,
203
+ 'open/v1/withdraws': 1,
204
+ 'open/v1/user-data-stream': 1,
205
+ },
206
+ },
207
+ },
208
+ 'fees': {
209
+ 'trading': {
210
+ 'tierBased': true,
211
+ 'percentage': true,
212
+ 'taker': this.parseNumber('0.0075'),
213
+ 'maker': this.parseNumber('0.0075'), // 0.1% trading fee, zero fees for all trading pairs before November 1
214
+ },
215
+ },
216
+ 'precisionMode': TICK_SIZE,
217
+ 'options': {
218
+ // 'fetchTradesMethod': 'binanceGetTrades', // binanceGetTrades, binanceGetAggTrades
219
+ 'createMarketBuyOrderRequiresPrice': true,
220
+ 'defaultTimeInForce': 'GTC',
221
+ // 'defaultType': 'spot', // 'spot', 'future', 'margin', 'delivery'
222
+ 'hasAlreadyAuthenticatedSuccessfully': false,
223
+ 'warnOnFetchOpenOrdersWithoutSymbol': true,
224
+ // 'fetchPositions': 'positionRisk', // or 'account'
225
+ 'recvWindow': 5 * 1000,
226
+ 'timeDifference': 0,
227
+ 'adjustForTimeDifference': false,
228
+ 'newOrderRespType': {
229
+ 'market': 'FULL',
230
+ 'limit': 'FULL', // we change it from 'ACK' by default to 'FULL' (returns immediately if limit is not hit)
231
+ },
232
+ 'quoteOrderQty': false,
233
+ 'networks': {
234
+ 'ERC20': 'ETH',
235
+ 'TRC20': 'TRX',
236
+ 'BEP2': 'BNB',
237
+ 'BEP20': 'BSC',
238
+ 'OMNI': 'OMNI',
239
+ 'EOS': 'EOS',
240
+ 'SPL': 'SOL',
241
+ },
242
+ 'reverseNetworks': {
243
+ 'tronscan.org': 'TRC20',
244
+ 'etherscan.io': 'ERC20',
245
+ 'bscscan.com': 'BSC',
246
+ 'explorer.binance.org': 'BEP2',
247
+ 'bithomp.com': 'XRP',
248
+ 'bloks.io': 'EOS',
249
+ 'stellar.expert': 'XLM',
250
+ 'blockchair.com/bitcoin': 'BTC',
251
+ 'blockchair.com/bitcoin-cash': 'BCH',
252
+ 'blockchair.com/ecash': 'XEC',
253
+ 'explorer.litecoin.net': 'LTC',
254
+ 'explorer.avax.network': 'AVAX',
255
+ 'solscan.io': 'SOL',
256
+ 'polkadot.subscan.io': 'DOT',
257
+ 'dashboard.internetcomputer.org': 'ICP',
258
+ 'explorer.chiliz.com': 'CHZ',
259
+ 'cardanoscan.io': 'ADA',
260
+ 'mainnet.theoan.com': 'AION',
261
+ 'algoexplorer.io': 'ALGO',
262
+ 'explorer.ambrosus.com': 'AMB',
263
+ 'viewblock.io/zilliqa': 'ZIL',
264
+ 'viewblock.io/arweave': 'AR',
265
+ 'explorer.ark.io': 'ARK',
266
+ 'atomscan.com': 'ATOM',
267
+ 'www.mintscan.io': 'CTK',
268
+ 'explorer.bitcoindiamond.org': 'BCD',
269
+ 'btgexplorer.com': 'BTG',
270
+ 'bts.ai': 'BTS',
271
+ 'explorer.celo.org': 'CELO',
272
+ 'explorer.nervos.org': 'CKB',
273
+ 'cerebro.cortexlabs.ai': 'CTXC',
274
+ 'chainz.cryptoid.info': 'VIA',
275
+ 'explorer.dcrdata.org': 'DCR',
276
+ 'digiexplorer.info': 'DGB',
277
+ 'dock.subscan.io': 'DOCK',
278
+ 'dogechain.info': 'DOGE',
279
+ 'explorer.elrond.com': 'EGLD',
280
+ 'blockscout.com': 'ETC',
281
+ 'explore-fetchhub.fetch.ai': 'FET',
282
+ 'filfox.info': 'FIL',
283
+ 'fio.bloks.io': 'FIO',
284
+ 'explorer.firo.org': 'FIRO',
285
+ 'neoscan.io': 'NEO',
286
+ 'ftmscan.com': 'FTM',
287
+ 'explorer.gochain.io': 'GO',
288
+ 'block.gxb.io': 'GXS',
289
+ 'hash-hash.info': 'HBAR',
290
+ 'www.hiveblockexplorer.com': 'HIVE',
291
+ 'explorer.helium.com': 'HNT',
292
+ 'tracker.icon.foundation': 'ICX',
293
+ 'www.iostabc.com': 'IOST',
294
+ 'explorer.iota.org': 'IOTA',
295
+ 'iotexscan.io': 'IOTX',
296
+ 'irishub.iobscan.io': 'IRIS',
297
+ 'kava.mintscan.io': 'KAVA',
298
+ 'scope.klaytn.com': 'KLAY',
299
+ 'kmdexplorer.io': 'KMD',
300
+ 'kusama.subscan.io': 'KSM',
301
+ 'explorer.lto.network': 'LTO',
302
+ 'polygonscan.com': 'POLYGON',
303
+ 'explorer.ont.io': 'ONT',
304
+ 'minaexplorer.com': 'MINA',
305
+ 'nanolooker.com': 'NANO',
306
+ 'explorer.nebulas.io': 'NAS',
307
+ 'explorer.nbs.plus': 'NBS',
308
+ 'explorer.nebl.io': 'NEBL',
309
+ 'nulscan.io': 'NULS',
310
+ 'nxscan.com': 'NXS',
311
+ 'explorer.harmony.one': 'ONE',
312
+ 'explorer.poa.network': 'POA',
313
+ 'qtum.info': 'QTUM',
314
+ 'explorer.rsk.co': 'RSK',
315
+ 'www.oasisscan.com': 'ROSE',
316
+ 'ravencoin.network': 'RVN',
317
+ 'sc.tokenview.com': 'SC',
318
+ 'secretnodes.com': 'SCRT',
319
+ 'explorer.skycoin.com': 'SKY',
320
+ 'steemscan.com': 'STEEM',
321
+ 'explorer.stacks.co': 'STX',
322
+ 'www.thetascan.io': 'THETA',
323
+ 'scan.tomochain.com': 'TOMO',
324
+ 'explore.vechain.org': 'VET',
325
+ 'explorer.vite.net': 'VITE',
326
+ 'www.wanscan.org': 'WAN',
327
+ 'wavesexplorer.com': 'WAVES',
328
+ 'wax.eosx.io': 'WAXP',
329
+ 'waltonchain.pro': 'WTC',
330
+ 'chain.nem.ninja': 'XEM',
331
+ 'verge-blockchain.info': 'XVG',
332
+ 'explorer.yoyow.org': 'YOYOW',
333
+ 'explorer.zcha.in': 'ZEC',
334
+ 'explorer.zensystem.io': 'ZEN',
335
+ },
336
+ 'impliedNetworks': {
337
+ 'ETH': { 'ERC20': 'ETH' },
338
+ 'TRX': { 'TRC20': 'TRX' },
339
+ },
340
+ 'legalMoney': {
341
+ 'MXN': true,
342
+ 'UGX': true,
343
+ 'SEK': true,
344
+ 'CHF': true,
345
+ 'VND': true,
346
+ 'AED': true,
347
+ 'DKK': true,
348
+ 'KZT': true,
349
+ 'HUF': true,
350
+ 'PEN': true,
351
+ 'PHP': true,
352
+ 'USD': true,
353
+ 'TRY': true,
354
+ 'EUR': true,
355
+ 'NGN': true,
356
+ 'PLN': true,
357
+ 'BRL': true,
358
+ 'ZAR': true,
359
+ 'KES': true,
360
+ 'ARS': true,
361
+ 'RUB': true,
362
+ 'AUD': true,
363
+ 'NOK': true,
364
+ 'CZK': true,
365
+ 'GBP': true,
366
+ 'UAH': true,
367
+ 'GHS': true,
368
+ 'HKD': true,
369
+ 'CAD': true,
370
+ 'INR': true,
371
+ 'JPY': true,
372
+ 'NZD': true,
373
+ },
374
+ },
375
+ // https://binance-docs.github.io/apidocs/spot/en/#error-codes-2
376
+ 'exceptions': {
377
+ 'exact': {
378
+ 'System is under maintenance.': OnMaintenance,
379
+ 'System abnormality': ExchangeError,
380
+ 'You are not authorized to execute this request.': PermissionDenied,
381
+ 'API key does not exist': AuthenticationError,
382
+ 'Order would trigger immediately.': OrderImmediatelyFillable,
383
+ 'Stop price would trigger immediately.': OrderImmediatelyFillable,
384
+ 'Order would immediately match and take.': OrderImmediatelyFillable,
385
+ 'Account has insufficient balance for requested action.': InsufficientFunds,
386
+ 'Rest API trading is not enabled.': ExchangeNotAvailable,
387
+ "You don't have permission.": PermissionDenied,
388
+ 'Market is closed.': ExchangeNotAvailable,
389
+ 'Too many requests. Please try again later.': DDoSProtection,
390
+ 'This action disabled is on this account.': AccountSuspended,
391
+ '-1000': ExchangeNotAvailable,
392
+ '-1001': ExchangeNotAvailable,
393
+ '-1002': AuthenticationError,
394
+ '-1003': RateLimitExceeded,
395
+ '-1004': DDoSProtection,
396
+ '-1005': PermissionDenied,
397
+ '-1006': BadResponse,
398
+ '-1007': RequestTimeout,
399
+ '-1010': BadResponse,
400
+ '-1011': PermissionDenied,
401
+ '-1013': InvalidOrder,
402
+ '-1014': InvalidOrder,
403
+ '-1015': RateLimitExceeded,
404
+ '-1016': ExchangeNotAvailable,
405
+ '-1020': BadRequest,
406
+ '-1021': InvalidNonce,
407
+ '-1022': AuthenticationError,
408
+ '-1023': BadRequest,
409
+ '-1099': AuthenticationError,
410
+ '-1100': BadRequest,
411
+ '-1101': BadRequest,
412
+ '-1102': BadRequest,
413
+ '-1103': BadRequest,
414
+ '-1104': BadRequest,
415
+ '-1105': BadRequest,
416
+ '-1106': BadRequest,
417
+ '-1108': BadRequest,
418
+ '-1109': AuthenticationError,
419
+ '-1110': BadRequest,
420
+ '-1111': BadRequest,
421
+ '-1112': InvalidOrder,
422
+ '-1113': BadRequest,
423
+ '-1114': BadRequest,
424
+ '-1115': BadRequest,
425
+ '-1116': BadRequest,
426
+ '-1117': BadRequest,
427
+ '-1118': BadRequest,
428
+ '-1119': BadRequest,
429
+ '-1120': BadRequest,
430
+ '-1121': BadSymbol,
431
+ '-1125': AuthenticationError,
432
+ '-1127': BadRequest,
433
+ '-1128': BadRequest,
434
+ '-1130': BadRequest,
435
+ '-1131': BadRequest,
436
+ '-1136': BadRequest,
437
+ '-2008': AuthenticationError,
438
+ '-2010': ExchangeError,
439
+ '-2011': OrderNotFound,
440
+ '-2013': OrderNotFound,
441
+ '-2014': AuthenticationError,
442
+ '-2015': AuthenticationError,
443
+ '-2016': BadRequest,
444
+ '-2018': InsufficientFunds,
445
+ '-2019': InsufficientFunds,
446
+ '-2020': OrderNotFillable,
447
+ '-2021': OrderImmediatelyFillable,
448
+ '-2022': InvalidOrder,
449
+ '-2023': InsufficientFunds,
450
+ '-2024': InsufficientFunds,
451
+ '-2025': InvalidOrder,
452
+ '-2026': InvalidOrder,
453
+ '-2027': InvalidOrder,
454
+ '-2028': InsufficientFunds,
455
+ '-3000': ExchangeError,
456
+ '-3001': AuthenticationError,
457
+ '-3002': BadSymbol,
458
+ '-3003': BadRequest,
459
+ '-3004': ExchangeError,
460
+ '-3005': InsufficientFunds,
461
+ '-3006': InsufficientFunds,
462
+ '-3007': ExchangeError,
463
+ '-3008': InsufficientFunds,
464
+ '-3009': BadRequest,
465
+ '-3010': ExchangeError,
466
+ '-3011': BadRequest,
467
+ '-3012': ExchangeError,
468
+ '-3013': BadRequest,
469
+ '-3014': AccountSuspended,
470
+ '-3015': ExchangeError,
471
+ '-3016': BadRequest,
472
+ '-3017': ExchangeError,
473
+ '-3018': AccountSuspended,
474
+ '-3019': AccountSuspended,
475
+ '-3020': InsufficientFunds,
476
+ '-3021': BadRequest,
477
+ '-3022': AccountSuspended,
478
+ '-3023': BadRequest,
479
+ '-3024': ExchangeError,
480
+ '-3025': BadRequest,
481
+ '-3026': BadRequest,
482
+ '-3027': BadSymbol,
483
+ '-3028': BadSymbol,
484
+ '-3029': ExchangeError,
485
+ '-3036': AccountSuspended,
486
+ '-3037': ExchangeError,
487
+ '-3038': BadRequest,
488
+ '-3041': InsufficientFunds,
489
+ '-3042': BadRequest,
490
+ '-3043': BadRequest,
491
+ '-3044': DDoSProtection,
492
+ '-3045': ExchangeError,
493
+ '-3999': ExchangeError,
494
+ '-4001': BadRequest,
495
+ '-4002': BadRequest,
496
+ '-4003': BadRequest,
497
+ '-4004': AuthenticationError,
498
+ '-4005': RateLimitExceeded,
499
+ '-4006': BadRequest,
500
+ '-4007': BadRequest,
501
+ '-4008': BadRequest,
502
+ '-4010': BadRequest,
503
+ '-4011': BadRequest,
504
+ '-4012': BadRequest,
505
+ '-4013': AuthenticationError,
506
+ '-4014': PermissionDenied,
507
+ '-4015': ExchangeError,
508
+ '-4016': PermissionDenied,
509
+ '-4017': PermissionDenied,
510
+ '-4018': BadSymbol,
511
+ '-4019': BadSymbol,
512
+ '-4021': BadRequest,
513
+ '-4022': BadRequest,
514
+ '-4023': ExchangeError,
515
+ '-4024': InsufficientFunds,
516
+ '-4025': InsufficientFunds,
517
+ '-4026': InsufficientFunds,
518
+ '-4027': ExchangeError,
519
+ '-4028': BadRequest,
520
+ '-4029': BadRequest,
521
+ '-4030': ExchangeError,
522
+ '-4031': ExchangeError,
523
+ '-4032': ExchangeError,
524
+ '-4033': BadRequest,
525
+ '-4034': ExchangeError,
526
+ '-4035': PermissionDenied,
527
+ '-4036': BadRequest,
528
+ '-4037': ExchangeError,
529
+ '-4038': ExchangeError,
530
+ '-4039': BadRequest,
531
+ '-4040': BadRequest,
532
+ '-4041': ExchangeError,
533
+ '-4042': ExchangeError,
534
+ '-4043': BadRequest,
535
+ '-4044': BadRequest,
536
+ '-4045': ExchangeError,
537
+ '-4046': AuthenticationError,
538
+ '-4047': BadRequest,
539
+ '-5001': BadRequest,
540
+ '-5002': InsufficientFunds,
541
+ '-5003': InsufficientFunds,
542
+ '-5004': BadRequest,
543
+ '-5005': InsufficientFunds,
544
+ '-5006': BadRequest,
545
+ '-5007': BadRequest,
546
+ '-5008': InsufficientFunds,
547
+ '-5009': BadRequest,
548
+ '-5010': ExchangeError,
549
+ '-5011': BadRequest,
550
+ '-5012': ExchangeError,
551
+ '-5013': InsufficientFunds,
552
+ '-5021': BadRequest,
553
+ '-6001': BadRequest,
554
+ '-6003': BadRequest,
555
+ '-6004': ExchangeError,
556
+ '-6005': InvalidOrder,
557
+ '-6006': BadRequest,
558
+ '-6007': BadRequest,
559
+ '-6008': BadRequest,
560
+ '-6009': RateLimitExceeded,
561
+ '-6011': BadRequest,
562
+ '-6012': InsufficientFunds,
563
+ '-6013': ExchangeError,
564
+ '-6014': BadRequest,
565
+ '-6015': BadRequest,
566
+ '-6016': BadRequest,
567
+ '-6017': BadRequest,
568
+ '-6018': BadRequest,
569
+ '-6019': AuthenticationError,
570
+ '-6020': BadRequest,
571
+ '-7001': BadRequest,
572
+ '-7002': BadRequest,
573
+ '-9000': InsufficientFunds,
574
+ '-10017': BadRequest,
575
+ '-11008': InsufficientFunds,
576
+ '-12014': RateLimitExceeded,
577
+ '-13000': BadRequest,
578
+ '-13001': BadRequest,
579
+ '-13002': BadRequest,
580
+ '-13003': BadRequest,
581
+ '-13004': BadRequest,
582
+ '-13005': BadRequest,
583
+ '-13006': InvalidOrder,
584
+ '-13007': AuthenticationError,
585
+ '-21001': BadRequest,
586
+ '-21002': BadRequest,
587
+ '-21003': BadRequest,
588
+ '100001003': BadRequest,
589
+ '2202': InsufficientFunds,
590
+ '3210': InvalidOrder,
591
+ '3203': InvalidOrder,
592
+ '3211': InvalidOrder,
593
+ '3207': InvalidOrder,
594
+ '3218': OrderNotFound, // {"code":3218,"msg":"Order does not exist","timestamp":1662739749275}
595
+ },
596
+ 'broad': {
597
+ 'has no operation privilege': PermissionDenied,
598
+ 'MAX_POSITION': InvalidOrder, // {"code":-2010,"msg":"Filter failure: MAX_POSITION"}
599
+ },
600
+ },
601
+ 'features': {
602
+ 'spot': {
603
+ 'sandbox': false,
604
+ 'createOrder': {
605
+ 'marginMode': false,
606
+ 'triggerPrice': true,
607
+ 'triggerDirection': false,
608
+ 'triggerPriceType': undefined,
609
+ 'stopLossPrice': false,
610
+ 'takeProfitPrice': false,
611
+ 'attachedStopLossTakeProfit': undefined,
612
+ 'timeInForce': {
613
+ 'IOC': true,
614
+ 'FOK': true,
615
+ 'PO': true,
616
+ 'GTD': false,
617
+ },
618
+ 'hedged': false,
619
+ 'trailing': false,
620
+ 'leverage': false,
621
+ 'marketBuyByCost': true,
622
+ 'marketBuyRequiresPrice': true,
623
+ 'selfTradePrevention': true,
624
+ 'iceberg': true, // todo
625
+ },
626
+ 'createOrders': undefined,
627
+ 'fetchMyTrades': {
628
+ 'marginMode': false,
629
+ 'limit': 1000,
630
+ 'daysBack': 100000,
631
+ 'untilDays': 100000,
632
+ 'symbolRequired': true,
633
+ },
634
+ 'fetchOrder': {
635
+ 'marginMode': false,
636
+ 'trigger': false,
637
+ 'trailing': false,
638
+ 'symbolRequired': false,
639
+ },
640
+ 'fetchOpenOrders': {
641
+ 'marginMode': false,
642
+ 'limit': 1000,
643
+ 'trigger': false,
644
+ 'trailing': false,
645
+ 'symbolRequired': true,
646
+ },
647
+ 'fetchOrders': {
648
+ 'marginMode': false,
649
+ 'limit': 1000,
650
+ 'daysBack': 100000,
651
+ 'untilDays': 100000,
652
+ 'trigger': false,
653
+ 'trailing': false,
654
+ 'symbolRequired': true,
655
+ },
656
+ 'fetchClosedOrders': {
657
+ 'marginMode': false,
658
+ 'limit': 1000,
659
+ 'daysBack': 100000,
660
+ 'daysBackCanceled': 1,
661
+ 'untilDays': 100000,
662
+ 'trigger': false,
663
+ 'trailing': false,
664
+ 'symbolRequired': true,
665
+ },
666
+ 'fetchOHLCV': {
667
+ 'limit': 1000,
668
+ },
669
+ },
670
+ 'swap': {
671
+ 'linear': undefined,
672
+ 'inverse': undefined,
673
+ },
674
+ 'future': {
675
+ 'linear': undefined,
676
+ 'inverse': undefined,
677
+ },
678
+ },
679
+ });
680
+ }
681
+ nonce() {
682
+ return this.milliseconds() - this.options['timeDifference'];
683
+ }
684
+ /**
685
+ * @method
686
+ * @name tokocrypto#fetchTime
687
+ * @see https://www.tokocrypto.com/apidocs/#check-server-time
688
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
689
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
690
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
691
+ */
692
+ async fetchTime(params = {}) {
693
+ const response = await this.publicGetOpenV1CommonTime(params);
694
+ //
695
+ // {
696
+ // "code": 0,
697
+ // "msg": "Success",
698
+ // "data": null,
699
+ // "timestamp": 1737378074159
700
+ // }
701
+ //
702
+ return this.safeInteger(response, 'timestamp');
703
+ }
704
+ /**
705
+ * @method
706
+ * @name tokocrypto#fetchMarkets
707
+ * @see https://www.tokocrypto.com/apidocs/#get-all-supported-trading-symbol
708
+ * @description retrieves data on all markets for tokocrypto
709
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
710
+ * @returns {object[]} an array of objects representing market data
711
+ */
712
+ async fetchMarkets(params = {}) {
713
+ const response = await this.publicGetOpenV1CommonSymbols(params);
714
+ //
715
+ // {
716
+ // "code":0,
717
+ // "msg":"Success",
718
+ // "data":{
719
+ // "list":[
720
+ // {
721
+ // "type":1,
722
+ // "symbol":"1INCH_BTC",
723
+ // "baseAsset":"1INCH",
724
+ // "basePrecision":8,
725
+ // "quoteAsset":"BTC",
726
+ // "quotePrecision":8,
727
+ // "filters":[
728
+ // {"filterType":"PRICE_FILTER","minPrice":"0.00000001","maxPrice":"1000.00000000","tickSize":"0.00000001","applyToMarket":false},
729
+ // {"filterType":"PERCENT_PRICE","multiplierUp":5,"multiplierDown":0.2,"avgPriceMins":"5","applyToMarket":false},
730
+ // {"filterType":"LOT_SIZE","minQty":"0.10000000","maxQty":"90000000.00000000","stepSize":"0.10000000","applyToMarket":false},
731
+ // {"filterType":"MIN_NOTIONAL","avgPriceMins":"5","minNotional":"0.00010000","applyToMarket":true},
732
+ // {"filterType":"ICEBERG_PARTS","applyToMarket":false,"limit":"10"},
733
+ // {"filterType":"MARKET_LOT_SIZE","minQty":"0.00000000","maxQty":"79460.14117231","stepSize":"0.00000000","applyToMarket":false},
734
+ // {"filterType":"TRAILING_DELTA","applyToMarket":false},
735
+ // {"filterType":"MAX_NUM_ORDERS","applyToMarket":false},
736
+ // {"filterType":"MAX_NUM_ALGO_ORDERS","applyToMarket":false,"maxNumAlgoOrders":"5"}
737
+ // ],
738
+ // "orderTypes":["LIMIT","LIMIT_MAKER","MARKET","STOP_LOSS_LIMIT","TAKE_PROFIT_LIMIT"],
739
+ // "icebergEnable":1,
740
+ // "ocoEnable":1,
741
+ // "spotTradingEnable":1,
742
+ // "marginTradingEnable":1,
743
+ // "permissions":["SPOT","MARGIN"]
744
+ // },
745
+ // ]
746
+ // },
747
+ // "timestamp":1659492212507
748
+ // }
749
+ //
750
+ if (this.options['adjustForTimeDifference']) {
751
+ await this.loadTimeDifference();
752
+ }
753
+ const data = this.safeValue(response, 'data', {});
754
+ const list = this.safeValue(data, 'list', []);
755
+ const result = [];
756
+ for (let i = 0; i < list.length; i++) {
757
+ const market = list[i];
758
+ const baseId = this.safeString(market, 'baseAsset');
759
+ const quoteId = this.safeString(market, 'quoteAsset');
760
+ const id = this.safeString(market, 'symbol');
761
+ const lowercaseId = this.safeStringLower(market, 'symbol');
762
+ const settleId = this.safeString(market, 'marginAsset');
763
+ const base = this.safeCurrencyCode(baseId);
764
+ const quote = this.safeCurrencyCode(quoteId);
765
+ const settle = this.safeCurrencyCode(settleId);
766
+ const symbol = base + '/' + quote;
767
+ const filters = this.safeValue(market, 'filters', []);
768
+ const filtersByType = this.indexBy(filters, 'filterType');
769
+ const status = this.safeString(market, 'spotTradingEnable');
770
+ let active = (status === '1');
771
+ const permissions = this.safeValue(market, 'permissions', []);
772
+ for (let j = 0; j < permissions.length; j++) {
773
+ if (permissions[j] === 'TRD_GRP_003') {
774
+ active = false;
775
+ break;
776
+ }
777
+ }
778
+ const isMarginTradingAllowed = this.safeBool(market, 'isMarginTradingAllowed', false);
779
+ const entry = {
780
+ 'id': id,
781
+ 'lowercaseId': lowercaseId,
782
+ 'symbol': symbol,
783
+ 'base': base,
784
+ 'quote': quote,
785
+ 'settle': settle,
786
+ 'baseId': baseId,
787
+ 'quoteId': quoteId,
788
+ 'settleId': settleId,
789
+ 'type': 'spot',
790
+ 'spot': true,
791
+ 'margin': isMarginTradingAllowed,
792
+ 'swap': false,
793
+ 'future': false,
794
+ 'delivery': false,
795
+ 'option': false,
796
+ 'active': active,
797
+ 'contract': false,
798
+ 'linear': undefined,
799
+ 'inverse': undefined,
800
+ 'contractSize': undefined,
801
+ 'expiry': undefined,
802
+ 'expiryDatetime': undefined,
803
+ 'strike': undefined,
804
+ 'optionType': undefined,
805
+ 'precision': {
806
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'quantityPrecision'))),
807
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'pricePrecision'))),
808
+ 'base': this.parseNumber(this.parsePrecision(this.safeString(market, 'baseAssetPrecision'))),
809
+ 'quote': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
810
+ },
811
+ 'limits': {
812
+ 'leverage': {
813
+ 'min': undefined,
814
+ 'max': undefined,
815
+ },
816
+ 'amount': {
817
+ 'min': undefined,
818
+ 'max': undefined,
819
+ },
820
+ 'price': {
821
+ 'min': undefined,
822
+ 'max': undefined,
823
+ },
824
+ 'cost': {
825
+ 'min': undefined,
826
+ 'max': undefined,
827
+ },
828
+ },
829
+ 'created': undefined,
830
+ 'info': market,
831
+ };
832
+ if ('PRICE_FILTER' in filtersByType) {
833
+ const filter = this.safeValue(filtersByType, 'PRICE_FILTER', {});
834
+ entry['precision']['price'] = this.safeNumber(filter, 'tickSize');
835
+ // PRICE_FILTER reports zero values for maxPrice
836
+ // since they updated filter types in November 2018
837
+ // https://github.com/ccxt/ccxt/issues/4286
838
+ // therefore limits['price']['max'] doesn't have any meaningful value except undefined
839
+ entry['limits']['price'] = {
840
+ 'min': this.safeNumber(filter, 'minPrice'),
841
+ 'max': this.safeNumber(filter, 'maxPrice'),
842
+ };
843
+ entry['precision']['price'] = filter['tickSize'];
844
+ }
845
+ if ('LOT_SIZE' in filtersByType) {
846
+ const filter = this.safeValue(filtersByType, 'LOT_SIZE', {});
847
+ entry['precision']['amount'] = this.safeNumber(filter, 'stepSize');
848
+ entry['limits']['amount'] = {
849
+ 'min': this.safeNumber(filter, 'minQty'),
850
+ 'max': this.safeNumber(filter, 'maxQty'),
851
+ };
852
+ }
853
+ if ('MARKET_LOT_SIZE' in filtersByType) {
854
+ const filter = this.safeValue(filtersByType, 'MARKET_LOT_SIZE', {});
855
+ entry['limits']['market'] = {
856
+ 'min': this.safeNumber(filter, 'minQty'),
857
+ 'max': this.safeNumber(filter, 'maxQty'),
858
+ };
859
+ }
860
+ if ('MIN_NOTIONAL' in filtersByType) {
861
+ const filter = this.safeValue(filtersByType, 'MIN_NOTIONAL', {});
862
+ entry['limits']['cost']['min'] = this.safeNumber2(filter, 'minNotional', 'notional');
863
+ }
864
+ result.push(entry);
865
+ }
866
+ return result;
867
+ }
868
+ /**
869
+ * @method
870
+ * @name tokocrypto#fetchOrderBook
871
+ * @see https://www.tokocrypto.com/apidocs/#order-book
872
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
873
+ * @param {string} symbol unified symbol of the market to fetch the order book for
874
+ * @param {int} [limit] the maximum amount of order book entries to return
875
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
876
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
877
+ */
878
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
879
+ await this.loadMarkets();
880
+ const market = this.market(symbol);
881
+ const request = {};
882
+ if (limit !== undefined) {
883
+ request['limit'] = limit; // default 100, max 5000, see https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md#order-book
884
+ }
885
+ let response = undefined;
886
+ if (market['quote'] === 'USDT') {
887
+ request['symbol'] = market['baseId'] + market['quoteId'];
888
+ response = await this.binanceGetDepth(this.extend(request, params));
889
+ }
890
+ else {
891
+ request['symbol'] = market['id'];
892
+ response = await this.publicGetOpenV1MarketDepth(this.extend(request, params));
893
+ }
894
+ //
895
+ // future
896
+ //
897
+ // {
898
+ // "lastUpdateId":333598053905,
899
+ // "E":1618631511986,
900
+ // "T":1618631511964,
901
+ // "bids":[
902
+ // ["2493.56","20.189"],
903
+ // ["2493.54","1.000"],
904
+ // ["2493.51","0.005"]
905
+ // ],
906
+ // "asks":[
907
+ // ["2493.57","0.877"],
908
+ // ["2493.62","0.063"],
909
+ // ["2493.71","12.054"],
910
+ // ]
911
+ // }
912
+ // type not 1
913
+ // {
914
+ // "code":0,
915
+ // "msg":"Success",
916
+ // "data":{
917
+ // "lastUpdateId":3204783,
918
+ // "bids":[],
919
+ // "asks": []
920
+ // },
921
+ // "timestamp":1692262634599
922
+ // }
923
+ const data = this.safeValue(response, 'data', response);
924
+ const timestamp = this.safeInteger2(response, 'T', 'timestamp');
925
+ const orderbook = this.parseOrderBook(data, symbol, timestamp);
926
+ orderbook['nonce'] = this.safeInteger(data, 'lastUpdateId');
927
+ return orderbook;
928
+ }
929
+ parseTrade(trade, market = undefined) {
930
+ //
931
+ // aggregate trades
932
+ // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#compressedaggregate-trades-list
933
+ //
934
+ // {
935
+ // "a": 26129, // Aggregate tradeId
936
+ // "p": "0.01633102", // Price
937
+ // "q": "4.70443515", // Quantity
938
+ // "f": 27781, // First tradeId
939
+ // "l": 27781, // Last tradeId
940
+ // "T": 1498793709153, // Timestamp
941
+ // "m": true, // Was the buyer the maker?
942
+ // "M": true // Was the trade the best price match?
943
+ // }
944
+ //
945
+ // recent public trades and old public trades
946
+ // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#recent-trades-list
947
+ // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#old-trade-lookup-market_data
948
+ //
949
+ // {
950
+ // "id": 28457,
951
+ // "price": "4.00000100",
952
+ // "qty": "12.00000000",
953
+ // "time": 1499865549590,
954
+ // "isBuyerMaker": true,
955
+ // "isBestMatch": true
956
+ // }
957
+ //
958
+ // private trades
959
+ // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#account-trade-list-user_data
960
+ //
961
+ // {
962
+ // "symbol": "BNBBTC",
963
+ // "id": 28457,
964
+ // "orderId": 100234,
965
+ // "price": "4.00000100",
966
+ // "qty": "12.00000000",
967
+ // "commission": "10.10000000",
968
+ // "commissionAsset": "BNB",
969
+ // "time": 1499865549590,
970
+ // "isBuyer": true,
971
+ // "isMaker": false,
972
+ // "isBestMatch": true
973
+ // }
974
+ //
975
+ // futures trades
976
+ // https://binance-docs.github.io/apidocs/futures/en/#account-trade-list-user_data
977
+ //
978
+ // {
979
+ // "accountId": 20,
980
+ // "buyer": False,
981
+ // "commission": "-0.07819010",
982
+ // "commissionAsset": "USDT",
983
+ // "counterPartyId": 653,
984
+ // "id": 698759,
985
+ // "maker": False,
986
+ // "orderId": 25851813,
987
+ // "price": "7819.01",
988
+ // "qty": "0.002",
989
+ // "quoteQty": "0.01563",
990
+ // "realizedPnl": "-0.91539999",
991
+ // "side": "SELL",
992
+ // "symbol": "BTCUSDT",
993
+ // "time": 1569514978020
994
+ // }
995
+ // {
996
+ // "symbol": "BTCUSDT",
997
+ // "id": 477128891,
998
+ // "orderId": 13809777875,
999
+ // "side": "SELL",
1000
+ // "price": "38479.55",
1001
+ // "qty": "0.001",
1002
+ // "realizedPnl": "-0.00009534",
1003
+ // "marginAsset": "USDT",
1004
+ // "quoteQty": "38.47955",
1005
+ // "commission": "-0.00076959",
1006
+ // "commissionAsset": "USDT",
1007
+ // "time": 1612733566708,
1008
+ // "positionSide": "BOTH",
1009
+ // "maker": true,
1010
+ // "buyer": false
1011
+ // }
1012
+ //
1013
+ // { respType: FULL }
1014
+ //
1015
+ // {
1016
+ // "price": "4000.00000000",
1017
+ // "qty": "1.00000000",
1018
+ // "commission": "4.00000000",
1019
+ // "commissionAsset": "USDT",
1020
+ // "tradeId": "1234",
1021
+ // }
1022
+ //
1023
+ const timestamp = this.safeInteger2(trade, 'T', 'time');
1024
+ const price = this.safeString2(trade, 'p', 'price');
1025
+ const amount = this.safeString2(trade, 'q', 'qty');
1026
+ const cost = this.safeString2(trade, 'quoteQty', 'baseQty'); // inverse futures
1027
+ const marketId = this.safeString(trade, 'symbol');
1028
+ const symbol = this.safeSymbol(marketId, market);
1029
+ let id = this.safeString2(trade, 't', 'a');
1030
+ id = this.safeString2(trade, 'id', 'tradeId', id);
1031
+ let side = undefined;
1032
+ const orderId = this.safeString(trade, 'orderId');
1033
+ const buyerMaker = this.safeValue2(trade, 'm', 'isBuyerMaker');
1034
+ let takerOrMaker = undefined;
1035
+ if (buyerMaker !== undefined) {
1036
+ side = buyerMaker ? 'sell' : 'buy'; // this is reversed intentionally
1037
+ takerOrMaker = 'taker';
1038
+ }
1039
+ else if ('side' in trade) {
1040
+ side = this.safeStringLower(trade, 'side');
1041
+ }
1042
+ else {
1043
+ if ('isBuyer' in trade) {
1044
+ side = trade['isBuyer'] ? 'buy' : 'sell'; // this is a true side
1045
+ }
1046
+ }
1047
+ let fee = undefined;
1048
+ if ('commission' in trade) {
1049
+ fee = {
1050
+ 'cost': this.safeString(trade, 'commission'),
1051
+ 'currency': this.safeCurrencyCode(this.safeString(trade, 'commissionAsset')),
1052
+ };
1053
+ }
1054
+ if ('isMaker' in trade) {
1055
+ takerOrMaker = trade['isMaker'] ? 'maker' : 'taker';
1056
+ }
1057
+ if ('maker' in trade) {
1058
+ takerOrMaker = trade['maker'] ? 'maker' : 'taker';
1059
+ }
1060
+ return this.safeTrade({
1061
+ 'info': trade,
1062
+ 'timestamp': timestamp,
1063
+ 'datetime': this.iso8601(timestamp),
1064
+ 'symbol': symbol,
1065
+ 'id': id,
1066
+ 'order': orderId,
1067
+ 'type': undefined,
1068
+ 'side': side,
1069
+ 'takerOrMaker': takerOrMaker,
1070
+ 'price': price,
1071
+ 'amount': amount,
1072
+ 'cost': cost,
1073
+ 'fee': fee,
1074
+ }, market);
1075
+ }
1076
+ /**
1077
+ * @method
1078
+ * @name tokocrypto#fetchTrades
1079
+ * @see https://www.tokocrypto.com/apidocs/#recent-trades-list
1080
+ * @see https://www.tokocrypto.com/apidocs/#compressedaggregate-trades-list
1081
+ * @description get the list of most recent trades for a particular symbol
1082
+ * @param {string} symbol unified symbol of the market to fetch trades for
1083
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
1084
+ * @param {int} [limit] the maximum amount of trades to fetch
1085
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1086
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1087
+ */
1088
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1089
+ await this.loadMarkets();
1090
+ const market = this.market(symbol);
1091
+ const request = {
1092
+ 'symbol': this.getMarketIdByType(market),
1093
+ // 'fromId': 123, // ID to get aggregate trades from INCLUSIVE.
1094
+ // 'startTime': 456, // Timestamp in ms to get aggregate trades from INCLUSIVE.
1095
+ // 'endTime': 789, // Timestamp in ms to get aggregate trades until INCLUSIVE.
1096
+ // 'limit': 500, // default = 500, maximum = 1000
1097
+ };
1098
+ if (market['quote'] !== 'USDT') {
1099
+ if (limit !== undefined) {
1100
+ request['limit'] = limit;
1101
+ }
1102
+ const responseInner = this.publicGetOpenV1MarketTrades(this.extend(request, params));
1103
+ //
1104
+ // {
1105
+ // "code": 0,
1106
+ // "msg": "success",
1107
+ // "data": {
1108
+ // "list": [
1109
+ // {
1110
+ // "id": 28457,
1111
+ // "price": "4.00000100",
1112
+ // "qty": "12.00000000",
1113
+ // "time": 1499865549590,
1114
+ // "isBuyerMaker": true,
1115
+ // "isBestMatch": true
1116
+ // }
1117
+ // ]
1118
+ // },
1119
+ // "timestamp": 1571921637091
1120
+ // }
1121
+ //
1122
+ const data = this.safeDict(responseInner, 'data', {});
1123
+ const list = this.safeList(data, 'list', []);
1124
+ return this.parseTrades(list, market, since, limit);
1125
+ }
1126
+ if (limit !== undefined) {
1127
+ request['limit'] = limit; // default = 500, maximum = 1000
1128
+ }
1129
+ const defaultMethod = 'binanceGetTrades';
1130
+ const method = this.safeString(this.options, 'fetchTradesMethod', defaultMethod);
1131
+ let response = undefined;
1132
+ if ((method === 'binanceGetAggTrades') && (since !== undefined)) {
1133
+ request['startTime'] = since;
1134
+ // https://github.com/ccxt/ccxt/issues/6400
1135
+ // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#compressedaggregate-trades-list
1136
+ request['endTime'] = this.sum(since, 3600000);
1137
+ response = await this.binanceGetAggTrades(this.extend(request, params));
1138
+ }
1139
+ else {
1140
+ response = await this.binanceGetTrades(this.extend(request, params));
1141
+ }
1142
+ //
1143
+ // Caveats:
1144
+ // - default limit (500) applies only if no other parameters set, trades up
1145
+ // to the maximum limit may be returned to satisfy other parameters
1146
+ // - if both limit and time window is set and time window contains more
1147
+ // trades than the limit then the last trades from the window are returned
1148
+ // - 'tradeId' accepted and returned by this method is "aggregate" trade id
1149
+ // which is different from actual trade id
1150
+ // - setting both fromId and time window results in error
1151
+ //
1152
+ // aggregate trades
1153
+ //
1154
+ // [
1155
+ // {
1156
+ // "a": 26129, // Aggregate tradeId
1157
+ // "p": "0.01633102", // Price
1158
+ // "q": "4.70443515", // Quantity
1159
+ // "f": 27781, // First tradeId
1160
+ // "l": 27781, // Last tradeId
1161
+ // "T": 1498793709153, // Timestamp
1162
+ // "m": true, // Was the buyer the maker?
1163
+ // "M": true // Was the trade the best price match?
1164
+ // }
1165
+ // ]
1166
+ //
1167
+ // recent public trades and historical public trades
1168
+ //
1169
+ // [
1170
+ // {
1171
+ // "id": 28457,
1172
+ // "price": "4.00000100",
1173
+ // "qty": "12.00000000",
1174
+ // "time": 1499865549590,
1175
+ // "isBuyerMaker": true,
1176
+ // "isBestMatch": true
1177
+ // }
1178
+ // ]
1179
+ //
1180
+ return this.parseTrades(response, market, since, limit);
1181
+ }
1182
+ parseTicker(ticker, market = undefined) {
1183
+ //
1184
+ // {
1185
+ // "symbol": "ETHBTC",
1186
+ // "priceChange": "0.00068700",
1187
+ // "priceChangePercent": "2.075",
1188
+ // "weightedAvgPrice": "0.03342681",
1189
+ // "prevClosePrice": "0.03310300",
1190
+ // "lastPrice": "0.03378900",
1191
+ // "lastQty": "0.07700000",
1192
+ // "bidPrice": "0.03378900",
1193
+ // "bidQty": "7.16800000",
1194
+ // "askPrice": "0.03379000",
1195
+ // "askQty": "24.00000000",
1196
+ // "openPrice": "0.03310200",
1197
+ // "highPrice": "0.03388900",
1198
+ // "lowPrice": "0.03306900",
1199
+ // "volume": "205478.41000000",
1200
+ // "quoteVolume": "6868.48826294",
1201
+ // "openTime": 1601469986932,
1202
+ // "closeTime": 1601556386932,
1203
+ // "firstId": 196098772,
1204
+ // "lastId": 196186315,
1205
+ // "count": 87544
1206
+ // }
1207
+ //
1208
+ // coinm
1209
+ // {
1210
+ // "baseVolume": "214549.95171161",
1211
+ // "closeTime": "1621965286847",
1212
+ // "count": "1283779",
1213
+ // "firstId": "152560106",
1214
+ // "highPrice": "39938.3",
1215
+ // "lastId": "153843955",
1216
+ // "lastPrice": "37993.4",
1217
+ // "lastQty": "1",
1218
+ // "lowPrice": "36457.2",
1219
+ // "openPrice": "37783.4",
1220
+ // "openTime": "1621878840000",
1221
+ // "pair": "BTCUSD",
1222
+ // "priceChange": "210.0",
1223
+ // "priceChangePercent": "0.556",
1224
+ // "symbol": "BTCUSD_PERP",
1225
+ // "volume": "81990451",
1226
+ // "weightedAvgPrice": "38215.08713747"
1227
+ // }
1228
+ //
1229
+ const timestamp = this.safeInteger(ticker, 'closeTime');
1230
+ const marketId = this.safeString(ticker, 'symbol');
1231
+ const symbol = this.safeSymbol(marketId, market);
1232
+ const last = this.safeString(ticker, 'lastPrice');
1233
+ const isCoinm = ('baseVolume' in ticker);
1234
+ let baseVolume = undefined;
1235
+ let quoteVolume = undefined;
1236
+ if (isCoinm) {
1237
+ baseVolume = this.safeString(ticker, 'baseVolume');
1238
+ quoteVolume = this.safeString(ticker, 'volume');
1239
+ }
1240
+ else {
1241
+ baseVolume = this.safeString(ticker, 'volume');
1242
+ quoteVolume = this.safeString(ticker, 'quoteVolume');
1243
+ }
1244
+ return this.safeTicker({
1245
+ 'symbol': symbol,
1246
+ 'timestamp': timestamp,
1247
+ 'datetime': this.iso8601(timestamp),
1248
+ 'high': this.safeString(ticker, 'highPrice'),
1249
+ 'low': this.safeString(ticker, 'lowPrice'),
1250
+ 'bid': this.safeString(ticker, 'bidPrice'),
1251
+ 'bidVolume': this.safeString(ticker, 'bidQty'),
1252
+ 'ask': this.safeString(ticker, 'askPrice'),
1253
+ 'askVolume': this.safeString(ticker, 'askQty'),
1254
+ 'vwap': this.safeString(ticker, 'weightedAvgPrice'),
1255
+ 'open': this.safeString(ticker, 'openPrice'),
1256
+ 'close': last,
1257
+ 'last': last,
1258
+ 'previousClose': this.safeString(ticker, 'prevClosePrice'),
1259
+ 'change': this.safeString(ticker, 'priceChange'),
1260
+ 'percentage': this.safeString(ticker, 'priceChangePercent'),
1261
+ 'average': undefined,
1262
+ 'baseVolume': baseVolume,
1263
+ 'quoteVolume': quoteVolume,
1264
+ 'info': ticker,
1265
+ }, market);
1266
+ }
1267
+ /**
1268
+ * @method
1269
+ * @name tokocrypto#fetchTickers
1270
+ * @see https://binance-docs.github.io/apidocs/spot/en/#24hr-ticker-price-change-statistics
1271
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1272
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1273
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1274
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1275
+ */
1276
+ async fetchTickers(symbols = undefined, params = {}) {
1277
+ await this.loadMarkets();
1278
+ const response = await this.binanceGetTicker24hr(params);
1279
+ return this.parseTickers(response, symbols);
1280
+ }
1281
+ getMarketIdByType(market) {
1282
+ if (market['quote'] === 'USDT') {
1283
+ return market['baseId'] + market['quoteId'];
1284
+ }
1285
+ return market['id'];
1286
+ }
1287
+ /**
1288
+ * @method
1289
+ * @name tokocrypto#fetchTicker
1290
+ * @see https://binance-docs.github.io/apidocs/spot/en/#24hr-ticker-price-change-statistics
1291
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1292
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
1293
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1294
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1295
+ */
1296
+ async fetchTicker(symbol, params = {}) {
1297
+ await this.loadMarkets();
1298
+ const market = this.market(symbol);
1299
+ const request = {
1300
+ 'symbol': market['baseId'] + market['quoteId'],
1301
+ };
1302
+ const response = await this.binanceGetTicker24hr(this.extend(request, params));
1303
+ if (Array.isArray(response)) {
1304
+ const firstTicker = this.safeDict(response, 0, {});
1305
+ return this.parseTicker(firstTicker, market);
1306
+ }
1307
+ return this.parseTicker(response, market);
1308
+ }
1309
+ /**
1310
+ * @method
1311
+ * @name tokocrypto#fetchBidsAsks
1312
+ * @see https://binance-docs.github.io/apidocs/spot/en/#symbol-order-book-ticker
1313
+ * @description fetches the bid and ask price and volume for multiple markets
1314
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
1315
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1316
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1317
+ */
1318
+ async fetchBidsAsks(symbols = undefined, params = {}) {
1319
+ await this.loadMarkets();
1320
+ const response = await this.binanceGetTickerBookTicker(params);
1321
+ return this.parseTickers(response, symbols);
1322
+ }
1323
+ parseOHLCV(ohlcv, market = undefined) {
1324
+ // when api method = publicGetKlines || fapiPublicGetKlines || dapiPublicGetKlines
1325
+ // [
1326
+ // 1591478520000, // open time
1327
+ // "0.02501300", // open
1328
+ // "0.02501800", // high
1329
+ // "0.02500000", // low
1330
+ // "0.02500000", // close
1331
+ // "22.19000000", // volume
1332
+ // 1591478579999, // close time
1333
+ // "0.55490906", // quote asset volume
1334
+ // 40, // number of trades
1335
+ // "10.92900000", // taker buy base asset volume
1336
+ // "0.27336462", // taker buy quote asset volume
1337
+ // "0" // ignore
1338
+ // ]
1339
+ //
1340
+ // when api method = fapiPublicGetMarkPriceKlines || fapiPublicGetIndexPriceKlines
1341
+ // [
1342
+ // [
1343
+ // 1591256460000, // Open time
1344
+ // "9653.29201333", // Open
1345
+ // "9654.56401333", // High
1346
+ // "9653.07367333", // Low
1347
+ // "9653.07367333", // Close (or latest price)
1348
+ // "0", // Ignore
1349
+ // 1591256519999, // Close time
1350
+ // "0", // Ignore
1351
+ // 60, // Number of bisic data
1352
+ // "0", // Ignore
1353
+ // "0", // Ignore
1354
+ // "0" // Ignore
1355
+ // ]
1356
+ // ]
1357
+ //
1358
+ return [
1359
+ this.safeInteger(ohlcv, 0),
1360
+ this.safeNumber(ohlcv, 1),
1361
+ this.safeNumber(ohlcv, 2),
1362
+ this.safeNumber(ohlcv, 3),
1363
+ this.safeNumber(ohlcv, 4),
1364
+ this.safeNumber(ohlcv, 5),
1365
+ ];
1366
+ }
1367
+ /**
1368
+ * @method
1369
+ * @name tokocrypto#fetchOHLCV
1370
+ * @see https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
1371
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1372
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1373
+ * @param {string} timeframe the length of time each candle represents
1374
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1375
+ * @param {int} [limit] the maximum amount of candles to fetch
1376
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1377
+ * @param {string} [params.price] "mark" or "index" for mark price and index price candles
1378
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
1379
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1380
+ */
1381
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1382
+ await this.loadMarkets();
1383
+ const market = this.market(symbol);
1384
+ // binance docs say that the default limit 500, max 1500 for futures, max 1000 for spot markets
1385
+ // the reality is that the time range wider than 500 candles won't work right
1386
+ const defaultLimit = 500;
1387
+ const maxLimit = 1500;
1388
+ const price = this.safeString(params, 'price');
1389
+ const until = this.safeInteger(params, 'until');
1390
+ params = this.omit(params, ['price', 'until']);
1391
+ limit = (limit === undefined) ? defaultLimit : Math.min(limit, maxLimit);
1392
+ const request = {
1393
+ 'interval': this.safeString(this.timeframes, timeframe, timeframe),
1394
+ 'limit': limit,
1395
+ };
1396
+ if (price === 'index') {
1397
+ request['pair'] = market['id']; // Index price takes this argument instead of symbol
1398
+ }
1399
+ else {
1400
+ request['symbol'] = this.getMarketIdByType(market);
1401
+ }
1402
+ // const duration = this.parseTimeframe (timeframe);
1403
+ if (since !== undefined) {
1404
+ request['startTime'] = since;
1405
+ }
1406
+ if (until !== undefined) {
1407
+ request['endTime'] = until;
1408
+ }
1409
+ let response = undefined;
1410
+ if (market['quote'] === 'USDT') {
1411
+ response = await this.binanceGetKlines(this.extend(request, params));
1412
+ }
1413
+ else {
1414
+ response = await this.publicGetOpenV1MarketKlines(this.extend(request, params));
1415
+ }
1416
+ //
1417
+ // [
1418
+ // [1591478520000,"0.02501300","0.02501800","0.02500000","0.02500000","22.19000000",1591478579999,"0.55490906",40,"10.92900000","0.27336462","0"],
1419
+ // [1591478580000,"0.02499600","0.02500900","0.02499400","0.02500300","21.34700000",1591478639999,"0.53370468",24,"7.53800000","0.18850725","0"],
1420
+ // [1591478640000,"0.02500800","0.02501100","0.02500300","0.02500800","154.14200000",1591478699999,"3.85405839",97,"5.32300000","0.13312641","0"],
1421
+ // ]
1422
+ //
1423
+ const data = this.safeList(response, 'data', response);
1424
+ return this.parseOHLCVs(data, market, timeframe, since, limit);
1425
+ }
1426
+ /**
1427
+ * @method
1428
+ * @name tokocrypto#fetchBalance
1429
+ * @see https://www.tokocrypto.com/apidocs/#account-information-signed
1430
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1431
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1432
+ * @param {string} [params.type] 'future', 'delivery', 'savings', 'funding', or 'spot'
1433
+ * @param {string} [params.marginMode] 'cross' or 'isolated', for margin trading, uses this.options.defaultMarginMode if not passed, defaults to undefined/None/null
1434
+ * @param {string[]|undefined} [params.symbols] unified market symbols, only used in isolated margin mode
1435
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1436
+ */
1437
+ async fetchBalance(params = {}) {
1438
+ await this.loadMarkets();
1439
+ const defaultType = this.safeString2(this.options, 'fetchBalance', 'defaultType', 'spot');
1440
+ const type = this.safeString(params, 'type', defaultType);
1441
+ const defaultMarginMode = this.safeString2(this.options, 'marginMode', 'defaultMarginMode');
1442
+ const marginMode = this.safeStringLower(params, 'marginMode', defaultMarginMode);
1443
+ const request = {};
1444
+ const response = await this.privateGetOpenV1AccountSpot(this.extend(request, params));
1445
+ //
1446
+ // spot
1447
+ //
1448
+ // {
1449
+ // "code":0,
1450
+ // "msg":"Success",
1451
+ // "data":{
1452
+ // "makerCommission":"0.00100000",
1453
+ // "takerCommission":"0.00100000",
1454
+ // "buyerCommission":"0.00000000",
1455
+ // "sellerCommission":"0.00000000",
1456
+ // "canTrade":1,
1457
+ // "canWithdraw":1,
1458
+ // "canDeposit":1,
1459
+ // "status":1,
1460
+ // "accountAssets":[
1461
+ // {"asset":"1INCH","free":"0","locked":"0"},
1462
+ // {"asset":"AAVE","free":"0","locked":"0"},
1463
+ // {"asset":"ACA","free":"0","locked":"0"}
1464
+ // ],
1465
+ // },
1466
+ // "timestamp":1659666786943
1467
+ // }
1468
+ //
1469
+ return this.parseBalanceCustom(response, type, marginMode);
1470
+ }
1471
+ parseBalanceCustom(response, type = undefined, marginMode = undefined) {
1472
+ const timestamp = this.safeInteger(response, 'updateTime');
1473
+ const result = {
1474
+ 'info': response,
1475
+ 'timestamp': timestamp,
1476
+ 'datetime': this.iso8601(timestamp),
1477
+ };
1478
+ const data = this.safeValue(response, 'data', {});
1479
+ const balances = this.safeValue(data, 'accountAssets', []);
1480
+ for (let i = 0; i < balances.length; i++) {
1481
+ const balance = balances[i];
1482
+ const currencyId = this.safeString(balance, 'asset');
1483
+ const code = this.safeCurrencyCode(currencyId);
1484
+ const account = this.account();
1485
+ account['free'] = this.safeString(balance, 'free');
1486
+ account['used'] = this.safeString(balance, 'locked');
1487
+ result[code] = account;
1488
+ }
1489
+ return this.safeBalance(result);
1490
+ }
1491
+ parseOrderStatus(status) {
1492
+ const statuses = {
1493
+ '-2': 'open',
1494
+ '0': 'open',
1495
+ '1': 'open',
1496
+ '2': 'closed',
1497
+ '3': 'canceled',
1498
+ '4': 'canceling',
1499
+ '5': 'rejected',
1500
+ '6': 'expired',
1501
+ 'NEW': 'open',
1502
+ 'PARTIALLY_FILLED': 'open',
1503
+ 'FILLED': 'closed',
1504
+ 'CANCELED': 'canceled',
1505
+ 'PENDING_CANCEL': 'canceling',
1506
+ 'REJECTED': 'rejected',
1507
+ 'EXPIRED': 'expired',
1508
+ };
1509
+ return this.safeString(statuses, status, status);
1510
+ }
1511
+ parseOrder(order, market = undefined) {
1512
+ //
1513
+ // spot
1514
+ //
1515
+ // {
1516
+ // "symbol": "LTCBTC",
1517
+ // "orderId": 1,
1518
+ // "clientOrderId": "myOrder1",
1519
+ // "price": "0.1",
1520
+ // "origQty": "1.0",
1521
+ // "executedQty": "0.0",
1522
+ // "cummulativeQuoteQty": "0.0",
1523
+ // "status": "NEW",
1524
+ // "timeInForce": "GTC",
1525
+ // "type": "LIMIT",
1526
+ // "side": "BUY",
1527
+ // "stopPrice": "0.0",
1528
+ // "icebergQty": "0.0",
1529
+ // "time": 1499827319559,
1530
+ // "updateTime": 1499827319559,
1531
+ // "isWorking": true
1532
+ // }
1533
+ // createOrder
1534
+ // {
1535
+ // "orderId": "145265071",
1536
+ // "bOrderListId": "0",
1537
+ // "clientId": "49c09c3c2cd54419a59c05441f517b3c",
1538
+ // "bOrderId": "35247529",
1539
+ // "symbol": "USDT_BIDR",
1540
+ // "symbolType": "1",
1541
+ // "side": "0",
1542
+ // "type": "1",
1543
+ // "price": "11915",
1544
+ // "origQty": "2",
1545
+ // "origQuoteQty": "23830.00",
1546
+ // "executedQty": "0.00000000",
1547
+ // "executedPrice": "0",
1548
+ // "executedQuoteQty": "0.00",
1549
+ // "timeInForce": "1",
1550
+ // "stopPrice": "0",
1551
+ // "icebergQty": "0",
1552
+ // "status": "0",
1553
+ // "createTime": "1662711074372"
1554
+ // }
1555
+ //
1556
+ // createOrder with { "newOrderRespType": "FULL" }
1557
+ //
1558
+ // {
1559
+ // "symbol": "BTCUSDT",
1560
+ // "orderId": 5403233939,
1561
+ // "orderListId": -1,
1562
+ // "clientOrderId": "x-R4BD3S825e669e75b6c14f69a2c43e",
1563
+ // "transactTime": 1617151923742,
1564
+ // "price": "0.00000000",
1565
+ // "origQty": "0.00050000",
1566
+ // "executedQty": "0.00050000",
1567
+ // "cummulativeQuoteQty": "29.47081500",
1568
+ // "status": "FILLED",
1569
+ // "timeInForce": "GTC",
1570
+ // "type": "MARKET",
1571
+ // "side": "BUY",
1572
+ // "fills": [
1573
+ // {
1574
+ // "price": "58941.63000000",
1575
+ // "qty": "0.00050000",
1576
+ // "commission": "0.00007050",
1577
+ // "commissionAsset": "BNB",
1578
+ // "tradeId": 737466631
1579
+ // }
1580
+ // ]
1581
+ // }
1582
+ //
1583
+ // delivery
1584
+ //
1585
+ // {
1586
+ // "orderId": "18742727411",
1587
+ // "symbol": "ETHUSD_PERP",
1588
+ // "pair": "ETHUSD",
1589
+ // "status": "FILLED",
1590
+ // "clientOrderId": "x-xcKtGhcu3e2d1503fdd543b3b02419",
1591
+ // "price": "0",
1592
+ // "avgPrice": "4522.14",
1593
+ // "origQty": "1",
1594
+ // "executedQty": "1",
1595
+ // "cumBase": "0.00221134",
1596
+ // "timeInForce": "GTC",
1597
+ // "type": "MARKET",
1598
+ // "reduceOnly": false,
1599
+ // "closePosition": false,
1600
+ // "side": "SELL",
1601
+ // "positionSide": "BOTH",
1602
+ // "stopPrice": "0",
1603
+ // "workingType": "CONTRACT_PRICE",
1604
+ // "priceProtect": false,
1605
+ // "origType": "MARKET",
1606
+ // "time": "1636061952660",
1607
+ // "updateTime": "1636061952660"
1608
+ // }
1609
+ //
1610
+ const status = this.parseOrderStatus(this.safeString(order, 'status'));
1611
+ const marketId = this.safeString(order, 'symbol');
1612
+ const symbol = this.safeSymbol(marketId, market);
1613
+ const filled = this.safeString(order, 'executedQty', '0');
1614
+ const timestamp = this.safeInteger(order, 'createTime');
1615
+ const average = this.safeString(order, 'avgPrice');
1616
+ const price = this.safeString2(order, 'price', 'executedPrice');
1617
+ const amount = this.safeString(order, 'origQty');
1618
+ // - Spot/Margin market: cummulativeQuoteQty
1619
+ // Note this is not the actual cost, since Binance futures uses leverage to calculate margins.
1620
+ const cost = this.safeStringN(order, ['cummulativeQuoteQty', 'cumQuote', 'executedQuoteQty', 'cumBase']);
1621
+ const id = this.safeString(order, 'orderId');
1622
+ const type = this.parseOrderType(this.safeStringLower(order, 'type'));
1623
+ let side = this.safeStringLower(order, 'side');
1624
+ if (side === '0') {
1625
+ side = 'buy';
1626
+ }
1627
+ else if (side === '1') {
1628
+ side = 'sell';
1629
+ }
1630
+ const fills = this.safeValue(order, 'fills', []);
1631
+ const clientOrderId = this.safeString2(order, 'clientOrderId', 'clientId');
1632
+ let timeInForce = this.safeString(order, 'timeInForce');
1633
+ if (timeInForce === 'GTX') {
1634
+ // GTX means "Good Till Crossing" and is an equivalent way of saying Post Only
1635
+ timeInForce = 'PO';
1636
+ }
1637
+ const postOnly = (type === 'limit_maker') || (timeInForce === 'PO');
1638
+ return this.safeOrder({
1639
+ 'info': order,
1640
+ 'id': id,
1641
+ 'clientOrderId': clientOrderId,
1642
+ 'timestamp': timestamp,
1643
+ 'datetime': this.iso8601(timestamp),
1644
+ 'lastTradeTimestamp': undefined,
1645
+ 'symbol': symbol,
1646
+ 'type': type,
1647
+ 'timeInForce': timeInForce,
1648
+ 'postOnly': postOnly,
1649
+ 'reduceOnly': this.safeValue(order, 'reduceOnly'),
1650
+ 'side': side,
1651
+ 'price': price,
1652
+ 'triggerPrice': this.parseNumber(this.omitZero(this.safeString(order, 'stopPrice'))),
1653
+ 'amount': amount,
1654
+ 'cost': cost,
1655
+ 'average': average,
1656
+ 'filled': filled,
1657
+ 'remaining': undefined,
1658
+ 'status': status,
1659
+ 'fee': undefined,
1660
+ 'trades': fills,
1661
+ }, market);
1662
+ }
1663
+ parseOrderType(status) {
1664
+ const statuses = {
1665
+ '2': 'market',
1666
+ '1': 'limit',
1667
+ '4': 'limit',
1668
+ '7': 'limit',
1669
+ };
1670
+ return this.safeString(statuses, status, status);
1671
+ }
1672
+ /**
1673
+ * @method
1674
+ * @name tokocrypto#createOrder
1675
+ * @description create a trade order
1676
+ * @see https://www.tokocrypto.com/apidocs/#new-order--signed
1677
+ * @param {string} symbol unified symbol of the market to create an order in
1678
+ * @param {string} type 'market' or 'limit'
1679
+ * @param {string} side 'buy' or 'sell'
1680
+ * @param {float} amount how much of currency you want to trade in units of base currency
1681
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1682
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1683
+ * @param {float} [params.triggerPrice] the price at which a trigger order would be triggered
1684
+ * @param {float} [params.cost] for spot market buy orders, the quote quantity that can be used as an alternative for the amount
1685
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1686
+ */
1687
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1688
+ await this.loadMarkets();
1689
+ const market = this.market(symbol);
1690
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientId');
1691
+ const postOnly = this.safeBool(params, 'postOnly', false);
1692
+ // only supported for spot/margin api
1693
+ if (postOnly) {
1694
+ type = 'LIMIT_MAKER';
1695
+ }
1696
+ params = this.omit(params, ['clientId', 'clientOrderId']);
1697
+ const initialUppercaseType = type.toUpperCase();
1698
+ let uppercaseType = initialUppercaseType;
1699
+ const triggerPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
1700
+ if (triggerPrice !== undefined) {
1701
+ params = this.omit(params, ['triggerPrice', 'stopPrice']);
1702
+ if (uppercaseType === 'MARKET') {
1703
+ uppercaseType = 'STOP_LOSS';
1704
+ }
1705
+ else if (uppercaseType === 'LIMIT') {
1706
+ uppercaseType = 'STOP_LOSS_LIMIT';
1707
+ }
1708
+ }
1709
+ const validOrderTypes = this.safeValue(market['info'], 'orderTypes');
1710
+ if (!this.inArray(uppercaseType, validOrderTypes)) {
1711
+ if (initialUppercaseType !== uppercaseType) {
1712
+ throw new InvalidOrder(this.id + ' triggerPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders');
1713
+ }
1714
+ else {
1715
+ throw new InvalidOrder(this.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market');
1716
+ }
1717
+ }
1718
+ const reverseOrderTypeMapping = {
1719
+ 'LIMIT': 1,
1720
+ 'MARKET': 2,
1721
+ 'STOP_LOSS': 3,
1722
+ 'STOP_LOSS_LIMIT': 4,
1723
+ 'TAKE_PROFIT': 5,
1724
+ 'TAKE_PROFIT_LIMIT': 6,
1725
+ 'LIMIT_MAKER': 7,
1726
+ };
1727
+ const request = {
1728
+ 'symbol': market['baseId'] + '_' + market['quoteId'],
1729
+ 'type': this.safeString(reverseOrderTypeMapping, uppercaseType),
1730
+ };
1731
+ if (side === 'buy') {
1732
+ request['side'] = 0;
1733
+ }
1734
+ else if (side === 'sell') {
1735
+ request['side'] = 1;
1736
+ }
1737
+ if (clientOrderId === undefined) {
1738
+ const broker = this.safeValue(this.options, 'broker');
1739
+ if (broker !== undefined) {
1740
+ const brokerId = this.safeString(broker, 'marketType');
1741
+ if (brokerId !== undefined) {
1742
+ request['clientId'] = brokerId + this.uuid22();
1743
+ }
1744
+ }
1745
+ }
1746
+ else {
1747
+ request['clientId'] = clientOrderId;
1748
+ }
1749
+ // additional required fields depending on the order type
1750
+ let priceIsRequired = false;
1751
+ let triggerPriceIsRequired = false;
1752
+ let quantityIsRequired = false;
1753
+ //
1754
+ // spot/margin
1755
+ //
1756
+ // LIMIT timeInForce, quantity, price
1757
+ // MARKET quantity or quoteOrderQty
1758
+ // STOP_LOSS quantity, stopPrice
1759
+ // STOP_LOSS_LIMIT timeInForce, quantity, price, stopPrice
1760
+ // TAKE_PROFIT quantity, stopPrice
1761
+ // TAKE_PROFIT_LIMIT timeInForce, quantity, price, stopPrice
1762
+ // LIMIT_MAKER quantity, price
1763
+ //
1764
+ if (uppercaseType === 'MARKET') {
1765
+ if (side === 'buy') {
1766
+ const precision = market['precision']['price'];
1767
+ let quoteAmount = undefined;
1768
+ let createMarketBuyOrderRequiresPrice = true;
1769
+ [createMarketBuyOrderRequiresPrice, params] = this.handleOptionAndParams(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', true);
1770
+ const cost = this.safeNumber2(params, 'cost', 'quoteOrderQty');
1771
+ params = this.omit(params, ['cost', 'quoteOrderQty']);
1772
+ if (cost !== undefined) {
1773
+ quoteAmount = cost;
1774
+ }
1775
+ else if (createMarketBuyOrderRequiresPrice) {
1776
+ if (price === undefined) {
1777
+ 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 (quote quantity) in the amount argument');
1778
+ }
1779
+ else {
1780
+ const amountString = this.numberToString(amount);
1781
+ const priceString = this.numberToString(price);
1782
+ quoteAmount = Precise.stringMul(amountString, priceString);
1783
+ }
1784
+ }
1785
+ else {
1786
+ quoteAmount = amount;
1787
+ }
1788
+ request['quoteOrderQty'] = this.decimalToPrecision(quoteAmount, TRUNCATE, precision, this.precisionMode);
1789
+ }
1790
+ else {
1791
+ quantityIsRequired = true;
1792
+ }
1793
+ }
1794
+ else if (uppercaseType === 'LIMIT') {
1795
+ priceIsRequired = true;
1796
+ quantityIsRequired = true;
1797
+ }
1798
+ else if ((uppercaseType === 'STOP_LOSS') || (uppercaseType === 'TAKE_PROFIT')) {
1799
+ triggerPriceIsRequired = true;
1800
+ quantityIsRequired = true;
1801
+ if (market['linear'] || market['inverse']) {
1802
+ priceIsRequired = true;
1803
+ }
1804
+ }
1805
+ else if ((uppercaseType === 'STOP_LOSS_LIMIT') || (uppercaseType === 'TAKE_PROFIT_LIMIT')) {
1806
+ quantityIsRequired = true;
1807
+ triggerPriceIsRequired = true;
1808
+ priceIsRequired = true;
1809
+ }
1810
+ else if (uppercaseType === 'LIMIT_MAKER') {
1811
+ priceIsRequired = true;
1812
+ quantityIsRequired = true;
1813
+ }
1814
+ if (quantityIsRequired) {
1815
+ request['quantity'] = this.amountToPrecision(symbol, amount);
1816
+ }
1817
+ if (priceIsRequired) {
1818
+ if (price === undefined) {
1819
+ throw new InvalidOrder(this.id + ' createOrder() requires a price argument for a ' + type + ' order');
1820
+ }
1821
+ request['price'] = this.priceToPrecision(symbol, price);
1822
+ }
1823
+ if (triggerPriceIsRequired) {
1824
+ if (triggerPrice === undefined) {
1825
+ throw new InvalidOrder(this.id + ' createOrder() requires a triggerPrice extra param for a ' + type + ' order');
1826
+ }
1827
+ else {
1828
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
1829
+ }
1830
+ }
1831
+ const response = await this.privatePostOpenV1Orders(this.extend(request, params));
1832
+ //
1833
+ // {
1834
+ // "code": 0,
1835
+ // "msg": "Success",
1836
+ // "data": {
1837
+ // "orderId": 145264846,
1838
+ // "bOrderListId": 0,
1839
+ // "clientId": "4ee2ab5e55e74b358eaf98079c670d17",
1840
+ // "bOrderId": 35247499,
1841
+ // "symbol": "USDT_BIDR",
1842
+ // "symbolType": 1,
1843
+ // "side": 0,
1844
+ // "type": 1,
1845
+ // "price": "11915",
1846
+ // "origQty": "2",
1847
+ // "origQuoteQty": "23830.00",
1848
+ // "executedQty": "0.00000000",
1849
+ // "executedPrice": "0",
1850
+ // "executedQuoteQty": "0.00",
1851
+ // "timeInForce": 1,
1852
+ // "stopPrice": 0,
1853
+ // "icebergQty": "0",
1854
+ // "status": 0,
1855
+ // "createTime": 1662710994848
1856
+ // },
1857
+ // "timestamp": 1662710994975
1858
+ // }
1859
+ //
1860
+ const rawOrder = this.safeDict(response, 'data', {});
1861
+ return this.parseOrder(rawOrder, market);
1862
+ }
1863
+ /**
1864
+ * @method
1865
+ * @name tokocrypto#fetchOrder
1866
+ * @see https://www.tokocrypto.com/apidocs/#query-order-signed
1867
+ * @description fetches information on an order made by the user
1868
+ * @param {string} id order id
1869
+ * @param {string} symbol unified symbol of the market the order was made in
1870
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1871
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1872
+ */
1873
+ async fetchOrder(id, symbol = undefined, params = {}) {
1874
+ const request = {
1875
+ 'orderId': id,
1876
+ };
1877
+ const response = await this.privateGetOpenV1Orders(this.extend(request, params));
1878
+ //
1879
+ // {
1880
+ // "code": 0,
1881
+ // "msg": "Success",
1882
+ // "data": {
1883
+ // "list": [{
1884
+ // "orderId": "145221985",
1885
+ // "clientId": "201515331fd64d03aedbe687a38152e3",
1886
+ // "bOrderId": "35239632",
1887
+ // "bOrderListId": "0",
1888
+ // "symbol": "USDT_BIDR",
1889
+ // "symbolType": 1,
1890
+ // "side": 0,
1891
+ // "type": 1,
1892
+ // "price": "11907",
1893
+ // "origQty": "2",
1894
+ // "origQuoteQty": "23814",
1895
+ // "executedQty": "0",
1896
+ // "executedPrice": "0",
1897
+ // "executedQuoteQty": "0",
1898
+ // "timeInForce": 1,
1899
+ // "stopPrice": "0",
1900
+ // "icebergQty": "0",
1901
+ // "status": 0,
1902
+ // "createTime": 1662699360000
1903
+ // }]
1904
+ // },
1905
+ // "timestamp": 1662710056523
1906
+ // }
1907
+ //
1908
+ const data = this.safeValue(response, 'data', {});
1909
+ const list = this.safeValue(data, 'list', []);
1910
+ const rawOrder = this.safeDict(list, 0, {});
1911
+ return this.parseOrder(rawOrder);
1912
+ }
1913
+ /**
1914
+ * @method
1915
+ * @name tokocrypto#fetchOrders
1916
+ * @see https://www.tokocrypto.com/apidocs/#all-orders-signed
1917
+ * @description fetches information on multiple orders made by the user
1918
+ * @param {string} symbol unified market symbol of the market orders were made in
1919
+ * @param {int} [since] the earliest time in ms to fetch orders for
1920
+ * @param {int} [limit] the maximum number of order structures to retrieve
1921
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1922
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1923
+ */
1924
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1925
+ if (symbol === undefined) {
1926
+ throw new ArgumentsRequired(this.id + ' fetchOrders() requires a symbol argument');
1927
+ }
1928
+ await this.loadMarkets();
1929
+ const market = this.market(symbol);
1930
+ const request = {
1931
+ 'symbol': market['id'],
1932
+ // 'type': -1, // -1 = all, 1 = open, 2 = closed
1933
+ // 'side': 1, // or 2
1934
+ // 'startTime': since,
1935
+ // 'endTime': this.milliseconds (),
1936
+ // 'fromId': 'starting order ID', // if defined, the "direct" field becomes mandatory
1937
+ // 'direct': 'prev', // prev, next
1938
+ // 'limit': 500, // default 500, max 1000
1939
+ };
1940
+ if (since !== undefined) {
1941
+ request['startTime'] = since;
1942
+ }
1943
+ if (limit !== undefined) {
1944
+ request['limit'] = limit;
1945
+ }
1946
+ const response = await this.privateGetOpenV1Orders(this.extend(request, params));
1947
+ //
1948
+ // {
1949
+ // "code": 0,
1950
+ // "msg": "success",
1951
+ // "data": {
1952
+ // "list": [
1953
+ // {
1954
+ // "orderId": "4", // order id
1955
+ // "bOrderId": "100001", // binance order id
1956
+ // "bOrderListId": -1, // Unless part of an OCO, the value will always be -1.
1957
+ // "clientId": "1aa4f99ad7bc4fab903395afd25d0597", // client custom order id
1958
+ // "symbol": "ADA_USDT",
1959
+ // "symbolType": 1,
1960
+ // "side": 1,
1961
+ // "type": 1,
1962
+ // "price": "0.1",
1963
+ // "origQty": "10",
1964
+ // "origQuoteQty": "1",
1965
+ // "executedQty": "0",
1966
+ // "executedPrice": "0",
1967
+ // "executedQuoteQty": "0",
1968
+ // "timeInForce": 1,
1969
+ // "stopPrice": "0.0000000000000000",
1970
+ // "icebergQty": "0.0000000000000000",
1971
+ // "status": 0,
1972
+ // "isWorking": 0,
1973
+ // "createTime": 1572692016811
1974
+ // }
1975
+ // ]
1976
+ // },
1977
+ // "timestamp": 1572860756458
1978
+ // }
1979
+ //
1980
+ const data = this.safeValue(response, 'data', {});
1981
+ const orders = this.safeList(data, 'list', []);
1982
+ return this.parseOrders(orders, market, since, limit);
1983
+ }
1984
+ /**
1985
+ * @method
1986
+ * @name tokocrypto#fetchOpenOrders
1987
+ * @see https://www.tokocrypto.com/apidocs/#all-orders-signed
1988
+ * @description fetch all unfilled currently open orders
1989
+ * @param {string} symbol unified market symbol
1990
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1991
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1992
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1993
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1994
+ */
1995
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1996
+ const request = { 'type': 1 }; // -1 = all, 1 = open, 2 = closed
1997
+ return await this.fetchOrders(symbol, since, limit, this.extend(request, params));
1998
+ }
1999
+ /**
2000
+ * @method
2001
+ * @name tokocrypto#fetchClosedOrders
2002
+ * @see https://www.tokocrypto.com/apidocs/#all-orders-signed
2003
+ * @description fetches information on multiple closed orders made by the user
2004
+ * @param {string} symbol unified market symbol of the market orders were made in
2005
+ * @param {int} [since] the earliest time in ms to fetch orders for
2006
+ * @param {int} [limit] the maximum number of order structures to retrieve
2007
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2008
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2009
+ */
2010
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2011
+ const request = { 'type': 2 }; // -1 = all, 1 = open, 2 = closed
2012
+ return await this.fetchOrders(symbol, since, limit, this.extend(request, params));
2013
+ }
2014
+ /**
2015
+ * @method
2016
+ * @name tokocrypto#cancelOrder
2017
+ * @see https://www.tokocrypto.com/apidocs/#cancel-order-signed
2018
+ * @description cancels an open order
2019
+ * @param {string} id order id
2020
+ * @param {string} symbol unified symbol of the market the order was made in
2021
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2022
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2023
+ */
2024
+ async cancelOrder(id, symbol = undefined, params = {}) {
2025
+ const request = {
2026
+ 'orderId': id,
2027
+ };
2028
+ const response = await this.privatePostOpenV1OrdersCancel(this.extend(request, params));
2029
+ //
2030
+ // {
2031
+ // "code": 0,
2032
+ // "msg": "Success",
2033
+ // "data": {
2034
+ // "orderId": "145221985",
2035
+ // "bOrderListId": "0",
2036
+ // "clientId": "201515331fd64d03aedbe687a38152e3",
2037
+ // "bOrderId": "35239632",
2038
+ // "symbol": "USDT_BIDR",
2039
+ // "symbolType": 1,
2040
+ // "type": 1,
2041
+ // "side": 0,
2042
+ // "price": "11907.0000000000000000",
2043
+ // "origQty": "2.0000000000000000",
2044
+ // "origQuoteQty": "23814.0000000000000000",
2045
+ // "executedPrice": "0.0000000000000000",
2046
+ // "executedQty": "0.00000000",
2047
+ // "executedQuoteQty": "0.00",
2048
+ // "timeInForce": 1,
2049
+ // "stopPrice": "0.0000000000000000",
2050
+ // "icebergQty": "0.0000000000000000",
2051
+ // "status": 3
2052
+ // },
2053
+ // "timestamp": 1662710683634
2054
+ // }
2055
+ //
2056
+ const rawOrder = this.safeDict(response, 'data', {});
2057
+ return this.parseOrder(rawOrder);
2058
+ }
2059
+ /**
2060
+ * @method
2061
+ * @name tokocrypto#fetchMyTrades
2062
+ * @see https://www.tokocrypto.com/apidocs/#account-trade-list-signed
2063
+ * @description fetch all trades made by the user
2064
+ * @param {string} symbol unified market symbol
2065
+ * @param {int} [since] the earliest time in ms to fetch trades for
2066
+ * @param {int} [limit] the maximum number of trades structures to retrieve
2067
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2068
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2069
+ */
2070
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2071
+ if (symbol === undefined) {
2072
+ throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
2073
+ }
2074
+ await this.loadMarkets();
2075
+ const market = this.market(symbol);
2076
+ const request = {
2077
+ 'symbol': market['id'],
2078
+ };
2079
+ const endTime = this.safeInteger2(params, 'until', 'endTime');
2080
+ if (since !== undefined) {
2081
+ request['startTime'] = since;
2082
+ }
2083
+ if (endTime !== undefined) {
2084
+ request['endTime'] = endTime;
2085
+ params = this.omit(params, ['endTime', 'until']);
2086
+ }
2087
+ if (limit !== undefined) {
2088
+ request['limit'] = limit;
2089
+ }
2090
+ const response = await this.privateGetOpenV1OrdersTrades(this.extend(request, params));
2091
+ //
2092
+ // {
2093
+ // "code": 0,
2094
+ // "msg": "success",
2095
+ // "data": {
2096
+ // "list": [
2097
+ // {
2098
+ // "tradeId": "3",
2099
+ // "orderId": "2",
2100
+ // "symbol": "ADA_USDT",
2101
+ // "price": "0.04398",
2102
+ // "qty": "250",
2103
+ // "quoteQty": "10.995",
2104
+ // "commission": "0.25",
2105
+ // "commissionAsset": "ADA",
2106
+ // "isBuyer": 1,
2107
+ // "isMaker": 0,
2108
+ // "isBestMatch": 1,
2109
+ // "time": "1572920872276"
2110
+ // }
2111
+ // ]
2112
+ // },
2113
+ // "timestamp": 1573723498893
2114
+ // }
2115
+ //
2116
+ const data = this.safeValue(response, 'data', {});
2117
+ const trades = this.safeList(data, 'list', []);
2118
+ return this.parseTrades(trades, market, since, limit);
2119
+ }
2120
+ /**
2121
+ * @method
2122
+ * @name tokocrypto#fetchDepositAddress
2123
+ * @description fetch the deposit address for a currency associated with this account
2124
+ * @see https://www.tokocrypto.com/apidocs/#deposit-address-signed
2125
+ * @param {string} code unified currency code
2126
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2127
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2128
+ */
2129
+ async fetchDepositAddress(code, params = {}) {
2130
+ await this.loadMarkets();
2131
+ const currency = this.currency(code);
2132
+ const request = {
2133
+ 'asset': currency['id'],
2134
+ // 'network': 'ETH', // 'BSC', 'XMR', you can get network and isDefault in networkList in the response of sapiGetCapitalConfigDetail
2135
+ };
2136
+ const networks = this.safeValue(this.options, 'networks', {});
2137
+ let network = this.safeStringUpper(params, 'network'); // this line allows the user to specify either ERC20 or ETH
2138
+ network = this.safeString(networks, network, network); // handle ERC20>ETH alias
2139
+ if (network !== undefined) {
2140
+ request['network'] = network;
2141
+ params = this.omit(params, 'network');
2142
+ }
2143
+ // has support for the 'network' parameter
2144
+ // https://binance-docs.github.io/apidocs/spot/en/#deposit-address-supporting-network-user_data
2145
+ const response = await this.privateGetOpenV1DepositsAddress(this.extend(request, params));
2146
+ //
2147
+ // {
2148
+ // "code":0,
2149
+ // "msg":"Success",
2150
+ // "data":{
2151
+ // "uid":"182395",
2152
+ // "asset":"USDT",
2153
+ // "network":"ETH",
2154
+ // "address":"0x101a925704f6ff13295ab8dd7a60988d116aaedf",
2155
+ // "addressTag":"",
2156
+ // "status":1
2157
+ // },
2158
+ // "timestamp":1660685915746
2159
+ // }
2160
+ //
2161
+ const data = this.safeValue(response, 'data', {});
2162
+ const address = this.safeString(data, 'address');
2163
+ let tag = this.safeString(data, 'addressTag', '');
2164
+ if (tag.length === 0) {
2165
+ tag = undefined;
2166
+ }
2167
+ this.checkAddress(address);
2168
+ return {
2169
+ 'info': response,
2170
+ 'currency': code,
2171
+ 'network': this.safeString(data, 'network'),
2172
+ 'address': address,
2173
+ 'tag': tag,
2174
+ };
2175
+ }
2176
+ /**
2177
+ * @method
2178
+ * @name tokocrypto#fetchDeposits
2179
+ * @see https://www.tokocrypto.com/apidocs/#deposit-history-signed
2180
+ * @description fetch all deposits made to an account
2181
+ * @param {string} code unified currency code
2182
+ * @param {int} [since] the earliest time in ms to fetch deposits for
2183
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
2184
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2185
+ * @param {int} [params.until] the latest time in ms to fetch deposits for
2186
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2187
+ */
2188
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
2189
+ await this.loadMarkets();
2190
+ let currency = undefined;
2191
+ const request = {};
2192
+ const until = this.safeInteger(params, 'until');
2193
+ if (code !== undefined) {
2194
+ currency = this.currency(code);
2195
+ request['coin'] = currency['id'];
2196
+ }
2197
+ if (since !== undefined) {
2198
+ request['startTime'] = since;
2199
+ // max 3 months range https://github.com/ccxt/ccxt/issues/6495
2200
+ let endTime = this.sum(since, 7776000000);
2201
+ if (until !== undefined) {
2202
+ endTime = Math.min(endTime, until);
2203
+ }
2204
+ request['endTime'] = endTime;
2205
+ }
2206
+ if (limit !== undefined) {
2207
+ request['limit'] = limit;
2208
+ }
2209
+ const response = await this.privateGetOpenV1Deposits(this.extend(request, params));
2210
+ //
2211
+ // {
2212
+ // "code":0,
2213
+ // "msg":"Success",
2214
+ // "data":{
2215
+ // "list":[
2216
+ // {
2217
+ // "id":5167969,
2218
+ // "asset":"BIDR",
2219
+ // "network":"BSC",
2220
+ // "address":"0x101a925704f6ff13295ab8dd7a60988d116aaedf",
2221
+ // "addressTag":"",
2222
+ // "txId":"113409337867",
2223
+ // "amount":"15000",
2224
+ // "transferType":1,
2225
+ // "status":1,
2226
+ // "insertTime":"1659429390000"
2227
+ // },
2228
+ // ]
2229
+ // },
2230
+ // "timestamp":1659758865998
2231
+ // }
2232
+ //
2233
+ const data = this.safeValue(response, 'data', {});
2234
+ const deposits = this.safeList(data, 'list', []);
2235
+ return this.parseTransactions(deposits, currency, since, limit);
2236
+ }
2237
+ /**
2238
+ * @method
2239
+ * @name tokocrypto#fetchWithdrawals
2240
+ * @see https://www.tokocrypto.com/apidocs/#withdraw-signed
2241
+ * @description fetch all withdrawals made from an account
2242
+ * @param {string} code unified currency code
2243
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
2244
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
2245
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2246
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2247
+ */
2248
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
2249
+ await this.loadMarkets();
2250
+ const request = {};
2251
+ let currency = undefined;
2252
+ if (code !== undefined) {
2253
+ currency = this.currency(code);
2254
+ request['coin'] = currency['id'];
2255
+ }
2256
+ if (since !== undefined) {
2257
+ request['startTime'] = since;
2258
+ // max 3 months range https://github.com/ccxt/ccxt/issues/6495
2259
+ request['endTime'] = this.sum(since, 7776000000);
2260
+ }
2261
+ if (limit !== undefined) {
2262
+ request['limit'] = limit;
2263
+ }
2264
+ const response = await this.privateGetOpenV1Withdraws(this.extend(request, params));
2265
+ //
2266
+ // {
2267
+ // "code":0,
2268
+ // "msg":"Success",
2269
+ // "data":{
2270
+ // "list":[
2271
+ // {
2272
+ // "id":4245859,
2273
+ // "clientId":"198",
2274
+ // "asset":"BIDR",
2275
+ // "network":"BSC",
2276
+ // "address":"0xff1c75149cc492e7d5566145b859fcafc900b6e9",
2277
+ // "addressTag":"",
2278
+ // "amount":"10000",
2279
+ // "fee":"0",
2280
+ // "txId":"113501794501",
2281
+ // "transferType":1,
2282
+ // "status":10,
2283
+ // "createTime":1659521314413
2284
+ // }
2285
+ // ]
2286
+ // },
2287
+ // "timestamp":1659759062187
2288
+ // }
2289
+ //
2290
+ const data = this.safeValue(response, 'data', {});
2291
+ const withdrawals = this.safeList(data, 'list', []);
2292
+ return this.parseTransactions(withdrawals, currency, since, limit);
2293
+ }
2294
+ parseTransactionStatusByType(status, type = undefined) {
2295
+ const statusesByType = {
2296
+ 'deposit': {
2297
+ '0': 'pending',
2298
+ '1': 'ok',
2299
+ },
2300
+ 'withdrawal': {
2301
+ '0': 'pending',
2302
+ '1': 'canceled',
2303
+ '2': 'pending',
2304
+ '3': 'failed',
2305
+ '4': 'pending',
2306
+ '5': 'failed',
2307
+ '10': 'ok', // Completed
2308
+ },
2309
+ };
2310
+ const statuses = this.safeValue(statusesByType, type, {});
2311
+ return this.safeString(statuses, status, status);
2312
+ }
2313
+ parseTransaction(transaction, currency = undefined) {
2314
+ //
2315
+ // fetchDeposits
2316
+ //
2317
+ // {
2318
+ // "id": 5167969,
2319
+ // "asset": "BIDR",
2320
+ // "network": "BSC",
2321
+ // "address": "0x101a925704f6ff13295ab8dd7a60988d116aaedf",
2322
+ // "addressTag": "",
2323
+ // "txId": "113409337867",
2324
+ // "amount": "15000",
2325
+ // "transferType": 1,
2326
+ // "status": 1,
2327
+ // "insertTime": "1659429390000"
2328
+ // }
2329
+ //
2330
+ // fetchWithdrawals
2331
+ //
2332
+ // {
2333
+ // "id": 4245859,
2334
+ // "clientId": "198",
2335
+ // "asset": "BIDR",
2336
+ // "network": "BSC",
2337
+ // "address": "0xff1c75149cc492e7d5566145b859fcafc900b6e9",
2338
+ // "addressTag": "",
2339
+ // "amount": "10000",
2340
+ // "fee": "0",
2341
+ // "txId": "113501794501",
2342
+ // "transferType": 1,
2343
+ // "status": 10,
2344
+ // "createTime": 1659521314413
2345
+ // }
2346
+ //
2347
+ // withdraw
2348
+ //
2349
+ // {
2350
+ // "code": 0,
2351
+ // "msg": "成功",
2352
+ // "data": {
2353
+ // "withdrawId":"12"
2354
+ // },
2355
+ // "timestamp": 1571745049095
2356
+ // }
2357
+ //
2358
+ const address = this.safeString(transaction, 'address');
2359
+ let tag = this.safeString(transaction, 'addressTag'); // set but unused
2360
+ if (tag !== undefined) {
2361
+ if (tag.length < 1) {
2362
+ tag = undefined;
2363
+ }
2364
+ }
2365
+ let txid = this.safeString(transaction, 'txId');
2366
+ if ((txid !== undefined) && (txid.indexOf('Internal transfer ') >= 0)) {
2367
+ txid = txid.slice(18);
2368
+ }
2369
+ const currencyId = this.safeString2(transaction, 'coin', 'fiatCurrency');
2370
+ const code = this.safeCurrencyCode(currencyId, currency);
2371
+ let timestamp = undefined;
2372
+ const insertTime = this.safeInteger(transaction, 'insertTime');
2373
+ const createTime = this.safeInteger2(transaction, 'createTime', 'timestamp');
2374
+ let type = this.safeString(transaction, 'type');
2375
+ if (type === undefined) {
2376
+ if ((insertTime !== undefined) && (createTime === undefined)) {
2377
+ type = 'deposit';
2378
+ timestamp = insertTime;
2379
+ }
2380
+ else if ((insertTime === undefined) && (createTime !== undefined)) {
2381
+ type = 'withdrawal';
2382
+ timestamp = createTime;
2383
+ }
2384
+ }
2385
+ const feeCost = this.safeNumber2(transaction, 'transactionFee', 'totalFee');
2386
+ const fee = {
2387
+ 'currency': undefined,
2388
+ 'cost': undefined,
2389
+ 'rate': undefined,
2390
+ };
2391
+ if (feeCost !== undefined) {
2392
+ fee['currency'] = code;
2393
+ fee['cost'] = feeCost;
2394
+ }
2395
+ const internalRaw = this.safeInteger(transaction, 'transferType');
2396
+ let internal = false;
2397
+ if (internalRaw !== undefined) {
2398
+ internal = true;
2399
+ }
2400
+ let id = this.safeString(transaction, 'id');
2401
+ if (id === undefined) {
2402
+ const data = this.safeValue(transaction, 'data', {});
2403
+ id = this.safeString(data, 'withdrawId');
2404
+ type = 'withdrawal';
2405
+ }
2406
+ return {
2407
+ 'info': transaction,
2408
+ 'id': id,
2409
+ 'txid': txid,
2410
+ 'type': type,
2411
+ 'currency': code,
2412
+ 'network': this.safeString(transaction, 'network'),
2413
+ 'amount': this.safeNumber(transaction, 'amount'),
2414
+ 'status': this.parseTransactionStatusByType(this.safeString(transaction, 'status'), type),
2415
+ 'timestamp': timestamp,
2416
+ 'datetime': this.iso8601(timestamp),
2417
+ 'address': address,
2418
+ 'addressFrom': undefined,
2419
+ 'addressTo': address,
2420
+ 'tag': tag,
2421
+ 'tagFrom': undefined,
2422
+ 'tagTo': tag,
2423
+ 'updated': this.safeInteger2(transaction, 'successTime', 'updateTime'),
2424
+ 'comment': undefined,
2425
+ 'internal': internal,
2426
+ 'fee': fee,
2427
+ };
2428
+ }
2429
+ /**
2430
+ * @method
2431
+ * @name tokocrypto#withdraw
2432
+ * @see https://www.tokocrypto.com/apidocs/#withdraw-signed
2433
+ * @description make a withdrawal
2434
+ * @param {string} code unified currency code
2435
+ * @param {float} amount the amount to withdraw
2436
+ * @param {string} address the address to withdraw to
2437
+ * @param {string} tag
2438
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2439
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2440
+ */
2441
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
2442
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2443
+ await this.loadMarkets();
2444
+ this.checkAddress(address);
2445
+ const currency = this.currency(code);
2446
+ const request = {
2447
+ 'asset': currency['id'],
2448
+ // 'clientId': 'string', // // client's custom id for withdraw order, server does not check it's uniqueness, automatically generated if not sent
2449
+ // 'network': 'string',
2450
+ 'address': address,
2451
+ // 'addressTag': 'string', // for coins like XRP, XMR, etc
2452
+ 'amount': this.numberToString(amount),
2453
+ };
2454
+ if (tag !== undefined) {
2455
+ request['addressTag'] = tag;
2456
+ }
2457
+ const [networkCode, query] = this.handleNetworkCodeAndParams(params);
2458
+ const networkId = this.networkCodeToId(networkCode);
2459
+ if (networkId !== undefined) {
2460
+ request['network'] = networkId.toUpperCase();
2461
+ }
2462
+ const response = await this.privatePostOpenV1Withdraws(this.extend(request, query));
2463
+ //
2464
+ // {
2465
+ // "code": 0,
2466
+ // "msg": "成功",
2467
+ // "data": {
2468
+ // "withdrawId":"12"
2469
+ // },
2470
+ // "timestamp": 1571745049095
2471
+ // }
2472
+ //
2473
+ return this.parseTransaction(response, currency);
2474
+ }
2475
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2476
+ if (!(api in this.urls['api']['rest'])) {
2477
+ throw new NotSupported(this.id + ' does not have a testnet/sandbox URL for ' + api + ' endpoints');
2478
+ }
2479
+ let url = this.urls['api']['rest'][api];
2480
+ url += '/' + path;
2481
+ if (api === 'wapi') {
2482
+ url += '.html';
2483
+ }
2484
+ const userDataStream = (path === 'userDataStream') || (path === 'listenKey');
2485
+ if (userDataStream) {
2486
+ if (this.apiKey) {
2487
+ // v1 special case for userDataStream
2488
+ headers = {
2489
+ 'X-MBX-APIKEY': this.apiKey,
2490
+ 'Content-Type': 'application/x-www-form-urlencoded',
2491
+ };
2492
+ if (method !== 'GET') {
2493
+ body = this.urlencode(params);
2494
+ }
2495
+ }
2496
+ else {
2497
+ throw new AuthenticationError(this.id + ' userDataStream endpoint requires `apiKey` credential');
2498
+ }
2499
+ }
2500
+ else if ((api === 'private') || (api === 'sapi' && path !== 'system/status') || (api === 'sapiV3') || (api === 'wapi' && path !== 'systemStatus') || (api === 'dapiPrivate') || (api === 'dapiPrivateV2') || (api === 'fapiPrivate') || (api === 'fapiPrivateV2')) {
2501
+ this.checkRequiredCredentials();
2502
+ let query = undefined;
2503
+ const defaultRecvWindow = this.safeInteger(this.options, 'recvWindow');
2504
+ const extendedParams = this.extend({
2505
+ 'timestamp': this.nonce(),
2506
+ }, params);
2507
+ if (defaultRecvWindow !== undefined) {
2508
+ extendedParams['recvWindow'] = defaultRecvWindow;
2509
+ }
2510
+ const recvWindow = this.safeInteger(params, 'recvWindow');
2511
+ if (recvWindow !== undefined) {
2512
+ extendedParams['recvWindow'] = recvWindow;
2513
+ }
2514
+ if ((api === 'sapi') && (path === 'asset/dust')) {
2515
+ query = this.urlencodeWithArrayRepeat(extendedParams);
2516
+ }
2517
+ else if ((path === 'batchOrders') || (path.indexOf('sub-account') >= 0) || (path === 'capital/withdraw/apply') || (path.indexOf('staking') >= 0)) {
2518
+ query = this.rawencode(extendedParams);
2519
+ }
2520
+ else {
2521
+ query = this.urlencode(extendedParams);
2522
+ }
2523
+ const signature = this.hmac(this.encode(query), this.encode(this.secret), sha256);
2524
+ query += '&' + 'signature=' + signature;
2525
+ headers = {
2526
+ 'X-MBX-APIKEY': this.apiKey,
2527
+ };
2528
+ if ((method === 'GET') || (method === 'DELETE') || (api === 'wapi')) {
2529
+ url += '?' + query;
2530
+ }
2531
+ else {
2532
+ body = query;
2533
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
2534
+ }
2535
+ }
2536
+ else {
2537
+ if (Object.keys(params).length) {
2538
+ url += '?' + this.urlencode(params);
2539
+ }
2540
+ }
2541
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2542
+ }
2543
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2544
+ if ((code === 418) || (code === 429)) {
2545
+ throw new DDoSProtection(this.id + ' ' + code.toString() + ' ' + reason + ' ' + body);
2546
+ }
2547
+ // error response in a form: { "code": -1013, "msg": "Invalid quantity." }
2548
+ // following block cointains legacy checks against message patterns in "msg" property
2549
+ // will switch "code" checks eventually, when we know all of them
2550
+ if (code >= 400) {
2551
+ if (body.indexOf('Price * QTY is zero or less') >= 0) {
2552
+ throw new InvalidOrder(this.id + ' order cost = amount * price is zero or less ' + body);
2553
+ }
2554
+ if (body.indexOf('LOT_SIZE') >= 0) {
2555
+ throw new InvalidOrder(this.id + ' order amount should be evenly divisible by lot size ' + body);
2556
+ }
2557
+ if (body.indexOf('PRICE_FILTER') >= 0) {
2558
+ throw new InvalidOrder(this.id + ' order price is invalid, i.e. exceeds allowed price precision, exceeds min price or max price limits or is invalid value in general, use this.priceToPrecision (symbol, amount) ' + body);
2559
+ }
2560
+ }
2561
+ if (response === undefined) {
2562
+ return undefined; // fallback to default error handler
2563
+ }
2564
+ // check success value for wapi endpoints
2565
+ // response in format {'msg': 'The coin does not exist.', 'success': true/false}
2566
+ const success = this.safeBool(response, 'success', true);
2567
+ if (!success) {
2568
+ const messageInner = this.safeString(response, 'msg');
2569
+ let parsedMessage = undefined;
2570
+ if (messageInner !== undefined) {
2571
+ try {
2572
+ parsedMessage = JSON.parse(messageInner);
2573
+ }
2574
+ catch (e) {
2575
+ // do nothing
2576
+ parsedMessage = undefined;
2577
+ }
2578
+ if (parsedMessage !== undefined) {
2579
+ response = parsedMessage;
2580
+ }
2581
+ }
2582
+ }
2583
+ const message = this.safeString(response, 'msg');
2584
+ if (message !== undefined) {
2585
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, this.id + ' ' + message);
2586
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, this.id + ' ' + message);
2587
+ }
2588
+ // checks against error codes
2589
+ const error = this.safeString(response, 'code');
2590
+ if (error !== undefined) {
2591
+ // https://github.com/ccxt/ccxt/issues/6501
2592
+ // https://github.com/ccxt/ccxt/issues/7742
2593
+ if ((error === '200') || Precise.stringEquals(error, '0')) {
2594
+ return undefined;
2595
+ }
2596
+ // a workaround for {"code":-2015,"msg":"Invalid API-key, IP, or permissions for action."}
2597
+ // despite that their message is very confusing, it is raised by Binance
2598
+ // on a temporary ban, the API key is valid, but disabled for a while
2599
+ if ((error === '-2015') && this.options['hasAlreadyAuthenticatedSuccessfully']) {
2600
+ throw new DDoSProtection(this.id + ' ' + body);
2601
+ }
2602
+ const feedback = this.id + ' ' + body;
2603
+ if (message === 'No need to change margin type.') {
2604
+ // not an error
2605
+ // https://github.com/ccxt/ccxt/issues/11268
2606
+ // https://github.com/ccxt/ccxt/pull/11624
2607
+ // POST https://fapi.binance.com/fapi/v1/marginType 400 Bad Request
2608
+ // binanceusdm {"code":-4046,"msg":"No need to change margin type."}
2609
+ throw new MarginModeAlreadySet(feedback);
2610
+ }
2611
+ this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
2612
+ throw new ExchangeError(feedback);
2613
+ }
2614
+ if (!success) {
2615
+ throw new ExchangeError(this.id + ' ' + body);
2616
+ }
2617
+ return undefined;
2618
+ }
2619
+ calculateRateLimiterCost(api, method, path, params, config = {}) {
2620
+ if (('noCoin' in config) && !('coin' in params)) {
2621
+ return config['noCoin'];
2622
+ }
2623
+ else if (('noSymbol' in config) && !('symbol' in params)) {
2624
+ return config['noSymbol'];
2625
+ }
2626
+ else if (('noPoolId' in config) && !('poolId' in params)) {
2627
+ return config['noPoolId'];
2628
+ }
2629
+ else if (('byLimit' in config) && ('limit' in params)) {
2630
+ const limit = params['limit'];
2631
+ const byLimit = config['byLimit'];
2632
+ for (let i = 0; i < byLimit.length; i++) {
2633
+ const entry = byLimit[i];
2634
+ if (limit <= entry[0]) {
2635
+ return entry[1];
2636
+ }
2637
+ }
2638
+ }
2639
+ return this.safeInteger(config, 'cost', 1);
2640
+ }
2641
+ }