ccxt 4.2.11 → 4.2.13

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 (392) hide show
  1. package/README.md +5 -5
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +1347 -490
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/_virtual/agent.js +7 -0
  6. package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
  7. package/dist/cjs/_virtual/promisify.js +7 -0
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/js/ccxt.js +474 -0
  10. package/dist/cjs/js/src/abstract/ace.js +9 -0
  11. package/dist/cjs/js/src/abstract/alpaca.js +9 -0
  12. package/dist/cjs/js/src/abstract/ascendex.js +9 -0
  13. package/dist/cjs/js/src/abstract/bigone.js +9 -0
  14. package/dist/cjs/js/src/abstract/binance.js +9 -0
  15. package/dist/cjs/js/src/abstract/bingx.js +9 -0
  16. package/dist/cjs/js/src/abstract/bit2c.js +9 -0
  17. package/dist/cjs/js/src/abstract/bitbank.js +9 -0
  18. package/dist/cjs/js/src/abstract/bitbns.js +9 -0
  19. package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
  20. package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
  21. package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
  22. package/dist/cjs/js/src/abstract/bitforex.js +9 -0
  23. package/dist/cjs/js/src/abstract/bitget.js +9 -0
  24. package/dist/cjs/js/src/abstract/bithumb.js +9 -0
  25. package/dist/cjs/js/src/abstract/bitmart.js +9 -0
  26. package/dist/cjs/js/src/abstract/bitmex.js +9 -0
  27. package/dist/cjs/js/src/abstract/bitopro.js +9 -0
  28. package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
  29. package/dist/cjs/js/src/abstract/bitrue.js +9 -0
  30. package/dist/cjs/js/src/abstract/bitso.js +9 -0
  31. package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
  32. package/dist/cjs/js/src/abstract/bitteam.js +9 -0
  33. package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
  34. package/dist/cjs/js/src/abstract/bl3p.js +9 -0
  35. package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
  36. package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
  37. package/dist/cjs/js/src/abstract/btcbox.js +9 -0
  38. package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
  39. package/dist/cjs/js/src/abstract/btcturk.js +9 -0
  40. package/dist/cjs/js/src/abstract/bybit.js +9 -0
  41. package/dist/cjs/js/src/abstract/cex.js +9 -0
  42. package/dist/cjs/js/src/abstract/coinbase.js +9 -0
  43. package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
  44. package/dist/cjs/js/src/abstract/coincheck.js +9 -0
  45. package/dist/cjs/js/src/abstract/coinex.js +9 -0
  46. package/dist/cjs/js/src/abstract/coinlist.js +9 -0
  47. package/dist/cjs/js/src/abstract/coinmate.js +9 -0
  48. package/dist/cjs/js/src/abstract/coinone.js +9 -0
  49. package/dist/cjs/js/src/abstract/coinsph.js +9 -0
  50. package/dist/cjs/js/src/abstract/coinspot.js +9 -0
  51. package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
  52. package/dist/cjs/js/src/abstract/currencycom.js +9 -0
  53. package/dist/cjs/js/src/abstract/delta.js +9 -0
  54. package/dist/cjs/js/src/abstract/deribit.js +9 -0
  55. package/dist/cjs/js/src/abstract/digifinex.js +9 -0
  56. package/dist/cjs/js/src/abstract/exmo.js +9 -0
  57. package/dist/cjs/js/src/abstract/gate.js +9 -0
  58. package/dist/cjs/js/src/abstract/gemini.js +9 -0
  59. package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
  60. package/dist/cjs/js/src/abstract/hollaex.js +9 -0
  61. package/dist/cjs/js/src/abstract/htx.js +9 -0
  62. package/dist/cjs/js/src/abstract/huobijp.js +9 -0
  63. package/dist/cjs/js/src/abstract/idex.js +9 -0
  64. package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
  65. package/dist/cjs/js/src/abstract/indodax.js +9 -0
  66. package/dist/cjs/js/src/abstract/kraken.js +9 -0
  67. package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
  68. package/dist/cjs/js/src/abstract/kucoin.js +9 -0
  69. package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
  70. package/dist/cjs/js/src/abstract/kuna.js +9 -0
  71. package/dist/cjs/js/src/abstract/latoken.js +9 -0
  72. package/dist/cjs/js/src/abstract/lbank.js +9 -0
  73. package/dist/cjs/js/src/abstract/luno.js +9 -0
  74. package/dist/cjs/js/src/abstract/lykke.js +9 -0
  75. package/dist/cjs/js/src/abstract/mercado.js +9 -0
  76. package/dist/cjs/js/src/abstract/mexc.js +9 -0
  77. package/dist/cjs/js/src/abstract/ndax.js +9 -0
  78. package/dist/cjs/js/src/abstract/novadax.js +9 -0
  79. package/dist/cjs/js/src/abstract/oceanex.js +9 -0
  80. package/dist/cjs/js/src/abstract/okcoin.js +9 -0
  81. package/dist/cjs/js/src/abstract/okx.js +9 -0
  82. package/dist/cjs/js/src/abstract/p2b.js +9 -0
  83. package/dist/cjs/js/src/abstract/paymium.js +9 -0
  84. package/dist/cjs/js/src/abstract/phemex.js +9 -0
  85. package/dist/cjs/js/src/abstract/poloniex.js +9 -0
  86. package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
  87. package/dist/cjs/js/src/abstract/probit.js +9 -0
  88. package/dist/cjs/js/src/abstract/timex.js +9 -0
  89. package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
  90. package/dist/cjs/js/src/abstract/upbit.js +9 -0
  91. package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
  92. package/dist/cjs/js/src/abstract/wazirx.js +9 -0
  93. package/dist/cjs/js/src/abstract/whitebit.js +9 -0
  94. package/dist/cjs/js/src/abstract/woo.js +9 -0
  95. package/dist/cjs/js/src/abstract/yobit.js +9 -0
  96. package/dist/cjs/js/src/abstract/zaif.js +9 -0
  97. package/dist/cjs/js/src/abstract/zonda.js +9 -0
  98. package/dist/cjs/js/src/ace.js +1058 -0
  99. package/dist/cjs/js/src/alpaca.js +1125 -0
  100. package/dist/cjs/js/src/ascendex.js +3360 -0
  101. package/dist/cjs/js/src/base/Exchange.js +5110 -0
  102. package/dist/cjs/js/src/base/Precise.js +263 -0
  103. package/dist/cjs/js/src/base/errors.js +299 -0
  104. package/dist/cjs/js/src/base/functions/crypto.js +78 -0
  105. package/dist/cjs/js/src/base/functions/encode.js +44 -0
  106. package/dist/cjs/js/src/base/functions/generic.js +193 -0
  107. package/dist/cjs/js/src/base/functions/misc.js +96 -0
  108. package/dist/cjs/js/src/base/functions/number.js +297 -0
  109. package/dist/cjs/js/src/base/functions/platform.js +28 -0
  110. package/dist/cjs/js/src/base/functions/rsa.js +34 -0
  111. package/dist/cjs/js/src/base/functions/string.js +48 -0
  112. package/dist/cjs/js/src/base/functions/throttle.js +66 -0
  113. package/dist/cjs/js/src/base/functions/time.js +187 -0
  114. package/dist/cjs/js/src/base/functions/totp.js +24 -0
  115. package/dist/cjs/js/src/base/functions/type.js +162 -0
  116. package/dist/cjs/js/src/base/functions.js +157 -0
  117. package/dist/cjs/js/src/base/ws/Cache.js +254 -0
  118. package/dist/cjs/js/src/base/ws/Client.js +299 -0
  119. package/dist/cjs/js/src/base/ws/Future.js +34 -0
  120. package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
  121. package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
  122. package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
  123. package/dist/cjs/js/src/bequant.js +33 -0
  124. package/dist/cjs/js/src/bigone.js +2209 -0
  125. package/dist/cjs/js/src/binance.js +9736 -0
  126. package/dist/cjs/js/src/binancecoinm.js +45 -0
  127. package/dist/cjs/js/src/binanceus.js +84 -0
  128. package/dist/cjs/js/src/binanceusdm.js +58 -0
  129. package/dist/cjs/js/src/bingx.js +3807 -0
  130. package/dist/cjs/js/src/bit2c.js +916 -0
  131. package/dist/cjs/js/src/bitbank.js +1000 -0
  132. package/dist/cjs/js/src/bitbay.js +17 -0
  133. package/dist/cjs/js/src/bitbns.js +1220 -0
  134. package/dist/cjs/js/src/bitcoincom.js +17 -0
  135. package/dist/cjs/js/src/bitfinex.js +1670 -0
  136. package/dist/cjs/js/src/bitfinex2.js +2990 -0
  137. package/dist/cjs/js/src/bitflyer.js +1045 -0
  138. package/dist/cjs/js/src/bitforex.js +852 -0
  139. package/dist/cjs/js/src/bitget.js +8291 -0
  140. package/dist/cjs/js/src/bithumb.js +1090 -0
  141. package/dist/cjs/js/src/bitmart.js +4454 -0
  142. package/dist/cjs/js/src/bitmex.js +2884 -0
  143. package/dist/cjs/js/src/bitopro.js +1724 -0
  144. package/dist/cjs/js/src/bitpanda.js +2002 -0
  145. package/dist/cjs/js/src/bitrue.js +3253 -0
  146. package/dist/cjs/js/src/bitso.js +1753 -0
  147. package/dist/cjs/js/src/bitstamp.js +2188 -0
  148. package/dist/cjs/js/src/bitteam.js +2309 -0
  149. package/dist/cjs/js/src/bitvavo.js +1968 -0
  150. package/dist/cjs/js/src/bl3p.js +447 -0
  151. package/dist/cjs/js/src/blockchaincom.js +1160 -0
  152. package/dist/cjs/js/src/btcalpha.js +929 -0
  153. package/dist/cjs/js/src/btcbox.js +565 -0
  154. package/dist/cjs/js/src/btcmarkets.js +1237 -0
  155. package/dist/cjs/js/src/btcturk.js +929 -0
  156. package/dist/cjs/js/src/bybit.js +7646 -0
  157. package/dist/cjs/js/src/cex.js +1693 -0
  158. package/dist/cjs/js/src/coinbase.js +3424 -0
  159. package/dist/cjs/js/src/coinbasepro.js +1866 -0
  160. package/dist/cjs/js/src/coincheck.js +843 -0
  161. package/dist/cjs/js/src/coinex.js +5414 -0
  162. package/dist/cjs/js/src/coinlist.js +2329 -0
  163. package/dist/cjs/js/src/coinmate.js +989 -0
  164. package/dist/cjs/js/src/coinone.js +1185 -0
  165. package/dist/cjs/js/src/coinsph.js +1933 -0
  166. package/dist/cjs/js/src/coinspot.js +548 -0
  167. package/dist/cjs/js/src/cryptocom.js +3007 -0
  168. package/dist/cjs/js/src/currencycom.js +2015 -0
  169. package/dist/cjs/js/src/delta.js +3256 -0
  170. package/dist/cjs/js/src/deribit.js +3306 -0
  171. package/dist/cjs/js/src/digifinex.js +4307 -0
  172. package/dist/cjs/js/src/exmo.js +2645 -0
  173. package/dist/cjs/js/src/fmfwio.js +34 -0
  174. package/dist/cjs/js/src/gate.js +7072 -0
  175. package/dist/cjs/js/src/gateio.js +16 -0
  176. package/dist/cjs/js/src/gemini.js +1801 -0
  177. package/dist/cjs/js/src/hitbtc.js +3660 -0
  178. package/dist/cjs/js/src/hitbtc3.js +19 -0
  179. package/dist/cjs/js/src/hollaex.js +1882 -0
  180. package/dist/cjs/js/src/htx.js +9049 -0
  181. package/dist/cjs/js/src/huobi.js +16 -0
  182. package/dist/cjs/js/src/huobijp.js +1918 -0
  183. package/dist/cjs/js/src/idex.js +1770 -0
  184. package/dist/cjs/js/src/independentreserve.js +761 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2857 -0
  187. package/dist/cjs/js/src/krakenfutures.js +2407 -0
  188. package/dist/cjs/js/src/kucoin.js +4489 -0
  189. package/dist/cjs/js/src/kucoinfutures.js +2475 -0
  190. package/dist/cjs/js/src/kuna.js +1949 -0
  191. package/dist/cjs/js/src/latoken.js +1729 -0
  192. package/dist/cjs/js/src/lbank.js +2851 -0
  193. package/dist/cjs/js/src/luno.js +1044 -0
  194. package/dist/cjs/js/src/lykke.js +1303 -0
  195. package/dist/cjs/js/src/mercado.js +897 -0
  196. package/dist/cjs/js/src/mexc.js +5407 -0
  197. package/dist/cjs/js/src/ndax.js +2450 -0
  198. package/dist/cjs/js/src/novadax.js +1556 -0
  199. package/dist/cjs/js/src/oceanex.js +964 -0
  200. package/dist/cjs/js/src/okcoin.js +3115 -0
  201. package/dist/cjs/js/src/okx.js +7330 -0
  202. package/dist/cjs/js/src/p2b.js +1243 -0
  203. package/dist/cjs/js/src/paymium.js +597 -0
  204. package/dist/cjs/js/src/phemex.js +4722 -0
  205. package/dist/cjs/js/src/poloniex.js +2356 -0
  206. package/dist/cjs/js/src/poloniexfutures.js +1794 -0
  207. package/dist/cjs/js/src/pro/alpaca.js +714 -0
  208. package/dist/cjs/js/src/pro/ascendex.js +957 -0
  209. package/dist/cjs/js/src/pro/bequant.js +33 -0
  210. package/dist/cjs/js/src/pro/binance.js +2796 -0
  211. package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
  212. package/dist/cjs/js/src/pro/binanceus.js +51 -0
  213. package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
  214. package/dist/cjs/js/src/pro/bingx.js +944 -0
  215. package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
  216. package/dist/cjs/js/src/pro/bitfinex.js +672 -0
  217. package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
  218. package/dist/cjs/js/src/pro/bitget.js +1733 -0
  219. package/dist/cjs/js/src/pro/bitmart.js +1486 -0
  220. package/dist/cjs/js/src/pro/bitmex.js +1576 -0
  221. package/dist/cjs/js/src/pro/bitopro.js +327 -0
  222. package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
  223. package/dist/cjs/js/src/pro/bitrue.js +462 -0
  224. package/dist/cjs/js/src/pro/bitstamp.js +547 -0
  225. package/dist/cjs/js/src/pro/bitvavo.js +704 -0
  226. package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
  227. package/dist/cjs/js/src/pro/bybit.js +1843 -0
  228. package/dist/cjs/js/src/pro/cex.js +1510 -0
  229. package/dist/cjs/js/src/pro/coinbase.js +561 -0
  230. package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
  231. package/dist/cjs/js/src/pro/coinex.js +1095 -0
  232. package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
  233. package/dist/cjs/js/src/pro/currencycom.js +563 -0
  234. package/dist/cjs/js/src/pro/deribit.js +825 -0
  235. package/dist/cjs/js/src/pro/exmo.js +658 -0
  236. package/dist/cjs/js/src/pro/gate.js +1316 -0
  237. package/dist/cjs/js/src/pro/gateio.js +16 -0
  238. package/dist/cjs/js/src/pro/gemini.js +649 -0
  239. package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
  240. package/dist/cjs/js/src/pro/hollaex.js +597 -0
  241. package/dist/cjs/js/src/pro/htx.js +2383 -0
  242. package/dist/cjs/js/src/pro/huobi.js +16 -0
  243. package/dist/cjs/js/src/pro/huobijp.js +606 -0
  244. package/dist/cjs/js/src/pro/idex.js +714 -0
  245. package/dist/cjs/js/src/pro/independentreserve.js +280 -0
  246. package/dist/cjs/js/src/pro/kraken.js +1364 -0
  247. package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
  248. package/dist/cjs/js/src/pro/kucoin.js +1052 -0
  249. package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
  250. package/dist/cjs/js/src/pro/luno.js +322 -0
  251. package/dist/cjs/js/src/pro/mexc.js +1170 -0
  252. package/dist/cjs/js/src/pro/ndax.js +545 -0
  253. package/dist/cjs/js/src/pro/okcoin.js +760 -0
  254. package/dist/cjs/js/src/pro/okx.js +1608 -0
  255. package/dist/cjs/js/src/pro/phemex.js +1511 -0
  256. package/dist/cjs/js/src/pro/poloniex.js +1253 -0
  257. package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
  258. package/dist/cjs/js/src/pro/probit.js +586 -0
  259. package/dist/cjs/js/src/pro/upbit.js +234 -0
  260. package/dist/cjs/js/src/pro/wazirx.js +776 -0
  261. package/dist/cjs/js/src/pro/whitebit.js +927 -0
  262. package/dist/cjs/js/src/pro/woo.js +769 -0
  263. package/dist/cjs/js/src/probit.js +1867 -0
  264. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
  265. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
  266. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
  267. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
  268. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  269. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  270. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  271. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
  272. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
  273. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
  274. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
  275. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
  276. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
  277. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
  278. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
  279. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
  280. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
  281. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
  282. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
  283. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
  284. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
  285. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
  286. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
  287. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
  288. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
  289. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
  290. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
  291. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
  292. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
  293. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
  294. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
  295. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
  296. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
  297. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
  298. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
  299. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
  300. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
  301. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
  302. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
  303. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
  304. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
  305. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
  306. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
  307. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
  308. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
  309. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
  310. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
  311. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
  312. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
  313. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
  314. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
  315. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  316. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
  317. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
  318. package/dist/cjs/js/src/timex.js +1562 -0
  319. package/dist/cjs/js/src/tokocrypto.js +2542 -0
  320. package/dist/cjs/js/src/upbit.js +1844 -0
  321. package/dist/cjs/js/src/wavesexchange.js +2607 -0
  322. package/dist/cjs/js/src/wazirx.js +953 -0
  323. package/dist/cjs/js/src/whitebit.js +2309 -0
  324. package/dist/cjs/js/src/woo.js +2765 -0
  325. package/dist/cjs/js/src/yobit.js +1314 -0
  326. package/dist/cjs/js/src/zaif.js +736 -0
  327. package/dist/cjs/js/src/zonda.js +1883 -0
  328. package/js/ccxt.d.ts +1 -1
  329. package/js/ccxt.js +1 -1
  330. package/js/src/abstract/bigone.d.ts +18 -0
  331. package/js/src/abstract/binance.d.ts +2 -0
  332. package/js/src/abstract/binancecoinm.d.ts +2 -0
  333. package/js/src/abstract/binanceus.d.ts +2 -0
  334. package/js/src/abstract/binanceusdm.d.ts +2 -0
  335. package/js/src/abstract/bingx.d.ts +2 -0
  336. package/js/src/abstract/bybit.d.ts +1 -0
  337. package/js/src/abstract/gate.d.ts +11 -0
  338. package/js/src/abstract/gateio.d.ts +11 -0
  339. package/js/src/abstract/okx.d.ts +1 -0
  340. package/js/src/alpaca.js +18 -18
  341. package/js/src/base/Exchange.d.ts +5 -1
  342. package/js/src/base/Exchange.js +101 -12
  343. package/js/src/bigone.d.ts +3 -2
  344. package/js/src/bigone.js +429 -167
  345. package/js/src/binance.js +48 -34
  346. package/js/src/bingx.js +115 -38
  347. package/js/src/bitfinex.d.ts +2 -2
  348. package/js/src/bitfinex.js +2 -3
  349. package/js/src/bitget.js +33 -13
  350. package/js/src/bitmart.d.ts +2 -2
  351. package/js/src/bitmart.js +5 -5
  352. package/js/src/bitmex.js +1 -0
  353. package/js/src/bybit.js +2 -0
  354. package/js/src/coinbase.d.ts +26 -3
  355. package/js/src/coinbase.js +176 -26
  356. package/js/src/coinlist.js +3 -4
  357. package/js/src/coinone.js +1 -1
  358. package/js/src/coinsph.js +2 -3
  359. package/js/src/deribit.js +1 -0
  360. package/js/src/gate.d.ts +4 -4
  361. package/js/src/gate.js +96 -59
  362. package/js/src/gemini.js +1 -1
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.d.ts +1 -0
  366. package/js/src/htx.js +29 -7
  367. package/js/src/huobijp.js +2 -3
  368. package/js/src/independentreserve.js +7 -5
  369. package/js/src/kraken.js +3 -6
  370. package/js/src/lbank.js +59 -33
  371. package/js/src/mexc.js +2 -1
  372. package/js/src/oceanex.js +1 -1
  373. package/js/src/okx.js +14 -3
  374. package/js/src/phemex.js +9 -2
  375. package/js/src/pro/binance.d.ts +2 -23
  376. package/js/src/pro/binance.js +58 -22
  377. package/js/src/pro/coinbase.d.ts +2 -2
  378. package/js/src/pro/coinbase.js +4 -1
  379. package/js/src/pro/coinbasepro.d.ts +2 -2
  380. package/js/src/pro/hitbtc.d.ts +2 -2
  381. package/js/src/pro/kraken.js +1 -1
  382. package/js/src/pro/okx.d.ts +1 -0
  383. package/js/src/pro/okx.js +52 -2
  384. package/js/src/pro/poloniex.d.ts +2 -2
  385. package/js/src/probit.js +4 -2
  386. package/js/src/upbit.d.ts +3 -101
  387. package/js/src/upbit.js +12 -12
  388. package/js/src/wavesexchange.js +1 -1
  389. package/js/src/woo.d.ts +2 -0
  390. package/js/src/woo.js +52 -0
  391. package/package.json +1 -1
  392. package/skip-tests.json +5 -0
@@ -0,0 +1,597 @@
1
+ 'use strict';
2
+
3
+ var paymium$1 = require('./abstract/paymium.js');
4
+ var errors = require('./base/errors.js');
5
+ var Precise = require('./base/Precise.js');
6
+ var number = require('./base/functions/number.js');
7
+ var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
8
+
9
+ // ---------------------------------------------------------------------------
10
+ // ---------------------------------------------------------------------------
11
+ /**
12
+ * @class paymium
13
+ * @augments Exchange
14
+ */
15
+ class paymium extends paymium$1 {
16
+ describe() {
17
+ return this.deepExtend(super.describe(), {
18
+ 'id': 'paymium',
19
+ 'name': 'Paymium',
20
+ 'countries': ['FR', 'EU'],
21
+ 'rateLimit': 2000,
22
+ 'version': 'v1',
23
+ 'has': {
24
+ 'CORS': true,
25
+ 'spot': true,
26
+ 'margin': undefined,
27
+ 'swap': false,
28
+ 'future': false,
29
+ 'option': false,
30
+ 'cancelOrder': true,
31
+ 'createDepositAddress': true,
32
+ 'createOrder': true,
33
+ 'fetchBalance': true,
34
+ 'fetchDepositAddress': true,
35
+ 'fetchDepositAddresses': true,
36
+ 'fetchFundingHistory': false,
37
+ 'fetchFundingRate': false,
38
+ 'fetchFundingRateHistory': false,
39
+ 'fetchFundingRates': false,
40
+ 'fetchIndexOHLCV': false,
41
+ 'fetchMarkOHLCV': false,
42
+ 'fetchOpenInterestHistory': false,
43
+ 'fetchOrderBook': true,
44
+ 'fetchPremiumIndexOHLCV': false,
45
+ 'fetchTicker': true,
46
+ 'fetchTrades': true,
47
+ 'fetchTradingFee': false,
48
+ 'fetchTradingFees': false,
49
+ 'transfer': true,
50
+ },
51
+ 'urls': {
52
+ 'logo': 'https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg',
53
+ 'api': {
54
+ 'rest': 'https://paymium.com/api',
55
+ },
56
+ 'www': 'https://www.paymium.com',
57
+ 'fees': 'https://www.paymium.com/page/help/fees',
58
+ 'doc': [
59
+ 'https://github.com/Paymium/api-documentation',
60
+ 'https://www.paymium.com/page/developers',
61
+ 'https://paymium.github.io/api-documentation/',
62
+ ],
63
+ 'referral': 'https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj',
64
+ },
65
+ 'api': {
66
+ 'public': {
67
+ 'get': [
68
+ 'countries',
69
+ 'currencies',
70
+ 'data/{currency}/ticker',
71
+ 'data/{currency}/trades',
72
+ 'data/{currency}/depth',
73
+ 'bitcoin_charts/{id}/trades',
74
+ 'bitcoin_charts/{id}/depth',
75
+ ],
76
+ },
77
+ 'private': {
78
+ 'get': [
79
+ 'user',
80
+ 'user/addresses',
81
+ 'user/addresses/{address}',
82
+ 'user/orders',
83
+ 'user/orders/{uuid}',
84
+ 'user/price_alerts',
85
+ 'merchant/get_payment/{uuid}',
86
+ ],
87
+ 'post': [
88
+ 'user/addresses',
89
+ 'user/orders',
90
+ 'user/withdrawals',
91
+ 'user/email_transfers',
92
+ 'user/payment_requests',
93
+ 'user/price_alerts',
94
+ 'merchant/create_payment',
95
+ ],
96
+ 'delete': [
97
+ 'user/orders/{uuid}',
98
+ 'user/orders/{uuid}/cancel',
99
+ 'user/price_alerts/{id}',
100
+ ],
101
+ },
102
+ },
103
+ 'markets': {
104
+ 'BTC/EUR': this.safeMarketStructure({ 'id': 'eur', 'symbol': 'BTC/EUR', 'base': 'BTC', 'quote': 'EUR', 'baseId': 'btc', 'quoteId': 'eur', 'type': 'spot', 'spot': true }),
105
+ },
106
+ 'fees': {
107
+ 'trading': {
108
+ 'maker': this.parseNumber('-0.001'),
109
+ 'taker': this.parseNumber('0.005'),
110
+ },
111
+ },
112
+ 'precisionMode': number.TICK_SIZE,
113
+ });
114
+ }
115
+ parseBalance(response) {
116
+ const result = { 'info': response };
117
+ const currencies = Object.keys(this.currencies);
118
+ for (let i = 0; i < currencies.length; i++) {
119
+ const code = currencies[i];
120
+ const currency = this.currency(code);
121
+ const currencyId = currency['id'];
122
+ const free = 'balance_' + currencyId;
123
+ if (free in response) {
124
+ const account = this.account();
125
+ const used = 'locked_' + currencyId;
126
+ account['free'] = this.safeString(response, free);
127
+ account['used'] = this.safeString(response, used);
128
+ result[code] = account;
129
+ }
130
+ }
131
+ return this.safeBalance(result);
132
+ }
133
+ async fetchBalance(params = {}) {
134
+ /**
135
+ * @method
136
+ * @name paymium#fetchBalance
137
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
138
+ * @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user/get
139
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
140
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
141
+ */
142
+ await this.loadMarkets();
143
+ const response = await this.privateGetUser(params);
144
+ return this.parseBalance(response);
145
+ }
146
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
147
+ /**
148
+ * @method
149
+ * @name paymium#fetchOrderBook
150
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
151
+ * @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1depth/get
152
+ * @param {string} symbol unified symbol of the market to fetch the order book for
153
+ * @param {int} [limit] the maximum amount of order book entries to return
154
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
155
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
156
+ */
157
+ await this.loadMarkets();
158
+ const market = this.market(symbol);
159
+ const request = {
160
+ 'currency': market['id'],
161
+ };
162
+ const response = await this.publicGetDataCurrencyDepth(this.extend(request, params));
163
+ return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'price', 'amount');
164
+ }
165
+ parseTicker(ticker, market = undefined) {
166
+ //
167
+ // {
168
+ // "high":"33740.82",
169
+ // "low":"32185.15",
170
+ // "volume":"4.7890433",
171
+ // "bid":"33313.53",
172
+ // "ask":"33497.97",
173
+ // "midpoint":"33405.75",
174
+ // "vwap":"32802.5263553",
175
+ // "at":1643381654,
176
+ // "price":"33143.91",
177
+ // "open":"33116.86",
178
+ // "variation":"0.0817",
179
+ // "currency":"EUR",
180
+ // "trade_id":"ce2f5152-3ac5-412d-9b24-9fa72338474c",
181
+ // "size":"0.00041087"
182
+ // }
183
+ //
184
+ const symbol = this.safeSymbol(undefined, market);
185
+ const timestamp = this.safeTimestamp(ticker, 'at');
186
+ const vwap = this.safeString(ticker, 'vwap');
187
+ const baseVolume = this.safeString(ticker, 'volume');
188
+ const quoteVolume = Precise["default"].stringMul(baseVolume, vwap);
189
+ const last = this.safeString(ticker, 'price');
190
+ return this.safeTicker({
191
+ 'symbol': symbol,
192
+ 'timestamp': timestamp,
193
+ 'datetime': this.iso8601(timestamp),
194
+ 'high': this.safeString(ticker, 'high'),
195
+ 'low': this.safeString(ticker, 'low'),
196
+ 'bid': this.safeString(ticker, 'bid'),
197
+ 'bidVolume': undefined,
198
+ 'ask': this.safeString(ticker, 'ask'),
199
+ 'askVolume': undefined,
200
+ 'vwap': vwap,
201
+ 'open': this.safeString(ticker, 'open'),
202
+ 'close': last,
203
+ 'last': last,
204
+ 'previousClose': undefined,
205
+ 'change': undefined,
206
+ 'percentage': this.safeString(ticker, 'variation'),
207
+ 'average': undefined,
208
+ 'baseVolume': baseVolume,
209
+ 'quoteVolume': quoteVolume,
210
+ 'info': ticker,
211
+ }, market);
212
+ }
213
+ async fetchTicker(symbol, params = {}) {
214
+ /**
215
+ * @method
216
+ * @name paymium#fetchTicker
217
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
218
+ * @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1ticker/get
219
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
220
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
221
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
222
+ */
223
+ await this.loadMarkets();
224
+ const market = this.market(symbol);
225
+ const request = {
226
+ 'currency': market['id'],
227
+ };
228
+ const ticker = await this.publicGetDataCurrencyTicker(this.extend(request, params));
229
+ //
230
+ // {
231
+ // "high":"33740.82",
232
+ // "low":"32185.15",
233
+ // "volume":"4.7890433",
234
+ // "bid":"33313.53",
235
+ // "ask":"33497.97",
236
+ // "midpoint":"33405.75",
237
+ // "vwap":"32802.5263553",
238
+ // "at":1643381654,
239
+ // "price":"33143.91",
240
+ // "open":"33116.86",
241
+ // "variation":"0.0817",
242
+ // "currency":"EUR",
243
+ // "trade_id":"ce2f5152-3ac5-412d-9b24-9fa72338474c",
244
+ // "size":"0.00041087"
245
+ // }
246
+ //
247
+ return this.parseTicker(ticker, market);
248
+ }
249
+ parseTrade(trade, market = undefined) {
250
+ const timestamp = this.safeTimestamp(trade, 'created_at_int');
251
+ const id = this.safeString(trade, 'uuid');
252
+ market = this.safeMarket(undefined, market);
253
+ const side = this.safeString(trade, 'side');
254
+ const price = this.safeString(trade, 'price');
255
+ const amountField = 'traded_' + market['base'].toLowerCase();
256
+ const amount = this.safeString(trade, amountField);
257
+ return this.safeTrade({
258
+ 'info': trade,
259
+ 'id': id,
260
+ 'order': undefined,
261
+ 'timestamp': timestamp,
262
+ 'datetime': this.iso8601(timestamp),
263
+ 'symbol': market['symbol'],
264
+ 'type': undefined,
265
+ 'side': side,
266
+ 'takerOrMaker': undefined,
267
+ 'price': price,
268
+ 'amount': amount,
269
+ 'cost': undefined,
270
+ 'fee': undefined,
271
+ }, market);
272
+ }
273
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
274
+ /**
275
+ * @method
276
+ * @name paymium#fetchTrades
277
+ * @description get the list of most recent trades for a particular symbol
278
+ * @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1trades/get
279
+ * @param {string} symbol unified symbol of the market to fetch trades for
280
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
281
+ * @param {int} [limit] the maximum amount of trades to fetch
282
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
283
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
284
+ */
285
+ await this.loadMarkets();
286
+ const market = this.market(symbol);
287
+ const request = {
288
+ 'currency': market['id'],
289
+ };
290
+ const response = await this.publicGetDataCurrencyTrades(this.extend(request, params));
291
+ return this.parseTrades(response, market, since, limit);
292
+ }
293
+ async createDepositAddress(code, params = {}) {
294
+ /**
295
+ * @method
296
+ * @name paymium#createDepositAddress
297
+ * @description create a currency deposit address
298
+ * @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses/post
299
+ * @param {string} code unified currency code of the currency for the deposit address
300
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
301
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
302
+ */
303
+ await this.loadMarkets();
304
+ const response = await this.privatePostUserAddresses(params);
305
+ //
306
+ // {
307
+ // "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
308
+ // "valid_until": 1620041926,
309
+ // "currency": "BTC",
310
+ // "label": "Savings"
311
+ // }
312
+ //
313
+ return this.parseDepositAddress(response);
314
+ }
315
+ async fetchDepositAddress(code, params = {}) {
316
+ /**
317
+ * @method
318
+ * @name paymium#fetchDepositAddress
319
+ * @description fetch the deposit address for a currency associated with this account
320
+ * @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses~1%7Baddress%7D/get
321
+ * @param {string} code unified currency code
322
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
323
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
324
+ */
325
+ await this.loadMarkets();
326
+ const request = {
327
+ 'address': code,
328
+ };
329
+ const response = await this.privateGetUserAddressesAddress(this.extend(request, params));
330
+ //
331
+ // {
332
+ // "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
333
+ // "valid_until": 1620041926,
334
+ // "currency": "BTC",
335
+ // "label": "Savings"
336
+ // }
337
+ //
338
+ return this.parseDepositAddress(response);
339
+ }
340
+ async fetchDepositAddresses(codes = undefined, params = {}) {
341
+ /**
342
+ * @method
343
+ * @name paymium#fetchDepositAddresses
344
+ * @description fetch deposit addresses for multiple currencies and chain types
345
+ * @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses/get
346
+ * @param {string[]|undefined} codes list of unified currency codes, default is undefined
347
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
348
+ * @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
349
+ */
350
+ await this.loadMarkets();
351
+ const response = await this.privateGetUserAddresses(params);
352
+ //
353
+ // [
354
+ // {
355
+ // "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
356
+ // "valid_until": 1620041926,
357
+ // "currency": "BTC",
358
+ // "label": "Savings"
359
+ // }
360
+ // ]
361
+ //
362
+ return this.parseDepositAddresses(response, codes);
363
+ }
364
+ parseDepositAddress(depositAddress, currency = undefined) {
365
+ //
366
+ // {
367
+ // "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
368
+ // "valid_until": 1620041926,
369
+ // "currency": "BTC",
370
+ // "label": "Savings"
371
+ // }
372
+ //
373
+ const address = this.safeString(depositAddress, 'address');
374
+ const currencyId = this.safeString(depositAddress, 'currency');
375
+ return {
376
+ 'info': depositAddress,
377
+ 'currency': this.safeCurrencyCode(currencyId, currency),
378
+ 'address': address,
379
+ 'tag': undefined,
380
+ 'network': undefined,
381
+ };
382
+ }
383
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
384
+ /**
385
+ * @method
386
+ * @name paymium#createOrder
387
+ * @description create a trade order
388
+ * @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders/post
389
+ * @param {string} symbol unified symbol of the market to create an order in
390
+ * @param {string} type 'market' or 'limit'
391
+ * @param {string} side 'buy' or 'sell'
392
+ * @param {float} amount how much of currency you want to trade in units of base currency
393
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
394
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
395
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
396
+ */
397
+ await this.loadMarkets();
398
+ const market = this.market(symbol);
399
+ const request = {
400
+ 'type': this.capitalize(type) + 'Order',
401
+ 'currency': market['id'],
402
+ 'direction': side,
403
+ 'amount': amount,
404
+ };
405
+ if (type !== 'market') {
406
+ request['price'] = price;
407
+ }
408
+ const response = await this.privatePostUserOrders(this.extend(request, params));
409
+ return this.safeOrder({
410
+ 'info': response,
411
+ 'id': response['uuid'],
412
+ }, market);
413
+ }
414
+ async cancelOrder(id, symbol = undefined, params = {}) {
415
+ /**
416
+ * @method
417
+ * @name paymium#cancelOrder
418
+ * @description cancels an open order
419
+ * @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders~1%7Buuid%7D/delete
420
+ * @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders~1%7Buuid%7D~1cancel/delete
421
+ * @param {string} id order id
422
+ * @param {string} symbol not used by paymium cancelOrder ()
423
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
424
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
425
+ */
426
+ const request = {
427
+ 'uuid': id,
428
+ };
429
+ return await this.privateDeleteUserOrdersUuidCancel(this.extend(request, params));
430
+ }
431
+ async transfer(code, amount, fromAccount, toAccount, params = {}) {
432
+ /**
433
+ * @method
434
+ * @name paymium#transfer
435
+ * @description transfer currency internally between wallets on the same account
436
+ * @see https://paymium.github.io/api-documentation/#tag/Transfer/paths/~1user~1email_transfers/post
437
+ * @param {string} code unified currency code
438
+ * @param {float} amount amount to transfer
439
+ * @param {string} fromAccount account to transfer from
440
+ * @param {string} toAccount account to transfer to
441
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
442
+ * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
443
+ */
444
+ await this.loadMarkets();
445
+ const currency = this.currency(code);
446
+ if (toAccount.indexOf('@') < 0) {
447
+ throw new errors.ExchangeError(this.id + ' transfer() only allows transfers to an email address');
448
+ }
449
+ if (code !== 'BTC' && code !== 'EUR') {
450
+ throw new errors.ExchangeError(this.id + ' transfer() only allows BTC or EUR');
451
+ }
452
+ const request = {
453
+ 'currency': currency['id'],
454
+ 'amount': this.currencyToPrecision(code, amount),
455
+ 'email': toAccount,
456
+ // 'comment': 'a small note explaining the transfer'
457
+ };
458
+ const response = await this.privatePostUserEmailTransfers(this.extend(request, params));
459
+ //
460
+ // {
461
+ // "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
462
+ // "type": "Transfer",
463
+ // "currency": "BTC",
464
+ // "currency_amount": "string",
465
+ // "created_at": "2013-10-24T10:34:37.000Z",
466
+ // "updated_at": "2013-10-24T10:34:37.000Z",
467
+ // "amount": "1.0",
468
+ // "state": "executed",
469
+ // "currency_fee": "0.0",
470
+ // "btc_fee": "0.0",
471
+ // "comment": "string",
472
+ // "traded_btc": "string",
473
+ // "traded_currency": "string",
474
+ // "direction": "buy",
475
+ // "price": "string",
476
+ // "account_operations": [
477
+ // {
478
+ // "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
479
+ // "amount": "1.0",
480
+ // "currency": "BTC",
481
+ // "created_at": "2013-10-24T10:34:37.000Z",
482
+ // "created_at_int": 1389094259,
483
+ // "name": "account_operation",
484
+ // "address": "1FPDBXNqSkZMsw1kSkkajcj8berxDQkUoc",
485
+ // "tx_hash": "string",
486
+ // "is_trading_account": true
487
+ // }
488
+ // ]
489
+ // }
490
+ //
491
+ return this.parseTransfer(response, currency);
492
+ }
493
+ parseTransfer(transfer, currency = undefined) {
494
+ //
495
+ // {
496
+ // "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
497
+ // "type": "Transfer",
498
+ // "currency": "BTC",
499
+ // "currency_amount": "string",
500
+ // "created_at": "2013-10-24T10:34:37.000Z",
501
+ // "updated_at": "2013-10-24T10:34:37.000Z",
502
+ // "amount": "1.0",
503
+ // "state": "executed",
504
+ // "currency_fee": "0.0",
505
+ // "btc_fee": "0.0",
506
+ // "comment": "string",
507
+ // "traded_btc": "string",
508
+ // "traded_currency": "string",
509
+ // "direction": "buy",
510
+ // "price": "string",
511
+ // "account_operations": [
512
+ // {
513
+ // "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
514
+ // "amount": "1.0",
515
+ // "currency": "BTC",
516
+ // "created_at": "2013-10-24T10:34:37.000Z",
517
+ // "created_at_int": 1389094259,
518
+ // "name": "account_operation",
519
+ // "address": "1FPDBXNqSkZMsw1kSkkajcj8berxDQkUoc",
520
+ // "tx_hash": "string",
521
+ // "is_trading_account": true
522
+ // }
523
+ // ]
524
+ // }
525
+ //
526
+ const currencyId = this.safeString(transfer, 'currency');
527
+ const updatedAt = this.safeString(transfer, 'updated_at');
528
+ const timetstamp = this.parseDate(updatedAt);
529
+ const accountOperations = this.safeValue(transfer, 'account_operations');
530
+ const firstOperation = this.safeValue(accountOperations, 0, {});
531
+ const status = this.safeString(transfer, 'state');
532
+ return {
533
+ 'info': transfer,
534
+ 'id': this.safeString(transfer, 'uuid'),
535
+ 'timestamp': timetstamp,
536
+ 'datetime': this.iso8601(timetstamp),
537
+ 'currency': this.safeCurrencyCode(currencyId, currency),
538
+ 'amount': this.safeNumber(transfer, 'amount'),
539
+ 'fromAccount': undefined,
540
+ 'toAccount': this.safeString(firstOperation, 'address'),
541
+ 'status': this.parseTransferStatus(status),
542
+ };
543
+ }
544
+ parseTransferStatus(status) {
545
+ const statuses = {
546
+ 'executed': 'ok',
547
+ // what are the other statuses?
548
+ };
549
+ return this.safeString(statuses, status, status);
550
+ }
551
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
552
+ let url = this.urls['api']['rest'] + '/' + this.version + '/' + this.implodeParams(path, params);
553
+ const query = this.omit(params, this.extractParams(path));
554
+ if (api === 'public') {
555
+ if (Object.keys(query).length) {
556
+ url += '?' + this.urlencode(query);
557
+ }
558
+ }
559
+ else {
560
+ this.checkRequiredCredentials();
561
+ const nonce = this.nonce().toString();
562
+ let auth = nonce + url;
563
+ headers = {
564
+ 'Api-Key': this.apiKey,
565
+ 'Api-Nonce': nonce,
566
+ };
567
+ if (method === 'POST') {
568
+ if (Object.keys(query).length) {
569
+ body = this.json(query);
570
+ auth += body;
571
+ headers['Content-Type'] = 'application/json';
572
+ }
573
+ }
574
+ else {
575
+ if (Object.keys(query).length) {
576
+ const queryString = this.urlencode(query);
577
+ auth += queryString;
578
+ url += '?' + queryString;
579
+ }
580
+ }
581
+ headers['Api-Signature'] = this.hmac(this.encode(auth), this.encode(this.secret), sha256.sha256);
582
+ }
583
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
584
+ }
585
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
586
+ if (response === undefined) {
587
+ return undefined;
588
+ }
589
+ const errors$1 = this.safeValue(response, 'errors');
590
+ if (errors$1 !== undefined) {
591
+ throw new errors.ExchangeError(this.id + ' ' + this.json(response));
592
+ }
593
+ return undefined;
594
+ }
595
+ }
596
+
597
+ module.exports = paymium;