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,2598 @@
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/ndax.js';
9
+ import { ExchangeError, AuthenticationError, InsufficientFunds, BadSymbol, OrderNotFound } from './base/errors.js';
10
+ import { TICK_SIZE } from './base/functions/number.js';
11
+ import { Precise } from './base/Precise.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ import { totp } from './base/functions/totp.js';
14
+ // ---------------------------------------------------------------------------
15
+ /**
16
+ * @class ndax
17
+ * @augments Exchange
18
+ */
19
+ export default class ndax extends Exchange {
20
+ describe() {
21
+ return this.deepExtend(super.describe(), {
22
+ 'id': 'ndax',
23
+ 'name': 'NDAX',
24
+ 'countries': ['CA'],
25
+ 'rateLimit': 1000,
26
+ 'pro': true,
27
+ 'has': {
28
+ 'CORS': undefined,
29
+ 'spot': true,
30
+ 'margin': false,
31
+ 'swap': false,
32
+ 'future': false,
33
+ 'option': false,
34
+ 'addMargin': false,
35
+ 'borrowCrossMargin': false,
36
+ 'borrowIsolatedMargin': false,
37
+ 'borrowMargin': false,
38
+ 'cancelAllOrders': true,
39
+ 'cancelOrder': true,
40
+ 'closeAllPositions': false,
41
+ 'closePosition': false,
42
+ 'createDepositAddress': true,
43
+ 'createOrder': true,
44
+ 'createReduceOnlyOrder': false,
45
+ 'createStopLimitOrder': true,
46
+ 'createStopMarketOrder': true,
47
+ 'createStopOrder': true,
48
+ 'editOrder': true,
49
+ 'fetchAccounts': true,
50
+ 'fetchAllGreeks': false,
51
+ 'fetchBalance': true,
52
+ 'fetchBorrowInterest': false,
53
+ 'fetchBorrowRate': false,
54
+ 'fetchBorrowRateHistories': false,
55
+ 'fetchBorrowRateHistory': false,
56
+ 'fetchBorrowRates': false,
57
+ 'fetchBorrowRatesPerSymbol': false,
58
+ 'fetchCrossBorrowRate': false,
59
+ 'fetchCrossBorrowRates': false,
60
+ 'fetchCurrencies': true,
61
+ 'fetchDepositAddress': true,
62
+ 'fetchDepositAddresses': false,
63
+ 'fetchDepositAddressesByNetwork': false,
64
+ 'fetchDeposits': true,
65
+ 'fetchFundingHistory': false,
66
+ 'fetchFundingInterval': false,
67
+ 'fetchFundingIntervals': false,
68
+ 'fetchFundingRate': false,
69
+ 'fetchFundingRateHistory': false,
70
+ 'fetchFundingRates': false,
71
+ 'fetchGreeks': false,
72
+ 'fetchIndexOHLCV': false,
73
+ 'fetchIsolatedBorrowRate': false,
74
+ 'fetchIsolatedBorrowRates': false,
75
+ 'fetchIsolatedPositions': false,
76
+ 'fetchLedger': true,
77
+ 'fetchLeverage': false,
78
+ 'fetchLeverages': false,
79
+ 'fetchLeverageTiers': false,
80
+ 'fetchLiquidations': false,
81
+ 'fetchLongShortRatio': false,
82
+ 'fetchLongShortRatioHistory': false,
83
+ 'fetchMarginAdjustmentHistory': false,
84
+ 'fetchMarginMode': false,
85
+ 'fetchMarginModes': false,
86
+ 'fetchMarketLeverageTiers': false,
87
+ 'fetchMarkets': true,
88
+ 'fetchMarkOHLCV': false,
89
+ 'fetchMarkPrice': false,
90
+ 'fetchMarkPrices': false,
91
+ 'fetchMyLiquidations': false,
92
+ 'fetchMySettlementHistory': false,
93
+ 'fetchMyTrades': true,
94
+ 'fetchOHLCV': true,
95
+ 'fetchOpenInterest': false,
96
+ 'fetchOpenInterestHistory': false,
97
+ 'fetchOpenInterests': false,
98
+ 'fetchOpenOrders': true,
99
+ 'fetchOption': false,
100
+ 'fetchOptionChain': false,
101
+ 'fetchOrder': true,
102
+ 'fetchOrderBook': true,
103
+ 'fetchOrders': true,
104
+ 'fetchOrderTrades': true,
105
+ 'fetchPosition': false,
106
+ 'fetchPositionHistory': false,
107
+ 'fetchPositionMode': false,
108
+ 'fetchPositions': false,
109
+ 'fetchPositionsForSymbol': false,
110
+ 'fetchPositionsHistory': false,
111
+ 'fetchPositionsRisk': false,
112
+ 'fetchPremiumIndexOHLCV': false,
113
+ 'fetchSettlementHistory': false,
114
+ 'fetchTicker': true,
115
+ 'fetchTickers': false,
116
+ 'fetchTime': false,
117
+ 'fetchTrades': true,
118
+ 'fetchTradingFee': false,
119
+ 'fetchTradingFees': false,
120
+ 'fetchUnderlyingAssets': false,
121
+ 'fetchVolatilityHistory': false,
122
+ 'fetchWithdrawals': true,
123
+ 'reduceMargin': false,
124
+ 'repayCrossMargin': false,
125
+ 'repayIsolatedMargin': false,
126
+ 'sandbox': true,
127
+ 'setLeverage': false,
128
+ 'setMargin': false,
129
+ 'setMarginMode': false,
130
+ 'setPositionMode': false,
131
+ 'signIn': true,
132
+ 'transfer': false,
133
+ 'withdraw': true,
134
+ },
135
+ 'timeframes': {
136
+ '1m': '60',
137
+ '5m': '300',
138
+ '15m': '900',
139
+ '30m': '1800',
140
+ '1h': '3600',
141
+ '2h': '7200',
142
+ '4h': '14400',
143
+ '6h': '21600',
144
+ '12h': '43200',
145
+ '1d': '86400',
146
+ '1w': '604800',
147
+ '1M': '2419200',
148
+ '4M': '9676800',
149
+ },
150
+ 'urls': {
151
+ 'logo': 'https://user-images.githubusercontent.com/1294454/108623144-67a3ef00-744e-11eb-8140-75c6b851e945.jpg',
152
+ 'test': {
153
+ 'public': 'https://ndaxmarginstaging.cdnhop.net:8443/AP',
154
+ 'private': 'https://ndaxmarginstaging.cdnhop.net:8443/AP',
155
+ },
156
+ 'api': {
157
+ 'public': 'https://api.ndax.io:8443/AP',
158
+ 'private': 'https://api.ndax.io:8443/AP',
159
+ },
160
+ 'www': 'https://ndax.io',
161
+ 'doc': [
162
+ 'https://apidoc.ndax.io/',
163
+ ],
164
+ 'fees': 'https://ndax.io/fees',
165
+ 'referral': 'https://one.ndax.io/bfQiSL',
166
+ },
167
+ 'api': {
168
+ 'public': {
169
+ 'get': {
170
+ 'Activate2FA': 1,
171
+ 'Authenticate2FA': 1,
172
+ 'AuthenticateUser': 1,
173
+ 'GetL2Snapshot': 1,
174
+ 'GetLevel1': 1,
175
+ 'GetValidate2FARequiredEndpoints': 1,
176
+ 'LogOut': 1,
177
+ 'GetTickerHistory': 1,
178
+ 'GetProduct': 1,
179
+ 'GetProducts': 1,
180
+ 'GetInstrument': 1,
181
+ 'GetInstruments': 1,
182
+ 'Ping': 1,
183
+ 'trades': 1,
184
+ 'GetLastTrades': 1,
185
+ 'SubscribeLevel1': 1,
186
+ 'SubscribeLevel2': 1,
187
+ 'SubscribeTicker': 1,
188
+ 'SubscribeTrades': 1,
189
+ 'SubscribeBlockTrades': 1,
190
+ 'UnsubscribeBlockTrades': 1,
191
+ 'UnsubscribeLevel1': 1,
192
+ 'UnsubscribeLevel2': 1,
193
+ 'UnsubscribeTicker': 1,
194
+ 'UnsubscribeTrades': 1,
195
+ 'Authenticate': 1, // undocumented
196
+ },
197
+ },
198
+ 'private': {
199
+ 'get': {
200
+ 'GetUserAccountInfos': 1,
201
+ 'GetUserAccounts': 1,
202
+ 'GetUserAffiliateCount': 1,
203
+ 'GetUserAffiliateTag': 1,
204
+ 'GetUserConfig': 1,
205
+ 'GetAllUnredactedUserConfigsForUser': 1,
206
+ 'GetUnredactedUserConfigByKey': 1,
207
+ 'GetUserDevices': 1,
208
+ 'GetUserReportTickets': 1,
209
+ 'GetUserReportWriterResultRecords': 1,
210
+ 'GetAccountInfo': 1,
211
+ 'GetAccountPositions': 1,
212
+ 'GetAllAccountConfigs': 1,
213
+ 'GetTreasuryProductsForAccount': 1,
214
+ 'GetAccountTrades': 1,
215
+ 'GetAccountTransactions': 1,
216
+ 'GetOpenTradeReports': 1,
217
+ 'GetAllOpenTradeReports': 1,
218
+ 'GetTradesHistory': 1,
219
+ 'GetOpenOrders': 1,
220
+ 'GetOpenQuotes': 1,
221
+ 'GetOrderFee': 1,
222
+ 'GetOrderHistory': 1,
223
+ 'GetOrdersHistory': 1,
224
+ 'GetOrderStatus': 1,
225
+ 'GetOmsFeeTiers': 1,
226
+ 'GetAccountDepositTransactions': 1,
227
+ 'GetAccountWithdrawTransactions': 1,
228
+ 'GetAllDepositRequestInfoTemplates': 1,
229
+ 'GetDepositInfo': 1,
230
+ 'GetDepositRequestInfoTemplate': 1,
231
+ 'GetDeposits': 1,
232
+ 'GetDepositTicket': 1,
233
+ 'GetDepositTickets': 1,
234
+ 'GetOMSWithdrawFees': 1,
235
+ 'GetWithdrawFee': 1,
236
+ 'GetWithdraws': 1,
237
+ 'GetWithdrawTemplate': 1,
238
+ 'GetWithdrawTemplateTypes': 1,
239
+ 'GetWithdrawTicket': 1,
240
+ 'GetWithdrawTickets': 1,
241
+ },
242
+ 'post': {
243
+ 'AddUserAffiliateTag': 1,
244
+ 'CancelUserReport': 1,
245
+ 'RegisterNewDevice': 1,
246
+ 'SubscribeAccountEvents': 1,
247
+ 'UpdateUserAffiliateTag': 1,
248
+ 'GenerateTradeActivityReport': 1,
249
+ 'GenerateTransactionActivityReport': 1,
250
+ 'GenerateTreasuryActivityReport': 1,
251
+ 'ScheduleTradeActivityReport': 1,
252
+ 'ScheduleTransactionActivityReport': 1,
253
+ 'ScheduleTreasuryActivityReport': 1,
254
+ 'CancelAllOrders': 1,
255
+ 'CancelOrder': 1,
256
+ 'CancelQuote': 1,
257
+ 'CancelReplaceOrder': 1,
258
+ 'CreateQuote': 1,
259
+ 'ModifyOrder': 1,
260
+ 'SendOrder': 1,
261
+ 'SubmitBlockTrade': 1,
262
+ 'UpdateQuote': 1,
263
+ 'CancelWithdraw': 1,
264
+ 'CreateDepositTicket': 1,
265
+ 'CreateWithdrawTicket': 1,
266
+ 'SubmitDepositTicketComment': 1,
267
+ 'SubmitWithdrawTicketComment': 1,
268
+ 'GetOrderHistoryByOrderId': 1,
269
+ },
270
+ },
271
+ },
272
+ 'features': {
273
+ 'spot': {
274
+ 'sandbox': true,
275
+ 'createOrder': {
276
+ 'marginMode': false,
277
+ 'triggerPrice': true,
278
+ 'triggerDirection': false,
279
+ 'triggerPriceType': {
280
+ 'last': true,
281
+ 'mark': false,
282
+ 'index': false,
283
+ // bid & ask
284
+ },
285
+ 'stopLossPrice': false,
286
+ 'takeProfitPrice': false,
287
+ 'attachedStopLossTakeProfit': undefined,
288
+ // todo
289
+ 'timeInForce': {
290
+ 'IOC': true,
291
+ 'FOK': true,
292
+ 'PO': true,
293
+ 'GTD': false,
294
+ },
295
+ 'hedged': false,
296
+ 'trailing': false,
297
+ 'leverage': false,
298
+ 'marketBuyByCost': false,
299
+ 'marketBuyRequiresPrice': false,
300
+ 'selfTradePrevention': false,
301
+ 'iceberg': true, // todo
302
+ },
303
+ 'createOrders': undefined,
304
+ 'fetchMyTrades': {
305
+ 'marginMode': false,
306
+ 'limit': 100,
307
+ 'daysBack': 100000,
308
+ 'untilDays': 100000,
309
+ 'symbolRequired': false,
310
+ },
311
+ 'fetchOrder': {
312
+ 'marginMode': false,
313
+ 'trigger': false,
314
+ 'trailing': false,
315
+ 'symbolRequired': false,
316
+ },
317
+ 'fetchOpenOrders': {
318
+ 'marginMode': false,
319
+ 'limit': undefined,
320
+ 'trigger': false,
321
+ 'trailing': false,
322
+ 'symbolRequired': false,
323
+ },
324
+ 'fetchOrders': {
325
+ 'marginMode': false,
326
+ 'limit': undefined,
327
+ 'daysBack': undefined,
328
+ 'untilDays': undefined,
329
+ 'trigger': false,
330
+ 'trailing': false,
331
+ 'symbolRequired': false,
332
+ },
333
+ 'fetchClosedOrders': undefined,
334
+ 'fetchOHLCV': {
335
+ 'limit': undefined,
336
+ },
337
+ },
338
+ 'swap': {
339
+ 'linear': undefined,
340
+ 'inverse': undefined,
341
+ },
342
+ 'future': {
343
+ 'linear': undefined,
344
+ 'inverse': undefined,
345
+ },
346
+ },
347
+ 'fees': {
348
+ 'trading': {
349
+ 'tierBased': false,
350
+ 'percentage': true,
351
+ 'maker': this.parseNumber('0.002'),
352
+ 'taker': this.parseNumber('0.0025'),
353
+ },
354
+ },
355
+ 'requiredCredentials': {
356
+ 'apiKey': true,
357
+ 'secret': true,
358
+ 'uid': true,
359
+ // these credentials are required for signIn() and withdraw()
360
+ 'login': true,
361
+ 'password': true,
362
+ // 'twofa': true,
363
+ },
364
+ 'precisionMode': TICK_SIZE,
365
+ 'exceptions': {
366
+ 'exact': {
367
+ 'Not_Enough_Funds': InsufficientFunds,
368
+ 'Server Error': ExchangeError,
369
+ 'Resource Not Found': OrderNotFound, // {"result":false,"errormsg":"Resource Not Found","errorcode":104,"detail":null}
370
+ },
371
+ 'broad': {
372
+ 'Invalid InstrumentId': BadSymbol,
373
+ 'This endpoint requires 2FACode along with the payload': AuthenticationError,
374
+ },
375
+ },
376
+ 'options': {
377
+ 'omsId': 1,
378
+ 'orderTypes': {
379
+ 'Market': 1,
380
+ 'Limit': 2,
381
+ 'StopMarket': 3,
382
+ 'StopLimit': 4,
383
+ 'TrailingStopMarket': 5,
384
+ 'TrailingStopLimit': 6,
385
+ 'BlockTrade': 7,
386
+ '1': 1,
387
+ '2': 2,
388
+ '3': 3,
389
+ '4': 4,
390
+ '5': 5,
391
+ '6': 6,
392
+ '7': 7,
393
+ },
394
+ },
395
+ });
396
+ }
397
+ /**
398
+ * @method
399
+ * @name ndax#signIn
400
+ * @description sign in, must be called prior to using other authenticated methods
401
+ * @see https://apidoc.ndax.io/#authenticate2fa
402
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
403
+ * @returns response from exchange
404
+ */
405
+ async signIn(params = {}) {
406
+ this.checkRequiredCredentials();
407
+ if (this.login === undefined || this.password === undefined) {
408
+ throw new AuthenticationError(this.id + ' signIn() requires exchange.login, exchange.password');
409
+ }
410
+ let request = {
411
+ 'grant_type': 'client_credentials', // the only supported value
412
+ };
413
+ const response = await this.publicGetAuthenticate(this.extend(request, params));
414
+ //
415
+ // {
416
+ // "Authenticated":true,
417
+ // "Requires2FA":true,
418
+ // "AuthType":"Google",
419
+ // "AddtlInfo":"",
420
+ // "Pending2FaToken": "6f5c4e66-f3ee-493e-9227-31cc0583b55f"
421
+ // }
422
+ //
423
+ let sessionToken = this.safeString(response, 'SessionToken');
424
+ if (sessionToken !== undefined) {
425
+ this.options['sessionToken'] = sessionToken;
426
+ return response;
427
+ }
428
+ const pending2faToken = this.safeString(response, 'Pending2FaToken');
429
+ if (pending2faToken !== undefined) {
430
+ if (this.twofa === undefined) {
431
+ throw new AuthenticationError(this.id + ' signIn() requires exchange.twofa credentials');
432
+ }
433
+ this.options['pending2faToken'] = pending2faToken;
434
+ request = {
435
+ 'Code': totp(this.twofa),
436
+ };
437
+ const responseInner = await this.publicGetAuthenticate2FA(this.extend(request, params));
438
+ //
439
+ // {
440
+ // "Authenticated": true,
441
+ // "UserId":57764,
442
+ // "SessionToken":"4a2a5857-c4e5-4fac-b09e-2c4c30b591a0"
443
+ // }
444
+ //
445
+ sessionToken = this.safeString(responseInner, 'SessionToken');
446
+ this.options['sessionToken'] = sessionToken;
447
+ return responseInner;
448
+ }
449
+ return response;
450
+ }
451
+ /**
452
+ * @method
453
+ * @name ndax#fetchCurrencies
454
+ * @description fetches all available currencies on an exchange
455
+ * @see https://apidoc.ndax.io/#getproduct
456
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
457
+ * @returns {object} an associative dictionary of currencies
458
+ */
459
+ async fetchCurrencies(params = {}) {
460
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
461
+ const request = {
462
+ 'omsId': omsId,
463
+ };
464
+ const response = await this.publicGetGetProducts(this.extend(request, params));
465
+ //
466
+ // [
467
+ // {
468
+ // "OMSId": "1",
469
+ // "ProductId": "1",
470
+ // "Product": "BTC",
471
+ // "ProductFullName": "Bitcoin",
472
+ // "MasterDataUniqueProductSymbol": "",
473
+ // "ProductType": "CryptoCurrency",
474
+ // "DecimalPlaces": "8",
475
+ // "TickSize": "0.0000000100000000000000000000",
476
+ // "DepositEnabled": true,
477
+ // "WithdrawEnabled": true,
478
+ // "NoFees": false,
479
+ // "IsDisabled": false,
480
+ // "MarginEnabled": false
481
+ // },
482
+ // ...
483
+ //
484
+ const result = {};
485
+ for (let i = 0; i < response.length; i++) {
486
+ const currency = response[i];
487
+ const id = this.safeString(currency, 'ProductId');
488
+ const code = this.safeCurrencyCode(this.safeString(currency, 'Product'));
489
+ const ProductType = this.safeString(currency, 'ProductType');
490
+ let type = (ProductType === 'NationalCurrency') ? 'fiat' : 'crypto';
491
+ if (ProductType === 'Unknown') {
492
+ // such currency is just a blanket entry
493
+ type = 'other';
494
+ }
495
+ result[code] = this.safeCurrencyStructure({
496
+ 'id': id,
497
+ 'name': this.safeString(currency, 'ProductFullName'),
498
+ 'code': code,
499
+ 'type': type,
500
+ 'precision': this.safeNumber(currency, 'TickSize'),
501
+ 'info': currency,
502
+ 'active': !this.safeBool(currency, 'IsDisabled'),
503
+ 'deposit': this.safeBool(currency, 'DepositEnabled'),
504
+ 'withdraw': this.safeBool(currency, 'WithdrawEnabled'),
505
+ 'fee': undefined,
506
+ 'limits': {
507
+ 'amount': {
508
+ 'min': undefined,
509
+ 'max': undefined,
510
+ },
511
+ 'withdraw': {
512
+ 'min': undefined,
513
+ 'max': undefined,
514
+ },
515
+ },
516
+ 'networks': {},
517
+ 'margin': this.safeBool(currency, 'MarginEnabled'),
518
+ });
519
+ }
520
+ return result;
521
+ }
522
+ /**
523
+ * @method
524
+ * @name ndax#fetchMarkets
525
+ * @description retrieves data on all markets for ndax
526
+ * @see https://apidoc.ndax.io/#getinstruments
527
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
528
+ * @returns {object[]} an array of objects representing market data
529
+ */
530
+ async fetchMarkets(params = {}) {
531
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
532
+ const request = {
533
+ 'omsId': omsId,
534
+ };
535
+ const response = await this.publicGetGetInstruments(this.extend(request, params));
536
+ //
537
+ // [
538
+ // {
539
+ // "OMSId":1,
540
+ // "InstrumentId":3,
541
+ // "Symbol":"LTCBTC",
542
+ // "Product1":3,
543
+ // "Product1Symbol":"LTC",
544
+ // "Product2":1,
545
+ // "Product2Symbol":"BTC",
546
+ // "InstrumentType":"Standard",
547
+ // "VenueInstrumentId":3,
548
+ // "VenueId":1,
549
+ // "SortIndex":0,
550
+ // "SessionStatus":"Running",
551
+ // "PreviousSessionStatus":"Stopped",
552
+ // "SessionStatusDateTime":"2020-11-25T19:42:15.245Z",
553
+ // "SelfTradePrevention":true,
554
+ // "QuantityIncrement":0.0000000100000000000000000000,
555
+ // "PriceIncrement":0.0000000100000000000000000000,
556
+ // "MinimumQuantity":0.0100000000000000000000000000,
557
+ // "MinimumPrice":0.0000010000000000000000000000,
558
+ // "VenueSymbol":"LTCBTC",
559
+ // "IsDisable":false,
560
+ // "MasterDataId":0,
561
+ // "PriceCollarThreshold":0.0000000000000000000000000000,
562
+ // "PriceCollarPercent":0.0000000000000000000000000000,
563
+ // "PriceCollarEnabled":false,
564
+ // "PriceFloorLimit":0.0000000000000000000000000000,
565
+ // "PriceFloorLimitEnabled":false,
566
+ // "PriceCeilingLimit":0.0000000000000000000000000000,
567
+ // "PriceCeilingLimitEnabled":false,
568
+ // "CreateWithMarketRunning":true,
569
+ // "AllowOnlyMarketMakerCounterParty":false,
570
+ // "PriceCollarIndexDifference":0.0000000000000000000000000000,
571
+ // "PriceCollarConvertToOtcEnabled":false,
572
+ // "PriceCollarConvertToOtcClientUserId":0,
573
+ // "PriceCollarConvertToOtcAccountId":0,
574
+ // "PriceCollarConvertToOtcThreshold":0.0000000000000000000000000000,
575
+ // "OtcConvertSizeThreshold":0.0000000000000000000000000000,
576
+ // "OtcConvertSizeEnabled":false,
577
+ // "OtcTradesPublic":true,
578
+ // "PriceTier":0
579
+ // },
580
+ // ]
581
+ //
582
+ return this.parseMarkets(response);
583
+ }
584
+ parseMarket(market) {
585
+ const id = this.safeString(market, 'InstrumentId');
586
+ // const lowercaseId = this.safeStringLower (market, 'symbol');
587
+ const baseId = this.safeString(market, 'Product1');
588
+ const quoteId = this.safeString(market, 'Product2');
589
+ const base = this.safeCurrencyCode(this.safeString(market, 'Product1Symbol'));
590
+ const quote = this.safeCurrencyCode(this.safeString(market, 'Product2Symbol'));
591
+ const sessionStatus = this.safeString(market, 'SessionStatus');
592
+ const isDisable = this.safeValue(market, 'IsDisable');
593
+ const sessionRunning = (sessionStatus === 'Running');
594
+ return {
595
+ 'id': id,
596
+ 'symbol': base + '/' + quote,
597
+ 'base': base,
598
+ 'quote': quote,
599
+ 'settle': undefined,
600
+ 'baseId': baseId,
601
+ 'quoteId': quoteId,
602
+ 'settleId': undefined,
603
+ 'type': 'spot',
604
+ 'spot': true,
605
+ 'margin': false,
606
+ 'swap': false,
607
+ 'future': false,
608
+ 'option': false,
609
+ 'active': (sessionRunning && !isDisable),
610
+ 'contract': false,
611
+ 'linear': undefined,
612
+ 'inverse': undefined,
613
+ 'contractSize': undefined,
614
+ 'expiry': undefined,
615
+ 'expiryDatetime': undefined,
616
+ 'strike': undefined,
617
+ 'optionType': undefined,
618
+ 'precision': {
619
+ 'amount': this.safeNumber(market, 'QuantityIncrement'),
620
+ 'price': this.safeNumber(market, 'PriceIncrement'),
621
+ },
622
+ 'limits': {
623
+ 'leverage': {
624
+ 'min': undefined,
625
+ 'max': undefined,
626
+ },
627
+ 'amount': {
628
+ 'min': this.safeNumber(market, 'MinimumQuantity'),
629
+ 'max': undefined,
630
+ },
631
+ 'price': {
632
+ 'min': this.safeNumber(market, 'MinimumPrice'),
633
+ 'max': undefined,
634
+ },
635
+ 'cost': {
636
+ 'min': undefined,
637
+ 'max': undefined,
638
+ },
639
+ },
640
+ 'created': undefined,
641
+ 'info': market,
642
+ };
643
+ }
644
+ parseOrderBook(orderbook, symbol, timestamp = undefined, bidsKey = 'bids', asksKey = 'asks', priceKey = 6, amountKey = 8, countOrIdKey = 2) {
645
+ let nonce = undefined;
646
+ const result = {
647
+ 'symbol': symbol,
648
+ 'bids': [],
649
+ 'asks': [],
650
+ 'timestamp': undefined,
651
+ 'datetime': undefined,
652
+ 'nonce': undefined,
653
+ };
654
+ for (let i = 0; i < orderbook.length; i++) {
655
+ const level = orderbook[i];
656
+ if (timestamp === undefined) {
657
+ timestamp = this.safeInteger(level, 2);
658
+ }
659
+ else {
660
+ const newTimestamp = this.safeInteger(level, 2);
661
+ timestamp = Math.max(timestamp, newTimestamp);
662
+ }
663
+ if (nonce === undefined) {
664
+ nonce = this.safeInteger(level, 0);
665
+ }
666
+ else {
667
+ const newNonce = this.safeInteger(level, 0);
668
+ nonce = Math.max(nonce, newNonce);
669
+ }
670
+ const bidask = this.parseBidAsk(level, priceKey, amountKey);
671
+ const levelSide = this.safeInteger(level, 9);
672
+ const side = levelSide ? asksKey : bidsKey;
673
+ const resultSide = result[side];
674
+ resultSide.push(bidask);
675
+ }
676
+ result['bids'] = this.sortBy(result['bids'], 0, true);
677
+ result['asks'] = this.sortBy(result['asks'], 0);
678
+ result['timestamp'] = timestamp;
679
+ result['datetime'] = this.iso8601(timestamp);
680
+ result['nonce'] = nonce;
681
+ return result;
682
+ }
683
+ /**
684
+ * @method
685
+ * @name ndax#fetchOrderBook
686
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
687
+ * @see https://apidoc.ndax.io/#getl2snapshot
688
+ * @param {string} symbol unified symbol of the market to fetch the order book for
689
+ * @param {int} [limit] the maximum amount of order book entries to return
690
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
691
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
692
+ */
693
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
694
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
695
+ await this.loadMarkets();
696
+ const market = this.market(symbol);
697
+ limit = (limit === undefined) ? 100 : limit; // default 100
698
+ const request = {
699
+ 'omsId': omsId,
700
+ 'InstrumentId': market['id'],
701
+ 'Depth': limit, // default 100
702
+ };
703
+ const response = await this.publicGetGetL2Snapshot(this.extend(request, params));
704
+ //
705
+ // [
706
+ // [
707
+ // 0, // 0 MDUpdateId
708
+ // 1, // 1 Number of Unique Accounts
709
+ // 123, // 2 ActionDateTime in Posix format X 1000
710
+ // 0, // 3 ActionType 0 (New), 1 (Update), 2(Delete)
711
+ // 0.0, // 4 LastTradePrice
712
+ // 0, // 5 Number of Orders
713
+ // 0.0, // 6 Price
714
+ // 0, // 7 ProductPairCode
715
+ // 0.0, // 8 Quantity
716
+ // 0, // 9 Side
717
+ // ],
718
+ // [97244115,1,1607456142963,0,19069.32,1,19069.31,8,0.140095,0],
719
+ // [97244115,0,1607456142963,0,19069.32,1,19068.64,8,0.0055,0],
720
+ // [97244115,0,1607456142963,0,19069.32,1,19068.26,8,0.021291,0],
721
+ // [97244115,1,1607456142964,0,19069.32,1,19069.32,8,0.099636,1],
722
+ // [97244115,0,1607456142964,0,19069.32,1,19069.98,8,0.1,1],
723
+ // [97244115,0,1607456142964,0,19069.32,1,19069.99,8,0.141604,1],
724
+ // ]
725
+ //
726
+ return this.parseOrderBook(response, symbol);
727
+ }
728
+ parseTicker(ticker, market = undefined) {
729
+ //
730
+ // fetchTicker
731
+ //
732
+ // {
733
+ // "OMSId":1,
734
+ // "InstrumentId":8,
735
+ // "BestBid":19069.31,
736
+ // "BestOffer":19069.32,
737
+ // "LastTradedPx":19069.32,
738
+ // "LastTradedQty":0.0001,
739
+ // "LastTradeTime":1607040406424,
740
+ // "SessionOpen":19069.32,
741
+ // "SessionHigh":19069.32,
742
+ // "SessionLow":19069.32,
743
+ // "SessionClose":19069.32,
744
+ // "Volume":0.0001,
745
+ // "CurrentDayVolume":0.0001,
746
+ // "CurrentDayNotional":1.906932,
747
+ // "CurrentDayNumTrades":1,
748
+ // "CurrentDayPxChange":0.00,
749
+ // "Rolling24HrVolume":0.000000000000000000000000000,
750
+ // "Rolling24HrNotional":0.00000000000000000000000,
751
+ // "Rolling24NumTrades":0,
752
+ // "Rolling24HrPxChange":0,
753
+ // "TimeStamp":"1607040406425",
754
+ // "BidQty":0,
755
+ // "AskQty":0,
756
+ // "BidOrderCt":0,
757
+ // "AskOrderCt":0,
758
+ // "Rolling24HrPxChangePercent":0,
759
+ // }
760
+ //
761
+ const timestamp = this.safeInteger(ticker, 'TimeStamp');
762
+ const marketId = this.safeString(ticker, 'InstrumentId');
763
+ market = this.safeMarket(marketId, market);
764
+ const symbol = this.safeSymbol(marketId, market);
765
+ const last = this.safeString(ticker, 'LastTradedPx');
766
+ const percentage = this.safeString(ticker, 'Rolling24HrPxChangePercent');
767
+ const change = this.safeString(ticker, 'Rolling24HrPxChange');
768
+ const open = this.safeString(ticker, 'SessionOpen');
769
+ const baseVolume = this.safeString(ticker, 'Rolling24HrVolume');
770
+ const quoteVolume = this.safeString(ticker, 'Rolling24HrNotional');
771
+ return this.safeTicker({
772
+ 'symbol': symbol,
773
+ 'timestamp': timestamp,
774
+ 'datetime': this.iso8601(timestamp),
775
+ 'high': this.safeString(ticker, 'SessionHigh'),
776
+ 'low': this.safeString(ticker, 'SessionLow'),
777
+ 'bid': this.safeString(ticker, 'BestBid'),
778
+ 'bidVolume': undefined,
779
+ 'ask': this.safeString(ticker, 'BestOffer'),
780
+ 'askVolume': undefined,
781
+ 'vwap': undefined,
782
+ 'open': open,
783
+ 'close': last,
784
+ 'last': last,
785
+ 'previousClose': undefined,
786
+ 'change': change,
787
+ 'percentage': percentage,
788
+ 'average': undefined,
789
+ 'baseVolume': baseVolume,
790
+ 'quoteVolume': quoteVolume,
791
+ 'info': ticker,
792
+ }, market);
793
+ }
794
+ /**
795
+ * @method
796
+ * @name ndax#fetchTicker
797
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
798
+ * @see https://apidoc.ndax.io/#getlevel1
799
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
800
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
801
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
802
+ */
803
+ async fetchTicker(symbol, params = {}) {
804
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
805
+ await this.loadMarkets();
806
+ const market = this.market(symbol);
807
+ const request = {
808
+ 'omsId': omsId,
809
+ 'InstrumentId': market['id'],
810
+ };
811
+ const response = await this.publicGetGetLevel1(this.extend(request, params));
812
+ //
813
+ // {
814
+ // "OMSId":1,
815
+ // "InstrumentId":8,
816
+ // "BestBid":19069.31,
817
+ // "BestOffer":19069.32,
818
+ // "LastTradedPx":19069.32,
819
+ // "LastTradedQty":0.0001,
820
+ // "LastTradeTime":1607040406424,
821
+ // "SessionOpen":19069.32,
822
+ // "SessionHigh":19069.32,
823
+ // "SessionLow":19069.32,
824
+ // "SessionClose":19069.32,
825
+ // "Volume":0.0001,
826
+ // "CurrentDayVolume":0.0001,
827
+ // "CurrentDayNotional":1.906932,
828
+ // "CurrentDayNumTrades":1,
829
+ // "CurrentDayPxChange":0.00,
830
+ // "Rolling24HrVolume":0.000000000000000000000000000,
831
+ // "Rolling24HrNotional":0.00000000000000000000000,
832
+ // "Rolling24NumTrades":0,
833
+ // "Rolling24HrPxChange":0,
834
+ // "TimeStamp":"1607040406425",
835
+ // "BidQty":0,
836
+ // "AskQty":0,
837
+ // "BidOrderCt":0,
838
+ // "AskOrderCt":0,
839
+ // "Rolling24HrPxChangePercent":0,
840
+ // }
841
+ //
842
+ return this.parseTicker(response, market);
843
+ }
844
+ parseOHLCV(ohlcv, market = undefined) {
845
+ //
846
+ // [
847
+ // 1501603632000, // 0 DateTime
848
+ // 2700.33, // 1 High
849
+ // 2687.01, // 2 Low
850
+ // 2687.01, // 3 Open
851
+ // 2687.01, // 4 Close
852
+ // 24.86100992, // 5 Volume
853
+ // 0, // 6 Inside Bid Price
854
+ // 2870.95, // 7 Inside Ask Price
855
+ // 1 // 8 InstrumentId
856
+ // ]
857
+ //
858
+ return [
859
+ this.safeInteger(ohlcv, 0),
860
+ this.safeNumber(ohlcv, 3),
861
+ this.safeNumber(ohlcv, 1),
862
+ this.safeNumber(ohlcv, 2),
863
+ this.safeNumber(ohlcv, 4),
864
+ this.safeNumber(ohlcv, 5),
865
+ ];
866
+ }
867
+ /**
868
+ * @method
869
+ * @name ndax#fetchOHLCV
870
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
871
+ * @see https://apidoc.ndax.io/#gettickerhistory
872
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
873
+ * @param {string} timeframe the length of time each candle represents
874
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
875
+ * @param {int} [limit] the maximum amount of candles to fetch
876
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
877
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
878
+ */
879
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
880
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
881
+ await this.loadMarkets();
882
+ const market = this.market(symbol);
883
+ const request = {
884
+ 'omsId': omsId,
885
+ 'InstrumentId': market['id'],
886
+ 'Interval': this.safeString(this.timeframes, timeframe, timeframe),
887
+ };
888
+ const duration = this.parseTimeframe(timeframe);
889
+ const now = this.milliseconds();
890
+ if (since === undefined) {
891
+ if (limit !== undefined) {
892
+ request['FromDate'] = this.ymdhms(now - duration * limit * 1000);
893
+ request['ToDate'] = this.ymdhms(now);
894
+ }
895
+ }
896
+ else {
897
+ request['FromDate'] = this.ymdhms(since);
898
+ if (limit === undefined) {
899
+ request['ToDate'] = this.ymdhms(now);
900
+ }
901
+ else {
902
+ request['ToDate'] = this.ymdhms(this.sum(since, duration * limit * 1000));
903
+ }
904
+ }
905
+ const response = await this.publicGetGetTickerHistory(this.extend(request, params));
906
+ //
907
+ // [
908
+ // [1607299260000,19069.32,19069.32,19069.32,19069.32,0,19069.31,19069.32,8,1607299200000],
909
+ // [1607299320000,19069.32,19069.32,19069.32,19069.32,0,19069.31,19069.32,8,1607299260000],
910
+ // [1607299380000,19069.32,19069.32,19069.32,19069.32,0,19069.31,19069.32,8,1607299320000],
911
+ // ]
912
+ //
913
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
914
+ }
915
+ parseTrade(trade, market = undefined) {
916
+ //
917
+ // fetchTrades (public)
918
+ //
919
+ // [
920
+ // 6913253, // 0 TradeId
921
+ // 8, // 1 ProductPairCode
922
+ // 0.03340802, // 2 Quantity
923
+ // 19116.08, // 3 Price
924
+ // 2543425077, // 4 Order1
925
+ // 2543425482, // 5 Order2
926
+ // 1606935922416, // 6 Tradetime
927
+ // 0, // 7 Direction
928
+ // 1, // 8 TakerSide
929
+ // 0, // 9 BlockTrade
930
+ // 0, // 10 Either Order1ClientId or Order2ClientId
931
+ // ]
932
+ //
933
+ // fetchMyTrades (private)
934
+ //
935
+ // {
936
+ // "OMSId":1,
937
+ // "ExecutionId":16916567,
938
+ // "TradeId":14476351,
939
+ // "OrderId":2543565231,
940
+ // "AccountId":449,
941
+ // "AccountName":"igor@ccxt.trade",
942
+ // "SubAccountId":0,
943
+ // "ClientOrderId":0,
944
+ // "InstrumentId":8,
945
+ // "Side":"Sell",
946
+ // "OrderType":"Market",
947
+ // "Quantity":0.1230000000000000000000000000,
948
+ // "RemainingQuantity":0.0000000000000000000000000000,
949
+ // "Price":19069.310000000000000000000000,
950
+ // "Value":2345.5251300000000000000000000,
951
+ // "CounterParty":"7",
952
+ // "OrderTradeRevision":1,
953
+ // "Direction":"NoChange",
954
+ // "IsBlockTrade":false,
955
+ // "Fee":1.1727625650000000000000000000,
956
+ // "FeeProductId":8,
957
+ // "OrderOriginator":446,
958
+ // "UserName":"igor@ccxt.trade",
959
+ // "TradeTimeMS":1607565031569,
960
+ // "MakerTaker":"Taker",
961
+ // "AdapterTradeId":0,
962
+ // "InsideBid":19069.310000000000000000000000,
963
+ // "InsideBidSize":0.2400950000000000000000000000,
964
+ // "InsideAsk":19069.320000000000000000000000,
965
+ // "InsideAskSize":0.0997360000000000000000000000,
966
+ // "IsQuote":false,
967
+ // "CounterPartyClientUserId":1,
968
+ // "NotionalProductId":2,
969
+ // "NotionalRate":1.0000000000000000000000000000,
970
+ // "NotionalValue":2345.5251300000000000000000000,
971
+ // "NotionalHoldAmount":0,
972
+ // "TradeTime":637431618315686826
973
+ // }
974
+ //
975
+ // fetchOrderTrades
976
+ //
977
+ // {
978
+ // "Side":"Sell",
979
+ // "OrderId":2543565235,
980
+ // "Price":18600.000000000000000000000000,
981
+ // "Quantity":0.0000000000000000000000000000,
982
+ // "DisplayQuantity":0.0000000000000000000000000000,
983
+ // "Instrument":8,
984
+ // "Account":449,
985
+ // "AccountName":"igor@ccxt.trade",
986
+ // "OrderType":"Limit",
987
+ // "ClientOrderId":0,
988
+ // "OrderState":"FullyExecuted",
989
+ // "ReceiveTime":1607585844956,
990
+ // "ReceiveTimeTicks":637431826449564182,
991
+ // "LastUpdatedTime":1607585844959,
992
+ // "LastUpdatedTimeTicks":637431826449593893,
993
+ // "OrigQuantity":0.1230000000000000000000000000,
994
+ // "QuantityExecuted":0.1230000000000000000000000000,
995
+ // "GrossValueExecuted":2345.3947500000000000000000000,
996
+ // "ExecutableValue":0.0000000000000000000000000000,
997
+ // "AvgPrice":19068.250000000000000000000000,
998
+ // "CounterPartyId":0,
999
+ // "ChangeReason":"Trade",
1000
+ // "OrigOrderId":2543565235,
1001
+ // "OrigClOrdId":0,
1002
+ // "EnteredBy":446,
1003
+ // "UserName":"igor@ccxt.trade",
1004
+ // "IsQuote":false,
1005
+ // "InsideAsk":19069.320000000000000000000000,
1006
+ // "InsideAskSize":0.0997360000000000000000000000,
1007
+ // "InsideBid":19068.250000000000000000000000,
1008
+ // "InsideBidSize":1.3300010000000000000000000000,
1009
+ // "LastTradePrice":19068.250000000000000000000000,
1010
+ // "RejectReason":"",
1011
+ // "IsLockedIn":false,
1012
+ // "CancelReason":"",
1013
+ // "OrderFlag":"0",
1014
+ // "UseMargin":false,
1015
+ // "StopPrice":0.0000000000000000000000000000,
1016
+ // "PegPriceType":"Unknown",
1017
+ // "PegOffset":0.0000000000000000000000000000,
1018
+ // "PegLimitOffset":0.0000000000000000000000000000,
1019
+ // "IpAddress":"x.x.x.x",
1020
+ // "ClientOrderIdUuid":null,
1021
+ // "OMSId":1
1022
+ // }
1023
+ //
1024
+ let priceString = undefined;
1025
+ let amountString = undefined;
1026
+ let costString = undefined;
1027
+ let timestamp = undefined;
1028
+ let id = undefined;
1029
+ let marketId = undefined;
1030
+ let side = undefined;
1031
+ let orderId = undefined;
1032
+ let takerOrMaker = undefined;
1033
+ let fee = undefined;
1034
+ let type = undefined;
1035
+ if (Array.isArray(trade)) {
1036
+ priceString = this.safeString(trade, 3);
1037
+ amountString = this.safeString(trade, 2);
1038
+ timestamp = this.safeInteger(trade, 6);
1039
+ id = this.safeString(trade, 0);
1040
+ marketId = this.safeString(trade, 1);
1041
+ const takerSide = this.safeValue(trade, 8);
1042
+ side = takerSide ? 'sell' : 'buy';
1043
+ orderId = this.safeString(trade, 4);
1044
+ }
1045
+ else {
1046
+ timestamp = this.safeInteger2(trade, 'TradeTimeMS', 'ReceiveTime');
1047
+ id = this.safeString(trade, 'TradeId');
1048
+ orderId = this.safeString2(trade, 'OrderId', 'OrigOrderId');
1049
+ marketId = this.safeString2(trade, 'InstrumentId', 'Instrument');
1050
+ priceString = this.safeString(trade, 'Price');
1051
+ amountString = this.safeString(trade, 'Quantity');
1052
+ costString = this.safeString2(trade, 'Value', 'GrossValueExecuted');
1053
+ takerOrMaker = this.safeStringLower(trade, 'MakerTaker');
1054
+ side = this.safeStringLower(trade, 'Side');
1055
+ type = this.safeStringLower(trade, 'OrderType');
1056
+ const feeCostString = this.safeString(trade, 'Fee');
1057
+ if (feeCostString !== undefined) {
1058
+ const feeCurrencyId = this.safeString(trade, 'FeeProductId');
1059
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
1060
+ fee = {
1061
+ 'cost': feeCostString,
1062
+ 'currency': feeCurrencyCode,
1063
+ };
1064
+ }
1065
+ }
1066
+ const symbol = this.safeSymbol(marketId, market);
1067
+ return this.safeTrade({
1068
+ 'info': trade,
1069
+ 'id': id,
1070
+ 'symbol': symbol,
1071
+ 'timestamp': timestamp,
1072
+ 'datetime': this.iso8601(timestamp),
1073
+ 'order': orderId,
1074
+ 'type': type,
1075
+ 'side': side,
1076
+ 'takerOrMaker': takerOrMaker,
1077
+ 'price': priceString,
1078
+ 'amount': amountString,
1079
+ 'cost': costString,
1080
+ 'fee': fee,
1081
+ }, market);
1082
+ }
1083
+ /**
1084
+ * @method
1085
+ * @name ndax#fetchTrades
1086
+ * @description get the list of most recent trades for a particular symbol
1087
+ * @param {string} symbol unified symbol of the market to fetch trades for
1088
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
1089
+ * @param {int} [limit] the maximum amount of trades to fetch
1090
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1091
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1092
+ */
1093
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1094
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1095
+ await this.loadMarkets();
1096
+ const market = this.market(symbol);
1097
+ const request = {
1098
+ 'omsId': omsId,
1099
+ 'InstrumentId': market['id'],
1100
+ };
1101
+ if (limit !== undefined) {
1102
+ request['Count'] = limit;
1103
+ }
1104
+ const response = await this.publicGetGetLastTrades(this.extend(request, params));
1105
+ //
1106
+ // [
1107
+ // [6913253,8,0.03340802,19116.08,2543425077,2543425482,1606935922416,0,1,0,0],
1108
+ // [6913254,8,0.01391671,19117.42,2543427510,2543427811,1606935927998,1,1,0,0],
1109
+ // [6913255,8,0.000006,19107.81,2543430495,2543430793,1606935933881,2,0,0,0],
1110
+ // ]
1111
+ //
1112
+ return this.parseTrades(response, market, since, limit);
1113
+ }
1114
+ /**
1115
+ * @method
1116
+ * @name ndax#fetchAccounts
1117
+ * @description fetch all the accounts associated with a profile
1118
+ * @see https://apidoc.ndax.io/#getuseraccounts
1119
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1120
+ * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
1121
+ */
1122
+ async fetchAccounts(params = {}) {
1123
+ if (!this.login) {
1124
+ throw new AuthenticationError(this.id + ' fetchAccounts() requires exchange.login email credential');
1125
+ }
1126
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1127
+ this.checkRequiredCredentials();
1128
+ const request = {
1129
+ 'omsId': omsId,
1130
+ 'UserId': this.uid,
1131
+ 'UserName': this.login,
1132
+ };
1133
+ const response = await this.privateGetGetUserAccounts(this.extend(request, params));
1134
+ //
1135
+ // [ 449 ] // comma-separated list of account ids
1136
+ //
1137
+ const result = [];
1138
+ for (let i = 0; i < response.length; i++) {
1139
+ const accountId = this.safeString(response, i);
1140
+ result.push({
1141
+ 'id': accountId,
1142
+ 'type': undefined,
1143
+ 'currency': undefined,
1144
+ 'info': accountId,
1145
+ });
1146
+ }
1147
+ return result;
1148
+ }
1149
+ parseBalance(response) {
1150
+ const result = {
1151
+ 'info': response,
1152
+ 'timestamp': undefined,
1153
+ 'datetime': undefined,
1154
+ };
1155
+ for (let i = 0; i < response.length; i++) {
1156
+ const balance = response[i];
1157
+ const currencyId = this.safeString(balance, 'ProductId');
1158
+ if (currencyId in this.currencies_by_id) {
1159
+ const code = this.safeCurrencyCode(currencyId);
1160
+ const account = this.account();
1161
+ account['total'] = this.safeString(balance, 'Amount');
1162
+ account['used'] = this.safeString(balance, 'Hold');
1163
+ result[code] = account;
1164
+ }
1165
+ }
1166
+ return this.safeBalance(result);
1167
+ }
1168
+ /**
1169
+ * @method
1170
+ * @name ndax#fetchBalance
1171
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1172
+ * @see https://apidoc.ndax.io/#getaccountpositions
1173
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1174
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1175
+ */
1176
+ async fetchBalance(params = {}) {
1177
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1178
+ await this.loadMarkets();
1179
+ await this.loadAccounts();
1180
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId');
1181
+ let accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1182
+ if (accountId === undefined) {
1183
+ accountId = parseInt(this.accounts[0]['id']);
1184
+ }
1185
+ params = this.omit(params, ['accountId', 'AccountId']);
1186
+ const request = {
1187
+ 'omsId': omsId,
1188
+ 'AccountId': accountId,
1189
+ };
1190
+ const response = await this.privateGetGetAccountPositions(this.extend(request, params));
1191
+ //
1192
+ // [
1193
+ // {
1194
+ // "OMSId":1,
1195
+ // "AccountId":449,
1196
+ // "ProductSymbol":"BTC",
1197
+ // "ProductId":1,
1198
+ // "Amount":10.000000000000000000000000000,
1199
+ // "Hold":0,
1200
+ // "PendingDeposits":0.0000000000000000000000000000,
1201
+ // "PendingWithdraws":0.0000000000000000000000000000,
1202
+ // "TotalDayDeposits":10.000000000000000000000000000,
1203
+ // "TotalMonthDeposits":10.000000000000000000000000000,
1204
+ // "TotalYearDeposits":10.000000000000000000000000000,
1205
+ // "TotalDayDepositNotional":10.000000000000000000000000000,
1206
+ // "TotalMonthDepositNotional":10.000000000000000000000000000,
1207
+ // "TotalYearDepositNotional":10.000000000000000000000000000,
1208
+ // "TotalDayWithdraws":0,
1209
+ // "TotalMonthWithdraws":0,
1210
+ // "TotalYearWithdraws":0,
1211
+ // "TotalDayWithdrawNotional":0,
1212
+ // "TotalMonthWithdrawNotional":0,
1213
+ // "TotalYearWithdrawNotional":0,
1214
+ // "NotionalProductId":8,
1215
+ // "NotionalProductSymbol":"USDT",
1216
+ // "NotionalValue":10.000000000000000000000000000,
1217
+ // "NotionalHoldAmount":0,
1218
+ // "NotionalRate":1
1219
+ // },
1220
+ // ]
1221
+ //
1222
+ return this.parseBalance(response);
1223
+ }
1224
+ parseLedgerEntryType(type) {
1225
+ const types = {
1226
+ 'Trade': 'trade',
1227
+ 'Deposit': 'transaction',
1228
+ 'Withdraw': 'transaction',
1229
+ 'Transfer': 'transfer',
1230
+ 'OrderHold': 'trade',
1231
+ 'WithdrawHold': 'transaction',
1232
+ 'DepositHold': 'transaction',
1233
+ 'MarginHold': 'trade',
1234
+ 'ManualHold': 'trade',
1235
+ 'ManualEntry': 'trade',
1236
+ 'MarginAcquisition': 'trade',
1237
+ 'MarginRelinquish': 'trade',
1238
+ 'MarginQuoteHold': 'trade',
1239
+ };
1240
+ return this.safeString(types, type, type);
1241
+ }
1242
+ parseLedgerEntry(item, currency = undefined) {
1243
+ //
1244
+ // {
1245
+ // "TransactionId": 2663709493,
1246
+ // "ReferenceId": 68,
1247
+ // "OMSId": 1,
1248
+ // "AccountId": 449,
1249
+ // "CR": 10.000000000000000000000000000,
1250
+ // "DR": 0.0000000000000000000000000000,
1251
+ // "Counterparty": 3,
1252
+ // "TransactionType": "Other",
1253
+ // "ReferenceType": "Deposit",
1254
+ // "ProductId": 1,
1255
+ // "Balance": 10.000000000000000000000000000,
1256
+ // "TimeStamp": 1607532331591
1257
+ // }
1258
+ //
1259
+ const currencyId = this.safeString(item, 'ProductId');
1260
+ currency = this.safeCurrency(currencyId, currency);
1261
+ const credit = this.safeString(item, 'CR');
1262
+ const debit = this.safeString(item, 'DR');
1263
+ let amount = undefined;
1264
+ let direction = undefined;
1265
+ if (Precise.stringLt(credit, '0')) {
1266
+ amount = credit;
1267
+ direction = 'in';
1268
+ }
1269
+ else if (Precise.stringLt(debit, '0')) {
1270
+ amount = debit;
1271
+ direction = 'out';
1272
+ }
1273
+ let before = undefined;
1274
+ const after = this.safeString(item, 'Balance');
1275
+ if (direction === 'out') {
1276
+ before = Precise.stringAdd(after, amount);
1277
+ }
1278
+ else if (direction === 'in') {
1279
+ before = Precise.stringMax('0', Precise.stringSub(after, amount));
1280
+ }
1281
+ const timestamp = this.safeInteger(item, 'TimeStamp');
1282
+ return this.safeLedgerEntry({
1283
+ 'info': item,
1284
+ 'id': this.safeString(item, 'TransactionId'),
1285
+ 'direction': direction,
1286
+ 'account': this.safeString(item, 'AccountId'),
1287
+ 'referenceId': this.safeString(item, 'ReferenceId'),
1288
+ 'referenceAccount': this.safeString(item, 'Counterparty'),
1289
+ 'type': this.parseLedgerEntryType(this.safeString(item, 'ReferenceType')),
1290
+ 'currency': this.safeCurrencyCode(currencyId, currency),
1291
+ 'amount': this.parseNumber(amount),
1292
+ 'before': this.parseNumber(before),
1293
+ 'after': this.parseNumber(after),
1294
+ 'status': 'ok',
1295
+ 'timestamp': timestamp,
1296
+ 'datetime': this.iso8601(timestamp),
1297
+ 'fee': undefined,
1298
+ }, currency);
1299
+ }
1300
+ /**
1301
+ * @method
1302
+ * @name ndax#fetchLedger
1303
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1304
+ * @see https://apidoc.ndax.io/#getaccounttransactions
1305
+ * @param {string} [code] unified currency code, default is undefined
1306
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1307
+ * @param {int} [limit] max number of ledger entries to return, default is undefined
1308
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1309
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1310
+ */
1311
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1312
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1313
+ await this.loadMarkets();
1314
+ await this.loadAccounts();
1315
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1316
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1317
+ params = this.omit(params, ['accountId', 'AccountId']);
1318
+ const request = {
1319
+ 'omsId': omsId,
1320
+ 'AccountId': accountId,
1321
+ };
1322
+ if (limit !== undefined) {
1323
+ request['Depth'] = limit;
1324
+ }
1325
+ const response = await this.privateGetGetAccountTransactions(this.extend(request, params));
1326
+ //
1327
+ // [
1328
+ // {
1329
+ // "TransactionId":2663709493,
1330
+ // "ReferenceId":68,
1331
+ // "OMSId":1,
1332
+ // "AccountId":449,
1333
+ // "CR":10.000000000000000000000000000,
1334
+ // "DR":0.0000000000000000000000000000,
1335
+ // "Counterparty":3,
1336
+ // "TransactionType":"Other",
1337
+ // "ReferenceType":"Deposit",
1338
+ // "ProductId":1,
1339
+ // "Balance":10.000000000000000000000000000,
1340
+ // "TimeStamp":1607532331591
1341
+ // },
1342
+ // ]
1343
+ //
1344
+ let currency = undefined;
1345
+ if (code !== undefined) {
1346
+ currency = this.currency(code);
1347
+ }
1348
+ return this.parseLedger(response, currency, since, limit);
1349
+ }
1350
+ parseOrderStatus(status) {
1351
+ const statuses = {
1352
+ 'Accepted': 'open',
1353
+ 'Rejected': 'rejected',
1354
+ 'Working': 'open',
1355
+ 'Canceled': 'canceled',
1356
+ 'Expired': 'expired',
1357
+ 'FullyExecuted': 'closed',
1358
+ };
1359
+ return this.safeString(statuses, status, status);
1360
+ }
1361
+ parseOrder(order, market = undefined) {
1362
+ //
1363
+ // createOrder
1364
+ //
1365
+ // {
1366
+ // "status":"Accepted",
1367
+ // "errormsg":"",
1368
+ // "OrderId": 2543565231
1369
+ // }
1370
+ //
1371
+ // editOrder
1372
+ //
1373
+ // {
1374
+ // "ReplacementOrderId": 1234,
1375
+ // "ReplacementClOrdId": 1561,
1376
+ // "OrigOrderId": 5678,
1377
+ // "OrigClOrdId": 91011,
1378
+ // }
1379
+ //
1380
+ // fetchOpenOrders, fetchClosedOrders
1381
+ //
1382
+ // {
1383
+ // "Side":"Buy",
1384
+ // "OrderId":2543565233,
1385
+ // "Price":19010,
1386
+ // "Quantity":0.345,
1387
+ // "DisplayQuantity":0.345,
1388
+ // "Instrument":8,
1389
+ // "Account":449,
1390
+ // "AccountName":"igor@ccxt.trade",
1391
+ // "OrderType":"Limit",
1392
+ // "ClientOrderId":0,
1393
+ // "OrderState":"Working",
1394
+ // "ReceiveTime":1607579326003,
1395
+ // "ReceiveTimeTicks":637431761260028981,
1396
+ // "LastUpdatedTime":1607579326005,
1397
+ // "LastUpdatedTimeTicks":637431761260054714,
1398
+ // "OrigQuantity":0.345,
1399
+ // "QuantityExecuted":0,
1400
+ // "GrossValueExecuted":0,
1401
+ // "ExecutableValue":0,
1402
+ // "AvgPrice":0,
1403
+ // "CounterPartyId":0,
1404
+ // "ChangeReason":"NewInputAccepted",
1405
+ // "OrigOrderId":2543565233,
1406
+ // "OrigClOrdId":0,
1407
+ // "EnteredBy":446,
1408
+ // "UserName":"igor@ccxt.trade",
1409
+ // "IsQuote":false,
1410
+ // "InsideAsk":19069.32,
1411
+ // "InsideAskSize":0.099736,
1412
+ // "InsideBid":19068.25,
1413
+ // "InsideBidSize":1.330001,
1414
+ // "LastTradePrice":19068.25,
1415
+ // "RejectReason":"",
1416
+ // "IsLockedIn":false,
1417
+ // "CancelReason":"",
1418
+ // "OrderFlag":"AddedToBook",
1419
+ // "UseMargin":false,
1420
+ // "StopPrice":0,
1421
+ // "PegPriceType":"Unknown",
1422
+ // "PegOffset":0,
1423
+ // "PegLimitOffset":0,
1424
+ // "IpAddress":null,
1425
+ // "ClientOrderIdUuid":null,
1426
+ // "OMSId":1
1427
+ // }
1428
+ //
1429
+ const timestamp = this.safeInteger(order, 'ReceiveTime');
1430
+ const marketId = this.safeString(order, 'Instrument');
1431
+ return this.safeOrder({
1432
+ 'id': this.safeString2(order, 'ReplacementOrderId', 'OrderId'),
1433
+ 'clientOrderId': this.safeString2(order, 'ReplacementClOrdId', 'ClientOrderId'),
1434
+ 'info': order,
1435
+ 'timestamp': timestamp,
1436
+ 'datetime': this.iso8601(timestamp),
1437
+ 'lastTradeTimestamp': this.safeInteger(order, 'LastUpdatedTime'),
1438
+ 'status': this.parseOrderStatus(this.safeString(order, 'OrderState')),
1439
+ 'symbol': this.safeSymbol(marketId, market),
1440
+ 'type': this.safeStringLower(order, 'OrderType'),
1441
+ 'timeInForce': undefined,
1442
+ 'postOnly': undefined,
1443
+ 'side': this.safeStringLower(order, 'Side'),
1444
+ 'price': this.safeString(order, 'Price'),
1445
+ 'triggerPrice': this.parseNumber(this.omitZero(this.safeString(order, 'StopPrice'))),
1446
+ 'cost': this.safeString(order, 'GrossValueExecuted'),
1447
+ 'amount': this.safeString(order, 'OrigQuantity'),
1448
+ 'filled': this.safeString(order, 'QuantityExecuted'),
1449
+ 'average': this.safeString(order, 'AvgPrice'),
1450
+ 'remaining': undefined,
1451
+ 'fee': undefined,
1452
+ 'trades': undefined,
1453
+ }, market);
1454
+ }
1455
+ /**
1456
+ * @method
1457
+ * @name ndax#createOrder
1458
+ * @description create a trade order
1459
+ * @see https://apidoc.ndax.io/#sendorder
1460
+ * @param {string} symbol unified symbol of the market to create an order in
1461
+ * @param {string} type 'market' or 'limit'
1462
+ * @param {string} side 'buy' or 'sell'
1463
+ * @param {float} amount how much of currency you want to trade in units of base currency
1464
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1465
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1466
+ * @param {float} [params.triggerPrice] the price at which a trigger order would be triggered
1467
+ * @param {string} [params.clientOrderId] a unique id for the order
1468
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1469
+ */
1470
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1471
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1472
+ await this.loadMarkets();
1473
+ await this.loadAccounts();
1474
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1475
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1476
+ const clientOrderId = this.safeInteger2(params, 'ClientOrderId', 'clientOrderId');
1477
+ let orderType = this.safeInteger(this.options['orderTypes'], this.capitalize(type));
1478
+ const triggerPrice = this.safeString(params, 'triggerPrice');
1479
+ if (triggerPrice !== undefined) {
1480
+ if (type === 'market') {
1481
+ orderType = 3;
1482
+ }
1483
+ else if (type === 'limit') {
1484
+ orderType = 4;
1485
+ }
1486
+ }
1487
+ params = this.omit(params, ['accountId', 'AccountId', 'clientOrderId', 'ClientOrderId', 'triggerPrice']);
1488
+ const market = this.market(symbol);
1489
+ const orderSide = (side === 'buy') ? 0 : 1;
1490
+ const request = {
1491
+ 'InstrumentId': parseInt(market['id']),
1492
+ 'omsId': omsId,
1493
+ 'AccountId': accountId,
1494
+ 'TimeInForce': 1,
1495
+ // 'ClientOrderId': clientOrderId, // defaults to 0
1496
+ // If this order is order A, OrderIdOCO refers to the order ID of an order B (which is not the order being created by this call).
1497
+ // If order B executes, then order A created by this call is canceled.
1498
+ // You can also set up order B to watch order A in the same way, but that may require an update to order B to make it watch this one, which could have implications for priority in the order book.
1499
+ // See CancelReplaceOrder and ModifyOrder.
1500
+ // 'OrderIdOCO': 0, // The order ID if One Cancels the Other.
1501
+ // 'UseDisplayQuantity': false, // If you enter a Limit order with a reserve, you must set UseDisplayQuantity to true
1502
+ 'Side': orderSide,
1503
+ 'Quantity': parseFloat(this.amountToPrecision(symbol, amount)),
1504
+ 'OrderType': orderType, // 0 Unknown, 1 Market, 2 Limit, 3 StopMarket, 4 StopLimit, 5 TrailingStopMarket, 6 TrailingStopLimit, 7 BlockTrade
1505
+ // 'PegPriceType': 3, // 1 Last, 2 Bid, 3 Ask, 4 Midpoint
1506
+ // 'LimitPrice': parseFloat (this.priceToPrecision (symbol, price)),
1507
+ };
1508
+ // If OrderType=1 (Market), Side=0 (Buy), and LimitPrice is supplied, the Market order will execute up to the value specified
1509
+ if (price !== undefined) {
1510
+ request['LimitPrice'] = parseFloat(this.priceToPrecision(symbol, price));
1511
+ }
1512
+ if (clientOrderId !== undefined) {
1513
+ request['ClientOrderId'] = clientOrderId;
1514
+ }
1515
+ if (triggerPrice !== undefined) {
1516
+ request['StopPrice'] = triggerPrice;
1517
+ }
1518
+ const response = await this.privatePostSendOrder(this.extend(request, params));
1519
+ //
1520
+ // {
1521
+ // "status":"Accepted",
1522
+ // "errormsg":"",
1523
+ // "OrderId": 2543565231
1524
+ // }
1525
+ //
1526
+ return this.parseOrder(response, market);
1527
+ }
1528
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1529
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1530
+ await this.loadMarkets();
1531
+ await this.loadAccounts();
1532
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1533
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1534
+ const clientOrderId = this.safeInteger2(params, 'ClientOrderId', 'clientOrderId');
1535
+ params = this.omit(params, ['accountId', 'AccountId', 'clientOrderId', 'ClientOrderId']);
1536
+ const market = this.market(symbol);
1537
+ const orderSide = (side === 'buy') ? 0 : 1;
1538
+ const request = {
1539
+ 'OrderIdToReplace': parseInt(id),
1540
+ 'InstrumentId': parseInt(market['id']),
1541
+ 'omsId': omsId,
1542
+ 'AccountId': accountId,
1543
+ 'TimeInForce': 1,
1544
+ // 'ClientOrderId': clientOrderId, // defaults to 0
1545
+ // If this order is order A, OrderIdOCO refers to the order ID of an order B (which is not the order being created by this call).
1546
+ // If order B executes, then order A created by this call is canceled.
1547
+ // You can also set up order B to watch order A in the same way, but that may require an update to order B to make it watch this one, which could have implications for priority in the order book.
1548
+ // See CancelReplaceOrder and ModifyOrder.
1549
+ // 'OrderIdOCO': 0, // The order ID if One Cancels the Other.
1550
+ // 'UseDisplayQuantity': false, // If you enter a Limit order with a reserve, you must set UseDisplayQuantity to true
1551
+ 'Side': orderSide,
1552
+ 'Quantity': parseFloat(this.amountToPrecision(symbol, amount)),
1553
+ 'OrderType': this.safeInteger(this.options['orderTypes'], this.capitalize(type)), // 0 Unknown, 1 Market, 2 Limit, 3 StopMarket, 4 StopLimit, 5 TrailingStopMarket, 6 TrailingStopLimit, 7 BlockTrade
1554
+ // 'PegPriceType': 3, // 1 Last, 2 Bid, 3 Ask, 4 Midpoint
1555
+ // 'LimitPrice': parseFloat (this.priceToPrecision (symbol, price)),
1556
+ };
1557
+ // If OrderType=1 (Market), Side=0 (Buy), and LimitPrice is supplied, the Market order will execute up to the value specified
1558
+ if (price !== undefined) {
1559
+ request['LimitPrice'] = parseFloat(this.priceToPrecision(symbol, price));
1560
+ }
1561
+ if (clientOrderId !== undefined) {
1562
+ request['ClientOrderId'] = clientOrderId;
1563
+ }
1564
+ const response = await this.privatePostCancelReplaceOrder(this.extend(request, params));
1565
+ //
1566
+ // {
1567
+ // "replacementOrderId": 1234,
1568
+ // "replacementClOrdId": 1561,
1569
+ // "origOrderId": 5678,
1570
+ // "origClOrdId": 91011,
1571
+ // }
1572
+ //
1573
+ return this.parseOrder(response, market);
1574
+ }
1575
+ /**
1576
+ * @method
1577
+ * @name ndax#fetchMyTrades
1578
+ * @description fetch all trades made by the user
1579
+ * @see https://apidoc.ndax.io/#gettradeshistory
1580
+ * @param {string} symbol unified market symbol
1581
+ * @param {int} [since] the earliest time in ms to fetch trades for
1582
+ * @param {int} [limit] the maximum number of trades structures to retrieve
1583
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1584
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1585
+ */
1586
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1587
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1588
+ await this.loadMarkets();
1589
+ await this.loadAccounts();
1590
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1591
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1592
+ params = this.omit(params, ['accountId', 'AccountId']);
1593
+ const request = {
1594
+ 'omsId': omsId,
1595
+ 'AccountId': accountId,
1596
+ // 'InstrumentId': market['id'],
1597
+ // 'TradeId': 123, // If you specify TradeId, GetTradesHistory can return all states for a single trade
1598
+ // 'OrderId': 456, // If specified, the call returns all trades associated with the order
1599
+ // 'UserId': integer. The ID of the logged-in user. If not specified, the call returns trades associated with the users belonging to the default account for the logged-in user of this OMS.
1600
+ // 'StartTimeStamp': long integer. The historical date and time at which to begin the trade report, in POSIX format. If not specified, reverts to the start date of this account on the trading venue.
1601
+ // 'EndTimeStamp': long integer. Date at which to end the trade report, in POSIX format.
1602
+ // 'Depth': integer. In this case, the count of trades to return, counting from the StartIndex. If Depth is not specified, returns all trades between BeginTimeStamp and EndTimeStamp, beginning at StartIndex.
1603
+ // 'StartIndex': 0 // from the most recent trade 0 and moving backwards in time
1604
+ // 'ExecutionId': 123, // The ID of the individual buy or sell execution. If not specified, returns all.
1605
+ };
1606
+ let market = undefined;
1607
+ if (symbol !== undefined) {
1608
+ market = this.market(symbol);
1609
+ request['InstrumentId'] = market['id'];
1610
+ }
1611
+ if (since !== undefined) {
1612
+ request['StartTimeStamp'] = this.parseToInt(since / 1000);
1613
+ }
1614
+ if (limit !== undefined) {
1615
+ request['Depth'] = limit;
1616
+ }
1617
+ const response = await this.privateGetGetTradesHistory(this.extend(request, params));
1618
+ //
1619
+ // [
1620
+ // {
1621
+ // "OMSId":1,
1622
+ // "ExecutionId":16916567,
1623
+ // "TradeId":14476351,
1624
+ // "OrderId":2543565231,
1625
+ // "AccountId":449,
1626
+ // "AccountName":"igor@ccxt.trade",
1627
+ // "SubAccountId":0,
1628
+ // "ClientOrderId":0,
1629
+ // "InstrumentId":8,
1630
+ // "Side":"Sell",
1631
+ // "OrderType":"Market",
1632
+ // "Quantity":0.1230000000000000000000000000,
1633
+ // "RemainingQuantity":0.0000000000000000000000000000,
1634
+ // "Price":19069.310000000000000000000000,
1635
+ // "Value":2345.5251300000000000000000000,
1636
+ // "CounterParty":"7",
1637
+ // "OrderTradeRevision":1,
1638
+ // "Direction":"NoChange",
1639
+ // "IsBlockTrade":false,
1640
+ // "Fee":1.1727625650000000000000000000,
1641
+ // "FeeProductId":8,
1642
+ // "OrderOriginator":446,
1643
+ // "UserName":"igor@ccxt.trade",
1644
+ // "TradeTimeMS":1607565031569,
1645
+ // "MakerTaker":"Taker",
1646
+ // "AdapterTradeId":0,
1647
+ // "InsideBid":19069.310000000000000000000000,
1648
+ // "InsideBidSize":0.2400950000000000000000000000,
1649
+ // "InsideAsk":19069.320000000000000000000000,
1650
+ // "InsideAskSize":0.0997360000000000000000000000,
1651
+ // "IsQuote":false,
1652
+ // "CounterPartyClientUserId":1,
1653
+ // "NotionalProductId":2,
1654
+ // "NotionalRate":1.0000000000000000000000000000,
1655
+ // "NotionalValue":2345.5251300000000000000000000,
1656
+ // "NotionalHoldAmount":0,
1657
+ // "TradeTime":637431618315686826
1658
+ // }
1659
+ // ]
1660
+ //
1661
+ return this.parseTrades(response, market, since, limit);
1662
+ }
1663
+ /**
1664
+ * @method
1665
+ * @name ndax#cancelAllOrders
1666
+ * @description cancel all open orders
1667
+ * @see https://apidoc.ndax.io/#cancelallorders
1668
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1669
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1670
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1671
+ */
1672
+ async cancelAllOrders(symbol = undefined, params = {}) {
1673
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1674
+ await this.loadMarkets();
1675
+ await this.loadAccounts();
1676
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1677
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1678
+ params = this.omit(params, ['accountId', 'AccountId']);
1679
+ const request = {
1680
+ 'omsId': omsId,
1681
+ 'AccountId': accountId,
1682
+ };
1683
+ if (symbol !== undefined) {
1684
+ const market = this.market(symbol);
1685
+ request['IntrumentId'] = market['id'];
1686
+ }
1687
+ const response = await this.privatePostCancelAllOrders(this.extend(request, params));
1688
+ //
1689
+ // {
1690
+ // "result":true,
1691
+ // "errormsg":null,
1692
+ // "errorcode":0,
1693
+ // "detail":null
1694
+ // }
1695
+ //
1696
+ return [
1697
+ this.safeOrder({
1698
+ 'info': response,
1699
+ }),
1700
+ ];
1701
+ }
1702
+ /**
1703
+ * @method
1704
+ * @name ndax#cancelOrder
1705
+ * @description cancels an open order
1706
+ * @see https://apidoc.ndax.io/#cancelorder
1707
+ * @param {string} id order id
1708
+ * @param {string} symbol unified symbol of the market the order was made in
1709
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1710
+ * @param {string} [params.clientOrderId] a unique id for the order
1711
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1712
+ */
1713
+ async cancelOrder(id, symbol = undefined, params = {}) {
1714
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1715
+ await this.loadMarkets();
1716
+ await this.loadAccounts();
1717
+ // const defaultAccountId = this.safeInteger2 (this.options, 'accountId', 'AccountId', parseInt (this.accounts[0]['id']));
1718
+ // const accountId = this.safeInteger2 (params, 'accountId', 'AccountId', defaultAccountId);
1719
+ // params = this.omit (params, [ 'accountId', 'AccountId' ]);
1720
+ let market = undefined;
1721
+ if (symbol !== undefined) {
1722
+ market = this.market(symbol);
1723
+ }
1724
+ const request = {
1725
+ 'omsId': omsId,
1726
+ // 'AccountId': accountId,
1727
+ };
1728
+ const clientOrderId = this.safeInteger2(params, 'clientOrderId', 'ClOrderId');
1729
+ if (clientOrderId !== undefined) {
1730
+ request['ClOrderId'] = clientOrderId;
1731
+ }
1732
+ else {
1733
+ request['OrderId'] = parseInt(id);
1734
+ }
1735
+ params = this.omit(params, ['clientOrderId', 'ClOrderId']);
1736
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
1737
+ const order = this.parseOrder(response, market);
1738
+ return this.extend(order, {
1739
+ 'id': id,
1740
+ 'clientOrderId': clientOrderId,
1741
+ });
1742
+ }
1743
+ /**
1744
+ * @method
1745
+ * @name ndax#fetchOpenOrders
1746
+ * @description fetch all unfilled currently open orders
1747
+ * @see https://apidoc.ndax.io/#getopenorders
1748
+ * @param {string} symbol unified market symbol
1749
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1750
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1751
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1752
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1753
+ */
1754
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1755
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1756
+ await this.loadMarkets();
1757
+ await this.loadAccounts();
1758
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1759
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1760
+ params = this.omit(params, ['accountId', 'AccountId']);
1761
+ let market = undefined;
1762
+ if (symbol !== undefined) {
1763
+ market = this.market(symbol);
1764
+ }
1765
+ const request = {
1766
+ 'omsId': omsId,
1767
+ 'AccountId': accountId,
1768
+ };
1769
+ const response = await this.privateGetGetOpenOrders(this.extend(request, params));
1770
+ //
1771
+ // [
1772
+ // {
1773
+ // "Side":"Buy",
1774
+ // "OrderId":2543565233,
1775
+ // "Price":19010,
1776
+ // "Quantity":0.345,
1777
+ // "DisplayQuantity":0.345,
1778
+ // "Instrument":8,
1779
+ // "Account":449,
1780
+ // "AccountName":"igor@ccxt.trade",
1781
+ // "OrderType":"Limit",
1782
+ // "ClientOrderId":0,
1783
+ // "OrderState":"Working",
1784
+ // "ReceiveTime":1607579326003,
1785
+ // "ReceiveTimeTicks":637431761260028981,
1786
+ // "LastUpdatedTime":1607579326005,
1787
+ // "LastUpdatedTimeTicks":637431761260054714,
1788
+ // "OrigQuantity":0.345,
1789
+ // "QuantityExecuted":0,
1790
+ // "GrossValueExecuted":0,
1791
+ // "ExecutableValue":0,
1792
+ // "AvgPrice":0,
1793
+ // "CounterPartyId":0,
1794
+ // "ChangeReason":"NewInputAccepted",
1795
+ // "OrigOrderId":2543565233,
1796
+ // "OrigClOrdId":0,
1797
+ // "EnteredBy":446,
1798
+ // "UserName":"igor@ccxt.trade",
1799
+ // "IsQuote":false,
1800
+ // "InsideAsk":19069.32,
1801
+ // "InsideAskSize":0.099736,
1802
+ // "InsideBid":19068.25,
1803
+ // "InsideBidSize":1.330001,
1804
+ // "LastTradePrice":19068.25,
1805
+ // "RejectReason":"",
1806
+ // "IsLockedIn":false,
1807
+ // "CancelReason":"",
1808
+ // "OrderFlag":"AddedToBook",
1809
+ // "UseMargin":false,
1810
+ // "StopPrice":0,
1811
+ // "PegPriceType":"Unknown",
1812
+ // "PegOffset":0,
1813
+ // "PegLimitOffset":0,
1814
+ // "IpAddress":null,
1815
+ // "ClientOrderIdUuid":null,
1816
+ // "OMSId":1
1817
+ // }
1818
+ // ]
1819
+ //
1820
+ return this.parseOrders(response, market, since, limit);
1821
+ }
1822
+ /**
1823
+ * @method
1824
+ * @name ndax#fetchOrders
1825
+ * @description fetches information on multiple orders made by the user
1826
+ * @see https://apidoc.ndax.io/#getorderhistory
1827
+ * @param {string} symbol unified market symbol of the market orders were made in
1828
+ * @param {int} [since] the earliest time in ms to fetch orders for
1829
+ * @param {int} [limit] the maximum number of order structures to retrieve
1830
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1831
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1832
+ */
1833
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1834
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1835
+ await this.loadMarkets();
1836
+ await this.loadAccounts();
1837
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1838
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1839
+ params = this.omit(params, ['accountId', 'AccountId']);
1840
+ const request = {
1841
+ 'omsId': omsId,
1842
+ 'AccountId': accountId,
1843
+ // 'ClientOrderId': clientOrderId,
1844
+ // 'OriginalOrderId': id,
1845
+ // 'OriginalClientOrderId': long integer,
1846
+ // 'UserId': integer,
1847
+ // 'InstrumentId': market['id'],
1848
+ // 'StartTimestamp': since,
1849
+ // 'EndTimestamp': this.milliseconds (),
1850
+ // 'Depth': limit,
1851
+ // 'StartIndex': 0,
1852
+ };
1853
+ let market = undefined;
1854
+ if (symbol !== undefined) {
1855
+ market = this.market(symbol);
1856
+ request['InstrumentId'] = market['id'];
1857
+ }
1858
+ if (since !== undefined) {
1859
+ request['StartTimeStamp'] = this.parseToInt(since / 1000);
1860
+ }
1861
+ if (limit !== undefined) {
1862
+ request['Depth'] = limit;
1863
+ }
1864
+ const response = await this.privateGetGetOrdersHistory(this.extend(request, params));
1865
+ //
1866
+ // [
1867
+ // {
1868
+ // "Side":"Buy",
1869
+ // "OrderId":2543565233,
1870
+ // "Price":19010.000000000000000000000000,
1871
+ // "Quantity":0.0000000000000000000000000000,
1872
+ // "DisplayQuantity":0.3450000000000000000000000000,
1873
+ // "Instrument":8,
1874
+ // "Account":449,
1875
+ // "AccountName":"igor@ccxt.trade",
1876
+ // "OrderType":"Limit",
1877
+ // "ClientOrderId":0,
1878
+ // "OrderState":"Canceled",
1879
+ // "ReceiveTime":1607579326003,
1880
+ // "ReceiveTimeTicks":637431761260028981,
1881
+ // "LastUpdatedTime":1607580965346,
1882
+ // "LastUpdatedTimeTicks":637431777653463754,
1883
+ // "OrigQuantity":0.3450000000000000000000000000,
1884
+ // "QuantityExecuted":0.0000000000000000000000000000,
1885
+ // "GrossValueExecuted":0.0000000000000000000000000000,
1886
+ // "ExecutableValue":0.0000000000000000000000000000,
1887
+ // "AvgPrice":0.0000000000000000000000000000,
1888
+ // "CounterPartyId":0,
1889
+ // "ChangeReason":"UserModified",
1890
+ // "OrigOrderId":2543565233,
1891
+ // "OrigClOrdId":0,
1892
+ // "EnteredBy":446,
1893
+ // "UserName":"igor@ccxt.trade",
1894
+ // "IsQuote":false,
1895
+ // "InsideAsk":19069.320000000000000000000000,
1896
+ // "InsideAskSize":0.0997360000000000000000000000,
1897
+ // "InsideBid":19068.250000000000000000000000,
1898
+ // "InsideBidSize":1.3300010000000000000000000000,
1899
+ // "LastTradePrice":19068.250000000000000000000000,
1900
+ // "RejectReason":"",
1901
+ // "IsLockedIn":false,
1902
+ // "CancelReason":"UserModified",
1903
+ // "OrderFlag":"AddedToBook, RemovedFromBook",
1904
+ // "UseMargin":false,
1905
+ // "StopPrice":0.0000000000000000000000000000,
1906
+ // "PegPriceType":"Unknown",
1907
+ // "PegOffset":0.0000000000000000000000000000,
1908
+ // "PegLimitOffset":0.0000000000000000000000000000,
1909
+ // "IpAddress":"x.x.x.x",
1910
+ // "ClientOrderIdUuid":null,
1911
+ // "OMSId":1
1912
+ // },
1913
+ // ]
1914
+ //
1915
+ return this.parseOrders(response, market, since, limit);
1916
+ }
1917
+ /**
1918
+ * @method
1919
+ * @name ndax#fetchOrder
1920
+ * @description fetches information on an order made by the user
1921
+ * @see https://apidoc.ndax.io/#getorderstatus
1922
+ * @param {string} id order id
1923
+ * @param {string} symbol unified symbol of the market the order was made in
1924
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1925
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1926
+ */
1927
+ async fetchOrder(id, symbol = undefined, params = {}) {
1928
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
1929
+ await this.loadMarkets();
1930
+ await this.loadAccounts();
1931
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
1932
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
1933
+ params = this.omit(params, ['accountId', 'AccountId']);
1934
+ let market = undefined;
1935
+ if (symbol !== undefined) {
1936
+ market = this.market(symbol);
1937
+ }
1938
+ const request = {
1939
+ 'omsId': omsId,
1940
+ 'AccountId': accountId,
1941
+ 'OrderId': parseInt(id),
1942
+ };
1943
+ const response = await this.privateGetGetOrderStatus(this.extend(request, params));
1944
+ //
1945
+ // {
1946
+ // "Side":"Sell",
1947
+ // "OrderId":2543565232,
1948
+ // "Price":0.0000000000000000000000000000,
1949
+ // "Quantity":0.0000000000000000000000000000,
1950
+ // "DisplayQuantity":0.0000000000000000000000000000,
1951
+ // "Instrument":8,
1952
+ // "Account":449,
1953
+ // "AccountName":"igor@ccxt.trade",
1954
+ // "OrderType":"Market",
1955
+ // "ClientOrderId":0,
1956
+ // "OrderState":"FullyExecuted",
1957
+ // "ReceiveTime":1607569475591,
1958
+ // "ReceiveTimeTicks":637431662755912377,
1959
+ // "LastUpdatedTime":1607569475596,
1960
+ // "LastUpdatedTimeTicks":637431662755960902,
1961
+ // "OrigQuantity":1.0000000000000000000000000000,
1962
+ // "QuantityExecuted":1.0000000000000000000000000000,
1963
+ // "GrossValueExecuted":19068.270478610000000000000000,
1964
+ // "ExecutableValue":0.0000000000000000000000000000,
1965
+ // "AvgPrice":19068.270478610000000000000000,
1966
+ // "CounterPartyId":0,
1967
+ // "ChangeReason":"Trade",
1968
+ // "OrigOrderId":2543565232,
1969
+ // "OrigClOrdId":0,
1970
+ // "EnteredBy":446,
1971
+ // "UserName":"igor@ccxt.trade",
1972
+ // "IsQuote":false,
1973
+ // "InsideAsk":19069.320000000000000000000000,
1974
+ // "InsideAskSize":0.0997360000000000000000000000,
1975
+ // "InsideBid":19069.310000000000000000000000,
1976
+ // "InsideBidSize":0.2400950000000000000000000000,
1977
+ // "LastTradePrice":19069.310000000000000000000000,
1978
+ // "RejectReason":"",
1979
+ // "IsLockedIn":false,
1980
+ // "CancelReason":"",
1981
+ // "OrderFlag":"0",
1982
+ // "UseMargin":false,
1983
+ // "StopPrice":0.0000000000000000000000000000,
1984
+ // "PegPriceType":"Unknown",
1985
+ // "PegOffset":0.0000000000000000000000000000,
1986
+ // "PegLimitOffset":0.0000000000000000000000000000,
1987
+ // "IpAddress":"x.x.x.x",
1988
+ // "ClientOrderIdUuid":null,
1989
+ // "OMSId":1
1990
+ // }
1991
+ //
1992
+ return this.parseOrder(response, market);
1993
+ }
1994
+ /**
1995
+ * @method
1996
+ * @name ndax#fetchOrderTrades
1997
+ * @description fetch all the trades made from a single order
1998
+ * @see https://apidoc.ndax.io/#getorderhistorybyorderid
1999
+ * @param {string} id order id
2000
+ * @param {string} symbol unified market symbol
2001
+ * @param {int} [since] the earliest time in ms to fetch trades for
2002
+ * @param {int} [limit] the maximum number of trades to retrieve
2003
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2004
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2005
+ */
2006
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
2007
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
2008
+ await this.loadMarkets();
2009
+ await this.loadAccounts();
2010
+ // const defaultAccountId = this.safeInteger2 (this.options, 'accountId', 'AccountId', parseInt (this.accounts[0]['id']));
2011
+ // const accountId = this.safeInteger2 (params, 'accountId', 'AccountId', defaultAccountId);
2012
+ // params = this.omit (params, [ 'accountId', 'AccountId' ]);
2013
+ let market = undefined;
2014
+ if (symbol !== undefined) {
2015
+ market = this.market(symbol);
2016
+ }
2017
+ const request = {
2018
+ 'OMSId': this.parseToInt(omsId),
2019
+ // 'AccountId': accountId,
2020
+ 'OrderId': parseInt(id),
2021
+ };
2022
+ const response = await this.privatePostGetOrderHistoryByOrderId(this.extend(request, params));
2023
+ //
2024
+ // [
2025
+ // {
2026
+ // "Side":"Sell",
2027
+ // "OrderId":2543565235,
2028
+ // "Price":18600.000000000000000000000000,
2029
+ // "Quantity":0.0000000000000000000000000000,
2030
+ // "DisplayQuantity":0.0000000000000000000000000000,
2031
+ // "Instrument":8,
2032
+ // "Account":449,
2033
+ // "AccountName":"igor@ccxt.trade",
2034
+ // "OrderType":"Limit",
2035
+ // "ClientOrderId":0,
2036
+ // "OrderState":"FullyExecuted",
2037
+ // "ReceiveTime":1607585844956,
2038
+ // "ReceiveTimeTicks":637431826449564182,
2039
+ // "LastUpdatedTime":1607585844959,
2040
+ // "LastUpdatedTimeTicks":637431826449593893,
2041
+ // "OrigQuantity":0.1230000000000000000000000000,
2042
+ // "QuantityExecuted":0.1230000000000000000000000000,
2043
+ // "GrossValueExecuted":2345.3947500000000000000000000,
2044
+ // "ExecutableValue":0.0000000000000000000000000000,
2045
+ // "AvgPrice":19068.250000000000000000000000,
2046
+ // "CounterPartyId":0,
2047
+ // "ChangeReason":"Trade",
2048
+ // "OrigOrderId":2543565235,
2049
+ // "OrigClOrdId":0,
2050
+ // "EnteredBy":446,
2051
+ // "UserName":"igor@ccxt.trade",
2052
+ // "IsQuote":false,
2053
+ // "InsideAsk":19069.320000000000000000000000,
2054
+ // "InsideAskSize":0.0997360000000000000000000000,
2055
+ // "InsideBid":19068.250000000000000000000000,
2056
+ // "InsideBidSize":1.3300010000000000000000000000,
2057
+ // "LastTradePrice":19068.250000000000000000000000,
2058
+ // "RejectReason":"",
2059
+ // "IsLockedIn":false,
2060
+ // "CancelReason":"",
2061
+ // "OrderFlag":"0",
2062
+ // "UseMargin":false,
2063
+ // "StopPrice":0.0000000000000000000000000000,
2064
+ // "PegPriceType":"Unknown",
2065
+ // "PegOffset":0.0000000000000000000000000000,
2066
+ // "PegLimitOffset":0.0000000000000000000000000000,
2067
+ // "IpAddress":"x.x.x.x",
2068
+ // "ClientOrderIdUuid":null,
2069
+ // "OMSId":1
2070
+ // },
2071
+ // ]
2072
+ //
2073
+ const grouped = this.groupBy(response, 'ChangeReason');
2074
+ const trades = this.safeList(grouped, 'Trade', []);
2075
+ return this.parseTrades(trades, market, since, limit);
2076
+ }
2077
+ /**
2078
+ * @method
2079
+ * @name ndax#fetchDepositAddress
2080
+ * @description fetch the deposit address for a currency associated with this account
2081
+ * @param {string} code unified currency code
2082
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2083
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2084
+ */
2085
+ async fetchDepositAddress(code, params = {}) {
2086
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
2087
+ await this.loadMarkets();
2088
+ await this.loadAccounts();
2089
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
2090
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
2091
+ params = this.omit(params, ['accountId', 'AccountId']);
2092
+ const currency = this.currency(code);
2093
+ const request = {
2094
+ 'omsId': omsId,
2095
+ 'AccountId': accountId,
2096
+ 'ProductId': currency['id'],
2097
+ 'GenerateNewKey': false,
2098
+ };
2099
+ const response = await this.privateGetGetDepositInfo(this.extend(request, params));
2100
+ //
2101
+ // {
2102
+ // "result":true,
2103
+ // "errormsg":null,
2104
+ // "statuscode":0,
2105
+ // "AssetManagerId":1,
2106
+ // "AccountId":57922,
2107
+ // "AssetId":16,
2108
+ // "ProviderId":23,
2109
+ // "DepositInfo":"[\"0x8A27564b5c30b91C93B1591821642420F323a210\"]"
2110
+ // }
2111
+ //
2112
+ return this.parseDepositAddress(response, currency);
2113
+ }
2114
+ parseDepositAddress(depositAddress, currency = undefined) {
2115
+ //
2116
+ // fetchDepositAddress, createDepositAddress
2117
+ //
2118
+ // {
2119
+ // "result":true,
2120
+ // "errormsg":null,
2121
+ // "statuscode":0,
2122
+ // "AssetManagerId":1,
2123
+ // "AccountId":449,
2124
+ // "AssetId":1,
2125
+ // "ProviderId":1,
2126
+ // "DepositInfo":"[\"r3e95RwVsLH7yCbnMfyh7SA8FdwUJCB4S2?memo=241452010\"]"
2127
+ // }
2128
+ //
2129
+ const depositInfoString = this.safeString(depositAddress, 'DepositInfo');
2130
+ const depositInfo = JSON.parse(depositInfoString);
2131
+ const depositInfoLength = depositInfo.length;
2132
+ const lastString = this.safeString(depositInfo, depositInfoLength - 1);
2133
+ const parts = lastString.split('?memo=');
2134
+ const address = this.safeString(parts, 0);
2135
+ const tag = this.safeString(parts, 1);
2136
+ let code = undefined;
2137
+ if (currency !== undefined) {
2138
+ code = currency['code'];
2139
+ }
2140
+ this.checkAddress(address);
2141
+ return {
2142
+ 'info': depositAddress,
2143
+ 'currency': code,
2144
+ 'network': undefined,
2145
+ 'address': address,
2146
+ 'tag': tag,
2147
+ };
2148
+ }
2149
+ /**
2150
+ * @method
2151
+ * @name ndax#createDepositAddress
2152
+ * @description create a currency deposit address
2153
+ * @param {string} code unified currency code of the currency for the deposit address
2154
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2155
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2156
+ */
2157
+ async createDepositAddress(code, params = {}) {
2158
+ const request = {
2159
+ 'GenerateNewKey': true,
2160
+ };
2161
+ return await this.fetchDepositAddress(code, this.extend(request, params));
2162
+ }
2163
+ /**
2164
+ * @method
2165
+ * @name ndax#fetchDeposits
2166
+ * @description fetch all deposits made to an account
2167
+ * @see https://apidoc.ndax.io/#getdeposits
2168
+ * @param {string} code unified currency code
2169
+ * @param {int} [since] not used by ndax fetchDeposits
2170
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
2171
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2172
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2173
+ */
2174
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
2175
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
2176
+ await this.loadMarkets();
2177
+ await this.loadAccounts();
2178
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
2179
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
2180
+ params = this.omit(params, ['accountId', 'AccountId']);
2181
+ let currency = undefined;
2182
+ if (code !== undefined) {
2183
+ currency = this.currency(code);
2184
+ }
2185
+ const request = {
2186
+ 'omsId': omsId,
2187
+ 'AccountId': accountId,
2188
+ };
2189
+ const response = await this.privateGetGetDeposits(this.extend(request, params));
2190
+ //
2191
+ // "[
2192
+ // {
2193
+ // "OMSId": 1,
2194
+ // "DepositId": 44,
2195
+ // "AccountId": 449,
2196
+ // "SubAccountId": 0,
2197
+ // "ProductId": 4,
2198
+ // "Amount": 200.00000000000000000000000000,
2199
+ // "LastUpdateTimeStamp": 637431291261187806,
2200
+ // "ProductType": "CryptoCurrency",
2201
+ // "TicketStatus": "FullyProcessed",
2202
+ // "DepositInfo": "{
2203
+ // "AccountProviderId":42,
2204
+ // "AccountProviderName":"USDT_BSC",
2205
+ // "TXId":"0x3879b02632c69482646409e991149290bc9a58e4603be63c7c2c90a843f45d2b",
2206
+ // "FromAddress":"0x8894E0a0c962CB723c1976a4421c95949bE2D4E3",
2207
+ // "ToAddress":"0x5428EcEB1F7Ee058f64158589e27D087149230CB"
2208
+ // },",
2209
+ // "DepositCode": "ab0e23d5-a9ce-4d94-865f-9ab464fb1de3",
2210
+ // "TicketNumber": 71,
2211
+ // "NotionalProductId": 13,
2212
+ // "NotionalValue": 200.00000000000000000000000000,
2213
+ // "FeeAmount": 0.0000000000000000000000000000,
2214
+ // },
2215
+ // ...
2216
+ // ]"
2217
+ //
2218
+ if (typeof response === 'string') {
2219
+ return this.parseTransactions(JSON.parse(response), currency, since, limit);
2220
+ }
2221
+ return this.parseTransactions(response, currency, since, limit);
2222
+ }
2223
+ /**
2224
+ * @method
2225
+ * @name ndax#fetchWithdrawals
2226
+ * @description fetch all withdrawals made from an account
2227
+ * @see https://apidoc.ndax.io/#getwithdraws
2228
+ * @param {string} code unified currency code
2229
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
2230
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
2231
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2232
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2233
+ */
2234
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
2235
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
2236
+ await this.loadMarkets();
2237
+ await this.loadAccounts();
2238
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
2239
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
2240
+ params = this.omit(params, ['accountId', 'AccountId']);
2241
+ let currency = undefined;
2242
+ if (code !== undefined) {
2243
+ currency = this.currency(code);
2244
+ }
2245
+ const request = {
2246
+ 'omsId': omsId,
2247
+ 'AccountId': accountId,
2248
+ };
2249
+ const response = await this.privateGetGetWithdraws(this.extend(request, params));
2250
+ //
2251
+ // [
2252
+ // {
2253
+ // "Amount": 0.0,
2254
+ // "FeeAmount": 0.0,
2255
+ // "NotionalValue": 0.0,
2256
+ // "WithdrawId": 0,
2257
+ // "AssetManagerId": 0,
2258
+ // "AccountId": 0,
2259
+ // "AssetId": 0,
2260
+ // "TemplateForm": "{\"TemplateType\": \"TetherRPCWithdraw\",\"Comment\": \"TestWithdraw\",\"ExternalAddress\": \"ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3\"}",
2261
+ // "TemplateFormType": "TetherRPCWithdraw",
2262
+ // "omsId": 0,
2263
+ // "TicketStatus": 0,
2264
+ // "TicketNumber": 0,
2265
+ // "WithdrawTransactionDetails": "",
2266
+ // "WithdrawType": "",
2267
+ // "WithdrawCode": "490b4fa3-53fc-44f4-bd29-7e16be86fba3",
2268
+ // "AssetType": 0,
2269
+ // "Reaccepted": true,
2270
+ // "NotionalProductId": 0
2271
+ // },
2272
+ // ]
2273
+ //
2274
+ return this.parseTransactions(response, currency, since, limit);
2275
+ }
2276
+ parseTransactionStatusByType(status, type = undefined) {
2277
+ const statusesByType = {
2278
+ 'deposit': {
2279
+ 'New': 'pending',
2280
+ 'AdminProcessing': 'pending',
2281
+ 'Accepted': 'pending',
2282
+ 'Rejected': 'rejected',
2283
+ 'SystemProcessing': 'pending',
2284
+ 'FullyProcessed': 'ok',
2285
+ 'Failed': 'failed',
2286
+ 'Pending': 'pending',
2287
+ 'Confirmed': 'pending',
2288
+ 'AmlProcessing': 'pending',
2289
+ 'AmlAccepted': 'pending',
2290
+ 'AmlRejected': 'rejected',
2291
+ 'AmlFailed': 'failed',
2292
+ 'LimitsAccepted': 'pending',
2293
+ 'LimitsRejected': 'rejected', // deposit does not meet limits for fiat or crypto asset
2294
+ },
2295
+ 'withdrawal': {
2296
+ 'New': 'pending',
2297
+ 'AdminProcessing': 'pending',
2298
+ 'Accepted': 'pending',
2299
+ 'Rejected': 'rejected',
2300
+ 'SystemProcessing': 'pending',
2301
+ 'FullyProcessed': 'ok',
2302
+ 'Failed': 'failed',
2303
+ 'Pending': 'pending',
2304
+ 'Pending2Fa': 'pending',
2305
+ 'AutoAccepted': 'pending',
2306
+ 'Delayed': 'pending',
2307
+ 'UserCanceled': 'canceled',
2308
+ 'AdminCanceled': 'canceled',
2309
+ 'AmlProcessing': 'pending',
2310
+ 'AmlAccepted': 'pending',
2311
+ 'AmlRejected': 'rejected',
2312
+ 'AmlFailed': 'failed',
2313
+ 'LimitsAccepted': 'pending',
2314
+ 'LimitsRejected': 'rejected',
2315
+ 'Submitted': 'pending',
2316
+ 'Confirmed': 'pending',
2317
+ 'ManuallyConfirmed': 'pending',
2318
+ 'Confirmed2Fa': 'pending', // user has confirmed withdraw via 2-factor authentication.
2319
+ },
2320
+ };
2321
+ const statuses = this.safeValue(statusesByType, type, {});
2322
+ return this.safeString(statuses, status, status);
2323
+ }
2324
+ parseTransaction(transaction, currency = undefined) {
2325
+ //
2326
+ // fetchDeposits
2327
+ //
2328
+ // {
2329
+ // "OMSId": 1,
2330
+ // "DepositId": 44,
2331
+ // "AccountId": 449,
2332
+ // "SubAccountId": 0,
2333
+ // "ProductId": 4,
2334
+ // "Amount": 200.00000000000000000000000000,
2335
+ // "LastUpdateTimeStamp": 637431291261187806,
2336
+ // "ProductType": "CryptoCurrency",
2337
+ // "TicketStatus": "FullyProcessed",
2338
+ // "DepositInfo": "{
2339
+ // "AccountProviderId":42,
2340
+ // "AccountProviderName":"USDT_BSC",
2341
+ // "TXId":"0x3879b02632c69482646409e991149290bc9a58e4603be63c7c2c90a843f45d2b",
2342
+ // "FromAddress":"0x8894E0a0c962CB723c1976a4421c95949bE2D4E3",
2343
+ // "ToAddress":"0x5428EcEB1F7Ee058f64158589e27D087149230CB"
2344
+ // }",
2345
+ // "DepositCode": "ab0e23d5-a9ce-4d94-865f-9ab464fb1de3",
2346
+ // "TicketNumber": 71,
2347
+ // "NotionalProductId": 13,
2348
+ // "NotionalValue": 200.00000000000000000000000000,
2349
+ // "FeeAmount": 0.0000000000000000000000000000,
2350
+ // }
2351
+ //
2352
+ // fetchWithdrawals
2353
+ //
2354
+ // {
2355
+ // "Amount": 0.0,
2356
+ // "FeeAmount": 0.0,
2357
+ // "NotionalValue": 0.0,
2358
+ // "WithdrawId": 0,
2359
+ // "AssetManagerId": 0,
2360
+ // "AccountId": 0,
2361
+ // "AssetId": 0,
2362
+ // "TemplateForm": "{\"TemplateType\": \"TetherRPCWithdraw\",\"Comment\": \"TestWithdraw\",\"ExternalAddress\": \"ms6C3pKAAr8gRCcnVebs8VRkVrjcvqNYv3\"}",
2363
+ // "TemplateFormType": "TetherRPCWithdraw",
2364
+ // "omsId": 0,
2365
+ // "TicketStatus": 0,
2366
+ // "TicketNumber": 0,
2367
+ // "WithdrawTransactionDetails": "",
2368
+ // "WithdrawType": "",
2369
+ // "WithdrawCode": "490b4fa3-53fc-44f4-bd29-7e16be86fba3",
2370
+ // "AssetType": 0,
2371
+ // "Reaccepted": true,
2372
+ // "NotionalProductId": 0
2373
+ // }
2374
+ //
2375
+ let id = undefined;
2376
+ const currencyId = this.safeString(transaction, 'ProductId');
2377
+ const code = this.safeCurrencyCode(currencyId, currency);
2378
+ let type = undefined;
2379
+ if ('DepositId' in transaction) {
2380
+ id = this.safeString(transaction, 'DepositId');
2381
+ type = 'deposit';
2382
+ }
2383
+ else if ('WithdrawId' in transaction) {
2384
+ id = this.safeString(transaction, 'WithdrawId');
2385
+ type = 'withdrawal';
2386
+ }
2387
+ const templateForm = this.parseJson(this.safeValue2(transaction, 'TemplateForm', 'DepositInfo'));
2388
+ let updated = this.safeInteger(transaction, 'LastUpdateTimeStamp');
2389
+ if (templateForm !== undefined) {
2390
+ updated = this.safeInteger(templateForm, 'LastUpdated', updated);
2391
+ }
2392
+ const address = this.safeString2(templateForm, 'ExternalAddress', 'ToAddress');
2393
+ const timestamp = this.safeInteger(templateForm, 'TimeSubmitted');
2394
+ const feeCost = this.safeNumber(transaction, 'FeeAmount');
2395
+ const transactionStatus = this.safeString(transaction, 'TicketStatus');
2396
+ let fee = undefined;
2397
+ if (feeCost !== undefined) {
2398
+ fee = { 'currency': code, 'cost': feeCost };
2399
+ }
2400
+ return {
2401
+ 'info': transaction,
2402
+ 'id': id,
2403
+ 'txid': this.safeString2(templateForm, 'TxId', 'TXId'),
2404
+ 'timestamp': timestamp,
2405
+ 'datetime': this.iso8601(timestamp),
2406
+ 'address': address,
2407
+ 'addressTo': address,
2408
+ 'addressFrom': this.safeString(templateForm, 'FromAddress'),
2409
+ 'tag': undefined,
2410
+ 'tagTo': undefined,
2411
+ 'tagFrom': undefined,
2412
+ 'type': type,
2413
+ 'amount': this.safeNumber(transaction, 'Amount'),
2414
+ 'currency': code,
2415
+ 'status': this.parseTransactionStatusByType(transactionStatus, type),
2416
+ 'updated': updated,
2417
+ 'fee': fee,
2418
+ 'internal': undefined,
2419
+ 'comment': undefined,
2420
+ 'network': undefined,
2421
+ };
2422
+ }
2423
+ /**
2424
+ * @method
2425
+ * @name ndax#withdraw
2426
+ * @description make a withdrawal
2427
+ * @param {string} code unified currency code
2428
+ * @param {float} amount the amount to withdraw
2429
+ * @param {string} address the address to withdraw to
2430
+ * @param {string} tag
2431
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2432
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2433
+ */
2434
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
2435
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2436
+ // this method required login, password and twofa key
2437
+ const sessionToken = this.safeString(this.options, 'sessionToken');
2438
+ if (sessionToken === undefined) {
2439
+ throw new AuthenticationError(this.id + ' call signIn() method to obtain a session token');
2440
+ }
2441
+ if (this.twofa === undefined) {
2442
+ throw new AuthenticationError(this.id + ' withdraw() requires exchange.twofa credentials');
2443
+ }
2444
+ this.checkAddress(address);
2445
+ const omsId = this.safeInteger(this.options, 'omsId', 1);
2446
+ await this.loadMarkets();
2447
+ await this.loadAccounts();
2448
+ const defaultAccountId = this.safeInteger2(this.options, 'accountId', 'AccountId', parseInt(this.accounts[0]['id']));
2449
+ const accountId = this.safeInteger2(params, 'accountId', 'AccountId', defaultAccountId);
2450
+ params = this.omit(params, ['accountId', 'AccountId']);
2451
+ const currency = this.currency(code);
2452
+ const withdrawTemplateTypesRequest = {
2453
+ 'omsId': omsId,
2454
+ 'AccountId': accountId,
2455
+ 'ProductId': currency['id'],
2456
+ };
2457
+ const withdrawTemplateTypesResponse = await this.privateGetGetWithdrawTemplateTypes(withdrawTemplateTypesRequest);
2458
+ //
2459
+ // {
2460
+ // "result": true,
2461
+ // "errormsg": null,
2462
+ // "statuscode": "0",
2463
+ // "TemplateTypes": [
2464
+ // { AccountProviderId: "14", TemplateName: "ToExternalBitcoinAddress", AccountProviderName: "BitgoRPC-BTC" },
2465
+ // { AccountProviderId: "20", TemplateName: "ToExternalBitcoinAddress", AccountProviderName: "TrezorBTC" },
2466
+ // { AccountProviderId: "31", TemplateName: "BTC", AccountProviderName: "BTC Fireblocks 1" }
2467
+ // ]
2468
+ // }
2469
+ //
2470
+ const templateTypes = this.safeValue(withdrawTemplateTypesResponse, 'TemplateTypes', []);
2471
+ const firstTemplateType = this.safeValue(templateTypes, 0);
2472
+ if (firstTemplateType === undefined) {
2473
+ throw new ExchangeError(this.id + ' withdraw() could not find a withdraw template type for ' + currency['code']);
2474
+ }
2475
+ const templateName = this.safeString(firstTemplateType, 'TemplateName');
2476
+ const withdrawTemplateRequest = {
2477
+ 'omsId': omsId,
2478
+ 'AccountId': accountId,
2479
+ 'ProductId': currency['id'],
2480
+ 'TemplateType': templateName,
2481
+ 'AccountProviderId': firstTemplateType['AccountProviderId'],
2482
+ };
2483
+ const withdrawTemplateResponse = await this.privateGetGetWithdrawTemplate(withdrawTemplateRequest);
2484
+ //
2485
+ // {
2486
+ // "result": true,
2487
+ // "errormsg": null,
2488
+ // "statuscode": "0",
2489
+ // "Template": "{\"TemplateType\":\"ToExternalBitcoinAddress\",\"Comment\":\"\",\"ExternalAddress\":\"\"}"
2490
+ // }
2491
+ //
2492
+ const template = this.safeString(withdrawTemplateResponse, 'Template');
2493
+ if (template === undefined) {
2494
+ throw new ExchangeError(this.id + ' withdraw() could not find a withdraw template for ' + currency['code']);
2495
+ }
2496
+ const withdrawTemplate = JSON.parse(template);
2497
+ withdrawTemplate['ExternalAddress'] = address;
2498
+ if (tag !== undefined) {
2499
+ if ('Memo' in withdrawTemplate) {
2500
+ withdrawTemplate['Memo'] = tag;
2501
+ }
2502
+ }
2503
+ const withdrawPayload = {
2504
+ 'omsId': omsId,
2505
+ 'AccountId': accountId,
2506
+ 'ProductId': currency['id'],
2507
+ 'TemplateForm': this.json(withdrawTemplate),
2508
+ 'TemplateType': templateName,
2509
+ };
2510
+ const withdrawRequest = {
2511
+ 'TfaType': 'Google',
2512
+ 'TFaCode': totp(this.twofa),
2513
+ 'Payload': this.json(withdrawPayload),
2514
+ };
2515
+ const response = await this.privatePostCreateWithdrawTicket(this.deepExtend(withdrawRequest, params));
2516
+ return this.parseTransaction(response, currency);
2517
+ }
2518
+ nonce() {
2519
+ return this.milliseconds();
2520
+ }
2521
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2522
+ let url = this.urls['api'][api] + '/' + this.implodeParams(path, params);
2523
+ let query = this.omit(params, this.extractParams(path));
2524
+ if (api === 'public') {
2525
+ if (path === 'Authenticate') {
2526
+ const auth = this.login + ':' + this.password;
2527
+ const auth64 = this.stringToBase64(auth);
2528
+ headers = {
2529
+ 'Authorization': 'Basic ' + auth64,
2530
+ // 'Content-Type': 'application/json',
2531
+ };
2532
+ }
2533
+ else if (path === 'Authenticate2FA') {
2534
+ const pending2faToken = this.safeString(this.options, 'pending2faToken');
2535
+ if (pending2faToken !== undefined) {
2536
+ headers = {
2537
+ 'Pending2FaToken': pending2faToken,
2538
+ // 'Content-Type': 'application/json',
2539
+ };
2540
+ query = this.omit(query, 'pending2faToken');
2541
+ }
2542
+ }
2543
+ if (Object.keys(query).length) {
2544
+ url += '?' + this.urlencode(query);
2545
+ }
2546
+ }
2547
+ else if (api === 'private') {
2548
+ this.checkRequiredCredentials();
2549
+ const sessionToken = this.safeString(this.options, 'sessionToken');
2550
+ if (sessionToken === undefined) {
2551
+ const nonce = this.nonce().toString();
2552
+ const auth = nonce + this.uid + this.apiKey;
2553
+ const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256);
2554
+ headers = {
2555
+ 'Nonce': nonce,
2556
+ 'APIKey': this.apiKey,
2557
+ 'Signature': signature,
2558
+ 'UserId': this.uid,
2559
+ };
2560
+ }
2561
+ else {
2562
+ headers = {
2563
+ 'APToken': sessionToken,
2564
+ };
2565
+ }
2566
+ if (method === 'POST') {
2567
+ headers['Content-Type'] = 'application/json';
2568
+ body = this.json(query);
2569
+ }
2570
+ else {
2571
+ if (Object.keys(query).length) {
2572
+ url += '?' + this.urlencode(query);
2573
+ }
2574
+ }
2575
+ }
2576
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2577
+ }
2578
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2579
+ if (code === 404) {
2580
+ throw new AuthenticationError(this.id + ' ' + body);
2581
+ }
2582
+ if (response === undefined) {
2583
+ return undefined;
2584
+ }
2585
+ //
2586
+ // {"status":"Rejected","errormsg":"Not_Enough_Funds","errorcode":101}
2587
+ // {"result":false,"errormsg":"Server Error","errorcode":102,"detail":null}
2588
+ //
2589
+ const message = this.safeString(response, 'errormsg');
2590
+ if ((message !== undefined) && (message !== '')) {
2591
+ const feedback = this.id + ' ' + body;
2592
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2593
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2594
+ throw new ExchangeError(feedback);
2595
+ }
2596
+ return undefined;
2597
+ }
2598
+ }