ccxt-ir 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +10 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/dist/cjs/src/changefa.js +342 -0
  8. package/dist/cjs/src/ourbit.js +445 -0
  9. package/js/ccxt.d.ts +11 -2
  10. package/js/ccxt.js +8 -2
  11. package/js/src/abstract/bidarz.d.ts +9 -0
  12. package/js/src/abstract/bidarz.js +11 -0
  13. package/js/src/abstract/changefa.d.ts +8 -0
  14. package/js/src/abstract/changefa.js +11 -0
  15. package/js/src/abstract/ourbit.d.ts +10 -0
  16. package/js/src/abstract/ourbit.js +11 -0
  17. package/js/src/bidarz.d.ts +22 -0
  18. package/js/src/bidarz.js +336 -0
  19. package/js/src/bit24.js +4 -3
  20. package/js/src/changefa.d.ts +20 -0
  21. package/js/src/changefa.js +341 -0
  22. package/js/src/ourbit.d.ts +21 -0
  23. package/js/src/ourbit.js +444 -0
  24. package/js/src/src/abantether.d.ts +21 -0
  25. package/js/src/src/abantether.js +353 -0
  26. package/js/src/src/abstract/abantether.d.ts +8 -0
  27. package/js/src/src/abstract/abantether.js +11 -0
  28. package/js/src/src/abstract/afratether.d.ts +9 -0
  29. package/js/src/src/abstract/afratether.js +11 -0
  30. package/js/src/src/abstract/alpaca.d.ts +77 -0
  31. package/js/src/src/abstract/alpaca.js +11 -0
  32. package/js/src/src/abstract/apex.d.ts +34 -0
  33. package/js/src/src/abstract/apex.js +11 -0
  34. package/js/src/src/abstract/arzinja.d.ts +8 -0
  35. package/js/src/src/abstract/arzinja.js +11 -0
  36. package/js/src/src/abstract/arzplus.d.ts +11 -0
  37. package/js/src/src/abstract/arzplus.js +11 -0
  38. package/js/src/src/abstract/ascendex.d.ts +80 -0
  39. package/js/src/src/abstract/ascendex.js +11 -0
  40. package/js/src/src/abstract/asretether.d.ts +8 -0
  41. package/js/src/src/abstract/asretether.js +11 -0
  42. package/js/src/src/abstract/bidarz.d.ts +9 -0
  43. package/js/src/src/abstract/bidarz.js +11 -0
  44. package/js/src/src/abstract/bigone.d.ts +48 -0
  45. package/js/src/src/abstract/bigone.js +11 -0
  46. package/js/src/src/abstract/binance.d.ts +773 -0
  47. package/js/src/src/abstract/binance.js +11 -0
  48. package/js/src/src/abstract/bingx.d.ts +165 -0
  49. package/js/src/src/abstract/bingx.js +11 -0
  50. package/js/src/src/abstract/bit24.d.ts +9 -0
  51. package/js/src/src/abstract/bit24.js +11 -0
  52. package/js/src/src/abstract/bit2c.d.ts +30 -0
  53. package/js/src/src/abstract/bit2c.js +11 -0
  54. package/js/src/src/abstract/bitbank.d.ts +35 -0
  55. package/js/src/src/abstract/bitbank.js +11 -0
  56. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  57. package/js/src/src/abstract/bitbarg.js +11 -0
  58. package/js/src/src/abstract/bitbns.d.ts +43 -0
  59. package/js/src/src/abstract/bitbns.js +11 -0
  60. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  61. package/js/src/src/abstract/bitfinex.js +11 -0
  62. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  63. package/js/src/src/abstract/bitflyer.js +11 -0
  64. package/js/src/src/abstract/bitget.d.ts +578 -0
  65. package/js/src/src/abstract/bitget.js +11 -0
  66. package/js/src/src/abstract/bithumb.d.ts +35 -0
  67. package/js/src/src/abstract/bithumb.js +11 -0
  68. package/js/src/src/abstract/bitimen.d.ts +10 -0
  69. package/js/src/src/abstract/bitimen.js +11 -0
  70. package/js/src/src/abstract/bitir.d.ts +10 -0
  71. package/js/src/src/abstract/bitir.js +11 -0
  72. package/js/src/src/abstract/bitmart.d.ts +120 -0
  73. package/js/src/src/abstract/bitmart.js +11 -0
  74. package/js/src/src/abstract/bitmex.d.ts +100 -0
  75. package/js/src/src/abstract/bitmex.js +11 -0
  76. package/js/src/src/abstract/bitopro.d.ts +33 -0
  77. package/js/src/src/abstract/bitopro.js +11 -0
  78. package/js/src/src/abstract/bitpin.d.ts +11 -0
  79. package/js/src/src/abstract/bitpin.js +11 -0
  80. package/js/src/src/abstract/bitrue.d.ts +75 -0
  81. package/js/src/src/abstract/bitrue.js +11 -0
  82. package/js/src/src/abstract/bitso.d.ts +46 -0
  83. package/js/src/src/abstract/bitso.js +11 -0
  84. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  85. package/js/src/src/abstract/bitstamp.js +11 -0
  86. package/js/src/src/abstract/bitteam.d.ts +32 -0
  87. package/js/src/src/abstract/bitteam.js +11 -0
  88. package/js/src/src/abstract/bittrade.d.ts +117 -0
  89. package/js/src/src/abstract/bittrade.js +11 -0
  90. package/js/src/src/abstract/bitunix.d.ts +9 -0
  91. package/js/src/src/abstract/bitunix.js +11 -0
  92. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  93. package/js/src/src/abstract/bitvavo.js +11 -0
  94. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  95. package/js/src/src/abstract/blockchaincom.js +11 -0
  96. package/js/src/src/abstract/blofin.d.ts +70 -0
  97. package/js/src/src/abstract/blofin.js +11 -0
  98. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  99. package/js/src/src/abstract/btcalpha.js +11 -0
  100. package/js/src/src/abstract/btcbox.d.ts +18 -0
  101. package/js/src/src/abstract/btcbox.js +11 -0
  102. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  103. package/js/src/src/abstract/btcmarkets.js +11 -0
  104. package/js/src/src/abstract/btcturk.d.ts +23 -0
  105. package/js/src/src/abstract/btcturk.js +11 -0
  106. package/js/src/src/abstract/bybit.d.ts +316 -0
  107. package/js/src/src/abstract/bybit.js +11 -0
  108. package/js/src/src/abstract/bydfi.d.ts +11 -0
  109. package/js/src/src/abstract/bydfi.js +11 -0
  110. package/js/src/src/abstract/cafearz.d.ts +8 -0
  111. package/js/src/src/abstract/cafearz.js +11 -0
  112. package/js/src/src/abstract/cex.d.ts +35 -0
  113. package/js/src/src/abstract/cex.js +11 -0
  114. package/js/src/src/abstract/coinbase.d.ts +97 -0
  115. package/js/src/src/abstract/coinbase.js +11 -0
  116. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  117. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  118. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  119. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  120. package/js/src/src/abstract/coincatch.d.ts +97 -0
  121. package/js/src/src/abstract/coincatch.js +11 -0
  122. package/js/src/src/abstract/coincheck.d.ts +36 -0
  123. package/js/src/src/abstract/coincheck.js +11 -0
  124. package/js/src/src/abstract/coinex.d.ts +240 -0
  125. package/js/src/src/abstract/coinex.js +11 -0
  126. package/js/src/src/abstract/coinmate.d.ts +65 -0
  127. package/js/src/src/abstract/coinmate.js +11 -0
  128. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  129. package/js/src/src/abstract/coinmetro.js +11 -0
  130. package/js/src/src/abstract/coinone.d.ts +70 -0
  131. package/js/src/src/abstract/coinone.js +11 -0
  132. package/js/src/src/abstract/coinsph.d.ts +57 -0
  133. package/js/src/src/abstract/coinsph.js +11 -0
  134. package/js/src/src/abstract/coinspot.d.ts +31 -0
  135. package/js/src/src/abstract/coinspot.js +11 -0
  136. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  137. package/js/src/src/abstract/cryptocom.js +11 -0
  138. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  139. package/js/src/src/abstract/cryptomus.js +11 -0
  140. package/js/src/src/abstract/defx.d.ts +72 -0
  141. package/js/src/src/abstract/defx.js +11 -0
  142. package/js/src/src/abstract/delta.d.ts +53 -0
  143. package/js/src/src/abstract/delta.js +11 -0
  144. package/js/src/src/abstract/deribit.d.ts +129 -0
  145. package/js/src/src/abstract/deribit.js +11 -0
  146. package/js/src/src/abstract/derive.d.ts +120 -0
  147. package/js/src/src/abstract/derive.js +11 -0
  148. package/js/src/src/abstract/digifinex.d.ts +95 -0
  149. package/js/src/src/abstract/digifinex.js +11 -0
  150. package/js/src/src/abstract/ellipx.d.ts +28 -0
  151. package/js/src/src/abstract/ellipx.js +11 -0
  152. package/js/src/src/abstract/eterex.d.ts +8 -0
  153. package/js/src/src/abstract/eterex.js +11 -0
  154. package/js/src/src/abstract/excoino.d.ts +10 -0
  155. package/js/src/src/abstract/excoino.js +11 -0
  156. package/js/src/src/abstract/exir.d.ts +11 -0
  157. package/js/src/src/abstract/exir.js +11 -0
  158. package/js/src/src/abstract/exmo.d.ts +58 -0
  159. package/js/src/src/abstract/exmo.js +11 -0
  160. package/js/src/src/abstract/exnovin.d.ts +9 -0
  161. package/js/src/src/abstract/exnovin.js +11 -0
  162. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  163. package/js/src/src/abstract/farhadexchange.js +11 -0
  164. package/js/src/src/abstract/foxbit.d.ts +29 -0
  165. package/js/src/src/abstract/foxbit.js +11 -0
  166. package/js/src/src/abstract/gate.d.ts +287 -0
  167. package/js/src/src/abstract/gate.js +11 -0
  168. package/js/src/src/abstract/gemini.d.ts +62 -0
  169. package/js/src/src/abstract/gemini.js +11 -0
  170. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  171. package/js/src/src/abstract/hamtapay.js +11 -0
  172. package/js/src/src/abstract/hashkey.d.ts +70 -0
  173. package/js/src/src/abstract/hashkey.js +11 -0
  174. package/js/src/src/abstract/hibachi.d.ts +29 -0
  175. package/js/src/src/abstract/hibachi.js +11 -0
  176. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  177. package/js/src/src/abstract/hitbtc.js +11 -0
  178. package/js/src/src/abstract/hitobit.d.ts +11 -0
  179. package/js/src/src/abstract/hitobit.js +11 -0
  180. package/js/src/src/abstract/hollaex.d.ts +36 -0
  181. package/js/src/src/abstract/hollaex.js +11 -0
  182. package/js/src/src/abstract/htx.d.ts +551 -0
  183. package/js/src/src/abstract/htx.js +11 -0
  184. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  185. package/js/src/src/abstract/hyperliquid.js +11 -0
  186. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  187. package/js/src/src/abstract/independentreserve.js +11 -0
  188. package/js/src/src/abstract/indodax.d.ts +29 -0
  189. package/js/src/src/abstract/indodax.js +11 -0
  190. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  191. package/js/src/src/abstract/iranexchange.js +11 -0
  192. package/js/src/src/abstract/jibitex.d.ts +10 -0
  193. package/js/src/src/abstract/jibitex.js +11 -0
  194. package/js/src/src/abstract/kcex.d.ts +10 -0
  195. package/js/src/src/abstract/kcex.js +11 -0
  196. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  197. package/js/src/src/abstract/kifpoolme.js +11 -0
  198. package/js/src/src/abstract/kraken.d.ts +61 -0
  199. package/js/src/src/abstract/kraken.js +11 -0
  200. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  201. package/js/src/src/abstract/krakenfutures.js +11 -0
  202. package/js/src/src/abstract/kucoin.d.ts +227 -0
  203. package/js/src/src/abstract/kucoin.js +11 -0
  204. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  205. package/js/src/src/abstract/kucoinfutures.js +11 -0
  206. package/js/src/src/abstract/latoken.d.ts +59 -0
  207. package/js/src/src/abstract/latoken.js +11 -0
  208. package/js/src/src/abstract/lbank.d.ts +65 -0
  209. package/js/src/src/abstract/lbank.js +11 -0
  210. package/js/src/src/abstract/luno.d.ts +41 -0
  211. package/js/src/src/abstract/luno.js +11 -0
  212. package/js/src/src/abstract/mazdax.d.ts +11 -0
  213. package/js/src/src/abstract/mazdax.js +11 -0
  214. package/js/src/src/abstract/mercado.d.ts +28 -0
  215. package/js/src/src/abstract/mercado.js +11 -0
  216. package/js/src/src/abstract/mexc.d.ts +183 -0
  217. package/js/src/src/abstract/mexc.js +11 -0
  218. package/js/src/src/abstract/modetrade.d.ts +122 -0
  219. package/js/src/src/abstract/modetrade.js +11 -0
  220. package/js/src/src/abstract/ndax.d.ts +100 -0
  221. package/js/src/src/abstract/ndax.js +11 -0
  222. package/js/src/src/abstract/nobitex.d.ts +10 -0
  223. package/js/src/src/abstract/nobitex.js +11 -0
  224. package/js/src/src/abstract/novadax.d.ts +32 -0
  225. package/js/src/src/abstract/novadax.js +11 -0
  226. package/js/src/src/abstract/oceanex.d.ts +30 -0
  227. package/js/src/src/abstract/oceanex.js +11 -0
  228. package/js/src/src/abstract/okcoin.d.ts +77 -0
  229. package/js/src/src/abstract/okcoin.js +11 -0
  230. package/js/src/src/abstract/okexchange.d.ts +11 -0
  231. package/js/src/src/abstract/okexchange.js +11 -0
  232. package/js/src/src/abstract/okx.d.ts +352 -0
  233. package/js/src/src/abstract/okx.js +11 -0
  234. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  235. package/js/src/src/abstract/ompfinex.js +11 -0
  236. package/js/src/src/abstract/onetrading.d.ts +26 -0
  237. package/js/src/src/abstract/onetrading.js +11 -0
  238. package/js/src/src/abstract/oxfun.d.ts +37 -0
  239. package/js/src/src/abstract/oxfun.js +11 -0
  240. package/js/src/src/abstract/p2b.d.ts +25 -0
  241. package/js/src/src/abstract/p2b.js +11 -0
  242. package/js/src/src/abstract/paradex.d.ts +66 -0
  243. package/js/src/src/abstract/paradex.js +11 -0
  244. package/js/src/src/abstract/paymium.d.ts +31 -0
  245. package/js/src/src/abstract/paymium.js +11 -0
  246. package/js/src/src/abstract/phemex.d.ts +120 -0
  247. package/js/src/src/abstract/phemex.js +11 -0
  248. package/js/src/src/abstract/pingi.d.ts +9 -0
  249. package/js/src/src/abstract/pingi.js +11 -0
  250. package/js/src/src/abstract/poloniex.d.ts +108 -0
  251. package/js/src/src/abstract/poloniex.js +11 -0
  252. package/js/src/src/abstract/pooleno.d.ts +8 -0
  253. package/js/src/src/abstract/pooleno.js +11 -0
  254. package/js/src/src/abstract/probit.d.ts +26 -0
  255. package/js/src/src/abstract/probit.js +11 -0
  256. package/js/src/src/abstract/raastin.d.ts +11 -0
  257. package/js/src/src/abstract/raastin.js +11 -0
  258. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  259. package/js/src/src/abstract/ramzinex.js +11 -0
  260. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  261. package/js/src/src/abstract/sarmayex.js +11 -0
  262. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  263. package/js/src/src/abstract/sarrafex.js +11 -0
  264. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  265. package/js/src/src/abstract/tabdeal.js +11 -0
  266. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  267. package/js/src/src/abstract/tehran_exchange.js +11 -0
  268. package/js/src/src/abstract/tetherland.d.ts +8 -0
  269. package/js/src/src/abstract/tetherland.js +11 -0
  270. package/js/src/src/abstract/timex.d.ts +65 -0
  271. package/js/src/src/abstract/timex.js +11 -0
  272. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  273. package/js/src/src/abstract/tokocrypto.js +11 -0
  274. package/js/src/src/abstract/toobit.d.ts +10 -0
  275. package/js/src/src/abstract/toobit.js +11 -0
  276. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  277. package/js/src/src/abstract/tradeogre.js +11 -0
  278. package/js/src/src/abstract/twox.d.ts +8 -0
  279. package/js/src/src/abstract/twox.js +11 -0
  280. package/js/src/src/abstract/ubitex.d.ts +10 -0
  281. package/js/src/src/abstract/ubitex.js +11 -0
  282. package/js/src/src/abstract/upbit.d.ts +58 -0
  283. package/js/src/src/abstract/upbit.js +11 -0
  284. package/js/src/src/abstract/vertex.d.ts +22 -0
  285. package/js/src/src/abstract/vertex.js +11 -0
  286. package/js/src/src/abstract/wallex.d.ts +11 -0
  287. package/js/src/src/abstract/wallex.js +11 -0
  288. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  289. package/js/src/src/abstract/wavesexchange.js +11 -0
  290. package/js/src/src/abstract/whitebit.d.ts +117 -0
  291. package/js/src/src/abstract/whitebit.js +11 -0
  292. package/js/src/src/abstract/woo.d.ts +144 -0
  293. package/js/src/src/abstract/woo.js +11 -0
  294. package/js/src/src/abstract/woofipro.d.ts +122 -0
  295. package/js/src/src/abstract/woofipro.js +11 -0
  296. package/js/src/src/abstract/xt.d.ts +160 -0
  297. package/js/src/src/abstract/xt.js +11 -0
  298. package/js/src/src/abstract/yobit.d.ts +19 -0
  299. package/js/src/src/abstract/yobit.js +11 -0
  300. package/js/src/src/abstract/zaif.d.ts +41 -0
  301. package/js/src/src/abstract/zaif.js +11 -0
  302. package/js/src/src/abstract/zonda.d.ts +56 -0
  303. package/js/src/src/abstract/zonda.js +11 -0
  304. package/js/src/src/afratether.d.ts +21 -0
  305. package/js/src/src/afratether.js +356 -0
  306. package/js/src/src/alpaca.d.ts +332 -0
  307. package/js/src/src/alpaca.js +1908 -0
  308. package/js/src/src/apex.d.ts +333 -0
  309. package/js/src/src/apex.js +1942 -0
  310. package/js/src/src/arzinja.d.ts +21 -0
  311. package/js/src/src/arzinja.js +298 -0
  312. package/js/src/src/arzplus.d.ts +26 -0
  313. package/js/src/src/arzplus.js +581 -0
  314. package/js/src/src/ascendex.d.ts +424 -0
  315. package/js/src/src/ascendex.js +3699 -0
  316. package/js/src/src/asretether.d.ts +21 -0
  317. package/js/src/src/asretether.js +324 -0
  318. package/js/src/src/base/Exchange.d.ts +926 -0
  319. package/js/src/src/base/Exchange.js +7399 -0
  320. package/js/src/src/base/Precise.d.ts +42 -0
  321. package/js/src/src/base/Precise.js +275 -0
  322. package/js/src/src/base/errors.d.ts +168 -0
  323. package/js/src/src/base/errors.js +255 -0
  324. package/js/src/src/base/functions/crypto.d.ts +16 -0
  325. package/js/src/src/base/functions/crypto.js +131 -0
  326. package/js/src/src/base/functions/encode.d.ts +4 -0
  327. package/js/src/src/base/functions/encode.js +32 -0
  328. package/js/src/src/base/functions/generic.d.ts +29 -0
  329. package/js/src/src/base/functions/generic.js +203 -0
  330. package/js/src/src/base/functions/misc.d.ts +9 -0
  331. package/js/src/src/base/functions/misc.js +101 -0
  332. package/js/src/src/base/functions/number.d.ts +27 -0
  333. package/js/src/src/base/functions/number.js +313 -0
  334. package/js/src/src/base/functions/platform.d.ts +7 -0
  335. package/js/src/src/base/functions/platform.js +27 -0
  336. package/js/src/src/base/functions/rsa.d.ts +5 -0
  337. package/js/src/src/base/functions/rsa.js +49 -0
  338. package/js/src/src/base/functions/string.d.ts +7 -0
  339. package/js/src/src/base/functions/string.js +44 -0
  340. package/js/src/src/base/functions/throttle.d.ts +6 -0
  341. package/js/src/src/base/functions/throttle.js +67 -0
  342. package/js/src/src/base/functions/time.d.ts +21 -0
  343. package/js/src/src/base/functions/time.js +171 -0
  344. package/js/src/src/base/functions/totp.d.ts +3 -0
  345. package/js/src/src/base/functions/totp.js +25 -0
  346. package/js/src/src/base/functions/type.d.ts +37 -0
  347. package/js/src/src/base/functions/type.js +179 -0
  348. package/js/src/src/base/functions.d.ts +10 -0
  349. package/js/src/src/base/functions.js +18 -0
  350. package/js/src/src/base/types.d.ts +586 -0
  351. package/js/src/src/base/types.js +7 -0
  352. package/js/src/src/base/ws/Cache.d.ts +27 -0
  353. package/js/src/src/base/ws/Cache.js +260 -0
  354. package/js/src/src/base/ws/Client.d.ts +53 -0
  355. package/js/src/src/base/ws/Client.js +307 -0
  356. package/js/src/src/base/ws/Future.d.ts +8 -0
  357. package/js/src/src/base/ws/Future.js +35 -0
  358. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  359. package/js/src/src/base/ws/OrderBook.js +130 -0
  360. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  361. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  362. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  363. package/js/src/src/base/ws/WsClient.js +69 -0
  364. package/js/src/src/bequant.d.ts +4 -0
  365. package/js/src/src/bequant.js +35 -0
  366. package/js/src/src/bidarz.d.ts +16 -0
  367. package/js/src/src/bidarz.js +327 -0
  368. package/js/src/src/bigone.d.ts +296 -0
  369. package/js/src/src/bigone.js +2340 -0
  370. package/js/src/src/binance.d.ts +1667 -0
  371. package/js/src/src/binance.js +14400 -0
  372. package/js/src/src/binancecoinm.d.ts +6 -0
  373. package/js/src/src/binancecoinm.js +51 -0
  374. package/js/src/src/binanceus.d.ts +4 -0
  375. package/js/src/src/binanceus.js +225 -0
  376. package/js/src/src/binanceusdm.d.ts +6 -0
  377. package/js/src/src/binanceusdm.js +63 -0
  378. package/js/src/src/bingx.d.ts +778 -0
  379. package/js/src/src/bingx.js +6705 -0
  380. package/js/src/src/bit24.d.ts +24 -0
  381. package/js/src/src/bit24.js +520 -0
  382. package/js/src/src/bit2c.d.ts +146 -0
  383. package/js/src/src/bit2c.js +1029 -0
  384. package/js/src/src/bitbank.d.ts +181 -0
  385. package/js/src/src/bitbank.js +1146 -0
  386. package/js/src/src/bitbarg.d.ts +21 -0
  387. package/js/src/src/bitbarg.js +312 -0
  388. package/js/src/src/bitbns.d.ts +184 -0
  389. package/js/src/src/bitbns.js +1288 -0
  390. package/js/src/src/bitfinex.d.ts +516 -0
  391. package/js/src/src/bitfinex.js +3951 -0
  392. package/js/src/src/bitflyer.d.ts +229 -0
  393. package/js/src/src/bitflyer.js +1209 -0
  394. package/js/src/src/bitget.d.ts +1109 -0
  395. package/js/src/src/bitget.js +11033 -0
  396. package/js/src/src/bithumb.d.ts +165 -0
  397. package/js/src/src/bithumb.js +1257 -0
  398. package/js/src/src/bitimen.d.ts +23 -0
  399. package/js/src/src/bitimen.js +424 -0
  400. package/js/src/src/bitir.d.ts +23 -0
  401. package/js/src/src/bitir.js +521 -0
  402. package/js/src/src/bitmart.d.ts +736 -0
  403. package/js/src/src/bitmart.js +5639 -0
  404. package/js/src/src/bitmex.d.ts +395 -0
  405. package/js/src/src/bitmex.js +3088 -0
  406. package/js/src/src/bitopro.d.ts +295 -0
  407. package/js/src/src/bitopro.js +1892 -0
  408. package/js/src/src/bitpin.d.ts +23 -0
  409. package/js/src/src/bitpin.js +487 -0
  410. package/js/src/src/bitrue.d.ts +384 -0
  411. package/js/src/src/bitrue.js +3382 -0
  412. package/js/src/src/bitso.d.ts +270 -0
  413. package/js/src/src/bitso.js +1881 -0
  414. package/js/src/src/bitstamp.d.ts +355 -0
  415. package/js/src/src/bitstamp.js +2445 -0
  416. package/js/src/src/bitteam.d.ts +229 -0
  417. package/js/src/src/bitteam.js +2420 -0
  418. package/js/src/src/bittrade.d.ts +298 -0
  419. package/js/src/src/bittrade.js +2050 -0
  420. package/js/src/src/bitunix.d.ts +21 -0
  421. package/js/src/src/bitunix.js +326 -0
  422. package/js/src/src/bitvavo.d.ts +311 -0
  423. package/js/src/src/bitvavo.js +2204 -0
  424. package/js/src/src/blockchaincom.d.ts +256 -0
  425. package/js/src/src/blockchaincom.js +1259 -0
  426. package/js/src/src/blofin.d.ts +439 -0
  427. package/js/src/src/blofin.js +2576 -0
  428. package/js/src/src/btcalpha.d.ts +209 -0
  429. package/js/src/src/btcalpha.js +1056 -0
  430. package/js/src/src/btcbox.d.ts +144 -0
  431. package/js/src/src/btcbox.js +834 -0
  432. package/js/src/src/btcmarkets.d.ts +253 -0
  433. package/js/src/src/btcmarkets.js +1418 -0
  434. package/js/src/src/btcturk.d.ts +161 -0
  435. package/js/src/src/btcturk.js +1058 -0
  436. package/js/src/src/bybit.d.ts +1097 -0
  437. package/js/src/src/bybit.js +9382 -0
  438. package/js/src/src/bydfi.d.ts +23 -0
  439. package/js/src/src/bydfi.js +434 -0
  440. package/js/src/src/cafearz.d.ts +21 -0
  441. package/js/src/src/cafearz.js +346 -0
  442. package/js/src/src/cex.d.ts +286 -0
  443. package/js/src/src/cex.js +1799 -0
  444. package/js/src/src/coinbase.d.ts +623 -0
  445. package/js/src/src/coinbase.js +5220 -0
  446. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  447. package/js/src/src/coinbaseadvanced.js +18 -0
  448. package/js/src/src/coinbaseexchange.d.ts +334 -0
  449. package/js/src/src/coinbaseexchange.js +2127 -0
  450. package/js/src/src/coinbaseinternational.d.ts +443 -0
  451. package/js/src/src/coinbaseinternational.js +2336 -0
  452. package/js/src/src/coincatch.d.ts +786 -0
  453. package/js/src/src/coincatch.js +5492 -0
  454. package/js/src/src/coincheck.d.ts +147 -0
  455. package/js/src/src/coincheck.js +962 -0
  456. package/js/src/src/coinex.d.ts +719 -0
  457. package/js/src/src/coinex.js +6166 -0
  458. package/js/src/src/coinmate.d.ts +202 -0
  459. package/js/src/src/coinmate.js +1215 -0
  460. package/js/src/src/coinmetro.d.ts +244 -0
  461. package/js/src/src/coinmetro.js +2024 -0
  462. package/js/src/src/coinone.d.ts +158 -0
  463. package/js/src/src/coinone.js +1278 -0
  464. package/js/src/src/coinsph.d.ts +310 -0
  465. package/js/src/src/coinsph.js +2203 -0
  466. package/js/src/src/coinspot.d.ts +108 -0
  467. package/js/src/src/coinspot.js +653 -0
  468. package/js/src/src/cryptocom.d.ts +463 -0
  469. package/js/src/src/cryptocom.js +3549 -0
  470. package/js/src/src/cryptomus.d.ts +158 -0
  471. package/js/src/src/cryptomus.js +1169 -0
  472. package/js/src/src/defx.d.ts +348 -0
  473. package/js/src/src/defx.js +2139 -0
  474. package/js/src/src/delta.d.ts +407 -0
  475. package/js/src/src/delta.js +3654 -0
  476. package/js/src/src/deribit.d.ts +516 -0
  477. package/js/src/src/deribit.js +3790 -0
  478. package/js/src/src/derive.d.ts +324 -0
  479. package/js/src/src/derive.js +2655 -0
  480. package/js/src/src/digifinex.d.ts +544 -0
  481. package/js/src/src/digifinex.js +4453 -0
  482. package/js/src/src/ellipx.d.ts +237 -0
  483. package/js/src/src/ellipx.js +2071 -0
  484. package/js/src/src/eterex.d.ts +21 -0
  485. package/js/src/src/eterex.js +299 -0
  486. package/js/src/src/excoino.d.ts +23 -0
  487. package/js/src/src/excoino.js +426 -0
  488. package/js/src/src/exir.d.ts +23 -0
  489. package/js/src/src/exir.js +403 -0
  490. package/js/src/src/exmo.d.ts +426 -0
  491. package/js/src/src/exmo.js +2825 -0
  492. package/js/src/src/exnovin.d.ts +22 -0
  493. package/js/src/src/exnovin.js +378 -0
  494. package/js/src/src/farhadexchange.d.ts +21 -0
  495. package/js/src/src/farhadexchange.js +280 -0
  496. package/js/src/src/fmfwio.d.ts +4 -0
  497. package/js/src/src/fmfwio.js +35 -0
  498. package/js/src/src/foxbit.d.ts +352 -0
  499. package/js/src/src/foxbit.js +2016 -0
  500. package/js/src/src/gate.d.ts +1071 -0
  501. package/js/src/src/gate.js +8282 -0
  502. package/js/src/src/gateio.d.ts +4 -0
  503. package/js/src/src/gateio.js +17 -0
  504. package/js/src/src/gemini.d.ts +257 -0
  505. package/js/src/src/gemini.js +2006 -0
  506. package/js/src/src/hamtapay.d.ts +21 -0
  507. package/js/src/src/hamtapay.js +303 -0
  508. package/js/src/src/hashkey.d.ts +628 -0
  509. package/js/src/src/hashkey.js +4363 -0
  510. package/js/src/src/hibachi.d.ts +346 -0
  511. package/js/src/src/hibachi.js +2137 -0
  512. package/js/src/src/hitbtc.d.ts +558 -0
  513. package/js/src/src/hitbtc.js +3847 -0
  514. package/js/src/src/hitobit.d.ts +23 -0
  515. package/js/src/src/hitobit.js +412 -0
  516. package/js/src/src/hollaex.d.ts +305 -0
  517. package/js/src/src/hollaex.js +2046 -0
  518. package/js/src/src/htx.d.ts +961 -0
  519. package/js/src/src/htx.js +9668 -0
  520. package/js/src/src/huobi.d.ts +4 -0
  521. package/js/src/src/huobi.js +17 -0
  522. package/js/src/src/hyperliquid.d.ts +651 -0
  523. package/js/src/src/hyperliquid.js +3937 -0
  524. package/js/src/src/independentreserve.d.ts +169 -0
  525. package/js/src/src/independentreserve.js +1115 -0
  526. package/js/src/src/indodax.d.ts +217 -0
  527. package/js/src/src/indodax.js +1454 -0
  528. package/js/src/src/iranexchange.d.ts +21 -0
  529. package/js/src/src/iranexchange.js +399 -0
  530. package/js/src/src/jibitex.d.ts +23 -0
  531. package/js/src/src/jibitex.js +416 -0
  532. package/js/src/src/kcex.d.ts +21 -0
  533. package/js/src/src/kcex.js +335 -0
  534. package/js/src/src/kifpoolme.d.ts +23 -0
  535. package/js/src/src/kifpoolme.js +410 -0
  536. package/js/src/src/kraken.d.ts +484 -0
  537. package/js/src/src/kraken.js +3518 -0
  538. package/js/src/src/krakenfutures.d.ts +362 -0
  539. package/js/src/src/krakenfutures.js +2885 -0
  540. package/js/src/src/kucoin.d.ts +759 -0
  541. package/js/src/src/kucoin.js +5153 -0
  542. package/js/src/src/kucoinfutures.d.ts +521 -0
  543. package/js/src/src/kucoinfutures.js +3381 -0
  544. package/js/src/src/latoken.d.ts +274 -0
  545. package/js/src/src/latoken.js +1824 -0
  546. package/js/src/src/lbank.d.ts +350 -0
  547. package/js/src/src/lbank.js +3146 -0
  548. package/js/src/src/luno.d.ts +252 -0
  549. package/js/src/src/luno.js +1479 -0
  550. package/js/src/src/mazdax.d.ts +23 -0
  551. package/js/src/src/mazdax.js +534 -0
  552. package/js/src/src/mercado.d.ts +160 -0
  553. package/js/src/src/mercado.js +1011 -0
  554. package/js/src/src/mexc.d.ts +768 -0
  555. package/js/src/src/mexc.js +6102 -0
  556. package/js/src/src/modetrade.d.ts +496 -0
  557. package/js/src/src/modetrade.js +2936 -0
  558. package/js/src/src/myokx.d.ts +4 -0
  559. package/js/src/src/myokx.js +54 -0
  560. package/js/src/src/ndax.d.ts +285 -0
  561. package/js/src/src/ndax.js +2598 -0
  562. package/js/src/src/nobitex.d.ts +23 -0
  563. package/js/src/src/nobitex.js +454 -0
  564. package/js/src/src/novadax.d.ts +279 -0
  565. package/js/src/src/novadax.js +1676 -0
  566. package/js/src/src/oceanex.d.ts +231 -0
  567. package/js/src/src/oceanex.js +1123 -0
  568. package/js/src/src/okcoin.d.ts +346 -0
  569. package/js/src/src/okcoin.js +3211 -0
  570. package/js/src/src/okexchange.d.ts +23 -0
  571. package/js/src/src/okexchange.js +373 -0
  572. package/js/src/src/okx.d.ts +1125 -0
  573. package/js/src/src/okx.js +9009 -0
  574. package/js/src/src/okxus.d.ts +4 -0
  575. package/js/src/src/okxus.js +54 -0
  576. package/js/src/src/ompfinex.d.ts +23 -0
  577. package/js/src/src/ompfinex.js +510 -0
  578. package/js/src/src/onetrading.d.ts +228 -0
  579. package/js/src/src/onetrading.js +1769 -0
  580. package/js/src/src/oxfun.d.ts +442 -0
  581. package/js/src/src/oxfun.js +2920 -0
  582. package/js/src/src/p2b.d.ts +189 -0
  583. package/js/src/src/p2b.js +1344 -0
  584. package/js/src/src/paradex.d.ts +389 -0
  585. package/js/src/src/paradex.js +2607 -0
  586. package/js/src/src/paymium.d.ts +133 -0
  587. package/js/src/src/paymium.js +644 -0
  588. package/js/src/src/phemex.d.ts +497 -0
  589. package/js/src/src/phemex.js +5333 -0
  590. package/js/src/src/pingi.d.ts +22 -0
  591. package/js/src/src/pingi.js +446 -0
  592. package/js/src/src/poloniex.d.ts +441 -0
  593. package/js/src/src/poloniex.js +3681 -0
  594. package/js/src/src/pooleno.d.ts +21 -0
  595. package/js/src/src/pooleno.js +347 -0
  596. package/js/src/src/pro/alpaca.d.ts +95 -0
  597. package/js/src/src/pro/alpaca.js +724 -0
  598. package/js/src/src/pro/apex.d.ts +160 -0
  599. package/js/src/src/pro/apex.js +1044 -0
  600. package/js/src/src/pro/ascendex.d.ts +99 -0
  601. package/js/src/src/pro/ascendex.js +1012 -0
  602. package/js/src/src/pro/bequant.d.ts +4 -0
  603. package/js/src/src/pro/bequant.js +42 -0
  604. package/js/src/src/pro/binance.d.ts +796 -0
  605. package/js/src/src/pro/binance.js +4373 -0
  606. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  607. package/js/src/src/pro/binancecoinm.js +32 -0
  608. package/js/src/src/pro/binanceus.d.ts +4 -0
  609. package/js/src/src/pro/binanceus.js +52 -0
  610. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  611. package/js/src/src/pro/binanceusdm.js +37 -0
  612. package/js/src/src/pro/bingx.d.ts +151 -0
  613. package/js/src/src/pro/bingx.js +1568 -0
  614. package/js/src/src/pro/bitfinex.d.ts +99 -0
  615. package/js/src/src/pro/bitfinex.js +1165 -0
  616. package/js/src/src/pro/bitget.d.ts +257 -0
  617. package/js/src/src/pro/bitget.js +2327 -0
  618. package/js/src/src/pro/bithumb.d.ts +59 -0
  619. package/js/src/src/pro/bithumb.js +395 -0
  620. package/js/src/src/pro/bitmart.d.ts +168 -0
  621. package/js/src/src/pro/bitmart.js +1686 -0
  622. package/js/src/src/pro/bitmex.d.ts +170 -0
  623. package/js/src/src/pro/bitmex.js +1760 -0
  624. package/js/src/src/pro/bitopro.d.ts +69 -0
  625. package/js/src/src/pro/bitopro.js +477 -0
  626. package/js/src/src/pro/bitrue.d.ts +40 -0
  627. package/js/src/src/pro/bitrue.js +461 -0
  628. package/js/src/src/pro/bitstamp.d.ts +53 -0
  629. package/js/src/src/pro/bitstamp.js +587 -0
  630. package/js/src/src/pro/bittrade.d.ts +66 -0
  631. package/js/src/src/pro/bittrade.js +606 -0
  632. package/js/src/src/pro/bitvavo.d.ts +321 -0
  633. package/js/src/src/pro/bitvavo.js +1451 -0
  634. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  635. package/js/src/src/pro/blockchaincom.js +777 -0
  636. package/js/src/src/pro/blofin.d.ts +174 -0
  637. package/js/src/src/pro/blofin.js +743 -0
  638. package/js/src/src/pro/bybit.d.ts +397 -0
  639. package/js/src/src/pro/bybit.js +2519 -0
  640. package/js/src/src/pro/cex.d.ts +220 -0
  641. package/js/src/src/pro/cex.js +1535 -0
  642. package/js/src/src/pro/coinbase.d.ts +119 -0
  643. package/js/src/src/pro/coinbase.js +736 -0
  644. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  645. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  646. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  647. package/js/src/src/pro/coinbaseexchange.js +969 -0
  648. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  649. package/js/src/src/pro/coinbaseinternational.js +804 -0
  650. package/js/src/src/pro/coincatch.d.ts +207 -0
  651. package/js/src/src/pro/coincatch.js +1562 -0
  652. package/js/src/src/pro/coincheck.d.ts +33 -0
  653. package/js/src/src/pro/coincheck.js +210 -0
  654. package/js/src/src/pro/coinex.d.ts +147 -0
  655. package/js/src/src/pro/coinex.js +1426 -0
  656. package/js/src/src/pro/coinone.d.ts +51 -0
  657. package/js/src/src/pro/coinone.js +413 -0
  658. package/js/src/src/pro/cryptocom.d.ts +300 -0
  659. package/js/src/src/pro/cryptocom.js +1414 -0
  660. package/js/src/src/pro/defx.d.ts +236 -0
  661. package/js/src/src/pro/defx.js +865 -0
  662. package/js/src/src/pro/deribit.d.ts +163 -0
  663. package/js/src/src/pro/deribit.js +1066 -0
  664. package/js/src/src/pro/derive.d.ts +100 -0
  665. package/js/src/src/pro/derive.js +753 -0
  666. package/js/src/src/pro/exmo.d.ts +97 -0
  667. package/js/src/src/pro/exmo.js +903 -0
  668. package/js/src/src/pro/gate.d.ts +360 -0
  669. package/js/src/src/pro/gate.js +2119 -0
  670. package/js/src/src/pro/gateio.d.ts +4 -0
  671. package/js/src/src/pro/gateio.js +17 -0
  672. package/js/src/src/pro/gemini.d.ts +106 -0
  673. package/js/src/src/pro/gemini.js +932 -0
  674. package/js/src/src/pro/hashkey.d.ts +121 -0
  675. package/js/src/src/pro/hashkey.js +843 -0
  676. package/js/src/src/pro/hitbtc.d.ts +235 -0
  677. package/js/src/src/pro/hitbtc.js +1400 -0
  678. package/js/src/src/pro/hollaex.d.ts +77 -0
  679. package/js/src/src/pro/hollaex.js +604 -0
  680. package/js/src/src/pro/htx.d.ts +141 -0
  681. package/js/src/src/pro/htx.js +2415 -0
  682. package/js/src/src/pro/huobi.d.ts +4 -0
  683. package/js/src/src/pro/huobi.js +17 -0
  684. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  685. package/js/src/src/pro/hyperliquid.js +1126 -0
  686. package/js/src/src/pro/independentreserve.d.ts +36 -0
  687. package/js/src/src/pro/independentreserve.js +287 -0
  688. package/js/src/src/pro/kraken.d.ts +233 -0
  689. package/js/src/src/pro/kraken.js +1785 -0
  690. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  691. package/js/src/src/pro/krakenfutures.js +1592 -0
  692. package/js/src/src/pro/kucoin.d.ts +221 -0
  693. package/js/src/src/pro/kucoin.js +1430 -0
  694. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  695. package/js/src/src/pro/kucoinfutures.js +1295 -0
  696. package/js/src/src/pro/lbank.d.ts +134 -0
  697. package/js/src/src/pro/lbank.js +950 -0
  698. package/js/src/src/pro/luno.d.ts +44 -0
  699. package/js/src/src/pro/luno.js +322 -0
  700. package/js/src/src/pro/mexc.d.ts +210 -0
  701. package/js/src/src/pro/mexc.js +2009 -0
  702. package/js/src/src/pro/modetrade.d.ts +155 -0
  703. package/js/src/src/pro/modetrade.js +1335 -0
  704. package/js/src/src/pro/myokx.d.ts +4 -0
  705. package/js/src/src/pro/myokx.js +39 -0
  706. package/js/src/src/pro/ndax.d.ts +60 -0
  707. package/js/src/src/pro/ndax.js +545 -0
  708. package/js/src/src/pro/okcoin.d.ts +91 -0
  709. package/js/src/src/pro/okcoin.js +763 -0
  710. package/js/src/src/pro/okx.d.ts +408 -0
  711. package/js/src/src/pro/okx.js +2479 -0
  712. package/js/src/src/pro/okxus.d.ts +4 -0
  713. package/js/src/src/pro/okxus.js +39 -0
  714. package/js/src/src/pro/onetrading.d.ts +107 -0
  715. package/js/src/src/pro/onetrading.js +1343 -0
  716. package/js/src/src/pro/oxfun.d.ts +234 -0
  717. package/js/src/src/pro/oxfun.js +1112 -0
  718. package/js/src/src/pro/p2b.d.ts +104 -0
  719. package/js/src/src/pro/p2b.js +506 -0
  720. package/js/src/src/pro/paradex.d.ts +54 -0
  721. package/js/src/src/pro/paradex.js +370 -0
  722. package/js/src/src/pro/phemex.d.ts +129 -0
  723. package/js/src/src/pro/phemex.js +1569 -0
  724. package/js/src/src/pro/poloniex.d.ts +214 -0
  725. package/js/src/src/pro/poloniex.js +1318 -0
  726. package/js/src/src/pro/probit.d.ts +91 -0
  727. package/js/src/src/pro/probit.js +593 -0
  728. package/js/src/src/pro/tradeogre.d.ts +49 -0
  729. package/js/src/src/pro/tradeogre.js +284 -0
  730. package/js/src/src/pro/upbit.d.ts +124 -0
  731. package/js/src/src/pro/upbit.js +689 -0
  732. package/js/src/src/pro/vertex.d.ts +104 -0
  733. package/js/src/src/pro/vertex.js +999 -0
  734. package/js/src/src/pro/whitebit.d.ts +123 -0
  735. package/js/src/src/pro/whitebit.js +971 -0
  736. package/js/src/src/pro/woo.d.ts +161 -0
  737. package/js/src/src/pro/woo.js +1351 -0
  738. package/js/src/src/pro/woofipro.d.ts +155 -0
  739. package/js/src/src/pro/woofipro.js +1335 -0
  740. package/js/src/src/pro/xt.d.ts +165 -0
  741. package/js/src/src/pro/xt.js +1230 -0
  742. package/js/src/src/probit.d.ts +283 -0
  743. package/js/src/src/probit.js +1935 -0
  744. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  745. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  746. package/js/src/src/raastin.d.ts +24 -0
  747. package/js/src/src/raastin.js +494 -0
  748. package/js/src/src/ramzinex.d.ts +23 -0
  749. package/js/src/src/ramzinex.js +510 -0
  750. package/js/src/src/sarmayex.d.ts +21 -0
  751. package/js/src/src/sarmayex.js +376 -0
  752. package/js/src/src/sarrafex.d.ts +23 -0
  753. package/js/src/src/sarrafex.js +501 -0
  754. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  756. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  758. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  760. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  762. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  764. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  766. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  768. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  770. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  772. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  774. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  778. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  780. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  782. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  784. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  786. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  788. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  790. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  792. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  794. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  796. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  797. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  798. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  799. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  800. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  801. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  802. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  806. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  808. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  810. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  812. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  814. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  816. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  818. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  820. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  826. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  828. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  830. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  832. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  833. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  834. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  860. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  878. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  880. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  882. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  884. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  890. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  892. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  894. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  896. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  904. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  906. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  910. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  912. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  916. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  917. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  918. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  919. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  920. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  921. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  922. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  923. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  924. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  925. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  926. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  927. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  928. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  930. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  931. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  932. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  933. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  934. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  938. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  940. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  950. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  952. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  954. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  994. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  996. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1010. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1012. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1014. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1016. package/js/src/src/tabdeal.d.ts +23 -0
  1017. package/js/src/src/tabdeal.js +387 -0
  1018. package/js/src/src/tehran_exchange.d.ts +21 -0
  1019. package/js/src/src/tehran_exchange.js +333 -0
  1020. package/js/src/src/tetherland.d.ts +21 -0
  1021. package/js/src/src/tetherland.js +367 -0
  1022. package/js/src/src/timex.d.ts +247 -0
  1023. package/js/src/src/timex.js +1792 -0
  1024. package/js/src/src/tokocrypto.d.ts +261 -0
  1025. package/js/src/src/tokocrypto.js +2641 -0
  1026. package/js/src/src/toobit.d.ts +22 -0
  1027. package/js/src/src/toobit.js +445 -0
  1028. package/js/src/src/tradeogre.d.ts +149 -0
  1029. package/js/src/src/tradeogre.js +878 -0
  1030. package/js/src/src/twox.d.ts +21 -0
  1031. package/js/src/src/twox.js +371 -0
  1032. package/js/src/src/ubitex.d.ts +23 -0
  1033. package/js/src/src/ubitex.js +433 -0
  1034. package/js/src/src/upbit.d.ts +377 -0
  1035. package/js/src/src/upbit.js +2340 -0
  1036. package/js/src/src/vertex.d.ts +346 -0
  1037. package/js/src/src/vertex.js +3146 -0
  1038. package/js/src/src/wallex.d.ts +23 -0
  1039. package/js/src/src/wallex.js +467 -0
  1040. package/js/src/src/wavesexchange.d.ts +244 -0
  1041. package/js/src/src/wavesexchange.js +2747 -0
  1042. package/js/src/src/whitebit.d.ts +571 -0
  1043. package/js/src/src/whitebit.js +3437 -0
  1044. package/js/src/src/woo.d.ts +727 -0
  1045. package/js/src/src/woo.js +4183 -0
  1046. package/js/src/src/woofipro.d.ts +497 -0
  1047. package/js/src/src/woofipro.js +2941 -0
  1048. package/js/src/src/xt.d.ts +568 -0
  1049. package/js/src/src/xt.js +5184 -0
  1050. package/js/src/src/yobit.d.ts +197 -0
  1051. package/js/src/src/yobit.js +1453 -0
  1052. package/js/src/src/zaif.d.ts +136 -0
  1053. package/js/src/src/zaif.js +821 -0
  1054. package/js/src/src/zonda.d.ts +214 -0
  1055. package/js/src/src/zonda.js +1984 -0
  1056. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  1057. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
  1058. package/js/test.js +9 -17
  1059. package/package.json +1 -1
@@ -0,0 +1,1799 @@
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/cex.js';
9
+ import { ExchangeError, ArgumentsRequired, NullResponse, PermissionDenied, InsufficientFunds, BadRequest, AuthenticationError } from './base/errors.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { TICK_SIZE } from './base/functions/number.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * @class cex
16
+ * @augments Exchange
17
+ */
18
+ export default class cex extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'cex',
22
+ 'name': 'CEX.IO',
23
+ 'countries': ['GB', 'EU', 'CY', 'RU'],
24
+ 'rateLimit': 300,
25
+ 'pro': true,
26
+ 'has': {
27
+ 'CORS': undefined,
28
+ 'spot': true,
29
+ 'margin': false,
30
+ 'swap': false,
31
+ 'future': false,
32
+ 'option': false,
33
+ 'addMargin': false,
34
+ 'borrowCrossMargin': false,
35
+ 'borrowIsolatedMargin': false,
36
+ 'borrowMargin': false,
37
+ 'cancelAllOrders': true,
38
+ 'cancelOrder': true,
39
+ 'closeAllPositions': false,
40
+ 'closePosition': false,
41
+ 'createOrder': true,
42
+ 'createOrderWithTakeProfitAndStopLoss': false,
43
+ 'createOrderWithTakeProfitAndStopLossWs': false,
44
+ 'createPostOnlyOrder': false,
45
+ 'createReduceOnlyOrder': false,
46
+ 'createStopOrder': true,
47
+ 'createTriggerOrder': true,
48
+ 'fetchAccounts': true,
49
+ 'fetchBalance': true,
50
+ 'fetchBorrowInterest': false,
51
+ 'fetchBorrowRate': false,
52
+ 'fetchBorrowRateHistories': false,
53
+ 'fetchBorrowRateHistory': false,
54
+ 'fetchBorrowRates': false,
55
+ 'fetchBorrowRatesPerSymbol': false,
56
+ 'fetchClosedOrder': true,
57
+ 'fetchClosedOrders': true,
58
+ 'fetchCrossBorrowRate': false,
59
+ 'fetchCrossBorrowRates': false,
60
+ 'fetchCurrencies': true,
61
+ 'fetchDepositAddress': true,
62
+ 'fetchDepositsWithdrawals': true,
63
+ 'fetchFundingHistory': false,
64
+ 'fetchFundingInterval': false,
65
+ 'fetchFundingIntervals': false,
66
+ 'fetchFundingRate': false,
67
+ 'fetchFundingRateHistory': false,
68
+ 'fetchFundingRates': false,
69
+ 'fetchGreeks': false,
70
+ 'fetchIndexOHLCV': false,
71
+ 'fetchIsolatedBorrowRate': false,
72
+ 'fetchIsolatedBorrowRates': false,
73
+ 'fetchIsolatedPositions': false,
74
+ 'fetchLedger': true,
75
+ 'fetchLeverage': false,
76
+ 'fetchLeverages': false,
77
+ 'fetchLeverageTiers': false,
78
+ 'fetchLiquidations': false,
79
+ 'fetchLongShortRatio': false,
80
+ 'fetchLongShortRatioHistory': false,
81
+ 'fetchMarginAdjustmentHistory': false,
82
+ 'fetchMarginMode': false,
83
+ 'fetchMarginModes': false,
84
+ 'fetchMarketLeverageTiers': false,
85
+ 'fetchMarkets': true,
86
+ 'fetchMarkOHLCV': false,
87
+ 'fetchMarkPrices': false,
88
+ 'fetchMyLiquidations': false,
89
+ 'fetchMySettlementHistory': false,
90
+ 'fetchOHLCV': true,
91
+ 'fetchOpenInterest': false,
92
+ 'fetchOpenInterestHistory': false,
93
+ 'fetchOpenInterests': false,
94
+ 'fetchOpenOrder': true,
95
+ 'fetchOpenOrders': true,
96
+ 'fetchOption': false,
97
+ 'fetchOptionChain': false,
98
+ 'fetchOrderBook': true,
99
+ 'fetchPosition': false,
100
+ 'fetchPositionHistory': false,
101
+ 'fetchPositionMode': false,
102
+ 'fetchPositions': false,
103
+ 'fetchPositionsForSymbol': false,
104
+ 'fetchPositionsHistory': false,
105
+ 'fetchPositionsRisk': false,
106
+ 'fetchPremiumIndexOHLCV': false,
107
+ 'fetchSettlementHistory': false,
108
+ 'fetchTicker': true,
109
+ 'fetchTickers': true,
110
+ 'fetchTime': true,
111
+ 'fetchTrades': true,
112
+ 'fetchTradingFees': true,
113
+ 'fetchVolatilityHistory': false,
114
+ 'reduceMargin': false,
115
+ 'repayCrossMargin': false,
116
+ 'repayIsolatedMargin': false,
117
+ 'repayMargin': false,
118
+ 'setLeverage': false,
119
+ 'setMargin': false,
120
+ 'setMarginMode': false,
121
+ 'setPositionMode': false,
122
+ 'transfer': true,
123
+ },
124
+ 'urls': {
125
+ 'logo': 'https://user-images.githubusercontent.com/1294454/27766442-8ddc33b0-5ed8-11e7-8b98-f786aef0f3c9.jpg',
126
+ 'api': {
127
+ 'public': 'https://trade.cex.io/api/spot/rest-public',
128
+ 'private': 'https://trade.cex.io/api/spot/rest',
129
+ },
130
+ 'www': 'https://cex.io',
131
+ 'doc': 'https://trade.cex.io/docs/',
132
+ 'fees': [
133
+ 'https://cex.io/fee-schedule',
134
+ 'https://cex.io/limits-commissions',
135
+ ],
136
+ 'referral': 'https://cex.io/r/0/up105393824/0/',
137
+ },
138
+ 'api': {
139
+ 'public': {
140
+ 'get': {},
141
+ 'post': {
142
+ 'get_server_time': 1,
143
+ 'get_pairs_info': 1,
144
+ 'get_currencies_info': 1,
145
+ 'get_processing_info': 10,
146
+ 'get_ticker': 1,
147
+ 'get_trade_history': 1,
148
+ 'get_order_book': 1,
149
+ 'get_candles': 1,
150
+ },
151
+ },
152
+ 'private': {
153
+ 'get': {},
154
+ 'post': {
155
+ 'get_my_current_fee': 5,
156
+ 'get_fee_strategy': 1,
157
+ 'get_my_volume': 5,
158
+ 'do_create_account': 1,
159
+ 'get_my_account_status_v3': 5,
160
+ 'get_my_wallet_balance': 5,
161
+ 'get_my_orders': 5,
162
+ 'do_my_new_order': 1,
163
+ 'do_cancel_my_order': 1,
164
+ 'do_cancel_all_orders': 5,
165
+ 'get_order_book': 1,
166
+ 'get_candles': 1,
167
+ 'get_trade_history': 1,
168
+ 'get_my_transaction_history': 1,
169
+ 'get_my_funding_history': 5,
170
+ 'do_my_internal_transfer': 1,
171
+ 'get_processing_info': 10,
172
+ 'get_deposit_address': 5,
173
+ 'do_deposit_funds_from_wallet': 1,
174
+ 'do_withdrawal_funds_to_wallet': 1,
175
+ },
176
+ },
177
+ },
178
+ 'features': {
179
+ 'spot': {
180
+ 'sandbox': false,
181
+ 'createOrder': {
182
+ 'marginMode': false,
183
+ 'triggerPrice': true,
184
+ 'triggerPriceType': undefined,
185
+ 'triggerDirection': false,
186
+ 'stopLossPrice': false,
187
+ 'takeProfitPrice': false,
188
+ 'attachedStopLossTakeProfit': undefined,
189
+ 'timeInForce': {
190
+ 'IOC': true,
191
+ 'FOK': true,
192
+ 'PO': false,
193
+ 'GTD': true,
194
+ },
195
+ 'hedged': false,
196
+ 'leverage': false,
197
+ 'marketBuyRequiresPrice': false,
198
+ 'marketBuyByCost': true,
199
+ 'selfTradePrevention': false,
200
+ 'trailing': false,
201
+ 'iceberg': false,
202
+ },
203
+ 'createOrders': undefined,
204
+ 'fetchMyTrades': undefined,
205
+ 'fetchOrder': undefined,
206
+ 'fetchOpenOrders': {
207
+ 'marginMode': false,
208
+ 'limit': 1000,
209
+ 'trigger': false,
210
+ 'trailing': false,
211
+ 'symbolRequired': false,
212
+ },
213
+ 'fetchOrders': undefined,
214
+ 'fetchClosedOrders': {
215
+ 'marginMode': false,
216
+ 'limit': 1000,
217
+ 'daysBack': 100000,
218
+ 'daysBackCanceled': 1,
219
+ 'untilDays': 100000,
220
+ 'trigger': false,
221
+ 'trailing': false,
222
+ 'symbolRequired': false,
223
+ },
224
+ 'fetchOHLCV': {
225
+ 'limit': 1000,
226
+ },
227
+ },
228
+ 'swap': {
229
+ 'linear': undefined,
230
+ 'inverse': undefined,
231
+ },
232
+ 'future': {
233
+ 'linear': undefined,
234
+ 'inverse': undefined,
235
+ },
236
+ },
237
+ 'precisionMode': TICK_SIZE,
238
+ 'exceptions': {
239
+ 'exact': {},
240
+ 'broad': {
241
+ 'You have negative balance on following accounts': InsufficientFunds,
242
+ 'Mandatory parameter side should be one of BUY,SELL': BadRequest,
243
+ 'API orders from Main account are not allowed': BadRequest,
244
+ 'check failed': BadRequest,
245
+ 'Insufficient funds': InsufficientFunds,
246
+ 'Get deposit address for main account is not allowed': PermissionDenied,
247
+ 'Market Trigger orders are not allowed': BadRequest,
248
+ 'key not passed or incorrect': AuthenticationError,
249
+ },
250
+ },
251
+ 'timeframes': {
252
+ '1m': '1m',
253
+ '5m': '5m',
254
+ '15m': '15m',
255
+ '30m': '30m',
256
+ '1h': '1h',
257
+ '2h': '2h',
258
+ '4h': '4h',
259
+ '1d': '1d',
260
+ },
261
+ 'options': {
262
+ 'networks': {
263
+ 'BTC': 'bitcoin',
264
+ 'ERC20': 'ERC20',
265
+ 'BSC20': 'binancesmartchain',
266
+ 'DOGE': 'dogecoin',
267
+ 'ALGO': 'algorand',
268
+ 'XLM': 'stellar',
269
+ 'ATOM': 'cosmos',
270
+ 'LTC': 'litecoin',
271
+ 'XRP': 'ripple',
272
+ 'FTM': 'fantom',
273
+ 'MINA': 'mina',
274
+ 'THETA': 'theta',
275
+ 'XTZ': 'tezos',
276
+ 'TIA': 'celestia',
277
+ 'CRONOS': 'cronos',
278
+ 'MATIC': 'polygon',
279
+ 'TON': 'ton',
280
+ 'TRC20': 'tron',
281
+ 'SOLANA': 'solana',
282
+ 'SGB': 'songbird',
283
+ 'DYDX': 'dydx',
284
+ 'DASH': 'dash',
285
+ 'ZIL': 'zilliqa',
286
+ 'EOS': 'eos',
287
+ 'AVALANCHEC': 'avalanche',
288
+ 'ETHPOW': 'ethereumpow',
289
+ 'NEAR': 'near',
290
+ 'ARB': 'arbitrum',
291
+ 'DOT': 'polkadot',
292
+ 'OPT': 'optimism',
293
+ 'INJ': 'injective',
294
+ 'ADA': 'cardano',
295
+ 'ONT': 'ontology',
296
+ 'ICP': 'icp',
297
+ 'KAVA': 'kava',
298
+ 'KSM': 'kusama',
299
+ 'SEI': 'sei',
300
+ // 'OSM': 'osmosis',
301
+ 'NEO': 'neo',
302
+ 'NEO3': 'neo3',
303
+ // 'TERRAOLD': 'terra', // tbd
304
+ // 'TERRA': 'terra2', // tbd
305
+ // 'EVER': 'everscale', // tbd
306
+ 'XDC': 'xdc',
307
+ },
308
+ },
309
+ });
310
+ }
311
+ /**
312
+ * @method
313
+ * @name cex#fetchCurrencies
314
+ * @description fetches all available currencies on an exchange
315
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-currencies-info
316
+ * @param {dict} [params] extra parameters specific to the exchange API endpoint
317
+ * @returns {dict} an associative dictionary of currencies
318
+ */
319
+ async fetchCurrencies(params = {}) {
320
+ const promises = [];
321
+ promises.push(this.publicPostGetCurrenciesInfo(params));
322
+ //
323
+ // {
324
+ // "ok": "ok",
325
+ // "data": [
326
+ // {
327
+ // "currency": "ZAP",
328
+ // "fiat": false,
329
+ // "precision": "8",
330
+ // "walletPrecision": "6",
331
+ // "walletDeposit": true,
332
+ // "walletWithdrawal": true
333
+ // },
334
+ // ...
335
+ //
336
+ promises.push(this.publicPostGetProcessingInfo(params));
337
+ //
338
+ // {
339
+ // "ok": "ok",
340
+ // "data": {
341
+ // "ADA": {
342
+ // "name": "Cardano",
343
+ // "blockchains": {
344
+ // "cardano": {
345
+ // "type": "coin",
346
+ // "deposit": "enabled",
347
+ // "minDeposit": "1",
348
+ // "withdrawal": "enabled",
349
+ // "minWithdrawal": "5",
350
+ // "withdrawalFee": "1",
351
+ // "withdrawalFeePercent": "0",
352
+ // "depositConfirmations": "15"
353
+ // }
354
+ // }
355
+ // },
356
+ // ...
357
+ //
358
+ const responses = await Promise.all(promises);
359
+ const dataCurrencies = this.safeList(responses[0], 'data', []);
360
+ const dataNetworks = this.safeDict(responses[1], 'data', {});
361
+ const currenciesIndexed = this.indexBy(dataCurrencies, 'currency');
362
+ const data = this.deepExtend(currenciesIndexed, dataNetworks);
363
+ return this.parseCurrencies(this.toArray(data));
364
+ }
365
+ parseCurrency(rawCurrency) {
366
+ const id = this.safeString(rawCurrency, 'currency');
367
+ const code = this.safeCurrencyCode(id);
368
+ const type = this.safeBool(rawCurrency, 'fiat') ? 'fiat' : 'crypto';
369
+ const currencyPrecision = this.parseNumber(this.parsePrecision(this.safeString(rawCurrency, 'precision')));
370
+ const networks = {};
371
+ const rawNetworks = this.safeDict(rawCurrency, 'blockchains', {});
372
+ const keys = Object.keys(rawNetworks);
373
+ for (let j = 0; j < keys.length; j++) {
374
+ const networkId = keys[j];
375
+ const rawNetwork = rawNetworks[networkId];
376
+ const networkCode = this.networkIdToCode(networkId);
377
+ const deposit = this.safeString(rawNetwork, 'deposit') === 'enabled';
378
+ const withdraw = this.safeString(rawNetwork, 'withdrawal') === 'enabled';
379
+ networks[networkCode] = {
380
+ 'id': networkId,
381
+ 'network': networkCode,
382
+ 'margin': undefined,
383
+ 'deposit': deposit,
384
+ 'withdraw': withdraw,
385
+ 'active': undefined,
386
+ 'fee': this.safeNumber(rawNetwork, 'withdrawalFee'),
387
+ 'precision': currencyPrecision,
388
+ 'limits': {
389
+ 'deposit': {
390
+ 'min': this.safeNumber(rawNetwork, 'minDeposit'),
391
+ 'max': undefined,
392
+ },
393
+ 'withdraw': {
394
+ 'min': this.safeNumber(rawNetwork, 'minWithdrawal'),
395
+ 'max': undefined,
396
+ },
397
+ },
398
+ 'info': rawNetwork,
399
+ };
400
+ }
401
+ return this.safeCurrencyStructure({
402
+ 'id': id,
403
+ 'code': code,
404
+ 'name': undefined,
405
+ 'type': type,
406
+ 'active': undefined,
407
+ 'deposit': this.safeBool(rawCurrency, 'walletDeposit'),
408
+ 'withdraw': this.safeBool(rawCurrency, 'walletWithdrawal'),
409
+ 'fee': undefined,
410
+ 'precision': currencyPrecision,
411
+ 'limits': {
412
+ 'amount': {
413
+ 'min': undefined,
414
+ 'max': undefined,
415
+ },
416
+ 'withdraw': {
417
+ 'min': undefined,
418
+ 'max': undefined,
419
+ },
420
+ },
421
+ 'networks': networks,
422
+ 'info': rawCurrency,
423
+ });
424
+ }
425
+ /**
426
+ * @method
427
+ * @name cex#fetchMarkets
428
+ * @description retrieves data on all markets for ace
429
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-pairs-info
430
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
431
+ * @returns {object[]} an array of objects representing market data
432
+ */
433
+ async fetchMarkets(params = {}) {
434
+ const response = await this.publicPostGetPairsInfo(params);
435
+ //
436
+ // {
437
+ // "ok": "ok",
438
+ // "data": [
439
+ // {
440
+ // "base": "AI",
441
+ // "quote": "USD",
442
+ // "baseMin": "30",
443
+ // "baseMax": "2516000",
444
+ // "baseLotSize": "0.000001",
445
+ // "quoteMin": "10",
446
+ // "quoteMax": "1000000",
447
+ // "quoteLotSize": "0.01000000",
448
+ // "basePrecision": "6",
449
+ // "quotePrecision": "8",
450
+ // "pricePrecision": "4",
451
+ // "minPrice": "0.0377",
452
+ // "maxPrice": "19.5000"
453
+ // },
454
+ // ...
455
+ //
456
+ const data = this.safeList(response, 'data', []);
457
+ return this.parseMarkets(data);
458
+ }
459
+ parseMarket(market) {
460
+ const baseId = this.safeString(market, 'base');
461
+ const base = this.safeCurrencyCode(baseId);
462
+ const quoteId = this.safeString(market, 'quote');
463
+ const quote = this.safeCurrencyCode(quoteId);
464
+ const id = base + '-' + quote; // not actual id, but for this exchange we can use this abbreviation, because e.g. tickers have hyphen in between
465
+ const symbol = base + '/' + quote;
466
+ return this.safeMarketStructure({
467
+ 'id': id,
468
+ 'symbol': symbol,
469
+ 'base': base,
470
+ 'baseId': baseId,
471
+ 'quote': quote,
472
+ 'quoteId': quoteId,
473
+ 'settle': undefined,
474
+ 'settleId': undefined,
475
+ 'type': 'spot',
476
+ 'spot': true,
477
+ 'margin': false,
478
+ 'swap': false,
479
+ 'future': false,
480
+ 'option': false,
481
+ 'contract': false,
482
+ 'linear': undefined,
483
+ 'inverse': undefined,
484
+ 'contractSize': undefined,
485
+ 'expiry': undefined,
486
+ 'expiryDatetime': undefined,
487
+ 'strike': undefined,
488
+ 'optionType': undefined,
489
+ 'limits': {
490
+ 'amount': {
491
+ 'min': this.safeNumber(market, 'baseMin'),
492
+ 'max': this.safeNumber(market, 'baseMax'),
493
+ },
494
+ 'price': {
495
+ 'min': this.safeNumber(market, 'minPrice'),
496
+ 'max': this.safeNumber(market, 'maxPrice'),
497
+ },
498
+ 'cost': {
499
+ 'min': this.safeNumber(market, 'quoteMin'),
500
+ 'max': this.safeNumber(market, 'quoteMax'),
501
+ },
502
+ 'leverage': {
503
+ 'min': undefined,
504
+ 'max': undefined,
505
+ },
506
+ },
507
+ 'precision': {
508
+ 'amount': this.safeString(market, 'baseLotSize'),
509
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'pricePrecision'))),
510
+ // 'cost': this.parseNumber (this.parsePrecision (this.safeString (market, 'quoteLotSize'))), // buggy, doesn't reflect their documentation
511
+ 'base': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
512
+ 'quote': this.parseNumber(this.parsePrecision(this.safeString(market, 'quotePrecision'))),
513
+ },
514
+ 'active': undefined,
515
+ 'created': undefined,
516
+ 'info': market,
517
+ });
518
+ }
519
+ /**
520
+ * @method
521
+ * @name cex#fetchTime
522
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
523
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
524
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
525
+ */
526
+ async fetchTime(params = {}) {
527
+ const response = await this.publicPostGetServerTime(params);
528
+ //
529
+ // {
530
+ // "ok": "ok",
531
+ // "data": {
532
+ // "timestamp": "1728472063472",
533
+ // "ISODate": "2024-10-09T11:07:43.472Z"
534
+ // }
535
+ // }
536
+ //
537
+ const data = this.safeDict(response, 'data');
538
+ const timestamp = this.safeInteger(data, 'timestamp');
539
+ return timestamp;
540
+ }
541
+ /**
542
+ * @method
543
+ * @name cex#fetchTicker
544
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
545
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-ticker
546
+ * @param {string} symbol
547
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
548
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
549
+ */
550
+ async fetchTicker(symbol, params = {}) {
551
+ await this.loadMarkets();
552
+ const response = await this.fetchTickers([symbol], params);
553
+ return this.safeDict(response, symbol, {});
554
+ }
555
+ /**
556
+ * @method
557
+ * @name cex#fetchTickers
558
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
559
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-ticker
560
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
561
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
562
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
563
+ */
564
+ async fetchTickers(symbols = undefined, params = {}) {
565
+ await this.loadMarkets();
566
+ const request = {};
567
+ if (symbols !== undefined) {
568
+ request['pairs'] = this.marketIds(symbols);
569
+ }
570
+ const response = await this.publicPostGetTicker(this.extend(request, params));
571
+ //
572
+ // {
573
+ // "ok": "ok",
574
+ // "data": {
575
+ // "AI-USD": {
576
+ // "bestBid": "0.3917",
577
+ // "bestAsk": "0.3949",
578
+ // "bestBidChange": "0.0035",
579
+ // "bestBidChangePercentage": "0.90",
580
+ // "bestAskChange": "0.0038",
581
+ // "bestAskChangePercentage": "0.97",
582
+ // "low": "0.3787",
583
+ // "high": "0.3925",
584
+ // "volume30d": "2945.722277",
585
+ // "lastTradeDateISO": "2024-10-11T06:18:42.077Z",
586
+ // "volume": "120.736000",
587
+ // "quoteVolume": "46.65654070",
588
+ // "lastTradeVolume": "67.914000",
589
+ // "volumeUSD": "46.65",
590
+ // "last": "0.3949",
591
+ // "lastTradePrice": "0.3925",
592
+ // "priceChange": "0.0038",
593
+ // "priceChangePercentage": "0.97"
594
+ // },
595
+ // ...
596
+ //
597
+ const data = this.safeDict(response, 'data', {});
598
+ return this.parseTickers(data, symbols);
599
+ }
600
+ parseTicker(ticker, market = undefined) {
601
+ const marketId = this.safeString(ticker, 'id');
602
+ const symbol = this.safeSymbol(marketId, market);
603
+ return this.safeTicker({
604
+ 'symbol': symbol,
605
+ 'timestamp': undefined,
606
+ 'datetime': undefined,
607
+ 'high': this.safeNumber(ticker, 'high'),
608
+ 'low': this.safeNumber(ticker, 'low'),
609
+ 'bid': this.safeNumber(ticker, 'bestBid'),
610
+ 'bidVolume': undefined,
611
+ 'ask': this.safeNumber(ticker, 'bestAsk'),
612
+ 'askVolume': undefined,
613
+ 'vwap': undefined,
614
+ 'open': undefined,
615
+ 'close': this.safeString(ticker, 'last'),
616
+ 'previousClose': undefined,
617
+ 'change': this.safeNumber(ticker, 'priceChange'),
618
+ 'percentage': this.safeNumber(ticker, 'priceChangePercentage'),
619
+ 'average': undefined,
620
+ 'baseVolume': this.safeString(ticker, 'volume'),
621
+ 'quoteVolume': this.safeString(ticker, 'quoteVolume'),
622
+ 'info': ticker,
623
+ }, market);
624
+ }
625
+ /**
626
+ * @method
627
+ * @name cex#fetchTrades
628
+ * @description get the list of most recent trades for a particular symbol
629
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-trade-history
630
+ * @param {string} symbol unified symbol of the market to fetch trades for
631
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
632
+ * @param {int} [limit] the maximum amount of trades to fetch
633
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
634
+ * @param {int} [params.until] timestamp in ms of the latest entry
635
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
636
+ */
637
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
638
+ await this.loadMarkets();
639
+ const market = this.market(symbol);
640
+ const request = {
641
+ 'pair': market['id'],
642
+ };
643
+ if (since !== undefined) {
644
+ request['fromDateISO'] = this.iso8601(since);
645
+ }
646
+ let until = undefined;
647
+ [until, params] = this.handleParamInteger2(params, 'until', 'till');
648
+ if (until !== undefined) {
649
+ request['toDateISO'] = this.iso8601(until);
650
+ }
651
+ if (limit !== undefined) {
652
+ request['pageSize'] = Math.min(limit, 10000); // has a bug, still returns more trades
653
+ }
654
+ const response = await this.publicPostGetTradeHistory(this.extend(request, params));
655
+ //
656
+ // {
657
+ // "ok": "ok",
658
+ // "data": {
659
+ // "pageSize": "10",
660
+ // "trades": [
661
+ // {
662
+ // "tradeId": "1728630559823-0",
663
+ // "dateISO": "2024-10-11T07:09:19.823Z",
664
+ // "side": "SELL",
665
+ // "price": "60879.5",
666
+ // "amount": "0.00165962"
667
+ // },
668
+ // ... followed by older trades
669
+ //
670
+ const data = this.safeDict(response, 'data', {});
671
+ const trades = this.safeList(data, 'trades', []);
672
+ return this.parseTrades(trades, market, since, limit);
673
+ }
674
+ parseTrade(trade, market = undefined) {
675
+ //
676
+ // public fetchTrades
677
+ //
678
+ // {
679
+ // "tradeId": "1728630559823-0",
680
+ // "dateISO": "2024-10-11T07:09:19.823Z",
681
+ // "side": "SELL",
682
+ // "price": "60879.5",
683
+ // "amount": "0.00165962"
684
+ // },
685
+ //
686
+ const dateStr = this.safeString(trade, 'dateISO');
687
+ const timestamp = this.parse8601(dateStr);
688
+ market = this.safeMarket(undefined, market);
689
+ return this.safeTrade({
690
+ 'info': trade,
691
+ 'timestamp': timestamp,
692
+ 'datetime': this.iso8601(timestamp),
693
+ 'symbol': market['symbol'],
694
+ 'id': this.safeString(trade, 'tradeId'),
695
+ 'order': undefined,
696
+ 'type': undefined,
697
+ 'takerOrMaker': undefined,
698
+ 'side': this.safeStringLower(trade, 'side'),
699
+ 'price': this.safeString(trade, 'price'),
700
+ 'amount': this.safeString(trade, 'amount'),
701
+ 'cost': undefined,
702
+ 'fee': undefined,
703
+ }, market);
704
+ }
705
+ /**
706
+ * @method
707
+ * @name cex#fetchOrderBook
708
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
709
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-order-book
710
+ * @param {string} symbol unified symbol of the market to fetch the order book for
711
+ * @param {int} [limit] the maximum amount of order book entries to return
712
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
713
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
714
+ */
715
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
716
+ await this.loadMarkets();
717
+ const market = this.market(symbol);
718
+ const request = {
719
+ 'pair': market['id'],
720
+ };
721
+ const response = await this.publicPostGetOrderBook(this.extend(request, params));
722
+ //
723
+ // {
724
+ // "ok": "ok",
725
+ // "data": {
726
+ // "timestamp": "1728636922648",
727
+ // "currency1": "BTC",
728
+ // "currency2": "USDT",
729
+ // "bids": [
730
+ // [
731
+ // "60694.1",
732
+ // "13.12849761"
733
+ // ],
734
+ // [
735
+ // "60694.0",
736
+ // "0.71829244"
737
+ // ],
738
+ // ...
739
+ //
740
+ const orderBook = this.safeDict(response, 'data', {});
741
+ const timestamp = this.safeInteger(orderBook, 'timestamp');
742
+ return this.parseOrderBook(orderBook, market['symbol'], timestamp);
743
+ }
744
+ /**
745
+ * @method
746
+ * @name cex#fetchOHLCV
747
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
748
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-candles
749
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
750
+ * @param {string} timeframe the length of time each candle represents
751
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
752
+ * @param {int} [limit] the maximum amount of candles to fetch
753
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
754
+ * @param {int} [params.until] timestamp in ms of the latest entry
755
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
756
+ */
757
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
758
+ let dataType = undefined;
759
+ [dataType, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'dataType');
760
+ if (dataType === undefined) {
761
+ throw new ArgumentsRequired(this.id + ' fetchOHLCV requires a parameter "dataType" to be either "bestBid" or "bestAsk"');
762
+ }
763
+ await this.loadMarkets();
764
+ const market = this.market(symbol);
765
+ const request = {
766
+ 'pair': market['id'],
767
+ 'resolution': this.timeframes[timeframe],
768
+ 'dataType': dataType,
769
+ };
770
+ if (since !== undefined) {
771
+ request['fromISO'] = this.iso8601(since);
772
+ }
773
+ let until = undefined;
774
+ [until, params] = this.handleParamInteger2(params, 'until', 'till');
775
+ if (until !== undefined) {
776
+ request['toISO'] = this.iso8601(until);
777
+ }
778
+ else if (since === undefined) {
779
+ // exchange still requires that we provide one of them
780
+ request['toISO'] = this.iso8601(this.milliseconds());
781
+ }
782
+ if (since !== undefined && until !== undefined && limit !== undefined) {
783
+ throw new ArgumentsRequired(this.id + ' fetchOHLCV does not support fetching candles with both a limit and since/until');
784
+ }
785
+ else if ((since !== undefined || until !== undefined) && limit === undefined) {
786
+ throw new ArgumentsRequired(this.id + ' fetchOHLCV requires a limit parameter when fetching candles with since or until');
787
+ }
788
+ if (limit !== undefined) {
789
+ request['limit'] = limit;
790
+ }
791
+ const response = await this.publicPostGetCandles(this.extend(request, params));
792
+ //
793
+ // {
794
+ // "ok": "ok",
795
+ // "data": [
796
+ // {
797
+ // "timestamp": "1728643320000",
798
+ // "open": "61061",
799
+ // "high": "61095.1",
800
+ // "low": "61048.5",
801
+ // "close": "61087.8",
802
+ // "volume": "0",
803
+ // "resolution": "1m",
804
+ // "isClosed": true,
805
+ // "timestampISO": "2024-10-11T10:42:00.000Z"
806
+ // },
807
+ // ...
808
+ //
809
+ const data = this.safeList(response, 'data', []);
810
+ return this.parseOHLCVs(data, market, timeframe, since, limit);
811
+ }
812
+ parseOHLCV(ohlcv, market = undefined) {
813
+ return [
814
+ this.safeInteger(ohlcv, 'timestamp'),
815
+ this.safeNumber(ohlcv, 'open'),
816
+ this.safeNumber(ohlcv, 'high'),
817
+ this.safeNumber(ohlcv, 'low'),
818
+ this.safeNumber(ohlcv, 'close'),
819
+ this.safeNumber(ohlcv, 'volume'),
820
+ ];
821
+ }
822
+ /**
823
+ * @method
824
+ * @name cex#fetchTradingFees
825
+ * @description fetch the trading fees for multiple markets
826
+ * @see https://trade.cex.io/docs/#rest-public-api-calls-candles
827
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
828
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
829
+ */
830
+ async fetchTradingFees(params = {}) {
831
+ await this.loadMarkets();
832
+ const response = await this.privatePostGetMyCurrentFee(params);
833
+ //
834
+ // {
835
+ // "ok": "ok",
836
+ // "data": {
837
+ // "tradingFee": {
838
+ // "AI-USD": {
839
+ // "percent": "0.25"
840
+ // },
841
+ // ...
842
+ //
843
+ const data = this.safeDict(response, 'data', {});
844
+ const fees = this.safeDict(data, 'tradingFee', {});
845
+ return this.parseTradingFees(fees, true);
846
+ }
847
+ parseTradingFees(response, useKeyAsId = false) {
848
+ const result = {};
849
+ const keys = Object.keys(response);
850
+ for (let i = 0; i < keys.length; i++) {
851
+ const key = keys[i];
852
+ let market = undefined;
853
+ if (useKeyAsId) {
854
+ market = this.safeMarket(key);
855
+ }
856
+ const parsed = this.parseTradingFee(response[key], market);
857
+ result[parsed['symbol']] = parsed;
858
+ }
859
+ for (let i = 0; i < this.symbols.length; i++) {
860
+ const symbol = this.symbols[i];
861
+ if (!(symbol in result)) {
862
+ const market = this.market(symbol);
863
+ result[symbol] = this.parseTradingFee(response, market);
864
+ }
865
+ }
866
+ return result;
867
+ }
868
+ parseTradingFee(fee, market = undefined) {
869
+ return {
870
+ 'info': fee,
871
+ 'symbol': this.safeString(market, 'symbol'),
872
+ 'maker': this.safeNumber(fee, 'percent'),
873
+ 'taker': this.safeNumber(fee, 'percent'),
874
+ 'percentage': undefined,
875
+ 'tierBased': undefined,
876
+ };
877
+ }
878
+ async fetchAccounts(params = {}) {
879
+ await this.loadMarkets();
880
+ const response = await this.privatePostGetMyAccountStatusV3(params);
881
+ //
882
+ // {
883
+ // "ok": "ok",
884
+ // "data": {
885
+ // "convertedCurrency": "USD",
886
+ // "balancesPerAccounts": {
887
+ // "": {
888
+ // "AI": {
889
+ // "balance": "0.000000",
890
+ // "balanceOnHold": "0.000000"
891
+ // },
892
+ // "USDT": {
893
+ // "balance": "0.00000000",
894
+ // "balanceOnHold": "0.00000000"
895
+ // }
896
+ // }
897
+ // }
898
+ // }
899
+ // }
900
+ //
901
+ const data = this.safeDict(response, 'data', {});
902
+ const balances = this.safeDict(data, 'balancesPerAccounts', {});
903
+ const arrays = this.toArray(balances);
904
+ return this.parseAccounts(arrays, params);
905
+ }
906
+ parseAccount(account) {
907
+ return {
908
+ 'id': undefined,
909
+ 'type': undefined,
910
+ 'code': undefined,
911
+ 'info': account,
912
+ };
913
+ }
914
+ /**
915
+ * @method
916
+ * @name cex#fetchBalance
917
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
918
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-account-status-v3
919
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
920
+ * @param {object} [params.method] 'privatePostGetMyWalletBalance' or 'privatePostGetMyAccountStatusV3'
921
+ * @param {object} [params.account] in case 'privatePostGetMyAccountStatusV3' is chosen, this can specify the account name (default is empty string)
922
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
923
+ */
924
+ async fetchBalance(params = {}) {
925
+ let accountName = undefined;
926
+ [accountName, params] = this.handleParamString(params, 'account', ''); // default is empty string
927
+ let method = undefined;
928
+ [method, params] = this.handleParamString(params, 'method', 'privatePostGetMyWalletBalance');
929
+ let accountBalance = undefined;
930
+ if (method === 'privatePostGetMyAccountStatusV3') {
931
+ const response = await this.privatePostGetMyAccountStatusV3(params);
932
+ //
933
+ // {
934
+ // "ok": "ok",
935
+ // "data": {
936
+ // "convertedCurrency": "USD",
937
+ // "balancesPerAccounts": {
938
+ // "": {
939
+ // "AI": {
940
+ // "balance": "0.000000",
941
+ // "balanceOnHold": "0.000000"
942
+ // },
943
+ // ....
944
+ //
945
+ const data = this.safeDict(response, 'data', {});
946
+ const balances = this.safeDict(data, 'balancesPerAccounts', {});
947
+ accountBalance = this.safeDict(balances, accountName, {});
948
+ }
949
+ else {
950
+ const response = await this.privatePostGetMyWalletBalance(params);
951
+ //
952
+ // {
953
+ // "ok": "ok",
954
+ // "data": {
955
+ // "AI": {
956
+ // "balance": "25.606429"
957
+ // },
958
+ // "USDT": {
959
+ // "balance": "7.935449"
960
+ // },
961
+ // ...
962
+ //
963
+ accountBalance = this.safeDict(response, 'data', {});
964
+ }
965
+ return this.parseBalance(accountBalance);
966
+ }
967
+ parseBalance(response) {
968
+ const result = {
969
+ 'info': response,
970
+ };
971
+ const keys = Object.keys(response);
972
+ for (let i = 0; i < keys.length; i++) {
973
+ const key = keys[i];
974
+ const balance = this.safeDict(response, key, {});
975
+ const code = this.safeCurrencyCode(key);
976
+ const account = {
977
+ 'used': this.safeString(balance, 'balanceOnHold'),
978
+ 'total': this.safeString(balance, 'balance'),
979
+ };
980
+ result[code] = account;
981
+ }
982
+ return this.safeBalance(result);
983
+ }
984
+ /**
985
+ * @method
986
+ * @name cex#fetchOrders
987
+ * @description fetches information on multiple orders made by the user
988
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-orders
989
+ * @param {string} status order status to fetch for
990
+ * @param {string} symbol unified market symbol of the market orders were made in
991
+ * @param {int} [since] the earliest time in ms to fetch orders for
992
+ * @param {int} [limit] the maximum number of order structures to retrieve
993
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
994
+ * @param {int} [params.until] timestamp in ms of the latest entry
995
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
996
+ */
997
+ async fetchOrdersByStatus(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
998
+ await this.loadMarkets();
999
+ const request = {};
1000
+ const isClosedOrders = (status === 'closed');
1001
+ if (isClosedOrders) {
1002
+ request['archived'] = true;
1003
+ }
1004
+ let market = undefined;
1005
+ if (symbol !== undefined) {
1006
+ market = this.market(symbol);
1007
+ request['pair'] = market['id'];
1008
+ }
1009
+ if (limit !== undefined) {
1010
+ request['pageSize'] = limit;
1011
+ }
1012
+ if (since !== undefined) {
1013
+ request['serverCreateTimestampFrom'] = since;
1014
+ }
1015
+ else if (isClosedOrders) {
1016
+ // exchange requires a `since` parameter for closed orders, so set default to allowed 365
1017
+ request['serverCreateTimestampFrom'] = this.milliseconds() - 364 * 24 * 60 * 60 * 1000;
1018
+ }
1019
+ let until = undefined;
1020
+ [until, params] = this.handleParamInteger2(params, 'until', 'till');
1021
+ if (until !== undefined) {
1022
+ request['serverCreateTimestampTo'] = until;
1023
+ }
1024
+ const response = await this.privatePostGetMyOrders(this.extend(request, params));
1025
+ //
1026
+ // if called without `pair`
1027
+ //
1028
+ // {
1029
+ // "ok": "ok",
1030
+ // "data": [
1031
+ // {
1032
+ // "orderId": "1313003",
1033
+ // "clientOrderId": "037F0AFEB93A",
1034
+ // "clientId": "up421412345",
1035
+ // "accountId": null,
1036
+ // "status": "FILLED",
1037
+ // "statusIsFinal": true,
1038
+ // "currency1": "AI",
1039
+ // "currency2": "USDT",
1040
+ // "side": "BUY",
1041
+ // "orderType": "Market",
1042
+ // "timeInForce": "IOC",
1043
+ // "comment": null,
1044
+ // "rejectCode": null,
1045
+ // "rejectReason": null,
1046
+ // "initialOnHoldAmountCcy1": null,
1047
+ // "initialOnHoldAmountCcy2": "10.23456700",
1048
+ // "executedAmountCcy1": "25.606429",
1049
+ // "executedAmountCcy2": "10.20904439",
1050
+ // "requestedAmountCcy1": null,
1051
+ // "requestedAmountCcy2": "10.20904439",
1052
+ // "originalAmountCcy2": "10.23456700",
1053
+ // "feeAmount": "0.02552261",
1054
+ // "feeCurrency": "USDT",
1055
+ // "price": null,
1056
+ // "averagePrice": "0.3986",
1057
+ // "clientCreateTimestamp": "1728474625320",
1058
+ // "serverCreateTimestamp": "1728474624956",
1059
+ // "lastUpdateTimestamp": "1728474628015",
1060
+ // "expireTime": null,
1061
+ // "effectiveTime": null
1062
+ // },
1063
+ // ...
1064
+ //
1065
+ const data = this.safeList(response, 'data', []);
1066
+ return this.parseOrders(data, market, since, limit);
1067
+ }
1068
+ /**
1069
+ * @method
1070
+ * @name cex#fetchClosedOrders
1071
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-orders
1072
+ * @description fetches information on multiple canceled orders made by the user
1073
+ * @param {string} symbol unified market symbol of the market orders were made in
1074
+ * @param {int} [since] timestamp in ms of the earliest order, default is undefined
1075
+ * @param {int} [limit] max number of orders to return, default is undefined
1076
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1077
+ * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1078
+ */
1079
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1080
+ return await this.fetchOrdersByStatus('closed', symbol, since, limit, params);
1081
+ }
1082
+ /**
1083
+ * @method
1084
+ * @name cex#fetchOpenOrders
1085
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-orders
1086
+ * @description fetches information on multiple canceled orders made by the user
1087
+ * @param {string} symbol unified market symbol of the market orders were made in
1088
+ * @param {int} [since] timestamp in ms of the earliest order, default is undefined
1089
+ * @param {int} [limit] max number of orders to return, default is undefined
1090
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1091
+ * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1092
+ */
1093
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1094
+ return await this.fetchOrdersByStatus('open', symbol, since, limit, params);
1095
+ }
1096
+ /**
1097
+ * @method
1098
+ * @name cex#fetchOpenOrder
1099
+ * @description fetches information on an open order made by the user
1100
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-orders
1101
+ * @param {string} id order id
1102
+ * @param {string} [symbol] unified symbol of the market the order was made in
1103
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1104
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1105
+ */
1106
+ async fetchOpenOrder(id, symbol = undefined, params = {}) {
1107
+ await this.loadMarkets();
1108
+ const request = {
1109
+ 'orderId': parseInt(id),
1110
+ };
1111
+ const result = await this.fetchOpenOrders(symbol, undefined, undefined, this.extend(request, params));
1112
+ return result[0];
1113
+ }
1114
+ /**
1115
+ * @method
1116
+ * @name cex#fetchClosedOrder
1117
+ * @description fetches information on an closed order made by the user
1118
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-orders
1119
+ * @param {string} id order id
1120
+ * @param {string} [symbol] unified symbol of the market the order was made in
1121
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1122
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1123
+ */
1124
+ async fetchClosedOrder(id, symbol = undefined, params = {}) {
1125
+ await this.loadMarkets();
1126
+ const request = {
1127
+ 'orderId': parseInt(id),
1128
+ };
1129
+ const result = await this.fetchClosedOrders(symbol, undefined, undefined, this.extend(request, params));
1130
+ return result[0];
1131
+ }
1132
+ parseOrderStatus(status) {
1133
+ const statuses = {
1134
+ 'PENDING_NEW': 'open',
1135
+ 'NEW': 'open',
1136
+ 'PARTIALLY_FILLED': 'open',
1137
+ 'FILLED': 'closed',
1138
+ 'EXPIRED': 'expired',
1139
+ 'REJECTED': 'rejected',
1140
+ 'PENDING_CANCEL': 'canceling',
1141
+ 'CANCELLED': 'canceled',
1142
+ };
1143
+ return this.safeString(statuses, status, status);
1144
+ }
1145
+ parseOrder(order, market = undefined) {
1146
+ //
1147
+ // "orderId": "1313003",
1148
+ // "clientOrderId": "037F0AFEB93A",
1149
+ // "clientId": "up421412345",
1150
+ // "accountId": null,
1151
+ // "status": "FILLED",
1152
+ // "statusIsFinal": true,
1153
+ // "currency1": "AI",
1154
+ // "currency2": "USDT",
1155
+ // "side": "BUY",
1156
+ // "orderType": "Market",
1157
+ // "timeInForce": "IOC",
1158
+ // "comment": null,
1159
+ // "rejectCode": null,
1160
+ // "rejectReason": null,
1161
+ // "initialOnHoldAmountCcy1": null,
1162
+ // "initialOnHoldAmountCcy2": "10.23456700",
1163
+ // "executedAmountCcy1": "25.606429",
1164
+ // "executedAmountCcy2": "10.20904439",
1165
+ // "requestedAmountCcy1": null,
1166
+ // "requestedAmountCcy2": "10.20904439",
1167
+ // "originalAmountCcy2": "10.23456700",
1168
+ // "feeAmount": "0.02552261",
1169
+ // "feeCurrency": "USDT",
1170
+ // "price": null,
1171
+ // "averagePrice": "0.3986",
1172
+ // "clientCreateTimestamp": "1728474625320",
1173
+ // "serverCreateTimestamp": "1728474624956",
1174
+ // "lastUpdateTimestamp": "1728474628015",
1175
+ // "expireTime": null,
1176
+ // "effectiveTime": null
1177
+ //
1178
+ const currency1 = this.safeString(order, 'currency1');
1179
+ const currency2 = this.safeString(order, 'currency2');
1180
+ let marketId = undefined;
1181
+ if (currency1 !== undefined && currency2 !== undefined) {
1182
+ marketId = currency1 + '-' + currency2;
1183
+ }
1184
+ market = this.safeMarket(marketId, market);
1185
+ const symbol = market['symbol'];
1186
+ const status = this.parseOrderStatus(this.safeString(order, 'status'));
1187
+ const fee = {};
1188
+ const feeAmount = this.safeNumber(order, 'feeAmount');
1189
+ if (feeAmount !== undefined) {
1190
+ const currencyId = this.safeString(order, 'feeCurrency');
1191
+ const feeCode = this.safeCurrencyCode(currencyId);
1192
+ fee['currency'] = feeCode;
1193
+ fee['cost'] = feeAmount;
1194
+ }
1195
+ const timestamp = this.safeInteger(order, 'serverCreateTimestamp');
1196
+ const requestedBase = this.safeNumber(order, 'requestedAmountCcy1');
1197
+ const executedBase = this.safeNumber(order, 'executedAmountCcy1');
1198
+ // const requestedQuote = this.safeNumber (order, 'requestedAmountCcy2');
1199
+ const executedQuote = this.safeNumber(order, 'executedAmountCcy2');
1200
+ return this.safeOrder({
1201
+ 'id': this.safeString(order, 'orderId'),
1202
+ 'clientOrderId': this.safeString(order, 'clientOrderId'),
1203
+ 'timestamp': timestamp,
1204
+ 'datetime': this.iso8601(timestamp),
1205
+ 'lastUpdateTimestamp': this.safeInteger(order, 'lastUpdateTimestamp'),
1206
+ 'lastTradeTimestamp': undefined,
1207
+ 'symbol': symbol,
1208
+ 'type': this.safeStringLower(order, 'orderType'),
1209
+ 'timeInForce': this.safeString(order, 'timeInForce'),
1210
+ 'postOnly': undefined,
1211
+ 'side': this.safeStringLower(order, 'side'),
1212
+ 'price': this.safeNumber(order, 'price'),
1213
+ 'triggerPrice': this.safeNumber(order, 'stopPrice'),
1214
+ 'amount': requestedBase,
1215
+ 'cost': executedQuote,
1216
+ 'average': this.safeNumber(order, 'averagePrice'),
1217
+ 'filled': executedBase,
1218
+ 'remaining': undefined,
1219
+ 'status': status,
1220
+ 'fee': fee,
1221
+ 'trades': undefined,
1222
+ 'info': order,
1223
+ }, market);
1224
+ }
1225
+ /**
1226
+ * @method
1227
+ * @name cex#createOrder
1228
+ * @description create a trade order
1229
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-new-order
1230
+ * @param {string} symbol unified symbol of the market to create an order in
1231
+ * @param {string} type 'market' or 'limit'
1232
+ * @param {string} side 'buy' or 'sell'
1233
+ * @param {float} amount how much of currency you want to trade in units of base currency
1234
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1235
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1236
+ * @param {string} [params.accountId] account-id to use (default is empty string)
1237
+ * @param {float} [params.triggerPrice] the price at which a trigger order is triggered at
1238
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1239
+ */
1240
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1241
+ let accountId = undefined;
1242
+ [accountId, params] = this.handleOptionAndParams(params, 'createOrder', 'accountId');
1243
+ if (accountId === undefined) {
1244
+ throw new ArgumentsRequired(this.id + ' createOrder() : API trading is now allowed from main account, set params["accountId"] or .options["createOrder"]["accountId"] to the name of your sub-account');
1245
+ }
1246
+ await this.loadMarkets();
1247
+ const market = this.market(symbol);
1248
+ const request = {
1249
+ 'clientOrderId': this.uuid(),
1250
+ 'currency1': market['baseId'],
1251
+ 'currency2': market['quoteId'],
1252
+ 'accountId': accountId,
1253
+ 'orderType': this.capitalize(type.toLowerCase()),
1254
+ 'side': side.toUpperCase(),
1255
+ 'timestamp': this.milliseconds(),
1256
+ 'amountCcy1': this.amountToPrecision(symbol, amount),
1257
+ };
1258
+ let timeInForce = undefined;
1259
+ [timeInForce, params] = this.handleOptionAndParams(params, 'createOrder', 'timeInForce', 'GTC');
1260
+ if (type === 'limit') {
1261
+ request['price'] = this.priceToPrecision(symbol, price);
1262
+ request['timeInForce'] = timeInForce;
1263
+ }
1264
+ let triggerPrice = undefined;
1265
+ [triggerPrice, params] = this.handleParamString(params, 'triggerPrice');
1266
+ if (triggerPrice !== undefined) {
1267
+ request['type'] = 'Stop Limit';
1268
+ request['stopPrice'] = triggerPrice;
1269
+ }
1270
+ const response = await this.privatePostDoMyNewOrder(this.extend(request, params));
1271
+ //
1272
+ // on success
1273
+ //
1274
+ // {
1275
+ // "ok": "ok",
1276
+ // "data": {
1277
+ // "messageType": "executionReport",
1278
+ // "clientId": "up132245425",
1279
+ // "orderId": "1318485",
1280
+ // "clientOrderId": "b5b6cd40-154c-4c1c-bd51-4a442f3d50b9",
1281
+ // "accountId": "sub1",
1282
+ // "status": "FILLED",
1283
+ // "currency1": "LTC",
1284
+ // "currency2": "USDT",
1285
+ // "side": "BUY",
1286
+ // "executedAmountCcy1": "0.23000000",
1287
+ // "executedAmountCcy2": "15.09030000",
1288
+ // "requestedAmountCcy1": "0.23000000",
1289
+ // "requestedAmountCcy2": null,
1290
+ // "orderType": "Market",
1291
+ // "timeInForce": null,
1292
+ // "comment": null,
1293
+ // "executionType": "Trade",
1294
+ // "executionId": "1726747124624_101_41116",
1295
+ // "transactTime": "2024-10-15T15:08:12.794Z",
1296
+ // "expireTime": null,
1297
+ // "effectiveTime": null,
1298
+ // "averagePrice": "65.61",
1299
+ // "lastQuantity": "0.23000000",
1300
+ // "lastAmountCcy1": "0.23000000",
1301
+ // "lastAmountCcy2": "15.09030000",
1302
+ // "lastPrice": "65.61",
1303
+ // "feeAmount": "0.03772575",
1304
+ // "feeCurrency": "USDT",
1305
+ // "clientCreateTimestamp": "1729004892014",
1306
+ // "serverCreateTimestamp": "1729004891628",
1307
+ // "lastUpdateTimestamp": "1729004892786"
1308
+ // }
1309
+ // }
1310
+ //
1311
+ // on failure, there are extra fields
1312
+ //
1313
+ // "status": "REJECTED",
1314
+ // "requestedAmountCcy1": null,
1315
+ // "orderRejectReason": "{\\" code \\ ":405,\\" reason \\ ":\\" Either AmountCcy1(OrderQty)or AmountCcy2(CashOrderQty)should be specified for market order not both \\ "}",
1316
+ // "rejectCode": 405,
1317
+ // "rejectReason": "Either AmountCcy1 (OrderQty) or AmountCcy2 (CashOrderQty) should be specified for market order not both",
1318
+ //
1319
+ const data = this.safeDict(response, 'data');
1320
+ return this.parseOrder(data, market);
1321
+ }
1322
+ /**
1323
+ * @method
1324
+ * @name cex#cancelOrder
1325
+ * @description cancels an open order
1326
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-cancel-order
1327
+ * @param {string} id order id
1328
+ * @param {string} symbol unified symbol of the market the order was made in
1329
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1330
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1331
+ */
1332
+ async cancelOrder(id, symbol = undefined, params = {}) {
1333
+ await this.loadMarkets();
1334
+ const request = {
1335
+ 'orderId': parseInt(id),
1336
+ 'cancelRequestId': 'c_' + (this.milliseconds()).toString(),
1337
+ 'timestamp': this.milliseconds(),
1338
+ };
1339
+ const response = await this.privatePostDoCancelMyOrder(this.extend(request, params));
1340
+ //
1341
+ // {"ok":"ok","data":{}}
1342
+ //
1343
+ const data = this.safeDict(response, 'data', {});
1344
+ return this.parseOrder(data);
1345
+ }
1346
+ /**
1347
+ * @method
1348
+ * @name cex#cancelAllOrders
1349
+ * @description cancel all open orders in a market
1350
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-cancel-all-orders
1351
+ * @param {string} symbol alpaca cancelAllOrders cannot setting symbol, it will cancel all open orders
1352
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1353
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1354
+ */
1355
+ async cancelAllOrders(symbol = undefined, params = {}) {
1356
+ await this.loadMarkets();
1357
+ const response = await this.privatePostDoCancelAllOrders(params);
1358
+ //
1359
+ // {
1360
+ // "ok": "ok",
1361
+ // "data": {
1362
+ // "clientOrderIds": [
1363
+ // "3AF77B67109F"
1364
+ // ]
1365
+ // }
1366
+ // }
1367
+ //
1368
+ const data = this.safeDict(response, 'data', {});
1369
+ const ids = this.safeList(data, 'clientOrderIds', []);
1370
+ const orders = [];
1371
+ for (let i = 0; i < ids.length; i++) {
1372
+ const id = ids[i];
1373
+ orders.push({ 'clientOrderId': id });
1374
+ }
1375
+ return this.parseOrders(orders);
1376
+ }
1377
+ /**
1378
+ * @method
1379
+ * @name cex#fetchLedger
1380
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1381
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-transaction-history
1382
+ * @param {string} [code] unified currency code
1383
+ * @param {int} [since] timestamp in ms of the earliest ledger entry
1384
+ * @param {int} [limit] max number of ledger entries to return
1385
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1386
+ * @param {int} [params.until] timestamp in ms of the latest ledger entry
1387
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1388
+ */
1389
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1390
+ await this.loadMarkets();
1391
+ let currency = undefined;
1392
+ const request = {};
1393
+ if (code !== undefined) {
1394
+ currency = this.currency(code);
1395
+ request['currency'] = currency['id'];
1396
+ }
1397
+ if (since !== undefined) {
1398
+ request['dateFrom'] = since;
1399
+ }
1400
+ if (limit !== undefined) {
1401
+ request['pageSize'] = limit;
1402
+ }
1403
+ let until = undefined;
1404
+ [until, params] = this.handleParamInteger2(params, 'until', 'till');
1405
+ if (until !== undefined) {
1406
+ request['dateTo'] = until;
1407
+ }
1408
+ const response = await this.privatePostGetMyTransactionHistory(this.extend(request, params));
1409
+ //
1410
+ // {
1411
+ // "ok": "ok",
1412
+ // "data": [
1413
+ // {
1414
+ // "transactionId": "30367722",
1415
+ // "timestamp": "2024-10-14T14:08:49.987Z",
1416
+ // "accountId": "",
1417
+ // "type": "withdraw",
1418
+ // "amount": "-12.39060600",
1419
+ // "details": "Withdraw fundingId=1235039 clientId=up421412345 walletTxId=76337154166",
1420
+ // "currency": "USDT"
1421
+ // },
1422
+ // ...
1423
+ //
1424
+ const data = this.safeList(response, 'data', []);
1425
+ return this.parseLedger(data, currency, since, limit);
1426
+ }
1427
+ parseLedgerEntry(item, currency = undefined) {
1428
+ let amount = this.safeString(item, 'amount');
1429
+ let direction = undefined;
1430
+ if (Precise.stringLe(amount, '0')) {
1431
+ direction = 'out';
1432
+ amount = Precise.stringMul('-1', amount);
1433
+ }
1434
+ else {
1435
+ direction = 'in';
1436
+ }
1437
+ const currencyId = this.safeString(item, 'currency');
1438
+ currency = this.safeCurrency(currencyId, currency);
1439
+ const code = this.safeCurrencyCode(currencyId, currency);
1440
+ const timestampString = this.safeString(item, 'timestamp');
1441
+ const timestamp = this.parse8601(timestampString);
1442
+ const type = this.safeString(item, 'type');
1443
+ return this.safeLedgerEntry({
1444
+ 'info': item,
1445
+ 'id': this.safeString(item, 'transactionId'),
1446
+ 'direction': direction,
1447
+ 'account': this.safeString(item, 'accountId', ''),
1448
+ 'referenceAccount': undefined,
1449
+ 'referenceId': undefined,
1450
+ 'type': this.parseLedgerEntryType(type),
1451
+ 'currency': code,
1452
+ 'amount': this.parseNumber(amount),
1453
+ 'timestamp': timestamp,
1454
+ 'datetime': this.iso8601(timestamp),
1455
+ 'before': undefined,
1456
+ 'after': undefined,
1457
+ 'status': undefined,
1458
+ 'fee': undefined,
1459
+ }, currency);
1460
+ }
1461
+ parseLedgerEntryType(type) {
1462
+ const ledgerType = {
1463
+ 'deposit': 'deposit',
1464
+ 'withdraw': 'withdrawal',
1465
+ 'commission': 'fee',
1466
+ };
1467
+ return this.safeString(ledgerType, type, type);
1468
+ }
1469
+ /**
1470
+ * @method
1471
+ * @name cex#fetchDepositsWithdrawals
1472
+ * @description fetch history of deposits and withdrawals
1473
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-funding-history
1474
+ * @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
1475
+ * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
1476
+ * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
1477
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1478
+ * @returns {object} a list of [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1479
+ */
1480
+ async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1481
+ await this.loadMarkets();
1482
+ const request = {};
1483
+ let currency = undefined;
1484
+ if (code !== undefined) {
1485
+ currency = this.currency(code);
1486
+ }
1487
+ if (since !== undefined) {
1488
+ request['dateFrom'] = since;
1489
+ }
1490
+ if (limit !== undefined) {
1491
+ request['pageSize'] = limit;
1492
+ }
1493
+ let until = undefined;
1494
+ [until, params] = this.handleParamInteger2(params, 'until', 'till');
1495
+ if (until !== undefined) {
1496
+ request['dateTo'] = until;
1497
+ }
1498
+ const response = await this.privatePostGetMyFundingHistory(this.extend(request, params));
1499
+ //
1500
+ // {
1501
+ // "ok": "ok",
1502
+ // "data": [
1503
+ // {
1504
+ // "clientId": "up421412345",
1505
+ // "accountId": "",
1506
+ // "currency": "USDT",
1507
+ // "direction": "withdraw",
1508
+ // "amount": "12.39060600",
1509
+ // "commissionAmount": "0.00000000",
1510
+ // "status": "approved",
1511
+ // "updatedAt": "2024-10-14T14:08:50.013Z",
1512
+ // "txId": "30367718",
1513
+ // "details": {}
1514
+ // },
1515
+ // ...
1516
+ //
1517
+ const data = this.safeList(response, 'data', []);
1518
+ return this.parseTransactions(data, currency, since, limit);
1519
+ }
1520
+ parseTransaction(transaction, currency = undefined) {
1521
+ const currencyId = this.safeString(transaction, 'currency');
1522
+ const direction = this.safeString(transaction, 'direction');
1523
+ const type = (direction === 'withdraw') ? 'withdrawal' : 'deposit';
1524
+ const code = this.safeCurrencyCode(currencyId, currency);
1525
+ const updatedAt = this.safeString(transaction, 'updatedAt');
1526
+ const timestamp = this.parse8601(updatedAt);
1527
+ return {
1528
+ 'info': transaction,
1529
+ 'id': this.safeString(transaction, 'txId'),
1530
+ 'txid': undefined,
1531
+ 'type': type,
1532
+ 'currency': code,
1533
+ 'network': undefined,
1534
+ 'amount': this.safeNumber(transaction, 'amount'),
1535
+ 'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
1536
+ 'timestamp': timestamp,
1537
+ 'datetime': this.iso8601(timestamp),
1538
+ 'address': undefined,
1539
+ 'addressFrom': undefined,
1540
+ 'addressTo': undefined,
1541
+ 'tag': undefined,
1542
+ 'tagFrom': undefined,
1543
+ 'tagTo': undefined,
1544
+ 'updated': undefined,
1545
+ 'comment': undefined,
1546
+ 'fee': {
1547
+ 'currency': code,
1548
+ 'cost': this.safeNumber(transaction, 'commissionAmount'),
1549
+ },
1550
+ 'internal': undefined,
1551
+ };
1552
+ }
1553
+ parseTransactionStatus(status) {
1554
+ const statuses = {
1555
+ 'rejected': 'rejected',
1556
+ 'pending': 'pending',
1557
+ 'approved': 'ok',
1558
+ };
1559
+ return this.safeString(statuses, status, status);
1560
+ }
1561
+ /**
1562
+ * @method
1563
+ * @name cex#transfer
1564
+ * @description transfer currency internally between wallets on the same account
1565
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-internal-transfer
1566
+ * @param {string} code unified currency code
1567
+ * @param {float} amount amount to transfer
1568
+ * @param {string} fromAccount 'SPOT', 'FUND', or 'CONTRACT'
1569
+ * @param {string} toAccount 'SPOT', 'FUND', or 'CONTRACT'
1570
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1571
+ * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
1572
+ */
1573
+ async transfer(code, amount, fromAccount, toAccount, params = {}) {
1574
+ let transfer = undefined;
1575
+ if (toAccount !== '' && fromAccount !== '') {
1576
+ transfer = await this.transferBetweenSubAccounts(code, amount, fromAccount, toAccount, params);
1577
+ }
1578
+ else {
1579
+ transfer = await this.transferBetweenMainAndSubAccount(code, amount, fromAccount, toAccount, params);
1580
+ }
1581
+ const fillResponseFromRequest = this.handleOption('transfer', 'fillResponseFromRequest', true);
1582
+ if (fillResponseFromRequest) {
1583
+ transfer['fromAccount'] = fromAccount;
1584
+ transfer['toAccount'] = toAccount;
1585
+ }
1586
+ return transfer;
1587
+ }
1588
+ async transferBetweenMainAndSubAccount(code, amount, fromAccount, toAccount, params = {}) {
1589
+ await this.loadMarkets();
1590
+ const currency = this.currency(code);
1591
+ const fromMain = (fromAccount === '');
1592
+ const targetAccount = fromMain ? toAccount : fromAccount;
1593
+ const guid = this.safeString(params, 'guid', this.uuid());
1594
+ const request = {
1595
+ 'currency': currency['id'],
1596
+ 'amount': this.currencyToPrecision(code, amount),
1597
+ 'accountId': targetAccount,
1598
+ 'clientTxId': guid,
1599
+ };
1600
+ let response = undefined;
1601
+ if (fromMain) {
1602
+ response = await this.privatePostDoDepositFundsFromWallet(this.extend(request, params));
1603
+ }
1604
+ else {
1605
+ response = await this.privatePostDoWithdrawalFundsToWallet(this.extend(request, params));
1606
+ }
1607
+ // both endpoints return the same structure, the only difference is that
1608
+ // the "accountId" is filled with the "subAccount"
1609
+ //
1610
+ // {
1611
+ // "ok": "ok",
1612
+ // "data": {
1613
+ // "accountId": "sub1",
1614
+ // "clientTxId": "27ba8284-67cf-4386-9ec7-80b3871abd45",
1615
+ // "currency": "USDT",
1616
+ // "status": "approved"
1617
+ // }
1618
+ // }
1619
+ //
1620
+ const data = this.safeDict(response, 'data', {});
1621
+ return this.parseTransfer(data, currency);
1622
+ }
1623
+ async transferBetweenSubAccounts(code, amount, fromAccount, toAccount, params = {}) {
1624
+ await this.loadMarkets();
1625
+ const currency = this.currency(code);
1626
+ const request = {
1627
+ 'currency': currency['id'],
1628
+ 'amount': this.currencyToPrecision(code, amount),
1629
+ 'fromAccountId': fromAccount,
1630
+ 'toAccountId': toAccount,
1631
+ };
1632
+ const response = await this.privatePostDoMyInternalTransfer(this.extend(request, params));
1633
+ //
1634
+ // {
1635
+ // "ok": "ok",
1636
+ // "data": {
1637
+ // "transactionId": "30225415"
1638
+ // }
1639
+ // }
1640
+ //
1641
+ const data = this.safeDict(response, 'data', {});
1642
+ return this.parseTransfer(data, currency);
1643
+ }
1644
+ parseTransfer(transfer, currency = undefined) {
1645
+ //
1646
+ // transferBetweenSubAccounts
1647
+ //
1648
+ // {
1649
+ // "ok": "ok",
1650
+ // "data": {
1651
+ // "transactionId": "30225415"
1652
+ // }
1653
+ // }
1654
+ //
1655
+ // transfer between main/sub
1656
+ //
1657
+ // {
1658
+ // "ok": "ok",
1659
+ // "data": {
1660
+ // "accountId": "sub1",
1661
+ // "clientTxId": "27ba8284-67cf-4386-9ec7-80b3871abd45",
1662
+ // "currency": "USDT",
1663
+ // "status": "approved"
1664
+ // }
1665
+ // }
1666
+ //
1667
+ const currencyId = this.safeString(transfer, 'currency');
1668
+ const currencyCode = this.safeCurrencyCode(currencyId, currency);
1669
+ return {
1670
+ 'info': transfer,
1671
+ 'id': this.safeString2(transfer, 'transactionId', 'clientTxId'),
1672
+ 'timestamp': undefined,
1673
+ 'datetime': undefined,
1674
+ 'currency': currencyCode,
1675
+ 'amount': undefined,
1676
+ 'fromAccount': undefined,
1677
+ 'toAccount': undefined,
1678
+ 'status': this.parseTransactionStatus(this.safeString(transfer, 'status')),
1679
+ };
1680
+ }
1681
+ /**
1682
+ * @method
1683
+ * @name cex#fetchDepositAddress
1684
+ * @description fetch the deposit address for a currency associated with this account
1685
+ * @see https://trade.cex.io/docs/#rest-private-api-calls-deposit-address
1686
+ * @param {string} code unified currency code
1687
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1688
+ * @param {string} [params.accountId] account-id (default to empty string) to refer to (at this moment, only sub-accounts allowed by exchange)
1689
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1690
+ */
1691
+ async fetchDepositAddress(code, params = {}) {
1692
+ let accountId = undefined;
1693
+ [accountId, params] = this.handleOptionAndParams(params, 'createOrder', 'accountId');
1694
+ if (accountId === undefined) {
1695
+ throw new ArgumentsRequired(this.id + ' fetchDepositAddress() : main account is not allowed to fetch deposit address from api, set params["accountId"] or .options["createOrder"]["accountId"] to the name of your sub-account');
1696
+ }
1697
+ await this.loadMarkets();
1698
+ let networkCode = undefined;
1699
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
1700
+ const currency = this.currency(code);
1701
+ const request = {
1702
+ 'accountId': accountId,
1703
+ 'currency': currency['id'],
1704
+ 'blockchain': this.networkCodeToId(networkCode),
1705
+ };
1706
+ const response = await this.privatePostGetDepositAddress(this.extend(request, params));
1707
+ //
1708
+ // {
1709
+ // "ok": "ok",
1710
+ // "data": {
1711
+ // "address": "TCr..................1AE",
1712
+ // "accountId": "sub1",
1713
+ // "currency": "USDT",
1714
+ // "blockchain": "tron"
1715
+ // }
1716
+ // }
1717
+ //
1718
+ const data = this.safeDict(response, 'data', {});
1719
+ return this.parseDepositAddress(data, currency);
1720
+ }
1721
+ parseDepositAddress(depositAddress, currency = undefined) {
1722
+ const address = this.safeString(depositAddress, 'address');
1723
+ const currencyId = this.safeString(depositAddress, 'currency');
1724
+ currency = this.safeCurrency(currencyId, currency);
1725
+ this.checkAddress(address);
1726
+ return {
1727
+ 'info': depositAddress,
1728
+ 'currency': currency['code'],
1729
+ 'network': this.networkIdToCode(this.safeString(depositAddress, 'blockchain')),
1730
+ 'address': address,
1731
+ 'tag': undefined,
1732
+ };
1733
+ }
1734
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1735
+ let url = this.urls['api'][api] + '/' + this.implodeParams(path, params);
1736
+ const query = this.omit(params, this.extractParams(path));
1737
+ if (api === 'public') {
1738
+ if (method === 'GET') {
1739
+ if (Object.keys(query).length) {
1740
+ url += '?' + this.urlencode(query);
1741
+ }
1742
+ }
1743
+ else {
1744
+ body = this.json(query);
1745
+ headers = {
1746
+ 'Content-Type': 'application/json',
1747
+ };
1748
+ }
1749
+ }
1750
+ else {
1751
+ this.checkRequiredCredentials();
1752
+ const seconds = this.seconds().toString();
1753
+ body = this.json(query);
1754
+ const auth = path + seconds + body;
1755
+ const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256, 'base64');
1756
+ headers = {
1757
+ 'Content-Type': 'application/json',
1758
+ 'X-AGGR-KEY': this.apiKey,
1759
+ 'X-AGGR-TIMESTAMP': seconds,
1760
+ 'X-AGGR-SIGNATURE': signature,
1761
+ };
1762
+ }
1763
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1764
+ }
1765
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
1766
+ // in some cases, like from createOrder, exchange returns nested escaped JSON string:
1767
+ // {"ok":"ok","data":{"messageType":"executionReport", "orderRejectReason":"{\"code\":405}"} }
1768
+ // and because of `.parseJson` bug, we need extra fix
1769
+ if (response === undefined) {
1770
+ if (body === undefined) {
1771
+ throw new NullResponse(this.id + ' returned empty response');
1772
+ }
1773
+ else if (body[0] === '{') {
1774
+ const fixed = this.fixStringifiedJsonMembers(body);
1775
+ response = this.parseJson(fixed);
1776
+ }
1777
+ else {
1778
+ throw new NullResponse(this.id + ' returned unparsed response: ' + body);
1779
+ }
1780
+ }
1781
+ const error = this.safeString(response, 'error');
1782
+ if (error !== undefined) {
1783
+ const feedback = this.id + ' ' + body;
1784
+ this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
1785
+ this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
1786
+ throw new ExchangeError(feedback);
1787
+ }
1788
+ // check errors in order-engine (the responses are not standard, so we parse here)
1789
+ if (url.indexOf('do_my_new_order') >= 0) {
1790
+ const data = this.safeDict(response, 'data', {});
1791
+ const rejectReason = this.safeString(data, 'rejectReason');
1792
+ if (rejectReason !== undefined) {
1793
+ this.throwBroadlyMatchedException(this.exceptions['broad'], rejectReason, rejectReason);
1794
+ throw new ExchangeError(this.id + ' createOrder() ' + rejectReason);
1795
+ }
1796
+ }
1797
+ return undefined;
1798
+ }
1799
+ }