ccxt 4.4.63 → 4.4.65

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 (918) hide show
  1. package/README.md +5 -6
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +1 -6
  4. package/dist/cjs/src/abstract/ace.js +1 -1
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/ascendex.js +1 -1
  7. package/dist/cjs/src/abstract/bigone.js +1 -1
  8. package/dist/cjs/src/abstract/binance.js +1 -1
  9. package/dist/cjs/src/abstract/bingx.js +1 -1
  10. package/dist/cjs/src/abstract/bit2c.js +1 -1
  11. package/dist/cjs/src/abstract/bitbank.js +1 -1
  12. package/dist/cjs/src/abstract/bitbns.js +1 -1
  13. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  14. package/dist/cjs/src/abstract/bitfinex1.js +1 -1
  15. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  16. package/dist/cjs/src/abstract/bitget.js +1 -1
  17. package/dist/cjs/src/abstract/bithumb.js +1 -1
  18. package/dist/cjs/src/abstract/bitmart.js +1 -1
  19. package/dist/cjs/src/abstract/bitmex.js +1 -1
  20. package/dist/cjs/src/abstract/bitopro.js +1 -1
  21. package/dist/cjs/src/abstract/bitrue.js +1 -1
  22. package/dist/cjs/src/abstract/bitso.js +1 -1
  23. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  24. package/dist/cjs/src/abstract/bitteam.js +1 -1
  25. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  26. package/dist/cjs/src/abstract/bl3p.js +1 -1
  27. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  28. package/dist/cjs/src/abstract/blofin.js +1 -1
  29. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  30. package/dist/cjs/src/abstract/btcbox.js +1 -1
  31. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  32. package/dist/cjs/src/abstract/btcturk.js +1 -1
  33. package/dist/cjs/src/abstract/bybit.js +1 -1
  34. package/dist/cjs/src/abstract/cex.js +1 -1
  35. package/dist/cjs/src/abstract/coinbase.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  37. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  38. package/dist/cjs/src/abstract/coincatch.js +1 -1
  39. package/dist/cjs/src/abstract/coincheck.js +1 -1
  40. package/dist/cjs/src/abstract/coinex.js +1 -1
  41. package/dist/cjs/src/abstract/coinlist.js +1 -1
  42. package/dist/cjs/src/abstract/coinmate.js +1 -1
  43. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  44. package/dist/cjs/src/abstract/coinone.js +1 -1
  45. package/dist/cjs/src/abstract/coinsph.js +1 -1
  46. package/dist/cjs/src/abstract/coinspot.js +1 -1
  47. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  48. package/dist/cjs/src/abstract/currencycom.js +1 -1
  49. package/dist/cjs/src/abstract/defx.js +1 -1
  50. package/dist/cjs/src/abstract/delta.js +1 -1
  51. package/dist/cjs/src/abstract/deribit.js +1 -1
  52. package/dist/cjs/src/abstract/digifinex.js +1 -1
  53. package/dist/cjs/src/abstract/ellipx.js +1 -1
  54. package/dist/cjs/src/abstract/exmo.js +1 -1
  55. package/dist/cjs/src/abstract/gate.js +1 -1
  56. package/dist/cjs/src/abstract/gemini.js +1 -1
  57. package/dist/cjs/src/abstract/hashkey.js +1 -1
  58. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  59. package/dist/cjs/src/abstract/hollaex.js +1 -1
  60. package/dist/cjs/src/abstract/htx.js +1 -1
  61. package/dist/cjs/src/abstract/huobijp.js +1 -1
  62. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  63. package/dist/cjs/src/abstract/idex.js +1 -1
  64. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  65. package/dist/cjs/src/abstract/indodax.js +1 -1
  66. package/dist/cjs/src/abstract/kraken.js +1 -1
  67. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  68. package/dist/cjs/src/abstract/kucoin.js +1 -1
  69. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  70. package/dist/cjs/src/abstract/kuna.js +1 -1
  71. package/dist/cjs/src/abstract/latoken.js +1 -1
  72. package/dist/cjs/src/abstract/lbank.js +1 -1
  73. package/dist/cjs/src/abstract/luno.js +1 -1
  74. package/dist/cjs/src/abstract/mercado.js +1 -1
  75. package/dist/cjs/src/abstract/mexc.js +1 -1
  76. package/dist/cjs/src/abstract/ndax.js +1 -1
  77. package/dist/cjs/src/abstract/novadax.js +1 -1
  78. package/dist/cjs/src/abstract/oceanex.js +1 -1
  79. package/dist/cjs/src/abstract/okcoin.js +1 -1
  80. package/dist/cjs/src/abstract/okx.js +1 -1
  81. package/dist/cjs/src/abstract/onetrading.js +1 -1
  82. package/dist/cjs/src/abstract/oxfun.js +1 -1
  83. package/dist/cjs/src/abstract/p2b.js +1 -1
  84. package/dist/cjs/src/abstract/paradex.js +1 -1
  85. package/dist/cjs/src/abstract/paymium.js +1 -1
  86. package/dist/cjs/src/abstract/phemex.js +1 -1
  87. package/dist/cjs/src/abstract/poloniex.js +1 -1
  88. package/dist/cjs/src/abstract/poloniexfutures.js +1 -1
  89. package/dist/cjs/src/abstract/probit.js +1 -1
  90. package/dist/cjs/src/abstract/timex.js +1 -1
  91. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  92. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  93. package/dist/cjs/src/abstract/upbit.js +1 -1
  94. package/dist/cjs/src/abstract/vertex.js +1 -1
  95. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  96. package/dist/cjs/src/abstract/whitebit.js +1 -1
  97. package/dist/cjs/src/abstract/woo.js +1 -1
  98. package/dist/cjs/src/abstract/woofipro.js +1 -1
  99. package/dist/cjs/src/abstract/xt.js +1 -1
  100. package/dist/cjs/src/abstract/yobit.js +1 -1
  101. package/dist/cjs/src/abstract/zaif.js +1 -1
  102. package/dist/cjs/src/abstract/zonda.js +1 -1
  103. package/dist/cjs/src/ace.js +1 -1
  104. package/dist/cjs/src/alpaca.js +1 -1
  105. package/dist/cjs/src/ascendex.js +1 -1
  106. package/dist/cjs/src/base/Precise.js +6 -0
  107. package/dist/cjs/src/base/errors.js +6 -0
  108. package/dist/cjs/src/base/functions/crypto.js +1 -1
  109. package/dist/cjs/src/base/functions/encode.js +1 -1
  110. package/dist/cjs/src/base/functions/misc.js +1 -0
  111. package/dist/cjs/src/base/functions/number.js +6 -0
  112. package/dist/cjs/src/base/functions/platform.js +6 -0
  113. package/dist/cjs/src/base/functions/rsa.js +1 -0
  114. package/dist/cjs/src/base/functions/string.js +6 -0
  115. package/dist/cjs/src/base/functions/throttle.js +1 -1
  116. package/dist/cjs/src/base/functions/time.js +6 -0
  117. package/dist/cjs/src/base/functions/totp.js +1 -0
  118. package/dist/cjs/src/base/functions/type.js +6 -0
  119. package/dist/cjs/src/base/functions.js +1 -1
  120. package/dist/cjs/src/base/ws/Cache.js +6 -0
  121. package/dist/cjs/src/base/ws/Client.js +1 -0
  122. package/dist/cjs/src/base/ws/Future.js +1 -1
  123. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  124. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  125. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  126. package/dist/cjs/src/bequant.js +1 -1
  127. package/dist/cjs/src/bigone.js +1 -1
  128. package/dist/cjs/src/binance.js +5 -5
  129. package/dist/cjs/src/binancecoinm.js +1 -1
  130. package/dist/cjs/src/binanceus.js +1 -1
  131. package/dist/cjs/src/binanceusdm.js +1 -1
  132. package/dist/cjs/src/bingx.js +1 -1
  133. package/dist/cjs/src/bit2c.js +1 -1
  134. package/dist/cjs/src/bitbank.js +1 -1
  135. package/dist/cjs/src/bitbns.js +1 -1
  136. package/dist/cjs/src/bitcoincom.js +1 -1
  137. package/dist/cjs/src/bitfinex.js +1 -1
  138. package/dist/cjs/src/bitfinex1.js +1 -1
  139. package/dist/cjs/src/bitflyer.js +1 -1
  140. package/dist/cjs/src/bitget.js +1 -1
  141. package/dist/cjs/src/bithumb.js +1 -1
  142. package/dist/cjs/src/bitmart.js +1 -1
  143. package/dist/cjs/src/bitmex.js +1 -1
  144. package/dist/cjs/src/bitopro.js +1 -1
  145. package/dist/cjs/src/bitpanda.js +1 -1
  146. package/dist/cjs/src/bitrue.js +1 -1
  147. package/dist/cjs/src/bitso.js +1 -1
  148. package/dist/cjs/src/bitstamp.js +1 -1
  149. package/dist/cjs/src/bitteam.js +1 -1
  150. package/dist/cjs/src/bl3p.js +1 -1
  151. package/dist/cjs/src/blockchaincom.js +1 -1
  152. package/dist/cjs/src/blofin.js +1 -1
  153. package/dist/cjs/src/btcalpha.js +1 -1
  154. package/dist/cjs/src/btcbox.js +1 -1
  155. package/dist/cjs/src/btcmarkets.js +1 -1
  156. package/dist/cjs/src/btcturk.js +1 -1
  157. package/dist/cjs/src/bybit.js +1 -1
  158. package/dist/cjs/src/cex.js +1 -1
  159. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  160. package/dist/cjs/src/coincatch.js +1 -1
  161. package/dist/cjs/src/coincheck.js +1 -1
  162. package/dist/cjs/src/coinex.js +1 -1
  163. package/dist/cjs/src/coinlist.js +1 -0
  164. package/dist/cjs/src/coinmate.js +1 -1
  165. package/dist/cjs/src/coinmetro.js +1 -1
  166. package/dist/cjs/src/coinone.js +1 -1
  167. package/dist/cjs/src/coinsph.js +1 -0
  168. package/dist/cjs/src/coinspot.js +1 -1
  169. package/dist/cjs/src/cryptocom.js +3 -1
  170. package/dist/cjs/src/currencycom.js +1 -1
  171. package/dist/cjs/src/defx.js +1 -1
  172. package/dist/cjs/src/delta.js +1 -1
  173. package/dist/cjs/src/deribit.js +1 -1
  174. package/dist/cjs/src/digifinex.js +1 -1
  175. package/dist/cjs/src/ellipx.js +1 -1
  176. package/dist/cjs/src/exmo.js +1 -1
  177. package/dist/cjs/src/fmfwio.js +1 -1
  178. package/dist/cjs/src/gate.js +1 -1
  179. package/dist/cjs/src/gateio.js +1 -1
  180. package/dist/cjs/src/gemini.js +1 -1
  181. package/dist/cjs/src/hashkey.js +1 -1
  182. package/dist/cjs/src/hitbtc.js +1 -0
  183. package/dist/cjs/src/hollaex.js +1 -1
  184. package/dist/cjs/src/htx.js +1 -1
  185. package/dist/cjs/src/huobi.js +1 -1
  186. package/dist/cjs/src/huobijp.js +1 -1
  187. package/dist/cjs/src/hyperliquid.js +121 -74
  188. package/dist/cjs/src/idex.js +1 -1
  189. package/dist/cjs/src/independentreserve.js +1 -1
  190. package/dist/cjs/src/indodax.js +1 -1
  191. package/dist/cjs/src/kraken.js +1 -1
  192. package/dist/cjs/src/krakenfutures.js +1 -1
  193. package/dist/cjs/src/kucoin.js +1 -1
  194. package/dist/cjs/src/kucoinfutures.js +1 -1
  195. package/dist/cjs/src/kuna.js +1 -1
  196. package/dist/cjs/src/latoken.js +1 -1
  197. package/dist/cjs/src/lbank.js +1 -1
  198. package/dist/cjs/src/luno.js +1 -1
  199. package/dist/cjs/src/mercado.js +1 -1
  200. package/dist/cjs/src/mexc.js +1 -1
  201. package/dist/cjs/src/myokx.js +1 -1
  202. package/dist/cjs/src/ndax.js +1 -1
  203. package/dist/cjs/src/novadax.js +1 -1
  204. package/dist/cjs/src/oceanex.js +1 -1
  205. package/dist/cjs/src/okcoin.js +1 -1
  206. package/dist/cjs/src/okx.js +1 -1
  207. package/dist/cjs/src/onetrading.js +1 -1
  208. package/dist/cjs/src/oxfun.js +1 -1
  209. package/dist/cjs/src/p2b.js +1 -1
  210. package/dist/cjs/src/paradex.js +63 -15
  211. package/dist/cjs/src/paymium.js +1 -1
  212. package/dist/cjs/src/poloniex.js +1 -1
  213. package/dist/cjs/src/poloniexfutures.js +1 -1
  214. package/dist/cjs/src/pro/alpaca.js +1 -1
  215. package/dist/cjs/src/pro/ascendex.js +1 -1
  216. package/dist/cjs/src/pro/bequant.js +1 -1
  217. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  218. package/dist/cjs/src/pro/binanceus.js +1 -1
  219. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  220. package/dist/cjs/src/pro/bingx.js +1 -1
  221. package/dist/cjs/src/pro/bitcoincom.js +1 -1
  222. package/dist/cjs/src/pro/bitfinex.js +1 -1
  223. package/dist/cjs/src/pro/bitfinex1.js +1 -1
  224. package/dist/cjs/src/pro/bitget.js +1 -1
  225. package/dist/cjs/src/pro/bithumb.js +1 -1
  226. package/dist/cjs/src/pro/bitmart.js +1 -1
  227. package/dist/cjs/src/pro/bitmex.js +1 -1
  228. package/dist/cjs/src/pro/bitopro.js +1 -1
  229. package/dist/cjs/src/pro/bitpanda.js +1 -1
  230. package/dist/cjs/src/pro/bitrue.js +1 -1
  231. package/dist/cjs/src/pro/bitstamp.js +1 -1
  232. package/dist/cjs/src/pro/bitvavo.js +1 -1
  233. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  234. package/dist/cjs/src/pro/blofin.js +1 -1
  235. package/dist/cjs/src/pro/bybit.js +4 -3
  236. package/dist/cjs/src/pro/cex.js +1 -1
  237. package/dist/cjs/src/pro/coinbase.js +1 -1
  238. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  239. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  240. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  241. package/dist/cjs/src/pro/coincatch.js +1 -1
  242. package/dist/cjs/src/pro/coincheck.js +1 -1
  243. package/dist/cjs/src/pro/coinex.js +1 -1
  244. package/dist/cjs/src/pro/coinone.js +1 -1
  245. package/dist/cjs/src/pro/cryptocom.js +1 -1
  246. package/dist/cjs/src/pro/currencycom.js +1 -1
  247. package/dist/cjs/src/pro/defx.js +1 -1
  248. package/dist/cjs/src/pro/deribit.js +1 -1
  249. package/dist/cjs/src/pro/exmo.js +1 -1
  250. package/dist/cjs/src/pro/gate.js +10 -2
  251. package/dist/cjs/src/pro/gateio.js +1 -1
  252. package/dist/cjs/src/pro/gemini.js +1 -1
  253. package/dist/cjs/src/pro/hashkey.js +1 -1
  254. package/dist/cjs/src/pro/hitbtc.js +1 -1
  255. package/dist/cjs/src/pro/hollaex.js +1 -1
  256. package/dist/cjs/src/pro/htx.js +1 -1
  257. package/dist/cjs/src/pro/huobi.js +1 -1
  258. package/dist/cjs/src/pro/hyperliquid.js +4 -4
  259. package/dist/cjs/src/pro/idex.js +1 -1
  260. package/dist/cjs/src/pro/independentreserve.js +1 -1
  261. package/dist/cjs/src/pro/kraken.js +1 -1
  262. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  263. package/dist/cjs/src/pro/kucoin.js +1 -1
  264. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  265. package/dist/cjs/src/pro/lbank.js +1 -0
  266. package/dist/cjs/src/pro/luno.js +1 -1
  267. package/dist/cjs/src/pro/mexc.js +1 -1
  268. package/dist/cjs/src/pro/myokx.js +1 -1
  269. package/dist/cjs/src/pro/ndax.js +1 -1
  270. package/dist/cjs/src/pro/okcoin.js +1 -1
  271. package/dist/cjs/src/pro/okx.js +1 -1
  272. package/dist/cjs/src/pro/onetrading.js +1 -1
  273. package/dist/cjs/src/pro/oxfun.js +1 -1
  274. package/dist/cjs/src/pro/p2b.js +1 -1
  275. package/dist/cjs/src/pro/paradex.js +1 -1
  276. package/dist/cjs/src/pro/phemex.js +1 -1
  277. package/dist/cjs/src/pro/poloniex.js +1 -1
  278. package/dist/cjs/src/pro/poloniexfutures.js +1 -1
  279. package/dist/cjs/src/pro/probit.js +1 -1
  280. package/dist/cjs/src/pro/upbit.js +1 -1
  281. package/dist/cjs/src/pro/vertex.js +5 -0
  282. package/dist/cjs/src/pro/whitebit.js +1 -1
  283. package/dist/cjs/src/pro/xt.js +1 -1
  284. package/dist/cjs/src/probit.js +1 -1
  285. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  286. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  287. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  288. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  289. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  290. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  291. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  292. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  293. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  294. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  295. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  296. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  297. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  298. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  299. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  300. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  301. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  302. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  303. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  304. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  305. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  306. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  307. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  308. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  309. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  310. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  311. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  312. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  313. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  314. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  321. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  323. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  324. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  325. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  326. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  327. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  328. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  332. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  333. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  335. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  336. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  337. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  338. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  339. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  340. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  341. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  342. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  343. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  344. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  345. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  346. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  347. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  348. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  349. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  350. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  351. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  352. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  353. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  354. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  355. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  356. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  357. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  358. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  359. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  360. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  361. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  362. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  363. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  364. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  365. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  366. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  367. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  368. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  369. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  370. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  371. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  372. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  373. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  374. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  375. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  377. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  378. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  390. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  391. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  392. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  393. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  394. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  395. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  396. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  397. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  398. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  399. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  400. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  401. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  402. package/dist/cjs/src/timex.js +1 -0
  403. package/dist/cjs/src/tokocrypto.js +1 -1
  404. package/dist/cjs/src/tradeogre.js +1 -1
  405. package/dist/cjs/src/upbit.js +1 -1
  406. package/dist/cjs/src/vertex.js +1 -1
  407. package/dist/cjs/src/wavesexchange.js +1 -1
  408. package/dist/cjs/src/whitebit.js +1 -1
  409. package/dist/cjs/src/woo.js +1 -1
  410. package/dist/cjs/src/woofipro.js +1 -1
  411. package/dist/cjs/src/xt.js +1 -1
  412. package/dist/cjs/src/yobit.js +1 -1
  413. package/dist/cjs/src/zaif.js +1 -1
  414. package/dist/cjs/src/zonda.js +1 -1
  415. package/js/ccxt.d.ts +2 -8
  416. package/js/ccxt.js +8 -6
  417. package/js/src/abstract/ace.js +6 -0
  418. package/js/src/abstract/alpaca.js +6 -0
  419. package/js/src/abstract/ascendex.js +6 -0
  420. package/js/src/abstract/bequant.js +6 -0
  421. package/js/src/abstract/bigone.js +6 -0
  422. package/js/src/abstract/binance.d.ts +1 -0
  423. package/js/src/abstract/binance.js +6 -0
  424. package/js/src/abstract/binancecoinm.d.ts +1 -0
  425. package/js/src/abstract/binancecoinm.js +6 -0
  426. package/js/src/abstract/binanceus.d.ts +1 -0
  427. package/js/src/abstract/binanceus.js +6 -0
  428. package/js/src/abstract/binanceusdm.d.ts +1 -0
  429. package/js/src/abstract/binanceusdm.js +6 -0
  430. package/js/src/abstract/bingx.js +6 -0
  431. package/js/src/abstract/bit2c.js +6 -0
  432. package/js/src/abstract/bitbank.js +6 -0
  433. package/js/src/abstract/bitbns.js +6 -0
  434. package/js/src/abstract/bitcoincom.js +6 -0
  435. package/js/src/abstract/bitfinex.js +6 -0
  436. package/js/src/abstract/bitfinex1.js +6 -0
  437. package/js/src/abstract/bitflyer.js +6 -0
  438. package/js/src/abstract/bitget.js +6 -0
  439. package/js/src/abstract/bithumb.js +6 -0
  440. package/js/src/abstract/bitmart.js +6 -0
  441. package/js/src/abstract/bitmex.js +6 -0
  442. package/js/src/abstract/bitopro.js +6 -0
  443. package/js/src/abstract/bitpanda.js +6 -0
  444. package/js/src/abstract/bitrue.js +6 -0
  445. package/js/src/abstract/bitso.js +6 -0
  446. package/js/src/abstract/bitstamp.js +6 -0
  447. package/js/src/abstract/bitteam.js +6 -0
  448. package/js/src/abstract/bitvavo.js +6 -0
  449. package/js/src/abstract/bl3p.js +6 -0
  450. package/js/src/abstract/blockchaincom.js +6 -0
  451. package/js/src/abstract/blofin.js +6 -0
  452. package/js/src/abstract/btcalpha.js +6 -0
  453. package/js/src/abstract/btcbox.js +6 -0
  454. package/js/src/abstract/btcmarkets.js +6 -0
  455. package/js/src/abstract/btcturk.js +6 -0
  456. package/js/src/abstract/bybit.js +6 -0
  457. package/js/src/abstract/cex.js +6 -0
  458. package/js/src/abstract/coinbase.js +6 -0
  459. package/js/src/abstract/coinbaseadvanced.js +6 -0
  460. package/js/src/abstract/coinbaseexchange.js +6 -0
  461. package/js/src/abstract/coinbaseinternational.js +6 -0
  462. package/js/src/abstract/coincatch.js +6 -0
  463. package/js/src/abstract/coincheck.js +6 -0
  464. package/js/src/abstract/coinex.js +6 -0
  465. package/js/src/abstract/coinlist.js +6 -0
  466. package/js/src/abstract/coinmate.js +6 -0
  467. package/js/src/abstract/coinmetro.js +6 -0
  468. package/js/src/abstract/coinone.js +6 -0
  469. package/js/src/abstract/coinsph.js +6 -0
  470. package/js/src/abstract/coinspot.js +6 -0
  471. package/js/src/abstract/cryptocom.js +6 -0
  472. package/js/src/abstract/defx.js +6 -0
  473. package/js/src/abstract/delta.js +6 -0
  474. package/js/src/abstract/deribit.js +6 -0
  475. package/js/src/abstract/digifinex.js +6 -0
  476. package/js/src/abstract/ellipx.js +6 -0
  477. package/js/src/abstract/exmo.js +6 -0
  478. package/js/src/abstract/fmfwio.js +6 -0
  479. package/js/src/abstract/gate.js +6 -0
  480. package/js/src/abstract/gateio.js +6 -0
  481. package/js/src/abstract/gemini.js +6 -0
  482. package/js/src/abstract/hashkey.js +6 -0
  483. package/js/src/abstract/hitbtc.js +6 -0
  484. package/js/src/abstract/hollaex.js +6 -0
  485. package/js/src/abstract/htx.js +6 -0
  486. package/js/src/abstract/huobi.js +6 -0
  487. package/js/src/abstract/huobijp.js +6 -0
  488. package/js/src/abstract/hyperliquid.js +6 -0
  489. package/js/src/abstract/idex.js +6 -0
  490. package/js/src/abstract/independentreserve.js +6 -0
  491. package/js/src/abstract/indodax.js +6 -0
  492. package/js/src/abstract/kraken.js +6 -0
  493. package/js/src/abstract/krakenfutures.js +6 -0
  494. package/js/src/abstract/kucoin.js +6 -0
  495. package/js/src/abstract/kucoinfutures.js +6 -0
  496. package/js/src/abstract/kuna.js +6 -0
  497. package/js/src/abstract/latoken.js +6 -0
  498. package/js/src/abstract/lbank.js +6 -0
  499. package/js/src/abstract/luno.js +6 -0
  500. package/js/src/abstract/mercado.js +6 -0
  501. package/js/src/abstract/mexc.js +6 -0
  502. package/js/src/abstract/myokx.js +6 -0
  503. package/js/src/abstract/ndax.js +6 -0
  504. package/js/src/abstract/novadax.js +6 -0
  505. package/js/src/abstract/oceanex.js +6 -0
  506. package/js/src/abstract/okcoin.js +6 -0
  507. package/js/src/abstract/okx.js +6 -0
  508. package/js/src/abstract/onetrading.js +6 -0
  509. package/js/src/abstract/oxfun.js +6 -0
  510. package/js/src/abstract/p2b.js +6 -0
  511. package/js/src/abstract/paradex.js +6 -0
  512. package/js/src/abstract/paymium.js +6 -0
  513. package/js/src/abstract/phemex.js +6 -0
  514. package/js/src/abstract/poloniex.js +6 -0
  515. package/js/src/abstract/poloniexfutures.js +6 -0
  516. package/js/src/abstract/probit.js +6 -0
  517. package/js/src/abstract/timex.js +6 -0
  518. package/js/src/abstract/tokocrypto.js +6 -0
  519. package/js/src/abstract/tradeogre.js +6 -0
  520. package/js/src/abstract/upbit.js +6 -0
  521. package/js/src/abstract/vertex.js +6 -0
  522. package/js/src/abstract/wavesexchange.js +6 -0
  523. package/js/src/abstract/whitebit.js +6 -0
  524. package/js/src/abstract/woo.js +6 -0
  525. package/js/src/abstract/woofipro.js +6 -0
  526. package/js/src/abstract/xt.js +6 -0
  527. package/js/src/abstract/yobit.js +6 -0
  528. package/js/src/abstract/zaif.js +6 -0
  529. package/js/src/abstract/zonda.js +6 -0
  530. package/js/src/ace.js +6 -0
  531. package/js/src/alpaca.js +6 -0
  532. package/js/src/ascendex.js +6 -0
  533. package/js/src/base/Exchange.js +6 -0
  534. package/js/src/base/Precise.js +6 -0
  535. package/js/src/base/errorHierarchy.js +6 -0
  536. package/js/src/base/errors.js +6 -0
  537. package/js/src/base/functions/crypto.js +6 -0
  538. package/js/src/base/functions/encode.js +6 -0
  539. package/js/src/base/functions/generic.js +6 -0
  540. package/js/src/base/functions/misc.js +6 -0
  541. package/js/src/base/functions/number.js +6 -0
  542. package/js/src/base/functions/platform.js +6 -0
  543. package/js/src/base/functions/rsa.js +6 -0
  544. package/js/src/base/functions/string.js +6 -0
  545. package/js/src/base/functions/throttle.js +6 -0
  546. package/js/src/base/functions/time.js +6 -0
  547. package/js/src/base/functions/totp.js +6 -0
  548. package/js/src/base/functions/type.js +6 -0
  549. package/js/src/base/functions.js +6 -0
  550. package/js/src/base/types.js +6 -0
  551. package/js/src/base/ws/Cache.js +6 -0
  552. package/js/src/base/ws/Client.js +6 -0
  553. package/js/src/base/ws/Future.js +6 -0
  554. package/js/src/base/ws/OrderBook.js +6 -0
  555. package/js/src/base/ws/OrderBookSide.js +6 -0
  556. package/js/src/base/ws/WsClient.js +6 -0
  557. package/js/src/base/ws/functions.js +6 -0
  558. package/js/src/bequant.js +6 -0
  559. package/js/src/bigone.js +6 -0
  560. package/js/src/binance.js +10 -4
  561. package/js/src/binancecoinm.js +6 -0
  562. package/js/src/binanceus.js +6 -0
  563. package/js/src/binanceusdm.js +6 -0
  564. package/js/src/bingx.js +6 -0
  565. package/js/src/bit2c.js +6 -0
  566. package/js/src/bitbank.js +6 -0
  567. package/js/src/bitbns.js +6 -0
  568. package/js/src/bitcoincom.js +6 -0
  569. package/js/src/bitfinex.js +6 -0
  570. package/js/src/bitfinex1.js +6 -0
  571. package/js/src/bitflyer.js +6 -0
  572. package/js/src/bitget.js +6 -0
  573. package/js/src/bithumb.js +6 -0
  574. package/js/src/bitmart.js +6 -0
  575. package/js/src/bitmex.js +6 -0
  576. package/js/src/bitopro.js +6 -0
  577. package/js/src/bitpanda.js +6 -0
  578. package/js/src/bitrue.js +6 -0
  579. package/js/src/bitso.js +6 -0
  580. package/js/src/bitstamp.js +6 -0
  581. package/js/src/bitteam.js +6 -0
  582. package/js/src/bitvavo.js +6 -0
  583. package/js/src/bl3p.js +6 -0
  584. package/js/src/blockchaincom.js +6 -0
  585. package/js/src/blofin.js +6 -0
  586. package/js/src/btcalpha.js +6 -0
  587. package/js/src/btcbox.js +6 -0
  588. package/js/src/btcmarkets.js +6 -0
  589. package/js/src/btcturk.js +6 -0
  590. package/js/src/bybit.js +6 -0
  591. package/js/src/cex.js +6 -0
  592. package/js/src/coinbase.js +6 -0
  593. package/js/src/coinbaseadvanced.js +6 -0
  594. package/js/src/coinbaseexchange.js +6 -0
  595. package/js/src/coinbaseinternational.js +6 -0
  596. package/js/src/coincatch.js +6 -0
  597. package/js/src/coincheck.js +6 -0
  598. package/js/src/coinex.js +6 -0
  599. package/js/src/coinlist.js +6 -0
  600. package/js/src/coinmate.js +6 -0
  601. package/js/src/coinmetro.js +6 -0
  602. package/js/src/coinone.js +6 -0
  603. package/js/src/coinsph.js +6 -0
  604. package/js/src/coinspot.js +6 -0
  605. package/js/src/cryptocom.js +8 -0
  606. package/js/src/defx.js +6 -0
  607. package/js/src/delta.js +6 -0
  608. package/js/src/deribit.js +6 -0
  609. package/js/src/digifinex.js +6 -0
  610. package/js/src/ellipx.js +6 -0
  611. package/js/src/exmo.js +6 -0
  612. package/js/src/fmfwio.js +6 -0
  613. package/js/src/gate.js +6 -0
  614. package/js/src/gateio.js +6 -0
  615. package/js/src/gemini.js +6 -0
  616. package/js/src/hashkey.js +6 -0
  617. package/js/src/hitbtc.js +6 -0
  618. package/js/src/hollaex.js +6 -0
  619. package/js/src/htx.js +6 -0
  620. package/js/src/huobi.js +6 -0
  621. package/js/src/huobijp.js +6 -0
  622. package/js/src/hyperliquid.d.ts +12 -3
  623. package/js/src/hyperliquid.js +126 -73
  624. package/js/src/idex.js +6 -0
  625. package/js/src/independentreserve.js +6 -0
  626. package/js/src/indodax.js +6 -0
  627. package/js/src/kraken.js +6 -0
  628. package/js/src/krakenfutures.js +6 -0
  629. package/js/src/kucoin.js +6 -0
  630. package/js/src/kucoinfutures.js +6 -0
  631. package/js/src/kuna.js +6 -0
  632. package/js/src/latoken.js +6 -0
  633. package/js/src/lbank.js +6 -0
  634. package/js/src/luno.js +6 -0
  635. package/js/src/mercado.js +6 -0
  636. package/js/src/mexc.js +6 -0
  637. package/js/src/myokx.js +6 -0
  638. package/js/src/ndax.js +6 -0
  639. package/js/src/novadax.js +6 -0
  640. package/js/src/oceanex.js +6 -0
  641. package/js/src/okcoin.js +6 -0
  642. package/js/src/okx.js +6 -0
  643. package/js/src/onetrading.js +6 -0
  644. package/js/src/oxfun.js +6 -0
  645. package/js/src/p2b.js +6 -0
  646. package/js/src/paradex.d.ts +2 -0
  647. package/js/src/paradex.js +68 -14
  648. package/js/src/paymium.js +6 -0
  649. package/js/src/phemex.js +6 -0
  650. package/js/src/poloniex.js +6 -0
  651. package/js/src/poloniexfutures.js +6 -0
  652. package/js/src/pro/alpaca.js +6 -0
  653. package/js/src/pro/ascendex.js +6 -0
  654. package/js/src/pro/bequant.js +6 -0
  655. package/js/src/pro/binance.js +6 -0
  656. package/js/src/pro/binancecoinm.js +6 -0
  657. package/js/src/pro/binanceus.js +6 -0
  658. package/js/src/pro/binanceusdm.js +6 -0
  659. package/js/src/pro/bingx.js +6 -0
  660. package/js/src/pro/bitcoincom.js +6 -0
  661. package/js/src/pro/bitfinex.js +6 -0
  662. package/js/src/pro/bitfinex1.js +6 -0
  663. package/js/src/pro/bitget.js +6 -0
  664. package/js/src/pro/bithumb.js +6 -0
  665. package/js/src/pro/bitmart.js +6 -0
  666. package/js/src/pro/bitmex.js +6 -0
  667. package/js/src/pro/bitopro.js +7 -1
  668. package/js/src/pro/bitpanda.js +6 -0
  669. package/js/src/pro/bitrue.js +6 -0
  670. package/js/src/pro/bitstamp.js +6 -0
  671. package/js/src/pro/bitvavo.js +6 -0
  672. package/js/src/pro/blockchaincom.js +6 -0
  673. package/js/src/pro/blofin.js +6 -0
  674. package/js/src/pro/bybit.js +9 -2
  675. package/js/src/pro/cex.js +6 -0
  676. package/js/src/pro/coinbase.js +6 -0
  677. package/js/src/pro/coinbaseadvanced.js +6 -0
  678. package/js/src/pro/coinbaseexchange.js +6 -0
  679. package/js/src/pro/coinbaseinternational.js +6 -0
  680. package/js/src/pro/coincatch.js +6 -0
  681. package/js/src/pro/coincheck.js +6 -0
  682. package/js/src/pro/coinex.js +6 -0
  683. package/js/src/pro/coinone.js +6 -0
  684. package/js/src/pro/cryptocom.js +6 -0
  685. package/js/src/pro/defx.js +6 -0
  686. package/js/src/pro/deribit.js +6 -0
  687. package/js/src/pro/exmo.js +6 -0
  688. package/js/src/pro/gate.js +15 -1
  689. package/js/src/pro/gateio.js +6 -0
  690. package/js/src/pro/gemini.js +6 -0
  691. package/js/src/pro/hashkey.js +6 -0
  692. package/js/src/pro/hitbtc.js +6 -0
  693. package/js/src/pro/hollaex.js +6 -0
  694. package/js/src/pro/htx.js +6 -0
  695. package/js/src/pro/huobi.js +6 -0
  696. package/js/src/pro/huobijp.js +6 -0
  697. package/js/src/pro/hyperliquid.d.ts +0 -1
  698. package/js/src/pro/hyperliquid.js +9 -3
  699. package/js/src/pro/idex.js +6 -0
  700. package/js/src/pro/independentreserve.js +6 -0
  701. package/js/src/pro/kraken.js +6 -0
  702. package/js/src/pro/krakenfutures.js +6 -0
  703. package/js/src/pro/kucoin.js +6 -0
  704. package/js/src/pro/kucoinfutures.js +6 -0
  705. package/js/src/pro/lbank.js +6 -0
  706. package/js/src/pro/luno.js +6 -0
  707. package/js/src/pro/mexc.js +6 -0
  708. package/js/src/pro/myokx.js +6 -0
  709. package/js/src/pro/ndax.js +6 -0
  710. package/js/src/pro/okcoin.js +6 -0
  711. package/js/src/pro/okx.js +6 -0
  712. package/js/src/pro/onetrading.js +6 -0
  713. package/js/src/pro/oxfun.js +6 -0
  714. package/js/src/pro/p2b.js +6 -0
  715. package/js/src/pro/paradex.js +6 -0
  716. package/js/src/pro/phemex.js +6 -0
  717. package/js/src/pro/poloniex.js +6 -0
  718. package/js/src/pro/poloniexfutures.js +6 -0
  719. package/js/src/pro/probit.js +6 -0
  720. package/js/src/pro/upbit.js +6 -0
  721. package/js/src/pro/vertex.js +11 -0
  722. package/js/src/pro/whitebit.js +6 -0
  723. package/js/src/pro/woo.js +6 -0
  724. package/js/src/pro/woofipro.js +6 -0
  725. package/js/src/pro/xt.js +6 -0
  726. package/js/src/probit.js +6 -0
  727. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  728. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  729. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  730. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  731. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  732. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  733. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  734. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  735. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  736. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  737. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  738. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  739. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  740. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  741. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  742. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  743. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  744. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  745. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  746. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  747. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  748. package/js/src/static_dependencies/ethers/index.js +6 -0
  749. package/js/src/static_dependencies/ethers/interface.js +6 -0
  750. package/js/src/static_dependencies/ethers/typed.js +6 -0
  751. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  752. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  753. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  754. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  755. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  756. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  757. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  758. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  759. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  760. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  761. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  762. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  763. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  764. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  765. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  766. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  767. package/js/src/static_dependencies/fflake/browser.js +6 -0
  768. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  769. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  770. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  771. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  772. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  773. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  774. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  775. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  776. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  777. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  778. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  779. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  780. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  781. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  782. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  783. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  784. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  785. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  786. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  787. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  788. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  789. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  790. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  791. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  792. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  793. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  794. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  795. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  796. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  797. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  798. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  799. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  800. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  801. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  802. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  803. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  804. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  805. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  806. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  807. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  808. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  809. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  810. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  811. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  812. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  813. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  814. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  815. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  816. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  817. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  818. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  819. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  820. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  821. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  822. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  823. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  824. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  825. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  826. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  827. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  828. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  829. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  830. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  831. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  832. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  833. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  834. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  835. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  836. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  837. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  838. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  839. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  840. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  841. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  842. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  843. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  844. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  845. package/js/src/static_dependencies/qs/formats.cjs +6 -0
  846. package/js/src/static_dependencies/qs/index.cjs +6 -0
  847. package/js/src/static_dependencies/qs/parse.cjs +6 -0
  848. package/js/src/static_dependencies/qs/stringify.cjs +6 -0
  849. package/js/src/static_dependencies/qs/utils.cjs +6 -0
  850. package/js/src/static_dependencies/scure-base/index.js +6 -0
  851. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  852. package/js/src/static_dependencies/starknet/constants.js +6 -0
  853. package/js/src/static_dependencies/starknet/index.js +6 -0
  854. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  855. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  856. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  857. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  858. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  859. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  860. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  861. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  862. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  863. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  864. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  865. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  866. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  867. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  868. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  869. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  870. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  871. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  872. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  873. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  874. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  875. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  876. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  877. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  878. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  879. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  880. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  881. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  882. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  883. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  884. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  885. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  886. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  887. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  888. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  889. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  890. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  891. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  892. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  893. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  894. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  895. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  896. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  897. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  898. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  899. package/js/src/timex.js +6 -0
  900. package/js/src/tokocrypto.js +6 -0
  901. package/js/src/tradeogre.js +6 -0
  902. package/js/src/upbit.js +6 -0
  903. package/js/src/vertex.js +6 -0
  904. package/js/src/wavesexchange.js +6 -0
  905. package/js/src/whitebit.js +6 -0
  906. package/js/src/woo.js +6 -0
  907. package/js/src/woofipro.js +6 -0
  908. package/js/src/xt.js +6 -0
  909. package/js/src/yobit.js +6 -0
  910. package/js/src/zaif.js +6 -0
  911. package/js/src/zonda.js +6 -0
  912. package/package.json +1 -1
  913. package/js/src/abstract/currencycom.d.ts +0 -71
  914. package/js/src/abstract/currencycom.js +0 -5
  915. package/js/src/currencycom.d.ts +0 -284
  916. package/js/src/currencycom.js +0 -2117
  917. package/js/src/pro/currencycom.d.ts +0 -88
  918. package/js/src/pro/currencycom.js +0 -558
@@ -1,2117 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- import Exchange from './abstract/currencycom.js';
3
- import { BadSymbol, ExchangeError, ArgumentsRequired, ExchangeNotAvailable, InsufficientFunds, OrderNotFound, InvalidOrder, DDoSProtection, InvalidNonce, AuthenticationError, BadRequest, NotSupported } from './base/errors.js';
4
- import { Precise } from './base/Precise.js';
5
- import { TICK_SIZE } from './base/functions/number.js';
6
- import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
7
- // ---------------------------------------------------------------------------
8
- /**
9
- * @class currencycom
10
- * @augments Exchange
11
- */
12
- export default class currencycom extends Exchange {
13
- describe() {
14
- return this.deepExtend(super.describe(), {
15
- 'id': 'currencycom',
16
- 'name': 'Currency.com',
17
- 'countries': ['BY'],
18
- 'rateLimit': 100,
19
- 'certified': false,
20
- 'pro': true,
21
- 'version': 'v2',
22
- // new metainfo interface
23
- 'has': {
24
- 'CORS': undefined,
25
- 'spot': true,
26
- 'margin': true,
27
- 'swap': true,
28
- 'future': false,
29
- 'option': false,
30
- 'addMargin': undefined,
31
- 'cancelAllOrders': undefined,
32
- 'cancelOrder': true,
33
- 'cancelOrders': undefined,
34
- 'createDepositAddress': undefined,
35
- 'createLimitOrder': true,
36
- 'createMarketOrder': true,
37
- 'createOrder': true,
38
- 'createStopLimitOrder': true,
39
- 'createStopMarketOrder': true,
40
- 'createStopOrder': true,
41
- 'editOrder': 'emulated',
42
- 'fetchAccounts': true,
43
- 'fetchBalance': true,
44
- 'fetchBidsAsks': undefined,
45
- 'fetchBorrowRateHistory': undefined,
46
- 'fetchCanceledOrders': undefined,
47
- 'fetchClosedOrder': undefined,
48
- 'fetchClosedOrders': undefined,
49
- 'fetchCrossBorrowRate': false,
50
- 'fetchCrossBorrowRates': false,
51
- 'fetchCurrencies': true,
52
- 'fetchDeposit': undefined,
53
- 'fetchDepositAddress': true,
54
- 'fetchDepositAddresses': false,
55
- 'fetchDepositAddressesByNetwork': false,
56
- 'fetchDeposits': true,
57
- 'fetchDepositsWithdrawals': true,
58
- 'fetchFundingHistory': false,
59
- 'fetchFundingRate': false,
60
- 'fetchFundingRateHistory': false,
61
- 'fetchFundingRates': false,
62
- 'fetchIndexOHLCV': false,
63
- 'fetchIsolatedBorrowRate': false,
64
- 'fetchIsolatedBorrowRates': false,
65
- 'fetchL2OrderBook': true,
66
- 'fetchLedger': true,
67
- 'fetchLedgerEntry': false,
68
- 'fetchLeverage': true,
69
- 'fetchLeverageTiers': false,
70
- 'fetchMarginMode': false,
71
- 'fetchMarkets': true,
72
- 'fetchMarkOHLCV': false,
73
- 'fetchMyTrades': true,
74
- 'fetchOHLCV': true,
75
- 'fetchOpenOrder': undefined,
76
- 'fetchOpenOrders': true,
77
- 'fetchOrder': true,
78
- 'fetchOrderBook': true,
79
- 'fetchOrderBooks': undefined,
80
- 'fetchOrders': undefined,
81
- 'fetchOrderTrades': undefined,
82
- 'fetchPosition': undefined,
83
- 'fetchPositionMode': false,
84
- 'fetchPositions': true,
85
- 'fetchPositionsRisk': undefined,
86
- 'fetchPremiumIndexOHLCV': false,
87
- 'fetchTicker': true,
88
- 'fetchTickers': true,
89
- 'fetchTime': true,
90
- 'fetchTrades': true,
91
- 'fetchTradingFee': false,
92
- 'fetchTradingFees': true,
93
- 'fetchTradingLimits': undefined,
94
- 'fetchTransactionFee': undefined,
95
- 'fetchTransactionFees': undefined,
96
- 'fetchTransactions': 'emulated',
97
- 'fetchTransfers': undefined,
98
- 'fetchWithdrawal': undefined,
99
- 'fetchWithdrawals': true,
100
- 'reduceMargin': undefined,
101
- 'sandbox': true,
102
- 'setLeverage': undefined,
103
- 'setMarginMode': undefined,
104
- 'setPositionMode': undefined,
105
- 'signIn': undefined,
106
- 'transfer': undefined,
107
- 'withdraw': undefined,
108
- },
109
- 'timeframes': {
110
- '1m': '1m',
111
- '5m': '5m',
112
- '10m': '10m',
113
- '15m': '15m',
114
- '30m': '30m',
115
- '1h': '1h',
116
- '4h': '4h',
117
- '1d': '1d',
118
- '1w': '1w',
119
- },
120
- 'hostname': 'backend.currency.com',
121
- 'urls': {
122
- 'logo': 'https://user-images.githubusercontent.com/1294454/83718672-36745c00-a63e-11ea-81a9-677b1f789a4d.jpg',
123
- 'api': {
124
- 'public': 'https://api-adapter.{hostname}/api',
125
- 'private': 'https://api-adapter.{hostname}/api',
126
- 'marketcap': 'https://marketcap.{hostname}/api',
127
- },
128
- 'test': {
129
- 'public': 'https://demo-api-adapter.{hostname}/api',
130
- 'private': 'https://demo-api-adapter.{hostname}/api',
131
- },
132
- 'www': 'https://www.currency.com',
133
- 'referral': 'https://currency.com/trading/signup?c=362jaimv&pid=referral',
134
- 'doc': [
135
- 'https://currency.com/api',
136
- ],
137
- 'fees': 'https://currency.com/fees-charges',
138
- },
139
- // rate-limits are described at: https://currency.com/api-get-started
140
- 'api': {
141
- 'public': {
142
- 'get': {
143
- 'v1/time': 1,
144
- 'v1/exchangeInfo': 1,
145
- 'v1/depth': 1,
146
- 'v1/aggTrades': 1,
147
- 'v1/klines': 1,
148
- 'v1/ticker/24hr': 1,
149
- 'v2/time': 1,
150
- 'v2/exchangeInfo': 1,
151
- 'v2/depth': 1,
152
- 'v2/aggTrades': 1,
153
- 'v2/klines': 1,
154
- 'v2/ticker/24hr': 1,
155
- },
156
- },
157
- 'marketcap': {
158
- 'get': {
159
- 'v1/assets': 1,
160
- 'v1/candles': 1,
161
- 'v1/orderbook': 1,
162
- 'v1/summary': 1,
163
- 'v1/ticker': 1,
164
- 'v1/token/assets': 1,
165
- 'v1/token/orderbook': 1,
166
- 'v1/token/summary': 1,
167
- 'v1/token/ticker': 1,
168
- 'v1/token/trades': 1,
169
- 'v1/token_crypto/OHLC': 1,
170
- 'v1/token_crypto/assets': 1,
171
- 'v1/token_crypto/orderbook': 1,
172
- 'v1/token_crypto/summary': 1,
173
- 'v1/token_crypto/ticker': 1,
174
- 'v1/token_crypto/trades': 1,
175
- 'v1/trades': 1,
176
- },
177
- },
178
- 'private': {
179
- 'get': {
180
- 'v1/account': 1,
181
- 'v1/currencies': 1,
182
- 'v1/deposits': 1,
183
- 'v1/depositAddress': 1,
184
- 'v1/ledger': 1,
185
- 'v1/leverageSettings': 1,
186
- 'v1/myTrades': 1,
187
- 'v1/openOrders': 1,
188
- 'v1/tradingPositions': 1,
189
- 'v1/tradingPositionsHistory': 1,
190
- 'v1/transactions': 1,
191
- 'v1/withdrawals': 1,
192
- 'v2/account': 1,
193
- 'v2/currencies': 1,
194
- 'v2/deposits': 1,
195
- 'v2/depositAddress': 1,
196
- 'v2/ledger': 1,
197
- 'v2/leverageSettings': 1,
198
- 'v2/myTrades': 1,
199
- 'v2/openOrders': 1,
200
- 'v2/tradingPositions': 1,
201
- 'v2/tradingPositionsHistory': 1,
202
- 'v2/transactions': 1,
203
- 'v2/withdrawals': 1,
204
- 'v2/fetchOrder': 1,
205
- },
206
- 'post': {
207
- 'v1/order': 1,
208
- 'v1/updateTradingPosition': 1,
209
- 'v1/updateTradingOrder': 1,
210
- 'v1/closeTradingPosition': 1,
211
- 'v2/order': 1,
212
- 'v2/updateTradingPosition': 1,
213
- 'v2/updateTradingOrder': 1,
214
- 'v2/closeTradingPosition': 1,
215
- },
216
- 'delete': {
217
- 'v1/order': 1,
218
- 'v2/order': 1,
219
- },
220
- },
221
- },
222
- 'fees': {
223
- 'trading': {
224
- 'feeSide': 'get',
225
- 'tierBased': false,
226
- 'percentage': true,
227
- 'taker': this.parseNumber('0.002'),
228
- 'maker': this.parseNumber('0.002'),
229
- },
230
- },
231
- 'precisionMode': TICK_SIZE,
232
- // exchange-specific options
233
- 'options': {
234
- 'defaultTimeInForce': 'GTC',
235
- 'warnOnFetchOpenOrdersWithoutSymbol': true,
236
- 'recvWindow': 5 * 1000,
237
- 'timeDifference': 0,
238
- 'adjustForTimeDifference': false,
239
- 'parseOrderToPrecision': false,
240
- 'newOrderRespType': {
241
- 'market': 'FULL',
242
- 'limit': 'RESULT',
243
- 'stop': 'RESULT',
244
- },
245
- 'leverage_markets_suffix': '_LEVERAGE',
246
- 'collateralCurrencies': ['USD', 'EUR', 'USDT'],
247
- },
248
- 'features': {
249
- 'default': {
250
- 'sandbox': true,
251
- 'createOrder': {
252
- 'marginMode': true,
253
- 'triggerPrice': true,
254
- 'triggerPriceType': undefined,
255
- 'triggerDirection': false,
256
- 'stopLossPrice': false,
257
- 'takeProfitPrice': false,
258
- 'attachedStopLossTakeProfit': {
259
- 'triggerPriceType': undefined,
260
- 'price': false,
261
- },
262
- 'timeInForce': {
263
- 'IOC': true,
264
- 'FOK': true,
265
- 'PO': false,
266
- 'GTD': true,
267
- },
268
- 'hedged': false,
269
- 'selfTradePrevention': false,
270
- 'trailing': false,
271
- 'iceberg': false,
272
- 'leverage': true,
273
- 'marketBuyByCost': false,
274
- 'marketBuyRequiresPrice': false,
275
- },
276
- 'createOrders': undefined,
277
- 'fetchMyTrades': {
278
- 'marginMode': false,
279
- 'limit': 500,
280
- 'daysBack': 100000,
281
- 'untilDays': 100000,
282
- 'symbolRequired': false,
283
- },
284
- 'fetchOrder': {
285
- 'marginMode': false,
286
- 'trigger': false,
287
- 'trailing': false,
288
- 'symbolRequired': false,
289
- },
290
- 'fetchOpenOrders': {
291
- 'marginMode': true,
292
- 'limit': 100,
293
- 'trigger': false,
294
- 'trailing': false,
295
- 'symbolRequired': false,
296
- },
297
- 'fetchOrders': undefined,
298
- 'fetchClosedOrders': undefined,
299
- 'fetchOHLCV': {
300
- 'limit': 1000,
301
- },
302
- },
303
- 'spot': {
304
- 'extends': 'default',
305
- },
306
- 'swap': {
307
- 'linear': {
308
- 'extends': 'default',
309
- },
310
- 'inverse': {
311
- 'extends': 'default',
312
- },
313
- },
314
- 'future': {
315
- 'linear': {
316
- 'extends': 'default',
317
- },
318
- 'inverse': {
319
- 'extends': 'default',
320
- },
321
- },
322
- },
323
- 'exceptions': {
324
- 'broad': {
325
- 'FIELD_VALIDATION_ERROR Cancel is available only for LIMIT order': InvalidOrder,
326
- 'API key does not exist': AuthenticationError,
327
- 'Order would trigger immediately.': InvalidOrder,
328
- 'Account has insufficient balance for requested action.': InsufficientFunds,
329
- 'Rest API trading is not enabled.': ExchangeNotAvailable,
330
- 'Combination of parameters invalid': BadRequest,
331
- 'Invalid limit price': BadRequest,
332
- 'Only leverage symbol allowed here:': BadSymbol,
333
- 'market data service is not available': ExchangeNotAvailable,
334
- 'your time is ahead of server': InvalidNonce,
335
- 'Can not find account': BadRequest,
336
- 'You mentioned an invalid value for the price parameter': BadRequest, // -1030
337
- },
338
- 'exact': {
339
- '-1000': ExchangeNotAvailable,
340
- '-1013': InvalidOrder,
341
- // '-1021': InvalidNonce, // {"code":"-1021","msg":"your time is ahead of server"} // see above in the broad section
342
- '-1022': AuthenticationError,
343
- '-1030': InvalidOrder,
344
- '-1100': InvalidOrder,
345
- '-1104': ExchangeError,
346
- '-1025': AuthenticationError,
347
- '-1128': BadRequest,
348
- '-2010': ExchangeError,
349
- '-2011': OrderNotFound,
350
- '-2013': OrderNotFound,
351
- '-2014': AuthenticationError,
352
- '-2015': AuthenticationError, // "Invalid API-key, IP, or permissions for action."
353
- },
354
- },
355
- 'commonCurrencies': {
356
- 'ACN': 'Accenture',
357
- 'AMC': 'AMC Entertainment Holdings',
358
- 'BNS': 'Bank of Nova Scotia',
359
- 'CAR': 'Avis Budget Group Inc',
360
- 'CLR': 'Continental Resources',
361
- 'EDU': 'New Oriental Education & Technology Group Inc',
362
- 'ETN': 'Eaton',
363
- 'FOX': 'Fox Corporation',
364
- 'GM': 'General Motors Co',
365
- 'IQ': 'iQIYI',
366
- 'OSK': 'Oshkosh',
367
- 'PLAY': "Dave & Buster's Entertainment",
368
- },
369
- });
370
- }
371
- nonce() {
372
- return this.milliseconds() - this.options['timeDifference'];
373
- }
374
- /**
375
- * @method
376
- * @name currencycom#fetchTime
377
- * @description fetches the current integer timestamp in milliseconds from the exchange server
378
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/timeUsingGET
379
- * @param {object} [params] extra parameters specific to the exchange API endpoint
380
- * @returns {int} the current integer timestamp in milliseconds from the exchange server
381
- */
382
- async fetchTime(params = {}) {
383
- const response = await this.publicGetV2Time(params);
384
- //
385
- // {
386
- // "serverTime": 1590998366609
387
- // }
388
- //
389
- return this.safeInteger(response, 'serverTime');
390
- }
391
- /**
392
- * @method
393
- * @name currencycom#fetchCurrencies
394
- * @description fetches all available currencies on an exchange
395
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getCurrenciesUsingGET
396
- * @param {object} [params] extra parameters specific to the exchange API endpoint
397
- * @returns {object} an associative dictionary of currencies
398
- */
399
- async fetchCurrencies(params = {}) {
400
- // requires authentication
401
- if (!this.checkRequiredCredentials(false)) {
402
- return undefined;
403
- }
404
- const response = await this.privateGetV2Currencies(params);
405
- //
406
- // [
407
- // {
408
- // "name": "Euro",
409
- // "displaySymbol": "EUR.cx",
410
- // "precision": "2",
411
- // "type": "FIAT",
412
- // "minWithdrawal": "90.0",
413
- // "maxWithdrawal": "1.0E+8",
414
- // "commissionMin": "0.02", // some instruments do not have this property
415
- // "commissionPercent": "1.5", // some instruments do not have this property
416
- // "minDeposit": "90.0",
417
- // },
418
- // {
419
- // "name": "Bitcoin",
420
- // "displaySymbol": "BTC",
421
- // "precision": "8",
422
- // "type": "CRYPTO", // only a few major currencies have this value, others like USDT have a value of "TOKEN"
423
- // "minWithdrawal": "0.00020",
424
- // "commissionFixed": "0.00010",
425
- // "minDeposit": "0.00010",
426
- // },
427
- // ]
428
- //
429
- const result = {};
430
- for (let i = 0; i < response.length; i++) {
431
- const currency = response[i];
432
- const id = this.safeString(currency, 'displaySymbol');
433
- const code = this.safeCurrencyCode(id);
434
- const fee = this.safeNumber(currency, 'commissionFixed');
435
- result[code] = {
436
- 'id': id,
437
- 'code': code,
438
- 'type': this.safeStringLower(currency, 'type'),
439
- 'name': this.safeString(currency, 'name'),
440
- 'active': undefined,
441
- 'deposit': undefined,
442
- 'withdraw': undefined,
443
- 'fee': fee,
444
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(currency, 'precision'))),
445
- 'limits': {
446
- 'amount': {
447
- 'min': undefined,
448
- 'max': undefined,
449
- },
450
- 'withdraw': {
451
- 'min': this.safeNumber(currency, 'minWithdrawal'),
452
- 'max': this.safeNumber(currency, 'maxWithdrawal'),
453
- },
454
- 'deposit': {
455
- 'min': this.safeNumber(currency, 'minDeposit'),
456
- 'max': undefined,
457
- },
458
- },
459
- 'info': currency,
460
- };
461
- }
462
- return result;
463
- }
464
- /**
465
- * @method
466
- * @name currencycom#fetchMarkets
467
- * @description retrieves data on all markets for currencycom
468
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/exchangeInfoUsingGET
469
- * @param {object} [params] extra parameters specific to the exchange API endpoint
470
- * @returns {object[]} an array of objects representing market data
471
- */
472
- async fetchMarkets(params = {}) {
473
- const response = await this.publicGetV2ExchangeInfo(params);
474
- //
475
- // {
476
- // "timezone": "UTC",
477
- // "serverTime": "1645186287261",
478
- // "rateLimits": [
479
- // { rateLimitType: "REQUEST_WEIGHT", interval: "MINUTE", intervalNum: "1", limit: "1200" },
480
- // { rateLimitType: "ORDERS", interval: "SECOND", intervalNum: "1", limit: "10" },
481
- // { rateLimitType: "ORDERS", interval: "DAY", intervalNum: "1", limit: "864000" },
482
- // ],
483
- // "exchangeFilters": [],
484
- // "symbols": [
485
- // {
486
- // "symbol": "BTC/USDT", // BTC/USDT, BTC/USDT_LEVERAGE
487
- // "name": "Bitcoin / Tether",
488
- // "status": "TRADING", // TRADING, BREAK, HALT
489
- // "baseAsset": "BTC",
490
- // "baseAssetPrecision": "4",
491
- // "quoteAsset": "USDT",
492
- // "quoteAssetId": "USDT", // USDT, USDT_LEVERAGE
493
- // "quotePrecision": "4",
494
- // "orderTypes": [ "LIMIT", "MARKET" ], // LIMIT, MARKET, STOP
495
- // "filters": [
496
- // { filterType: "LOT_SIZE", minQty: "0.0001", maxQty: "100", stepSize: "0.0001", },
497
- // { filterType: "MIN_NOTIONAL", minNotional: "5", },
498
- // ],
499
- // "marketModes": [ "REGULAR" ], // CLOSE_ONLY, LONG_ONLY, REGULAR
500
- // "marketType": "SPOT", // SPOT, LEVERAGE
501
- // "longRate": -0.0684932, // LEVERAGE only
502
- // "shortRate": -0.0684932, // LEVERAGE only
503
- // "swapChargeInterval": 1440, // LEVERAGE only
504
- // "country": "",
505
- // "sector": "",
506
- // "industry": "",
507
- // "tradingHours": "UTC; Mon - 22:00, 22:05 -; Tue - 22:00, 22:05 -; Wed - 22:00, 22:05 -; Thu - 22:00, 22:05 -; Fri - 22:00, 23:01 -; Sat - 22:00, 22:05 -; Sun - 21:00, 22:05 -",
508
- // "tickSize": "0.01",
509
- // "tickValue": "403.4405", // not available in BTC/USDT_LEVERAGE, but available in BTC/USD_LEVERAGE
510
- // "exchangeFee": "0.2", // SPOT only
511
- // "tradingFee": 0.075, // LEVERAGE only
512
- // "makerFee": -0.025, // LEVERAGE only
513
- // "takerFee": 0.06, // LEVERAGE only
514
- // "maxSLGap": 50, // LEVERAGE only
515
- // "minSLGap": 1, // LEVERAGE only
516
- // "maxTPGap": 50, // LEVERAGE only
517
- // "minTPGap": 0.5, // LEVERAGE only
518
- // "assetType": "CRYPTOCURRENCY",
519
- // },
520
- // ]
521
- // }
522
- //
523
- if (this.options['adjustForTimeDifference']) {
524
- await this.loadTimeDifference();
525
- }
526
- const markets = this.safeValue(response, 'symbols', []);
527
- const result = [];
528
- for (let i = 0; i < markets.length; i++) {
529
- const market = markets[i];
530
- const id = this.safeString(market, 'symbol');
531
- const baseId = this.safeString(market, 'baseAsset');
532
- const quoteId = this.safeString(market, 'quoteAsset');
533
- const base = this.safeCurrencyCode(baseId);
534
- const quote = this.safeCurrencyCode(quoteId);
535
- let symbol = base + '/' + quote;
536
- const typeRaw = this.safeString(market, 'marketType');
537
- const spot = (typeRaw === 'SPOT');
538
- const futures = false;
539
- const swap = (typeRaw === 'LEVERAGE');
540
- const type = swap ? 'swap' : 'spot';
541
- const margin = undefined;
542
- if (swap) {
543
- symbol = symbol.replace(this.options['leverage_markets_suffix'], '');
544
- symbol += ':' + quote;
545
- }
546
- const active = this.safeString(market, 'status') === 'TRADING';
547
- // to set taker & maker fees, we use one from the below data - pairs either have 'exchangeFee' or 'tradingFee', if none of them (rare cases), then they should have 'takerFee & makerFee'
548
- const exchangeFee = this.safeString2(market, 'exchangeFee', 'tradingFee');
549
- let makerFee = this.safeString(market, 'makerFee', exchangeFee);
550
- let takerFee = this.safeString(market, 'takerFee', exchangeFee);
551
- makerFee = Precise.stringDiv(makerFee, '100');
552
- takerFee = Precise.stringDiv(takerFee, '100');
553
- const filters = this.safeValue(market, 'filters', []);
554
- const filtersByType = this.indexBy(filters, 'filterType');
555
- let limitPriceMin = undefined;
556
- let limitPriceMax = undefined;
557
- let precisionPrice = this.safeNumber(market, 'tickSize');
558
- if ('PRICE_FILTER' in filtersByType) {
559
- const filter = this.safeValue(filtersByType, 'PRICE_FILTER', {});
560
- precisionPrice = this.safeNumber(filter, 'tickSize');
561
- // PRICE_FILTER reports zero values for maxPrice
562
- // since they updated filter types in November 2018
563
- // https://github.com/ccxt/ccxt/issues/4286
564
- // therefore limits['price']['max'] doesn't have any meaningful value except undefined
565
- limitPriceMin = this.safeNumber(filter, 'minPrice');
566
- const maxPrice = this.safeString(filter, 'maxPrice');
567
- if ((maxPrice !== undefined) && (Precise.stringGt(maxPrice, '0'))) {
568
- limitPriceMax = maxPrice;
569
- }
570
- }
571
- let precisionAmount = this.parseNumber(this.parsePrecision(this.safeString(market, 'baseAssetPrecision')));
572
- let limitAmount = {
573
- 'min': undefined,
574
- 'max': undefined,
575
- };
576
- if ('LOT_SIZE' in filtersByType) {
577
- const filter = this.safeValue(filtersByType, 'LOT_SIZE', {});
578
- precisionAmount = this.safeNumber(filter, 'stepSize');
579
- limitAmount = {
580
- 'min': this.safeNumber(filter, 'minQty'),
581
- 'max': this.safeNumber(filter, 'maxQty'),
582
- };
583
- }
584
- let limitMarket = {
585
- 'min': undefined,
586
- 'max': undefined,
587
- };
588
- if ('MARKET_LOT_SIZE' in filtersByType) {
589
- const filter = this.safeValue(filtersByType, 'MARKET_LOT_SIZE', {});
590
- limitMarket = {
591
- 'min': this.safeNumber(filter, 'minQty'),
592
- 'max': this.safeNumber(filter, 'maxQty'),
593
- };
594
- }
595
- let costMin = undefined;
596
- if ('MIN_NOTIONAL' in filtersByType) {
597
- const filter = this.safeValue(filtersByType, 'MIN_NOTIONAL', {});
598
- costMin = this.safeNumber(filter, 'minNotional');
599
- }
600
- const isContract = swap || futures;
601
- result.push({
602
- 'id': id,
603
- 'symbol': symbol,
604
- 'base': base,
605
- 'quote': quote,
606
- 'settle': undefined,
607
- 'baseId': baseId,
608
- 'quoteId': quoteId,
609
- 'settleId': undefined,
610
- 'type': type,
611
- 'spot': spot,
612
- 'margin': margin,
613
- 'swap': swap,
614
- 'future': futures,
615
- 'option': false,
616
- 'active': active,
617
- 'contract': isContract,
618
- 'linear': isContract ? true : undefined,
619
- 'inverse': undefined,
620
- 'taker': this.parseNumber(takerFee),
621
- 'maker': this.parseNumber(makerFee),
622
- 'contractSize': undefined,
623
- 'expiry': undefined,
624
- 'expiryDatetime': undefined,
625
- 'strike': undefined,
626
- 'optionType': undefined,
627
- 'precision': {
628
- 'amount': precisionAmount,
629
- 'price': precisionPrice,
630
- },
631
- 'limits': {
632
- 'leverage': {
633
- 'min': undefined,
634
- 'max': undefined,
635
- },
636
- 'amount': limitAmount,
637
- 'market': limitMarket,
638
- 'price': {
639
- 'min': limitPriceMin,
640
- 'max': this.parseNumber(limitPriceMax),
641
- },
642
- 'cost': {
643
- 'min': costMin,
644
- 'max': undefined,
645
- },
646
- },
647
- 'created': undefined,
648
- 'info': market,
649
- });
650
- }
651
- return result;
652
- }
653
- /**
654
- * @method
655
- * @name currencycom#fetchAccounts
656
- * @description fetch all the accounts associated with a profile
657
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
658
- * @param {object} [params] extra parameters specific to the exchange API endpoint
659
- * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
660
- */
661
- async fetchAccounts(params = {}) {
662
- const response = await this.privateGetV2Account(params);
663
- //
664
- // {
665
- // "makerCommission": "0.20",
666
- // "takerCommission": "0.20",
667
- // "buyerCommission": "0.20",
668
- // "sellerCommission": "0.20",
669
- // "canTrade": true,
670
- // "canWithdraw": true,
671
- // "canDeposit": true,
672
- // "updateTime": "1645266330",
673
- // "userId": "644722",
674
- // "balances": [
675
- // {
676
- // "accountId": "120702016179403605",
677
- // "collateralCurrency": false,
678
- // "asset": "CAKE",
679
- // "free": "3.1",
680
- // "locked": "0.0",
681
- // "default": false,
682
- // },
683
- // {
684
- // "accountId": "109698017713125316",
685
- // "collateralCurrency": true,
686
- // "asset": "USD",
687
- // "free": "17.58632",
688
- // "locked": "0.0",
689
- // "default": true,
690
- // }
691
- // ]
692
- // }
693
- //
694
- const accounts = this.safeValue(response, 'balances', []);
695
- const result = [];
696
- for (let i = 0; i < accounts.length; i++) {
697
- const account = accounts[i];
698
- const accountId = this.safeString(account, 'accountId'); // must be string, because the numeric value is far too big for integer, and causes bugs
699
- const currencyId = this.safeString(account, 'asset');
700
- const currencyCode = this.safeCurrencyCode(currencyId);
701
- result.push({
702
- 'id': accountId,
703
- 'type': undefined,
704
- 'currency': currencyCode,
705
- 'info': account,
706
- });
707
- }
708
- return result;
709
- }
710
- /**
711
- * @method
712
- * @name currencycom#fetchTradingFees
713
- * @description fetch the trading fees for multiple markets
714
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
715
- * @param {object} [params] extra parameters specific to the exchange API endpoint
716
- * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
717
- */
718
- async fetchTradingFees(params = {}) {
719
- await this.loadMarkets();
720
- const response = await this.privateGetV2Account(params);
721
- //
722
- // {
723
- // "makerCommission": "0.20",
724
- // "takerCommission": "0.20",
725
- // "buyerCommission": "0.20",
726
- // "sellerCommission": "0.20",
727
- // "canTrade": true,
728
- // "canWithdraw": true,
729
- // "canDeposit": true,
730
- // "updateTime": "1645738976",
731
- // "userId": "-1924114235",
732
- // "balances": []
733
- // }
734
- //
735
- const makerFee = this.safeNumber(response, 'makerCommission');
736
- const takerFee = this.safeNumber(response, 'takerCommission');
737
- const result = {};
738
- for (let i = 0; i < this.symbols.length; i++) {
739
- const symbol = this.symbols[i];
740
- result[symbol] = {
741
- 'info': response,
742
- 'symbol': symbol,
743
- 'maker': makerFee,
744
- 'taker': takerFee,
745
- 'percentage': true,
746
- 'tierBased': false,
747
- };
748
- }
749
- return result;
750
- }
751
- parseBalance(response, type = undefined) {
752
- //
753
- // {
754
- // "makerCommission":0.20,
755
- // "takerCommission":0.20,
756
- // "buyerCommission":0.20,
757
- // "sellerCommission":0.20,
758
- // "canTrade":true,
759
- // "canWithdraw":true,
760
- // "canDeposit":true,
761
- // "updateTime":1591056268,
762
- // "balances":[
763
- // {
764
- // "accountId":5470306579272368,
765
- // "collateralCurrency":true,
766
- // "asset":"ETH",
767
- // "free":0.0,
768
- // "locked":0.0,
769
- // "default":false,
770
- // },
771
- // ]
772
- // }
773
- //
774
- const result = { 'info': response };
775
- const balances = this.safeValue(response, 'balances', []);
776
- for (let i = 0; i < balances.length; i++) {
777
- const balance = balances[i];
778
- const currencyId = this.safeString(balance, 'asset');
779
- const code = this.safeCurrencyCode(currencyId);
780
- const account = this.account();
781
- account['free'] = this.safeString(balance, 'free');
782
- account['used'] = this.safeString(balance, 'locked');
783
- result[code] = account;
784
- }
785
- return this.safeBalance(result);
786
- }
787
- /**
788
- * @method
789
- * @name currencycom#fetchBalance
790
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
791
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/accountUsingGET
792
- * @param {object} [params] extra parameters specific to the exchange API endpoint
793
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
794
- */
795
- async fetchBalance(params = {}) {
796
- await this.loadMarkets();
797
- const response = await this.privateGetV2Account(params);
798
- //
799
- // {
800
- // "makerCommission": "0.20",
801
- // "takerCommission": "0.20",
802
- // "buyerCommission": "0.20",
803
- // "sellerCommission": "0.20",
804
- // "canTrade": true,
805
- // "canWithdraw": true,
806
- // "canDeposit": true,
807
- // "updateTime": "1645266330",
808
- // "userId": "644722",
809
- // "balances": [
810
- // {
811
- // "accountId": "120702016179403605",
812
- // "collateralCurrency": false,
813
- // "asset": "CAKE",
814
- // "free": "1.784",
815
- // "locked": "0.0",
816
- // "default": false,
817
- // },
818
- // {
819
- // "accountId": "109698017413175316",
820
- // "collateralCurrency": true,
821
- // "asset": "USD",
822
- // "free": "7.58632",
823
- // "locked": "0.0",
824
- // "default": true,
825
- // }
826
- // ]
827
- // }
828
- //
829
- return this.parseBalance(response);
830
- }
831
- /**
832
- * @method
833
- * @name currencycom#fetchOrderBook
834
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
835
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/depthUsingGET
836
- * @param {string} symbol unified symbol of the market to fetch the order book for
837
- * @param {int} [limit] the maximum amount of order book entries to return
838
- * @param {object} [params] extra parameters specific to the exchange API endpoint
839
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
840
- */
841
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
842
- await this.loadMarkets();
843
- const market = this.market(symbol);
844
- const request = {
845
- 'symbol': market['id'],
846
- };
847
- if (limit !== undefined) {
848
- request['limit'] = limit; // default 100, max 1000, valid limits 5, 10, 20, 50, 100, 500, 1000, 5000
849
- }
850
- const response = await this.publicGetV2Depth(this.extend(request, params));
851
- //
852
- // {
853
- // "lastUpdateId":1590999849037,
854
- // "asks":[
855
- // [0.02495,60.0345],
856
- // [0.02496,34.1],
857
- // ...
858
- // ],
859
- // "bids":[
860
- // [0.02487,72.4144854],
861
- // [0.02486,24.043],
862
- // ...
863
- // ]
864
- // }
865
- //
866
- const orderbook = this.parseOrderBook(response, symbol);
867
- orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
868
- return orderbook;
869
- }
870
- parseTicker(ticker, market = undefined) {
871
- //
872
- // fetchTicker
873
- //
874
- // {
875
- // "symbol":"ETH/BTC",
876
- // "priceChange":"0.00030",
877
- // "priceChangePercent":"1.21",
878
- // "weightedAvgPrice":"0.02481",
879
- // "prevClosePrice":"0.02447",
880
- // "lastPrice":"0.02477",
881
- // "lastQty":"60.0",
882
- // "bidPrice":"0.02477",
883
- // "askPrice":"0.02484",
884
- // "openPrice":"0.02447",
885
- // "highPrice":"0.02524",
886
- // "lowPrice":"0.02438",
887
- // "volume":"11.97",
888
- // "quoteVolume":"0.298053",
889
- // "openTime":1590969600000,
890
- // "closeTime":1591000072693
891
- // }
892
- //
893
- // fetchTickers
894
- //
895
- // {
896
- // "symbol": "SHIB/USD_LEVERAGE",
897
- // "weightedAvgPrice": "0.000027595",
898
- // "lastPrice": "0.00002737",
899
- // "lastQty": "1.11111111E8",
900
- // "bidPrice": "0.00002737",
901
- // "askPrice": "0.00002782",
902
- // "highPrice": "0.00002896",
903
- // "lowPrice": "0.00002738",
904
- // "volume": "16472160000",
905
- // "quoteVolume": "454796.3376",
906
- // "openTime": "1645187472000",
907
- // "closeTime": "1645273872000",
908
- // }
909
- //
910
- // ws:marketData.subscribe
911
- //
912
- // {
913
- // "symbolName":"TXN",
914
- // "bid":139.85,
915
- // "bidQty":2500,
916
- // "ofr":139.92000000000002,
917
- // "ofrQty":2500,
918
- // "timestamp":1597850971558
919
- // }
920
- //
921
- const timestamp = this.safeInteger2(ticker, 'closeTime', 'timestamp');
922
- const marketId = this.safeString2(ticker, 'symbol', 'symbolName');
923
- market = this.safeMarket(marketId, market, '/');
924
- const last = this.safeString(ticker, 'lastPrice');
925
- return this.safeTicker({
926
- 'symbol': market['symbol'],
927
- 'timestamp': timestamp,
928
- 'datetime': this.iso8601(timestamp),
929
- 'high': this.safeString(ticker, 'highPrice'),
930
- 'low': this.safeString(ticker, 'lowPrice'),
931
- 'bid': this.safeString2(ticker, 'bidPrice', 'bid'),
932
- 'bidVolume': this.safeString(ticker, 'bidQty'),
933
- 'ask': this.safeString2(ticker, 'askPrice', 'ofr'),
934
- 'askVolume': this.safeString(ticker, 'ofrQty'),
935
- 'vwap': this.safeString(ticker, 'weightedAvgPrice'),
936
- 'open': this.safeString(ticker, 'openPrice'),
937
- 'close': last,
938
- 'last': last,
939
- 'previousClose': this.safeString(ticker, 'prevClosePrice'),
940
- 'change': this.safeString(ticker, 'priceChange'),
941
- 'percentage': this.safeString(ticker, 'priceChangePercent'),
942
- 'average': undefined,
943
- 'baseVolume': this.safeString(ticker, 'volume'),
944
- 'quoteVolume': this.safeString(ticker, 'quoteVolume'),
945
- 'info': ticker,
946
- }, market);
947
- }
948
- /**
949
- * @method
950
- * @name currencycom#fetchTicker
951
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
952
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/ticker_24hrUsingGET
953
- * @param {string} symbol unified symbol of the market to fetch the ticker for
954
- * @param {object} [params] extra parameters specific to the exchange API endpoint
955
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
956
- */
957
- async fetchTicker(symbol, params = {}) {
958
- await this.loadMarkets();
959
- const market = this.market(symbol);
960
- const request = {
961
- 'symbol': market['id'],
962
- };
963
- const response = await this.publicGetV2Ticker24hr(this.extend(request, params));
964
- //
965
- // {
966
- // "symbol":"ETH/BTC",
967
- // "priceChange":"0.00030",
968
- // "priceChangePercent":"1.21",
969
- // "weightedAvgPrice":"0.02481",
970
- // "prevClosePrice":"0.02447",
971
- // "lastPrice":"0.02477",
972
- // "lastQty":"60.0",
973
- // "bidPrice":"0.02477",
974
- // "askPrice":"0.02484",
975
- // "openPrice":"0.02447",
976
- // "highPrice":"0.02524",
977
- // "lowPrice":"0.02438",
978
- // "volume":"11.97",
979
- // "quoteVolume":"0.298053",
980
- // "openTime":1590969600000,
981
- // "closeTime":1591000072693
982
- // }
983
- //
984
- return this.parseTicker(response, market);
985
- }
986
- /**
987
- * @method
988
- * @name currencycom#fetchTickers
989
- * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
990
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/ticker_24hrUsingGET
991
- * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
992
- * @param {object} [params] extra parameters specific to the exchange API endpoint
993
- * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
994
- */
995
- async fetchTickers(symbols = undefined, params = {}) {
996
- await this.loadMarkets();
997
- const response = await this.publicGetV2Ticker24hr(params);
998
- //
999
- // [
1000
- // {
1001
- // "symbol": "SHIB/USD_LEVERAGE",
1002
- // "weightedAvgPrice": "0.000027595",
1003
- // "lastPrice": "0.00002737",
1004
- // "lastQty": "1.11111111E8",
1005
- // "bidPrice": "0.00002737",
1006
- // "askPrice": "0.00002782",
1007
- // "highPrice": "0.00002896",
1008
- // "lowPrice": "0.00002738",
1009
- // "volume": "16472160000",
1010
- // "quoteVolume": "454796.3376",
1011
- // "openTime": "1645187472000",
1012
- // "closeTime": "1645273872000",
1013
- // }
1014
- // ]
1015
- //
1016
- return this.parseTickers(response, symbols);
1017
- }
1018
- parseOHLCV(ohlcv, market = undefined) {
1019
- //
1020
- // [
1021
- // 1590971040000,
1022
- // "0.02454",
1023
- // "0.02456",
1024
- // "0.02452",
1025
- // "0.02456",
1026
- // 249
1027
- // ]
1028
- //
1029
- return [
1030
- this.safeInteger(ohlcv, 0),
1031
- this.safeNumber(ohlcv, 1),
1032
- this.safeNumber(ohlcv, 2),
1033
- this.safeNumber(ohlcv, 3),
1034
- this.safeNumber(ohlcv, 4),
1035
- this.safeNumber(ohlcv, 5),
1036
- ];
1037
- }
1038
- /**
1039
- * @method
1040
- * @name currencycom#fetchOHLCV
1041
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1042
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/klinesUsingGET
1043
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1044
- * @param {string} timeframe the length of time each candle represents
1045
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
1046
- * @param {int} [limit] the maximum amount of candles to fetch
1047
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1048
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1049
- */
1050
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1051
- await this.loadMarkets();
1052
- const market = this.market(symbol);
1053
- const request = {
1054
- 'symbol': market['id'],
1055
- 'interval': this.safeString(this.timeframes, timeframe, timeframe),
1056
- };
1057
- if (since !== undefined) {
1058
- request['startTime'] = since;
1059
- }
1060
- if (limit !== undefined) {
1061
- request['limit'] = Math.min(limit, 1000); // default 500, max 1000
1062
- }
1063
- const response = await this.publicGetV2Klines(this.extend(request, params));
1064
- //
1065
- // [
1066
- // [1590971040000,"0.02454","0.02456","0.02452","0.02456",249],
1067
- // [1590971100000,"0.02455","0.02457","0.02452","0.02456",300],
1068
- // [1590971160000,"0.02455","0.02456","0.02453","0.02454",286],
1069
- // ]
1070
- //
1071
- return this.parseOHLCVs(response, market, timeframe, since, limit);
1072
- }
1073
- parseTrade(trade, market = undefined) {
1074
- //
1075
- // fetchTrades (public aggregate trades)
1076
- //
1077
- // {
1078
- // "a":"1658318071", // Aggregate tradeId
1079
- // "p":"0.02476", // Price
1080
- // "q":"0.0", // Official doc says: "Quantity (should be ignored)"
1081
- // "T":"1591001423382", // Epoch timestamp in MS
1082
- // "m":false // Was the buyer the maker
1083
- // }
1084
- //
1085
- // createOrder fills (private)
1086
- //
1087
- // {
1088
- // "price": "9807.05",
1089
- // "qty": "0.01",
1090
- // "commission": "0",
1091
- // "commissionAsset": "dUSD"
1092
- // }
1093
- //
1094
- // fetchMyTrades
1095
- //
1096
- // {
1097
- // "symbol": "DOGE/USD",
1098
- // "id": "116046000",
1099
- // "orderId": "00000000-0000-0000-0000-000006dbb8ad",
1100
- // "price": "0.14094",
1101
- // "qty": "40.0",
1102
- // "commission": "0.01",
1103
- // "commissionAsset": "USD",
1104
- // "time": "1645283022351",
1105
- // "buyer": false,
1106
- // "maker": false,
1107
- // "isBuyer": false,
1108
- // "isMaker": false
1109
- // }
1110
- //
1111
- const timestamp = this.safeInteger2(trade, 'T', 'time');
1112
- const priceString = this.safeString2(trade, 'p', 'price');
1113
- const amountString = this.safeString2(trade, 'q', 'qty');
1114
- const id = this.safeString2(trade, 'a', 'id');
1115
- let side = undefined;
1116
- const orderId = this.safeString(trade, 'orderId');
1117
- let takerOrMaker = undefined;
1118
- if ('m' in trade) {
1119
- side = trade['m'] ? 'sell' : 'buy'; // this is reversed intentionally [TODO: needs reason to be mentioned]
1120
- takerOrMaker = 'taker'; // in public trades, it's always taker
1121
- }
1122
- else if ('isBuyer' in trade) {
1123
- side = (trade['isBuyer']) ? 'buy' : 'sell'; // this is a true side
1124
- takerOrMaker = trade['isMaker'] ? 'maker' : 'taker';
1125
- }
1126
- let fee = undefined;
1127
- if ('commission' in trade) {
1128
- fee = {
1129
- 'cost': this.safeString(trade, 'commission'),
1130
- 'currency': this.safeCurrencyCode(this.safeString(trade, 'commissionAsset')),
1131
- };
1132
- }
1133
- const marketId = this.safeString(trade, 'symbol');
1134
- const symbol = this.safeSymbol(marketId, market);
1135
- return this.safeTrade({
1136
- 'id': id,
1137
- 'order': orderId,
1138
- 'timestamp': timestamp,
1139
- 'datetime': this.iso8601(timestamp),
1140
- 'symbol': symbol,
1141
- 'type': undefined,
1142
- 'takerOrMaker': takerOrMaker,
1143
- 'side': side,
1144
- 'price': priceString,
1145
- 'amount': amountString,
1146
- 'cost': undefined,
1147
- 'fee': fee,
1148
- 'info': trade,
1149
- }, market);
1150
- }
1151
- /**
1152
- * @method
1153
- * @name currencycom#fetchTrades
1154
- * @description get the list of most recent trades for a particular symbol
1155
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/aggTradesUsingGET
1156
- * @param {string} symbol unified symbol of the market to fetch trades for
1157
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
1158
- * @param {int} [limit] the maximum amount of trades to fetch
1159
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1160
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1161
- */
1162
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1163
- await this.loadMarkets();
1164
- const market = this.market(symbol);
1165
- const request = {
1166
- 'symbol': market['id'],
1167
- // 'limit': 500, // default 500, max 1000
1168
- };
1169
- if (limit !== undefined) {
1170
- request['limit'] = Math.min(limit, 1000); // default 500, max 1000
1171
- }
1172
- if (since !== undefined) {
1173
- request['startTime'] = since;
1174
- }
1175
- const response = await this.publicGetV2AggTrades(this.extend(request, params));
1176
- //
1177
- // [
1178
- // {
1179
- // "a":"1658318071", // Aggregate tradeId
1180
- // "p":"0.02476", // Price
1181
- // "q":"0.0", // Official doc says: "Quantity (should be ignored)"
1182
- // "T":"1591001423382", // Epoch timestamp in MS
1183
- // "m":false // Was the buyer the maker
1184
- // },
1185
- // ]
1186
- //
1187
- return this.parseTrades(response, market, since, limit);
1188
- }
1189
- parseOrder(order, market = undefined) {
1190
- //
1191
- // createOrder
1192
- //
1193
- // limit
1194
- //
1195
- // {
1196
- // "symbol": "BTC/USD",
1197
- // "orderId": "00000000-0000-0000-0000-000006eacaa0",
1198
- // "transactTime": "1645281669295",
1199
- // "price": "30000.00000000",
1200
- // "origQty": "0.0002", // might not be present for "market" order
1201
- // "executedQty": "0.0", // positive for BUY, negative for SELL. This property might not be present in Leverage markets
1202
- // "margin": 0.1, // present in leverage markets
1203
- // "status": "NEW", // NEW, FILLED, ...
1204
- // "timeInForce": "GTC",
1205
- // "type": "LIMIT", // LIMIT, MARKET
1206
- // "side": "BUY",
1207
- // "fills": [ // this field might not be present if there were no fills
1208
- // {
1209
- // "price": "0.14094",
1210
- // "qty": "40.0",
1211
- // "commission": "0",
1212
- // "commissionAsset": "dUSD",
1213
- // },
1214
- // ],
1215
- // }
1216
- //
1217
- // fetchOrder (fetchOpenOrders is an array same structure, with some extra fields)
1218
- //
1219
- // {
1220
- // "symbol": "BTC/USD_LEVERAGE",
1221
- // "accountId": "123456789012345678",
1222
- // "orderId": "00a01234-0123-54c4-0000-123451234567",
1223
- // "price": "25779.35",
1224
- // "status": "MODIFIED",
1225
- // "type": "LIMIT",
1226
- // "timeInForceType": "GTC",
1227
- // "side": "BUY",
1228
- // "guaranteedStopLoss": false,
1229
- // "trailingStopLoss": false,
1230
- // "margin": "0.05",
1231
- // "takeProfit": "27020.00",
1232
- // "stopLoss": "24500.35",
1233
- // "fills": [], // might not be present
1234
- // "timestamp": "1685958369623", // "time" in "fetchOpenOrders"
1235
- // "expireTime": "1686167960000", // "expireTimestamp" in "fetchOpenOrders"
1236
- // "quantity": "0.00040", // "origQty" in "fetchOpenOrders"
1237
- // "executedQty": "0.0", // present in "fetchOpenOrders"
1238
- // "updateTime": "1685958369542", // present in "fetchOpenOrders"
1239
- // "leverage": true, // present in "fetchOpenOrders"
1240
- // "working": true // present in "fetchOpenOrders"
1241
- // }
1242
- //
1243
- // cancelOrder
1244
- //
1245
- // {
1246
- // "symbol": "DOGE/USD",
1247
- // "orderId": "00000000-0000-0003-0000-000006db714c",
1248
- // "price": "0.13",
1249
- // "origQty": "30.0",
1250
- // "executedQty": "0.0",
1251
- // "status": "CANCELED",
1252
- // "timeInForce": "GTC",
1253
- // "type": "LIMIT",
1254
- // "side": "BUY",
1255
- // }
1256
- //
1257
- const marketId = this.safeString(order, 'symbol');
1258
- const symbol = this.safeSymbol(marketId, market, '/');
1259
- const id = this.safeString(order, 'orderId');
1260
- const price = this.safeString(order, 'price');
1261
- const amount = this.safeString2(order, 'origQty', 'quantity');
1262
- const filledRaw = this.safeString(order, 'executedQty');
1263
- const filled = Precise.stringAbs(filledRaw);
1264
- const status = this.parseOrderStatus(this.safeString(order, 'status'));
1265
- const timeInForce = this.parseOrderTimeInForce(this.safeString2(order, 'timeInForce', 'timeInForceType'));
1266
- const type = this.parseOrderType(this.safeString(order, 'type'));
1267
- const side = this.parseOrderSide(this.safeString(order, 'side'));
1268
- const timestamp = this.safeIntegerN(order, ['time', 'transactTime', 'timestamp']);
1269
- const fills = this.safeValue(order, 'fills');
1270
- return this.safeOrder({
1271
- 'info': order,
1272
- 'id': id,
1273
- 'timestamp': timestamp,
1274
- 'datetime': this.iso8601(timestamp),
1275
- 'lastTradeTimestamp': undefined,
1276
- 'symbol': symbol,
1277
- 'type': type,
1278
- 'timeInForce': timeInForce,
1279
- 'side': side,
1280
- 'price': price,
1281
- 'triggerPrice': undefined,
1282
- 'amount': amount,
1283
- 'cost': undefined,
1284
- 'average': undefined,
1285
- 'filled': filled,
1286
- 'remaining': undefined,
1287
- 'status': status,
1288
- 'fee': undefined,
1289
- 'trades': fills,
1290
- }, market);
1291
- }
1292
- parseOrderStatus(status) {
1293
- const statuses = {
1294
- 'NEW': 'open',
1295
- 'CREATED': 'open',
1296
- 'MODIFIED': 'open',
1297
- 'PARTIALLY_FILLED': 'open',
1298
- 'FILLED': 'closed',
1299
- 'CANCELED': 'canceled',
1300
- 'PENDING_CANCEL': 'canceling',
1301
- 'REJECTED': 'rejected',
1302
- 'EXPIRED': 'expired',
1303
- };
1304
- return this.safeString(statuses, status, status);
1305
- }
1306
- parseOrderType(status) {
1307
- const statuses = {
1308
- 'MARKET': 'market',
1309
- 'LIMIT': 'limit',
1310
- 'STOP': 'stop',
1311
- // temporarily we remove custom mappings
1312
- // 'LIMIT_MAKER': '',
1313
- // 'STOP_LOSS': 'stop-loss',
1314
- // 'STOP_LOSS_LIMIT': 'stop-limit',
1315
- // 'TAKE_PROFIT': 'take-profit',
1316
- // 'TAKE_PROFIT_LIMIT': 'take-profit',
1317
- };
1318
- return this.safeString(statuses, status, status);
1319
- }
1320
- parseOrderTimeInForce(status) {
1321
- const statuses = {
1322
- 'GTC': 'GTC',
1323
- 'FOK': 'FOK',
1324
- 'IOC': 'IOC',
1325
- };
1326
- return this.safeString(statuses, status, status);
1327
- }
1328
- parseOrderSide(status) {
1329
- const statuses = {
1330
- 'BUY': 'buy',
1331
- 'SELL': 'sell',
1332
- };
1333
- return this.safeString(statuses, status, status);
1334
- }
1335
- /**
1336
- * @method
1337
- * @name currencycom#createOrder
1338
- * @description create a trade order
1339
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/orderUsingPOST
1340
- * @param {string} symbol unified symbol of the market to create an order in
1341
- * @param {string} type 'market' or 'limit'
1342
- * @param {string} side 'buy' or 'sell'
1343
- * @param {float} amount how much of currency you want to trade in units of base currency
1344
- * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1345
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1346
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1347
- */
1348
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1349
- await this.loadMarkets();
1350
- const market = this.market(symbol);
1351
- let accountId = undefined;
1352
- if (market['margin']) {
1353
- accountId = this.safeString(this.options, 'accountId');
1354
- accountId = this.safeString(params, 'accountId', accountId);
1355
- if (accountId === undefined) {
1356
- throw new ArgumentsRequired(this.id + " createOrder() requires an accountId parameter or an exchange.options['accountId'] option for " + market['type'] + ' markets');
1357
- }
1358
- }
1359
- const newOrderRespType = this.safeValue(this.options['newOrderRespType'], type, 'RESULT');
1360
- const request = {
1361
- 'symbol': market['id'],
1362
- 'quantity': this.amountToPrecision(symbol, amount),
1363
- 'type': type.toUpperCase(),
1364
- 'side': side.toUpperCase(),
1365
- 'newOrderRespType': newOrderRespType, // 'RESULT' for full order or 'FULL' for order with fills
1366
- // 'leverage': 1,
1367
- // 'accountId': 5470306579272968, // required for leverage markets
1368
- // 'takeProfit': '123.45',
1369
- // 'stopLoss': '54.321',
1370
- // 'guaranteedStopLoss': '54.321',
1371
- };
1372
- if (type === 'limit') {
1373
- request['price'] = this.priceToPrecision(symbol, price);
1374
- request['timeInForce'] = this.options['defaultTimeInForce'];
1375
- }
1376
- else {
1377
- if (type === 'stop') {
1378
- request['type'] = 'STOP';
1379
- request['price'] = this.priceToPrecision(symbol, price);
1380
- }
1381
- else if (type === 'market') {
1382
- const triggerPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
1383
- params = this.omit(params, ['triggerPrice', 'stopPrice']);
1384
- if (triggerPrice !== undefined) {
1385
- request['type'] = 'STOP';
1386
- request['price'] = this.priceToPrecision(symbol, triggerPrice);
1387
- }
1388
- }
1389
- }
1390
- const response = await this.privatePostV2Order(this.extend(request, params));
1391
- //
1392
- // limit
1393
- //
1394
- // {
1395
- // "symbol": "BTC/USD",
1396
- // "orderId": "00000000-0000-0000-0000-000006eaaaa0",
1397
- // "transactTime": "1645281669295",
1398
- // "price": "30000.00000000",
1399
- // "origQty": "0.0002",
1400
- // "executedQty": "0.0", // positive for BUY, negative for SELL
1401
- // "status": "NEW",
1402
- // "timeInForce": "GTC",
1403
- // "type": "LIMIT",
1404
- // "side": "BUY",
1405
- // }
1406
- //
1407
- // market
1408
- //
1409
- // {
1410
- // "symbol": "DOGE/USD",
1411
- // "orderId": "00000000-0000-0000-0000-000006eab8ad",
1412
- // "transactTime": "1645283022252",
1413
- // "price": "0.14066000",
1414
- // "origQty": "40",
1415
- // "executedQty": "40.0", // positive for BUY, negative for SELL
1416
- // "status": "FILLED",
1417
- // "timeInForce": "FOK",
1418
- // "type": "MARKET",
1419
- // "side": "BUY",
1420
- // "fills": [
1421
- // {
1422
- // "price": "0.14094",
1423
- // "qty": "40.0",
1424
- // "commission": "0",
1425
- // "commissionAsset": "dUSD"
1426
- // }
1427
- // ]
1428
- // }
1429
- //
1430
- return this.parseOrder(response, market);
1431
- }
1432
- /**
1433
- * @method
1434
- * @name currencycom#fetchOrder
1435
- * @description fetches information on an order made by the user
1436
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getOrderUsingGET
1437
- * @param {string} id order id
1438
- * @param {string} symbol unified symbol of the market the order was made in
1439
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1440
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1441
- */
1442
- async fetchOrder(id, symbol = undefined, params = {}) {
1443
- if (symbol === undefined) {
1444
- throw new ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
1445
- }
1446
- await this.loadMarkets();
1447
- const market = this.market(symbol);
1448
- const request = {
1449
- 'orderId': id,
1450
- 'symbol': market['id'],
1451
- };
1452
- const response = await this.privateGetV2FetchOrder(this.extend(request, params));
1453
- //
1454
- // {
1455
- // "accountId": "109698017413125316",
1456
- // "orderId": "2810f1c5-0079-54c4-0000-000080421601",
1457
- // "quantity": "20.0",
1458
- // "price": "0.06",
1459
- // "timestamp": "1661157503788",
1460
- // "status": "CREATED",
1461
- // "type": "LIMIT",
1462
- // "timeInForceType": "GTC",
1463
- // "side": "BUY",
1464
- // "margin": "0.1",
1465
- // "fills": [ // might not be present
1466
- // {
1467
- // "price": "0.14094",
1468
- // "qty": "40.0",
1469
- // "commission": "0",
1470
- // "commissionAsset": "dUSD"
1471
- // }
1472
- // ]
1473
- // }
1474
- //
1475
- return this.parseOrder(response);
1476
- }
1477
- /**
1478
- * @method
1479
- * @name currencycom#fetchOpenOrders
1480
- * @description fetch all unfilled currently open orders
1481
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/openOrdersUsingGET
1482
- * @param {string} symbol unified market symbol
1483
- * @param {int} [since] the earliest time in ms to fetch open orders for
1484
- * @param {int} [limit] the maximum number of open orders structures to retrieve
1485
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1486
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1487
- */
1488
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1489
- await this.loadMarkets();
1490
- let market = undefined;
1491
- const request = {};
1492
- if (symbol !== undefined) {
1493
- market = this.market(symbol);
1494
- request['symbol'] = market['id'];
1495
- }
1496
- else if (this.options['warnOnFetchOpenOrdersWithoutSymbol']) {
1497
- const symbols = this.symbols;
1498
- const numSymbols = symbols.length;
1499
- const fetchOpenOrdersRateLimit = this.parseToInt(numSymbols / 2);
1500
- throw new ExchangeError(this.id + ' fetchOpenOrders() WARNING: fetching open orders without specifying a symbol is rate-limited to one call per ' + fetchOpenOrdersRateLimit.toString() + ' seconds. Do not call this method frequently to avoid ban. Set ' + this.id + '.options["warnOnFetchOpenOrdersWithoutSymbol"] = false to suppress this warning message.');
1501
- }
1502
- const response = await this.privateGetV2OpenOrders(this.extend(request, params));
1503
- //
1504
- // [
1505
- // {
1506
- // "symbol": "DOGE/USD",
1507
- // "orderId": "00000000-0000-0003-0000-000004bac57a",
1508
- // "price": "0.13",
1509
- // "origQty": "39.0",
1510
- // "executedQty": "0.0", // positive for BUY, negative for SELL
1511
- // "status": "NEW",
1512
- // "timeInForce": "GTC",
1513
- // "type": "LIMIT",
1514
- // "side": "BUY",
1515
- // "time": "1645284216240",
1516
- // "updateTime": "1645284216240",
1517
- // "leverage": false,
1518
- // "working": true
1519
- // },
1520
- // ]
1521
- //
1522
- return this.parseOrders(response, market, since, limit, params);
1523
- }
1524
- /**
1525
- * @method
1526
- * @name currencycom#cancelOrder
1527
- * @description cancels an open order
1528
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/cancelOrderUsingDELETE
1529
- * @param {string} id order id
1530
- * @param {string} symbol unified symbol of the market the order was made in
1531
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1532
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1533
- */
1534
- async cancelOrder(id, symbol = undefined, params = {}) {
1535
- if (symbol === undefined) {
1536
- throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
1537
- }
1538
- await this.loadMarkets();
1539
- const market = this.market(symbol);
1540
- const origClientOrderId = this.safeValue(params, 'origClientOrderId');
1541
- const request = {
1542
- 'symbol': market['id'],
1543
- // 'orderId': parseInt (id),
1544
- // 'origClientOrderId': id,
1545
- };
1546
- if (origClientOrderId === undefined) {
1547
- request['orderId'] = id;
1548
- }
1549
- else {
1550
- request['origClientOrderId'] = origClientOrderId;
1551
- }
1552
- const response = await this.privateDeleteV2Order(this.extend(request, params));
1553
- //
1554
- // {
1555
- // "symbol": "DOGE/USD",
1556
- // "orderId": "00000000-0000-0003-0000-000006db764c",
1557
- // "price": "0.13",
1558
- // "origQty": "30.0",
1559
- // "executedQty": "0.0", // positive for BUY, negative for SELL
1560
- // "status": "CANCELED",
1561
- // "timeInForce": "GTC",
1562
- // "type": "LIMIT",
1563
- // "side": "BUY",
1564
- // }
1565
- //
1566
- return this.parseOrder(response, market);
1567
- }
1568
- /**
1569
- * @method
1570
- * @name currencycom#fetchMyTrades
1571
- * @description fetch all trades made by the user
1572
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/myTradesUsingGET
1573
- * @param {string} symbol unified market symbol
1574
- * @param {int} [since] the earliest time in ms to fetch trades for
1575
- * @param {int} [limit] the maximum number of trades structures to retrieve
1576
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1577
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1578
- */
1579
- async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1580
- if (symbol === undefined) {
1581
- throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1582
- }
1583
- await this.loadMarkets();
1584
- const market = this.market(symbol);
1585
- const request = {
1586
- 'symbol': market['id'],
1587
- };
1588
- if (limit !== undefined) {
1589
- request['limit'] = limit;
1590
- }
1591
- const response = await this.privateGetV2MyTrades(this.extend(request, params));
1592
- //
1593
- // [
1594
- // {
1595
- // "symbol": "DOGE/USD",
1596
- // "id": "116046000",
1597
- // "orderId": "00000000-0000-0000-0000-000006dbb8ad",
1598
- // "price": "0.14094",
1599
- // "qty": "40.0",
1600
- // "commission": "0.01",
1601
- // "commissionAsset": "USD",
1602
- // "time": "1645283022351",
1603
- // "buyer": false,
1604
- // "maker": false,
1605
- // "isBuyer": false,
1606
- // "isMaker": false
1607
- // },
1608
- // ]
1609
- //
1610
- return this.parseTrades(response, market, since, limit);
1611
- }
1612
- /**
1613
- * @method
1614
- * @name currencycom#fetchDeposits
1615
- * @description fetch all deposits made to an account
1616
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getDepositsUsingGET
1617
- * @param {string} code unified currency code
1618
- * @param {int} [since] the earliest time in ms to fetch deposits for
1619
- * @param {int} [limit] the maximum number of deposits structures to retrieve
1620
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1621
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1622
- */
1623
- async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1624
- return await this.fetchTransactionsByMethod('privateGetV2Deposits', code, since, limit, params);
1625
- }
1626
- /**
1627
- * @method
1628
- * @name currencycom#fetchWithdrawals
1629
- * @description fetch all withdrawals made from an account
1630
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getWithdrawalsUsingGET
1631
- * @param {string} code unified currency code
1632
- * @param {int} [since] the earliest time in ms to fetch withdrawals for
1633
- * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1634
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1635
- * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1636
- */
1637
- async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1638
- return await this.fetchTransactionsByMethod('privateGetV2Withdrawals', code, since, limit, params);
1639
- }
1640
- /**
1641
- * @method
1642
- * @name currencycom#fetchDepositsWithdrawals
1643
- * @description fetch history of deposits and withdrawals
1644
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getTransactionsUsingGET
1645
- * @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
1646
- * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
1647
- * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
1648
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1649
- * @returns {object} a list of [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1650
- */
1651
- async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1652
- return await this.fetchTransactionsByMethod('privateGetV2Transactions', code, since, limit, params);
1653
- }
1654
- async fetchTransactionsByMethod(method, code = undefined, since = undefined, limit = undefined, params = {}) {
1655
- await this.loadMarkets();
1656
- const request = {};
1657
- let currency = undefined;
1658
- if (code !== undefined) {
1659
- currency = this.currency(code);
1660
- }
1661
- if (since !== undefined) {
1662
- request['startTime'] = since;
1663
- }
1664
- if (limit !== undefined) {
1665
- request['limit'] = limit;
1666
- }
1667
- let response = undefined;
1668
- if (method === 'privateGetV2Deposits') {
1669
- response = await this.privateGetV2Deposits(this.extend(request, params));
1670
- }
1671
- else if (method === 'privateGetV2Withdrawals') {
1672
- response = await this.privateGetV2Withdrawals(this.extend(request, params));
1673
- }
1674
- else if (method === 'privateGetV2Transactions') {
1675
- response = await this.privateGetV2Transactions(this.extend(request, params));
1676
- }
1677
- else {
1678
- throw new NotSupported(this.id + ' fetchTransactionsByMethod() not support this method');
1679
- }
1680
- //
1681
- // [
1682
- // {
1683
- // "id": "616769213",
1684
- // "balance": "2.088",
1685
- // "amount": "1.304", // negative for 'withdrawal'
1686
- // "currency": "CAKE",
1687
- // "type": "deposit",
1688
- // "timestamp": "1645282121023",
1689
- // "paymentMethod": "BLOCKCHAIN",
1690
- // "blockchainTransactionHash": "0x57c68c1f2ae74d5eda5a2a00516361d241a5c9e1ee95bf32573523857c38c112",
1691
- // "status": "PROCESSED",
1692
- // "commission": "0.14", // this property only exists in withdrawal
1693
- // },
1694
- // ]
1695
- //
1696
- return this.parseTransactions(response, currency, since, limit, params);
1697
- }
1698
- parseTransaction(transaction, currency = undefined) {
1699
- //
1700
- // {
1701
- // "id": "616769213",
1702
- // "balance": "2.088",
1703
- // "amount": "1.304", // negative for 'withdrawal'
1704
- // "currency": "CAKE",
1705
- // "type": "deposit",
1706
- // "timestamp": "1645282121023",
1707
- // "paymentMethod": "BLOCKCHAIN",
1708
- // "blockchainTransactionHash": "0x57c68c1f2ae74d5eda5a2a00516361d241a5c9e1ee95bf32573523857c38c112",
1709
- // "status": "PROCESSED",
1710
- // "commission": "0.14", // this property only exists in withdrawal
1711
- // }
1712
- //
1713
- const timestamp = this.safeInteger(transaction, 'timestamp');
1714
- const currencyId = this.safeString(transaction, 'currency');
1715
- const code = this.safeCurrencyCode(currencyId, currency);
1716
- const feeCost = this.safeString(transaction, 'commission');
1717
- const fee = {
1718
- 'currency': undefined,
1719
- 'cost': undefined,
1720
- 'rate': undefined,
1721
- };
1722
- if (feeCost !== undefined) {
1723
- fee['currency'] = code;
1724
- fee['cost'] = feeCost;
1725
- }
1726
- return {
1727
- 'info': transaction,
1728
- 'id': this.safeString(transaction, 'id'),
1729
- 'txid': this.safeString(transaction, 'blockchainTransactionHash'),
1730
- 'type': this.parseTransactionType(this.safeString(transaction, 'type')),
1731
- 'currency': code,
1732
- 'network': undefined,
1733
- 'amount': this.safeNumber(transaction, 'amount'),
1734
- 'status': this.parseTransactionStatus(this.safeString(transaction, 'state')),
1735
- 'timestamp': timestamp,
1736
- 'datetime': this.iso8601(timestamp),
1737
- 'address': undefined,
1738
- 'addressFrom': undefined,
1739
- 'addressTo': undefined,
1740
- 'tag': undefined,
1741
- 'tagFrom': undefined,
1742
- 'tagTo': undefined,
1743
- 'updated': undefined,
1744
- 'internal': undefined,
1745
- 'comment': undefined,
1746
- 'fee': fee,
1747
- };
1748
- }
1749
- parseTransactionStatus(status) {
1750
- const statuses = {
1751
- 'APPROVAL': 'pending',
1752
- 'PROCESSED': 'ok',
1753
- };
1754
- return this.safeString(statuses, status, status);
1755
- }
1756
- parseTransactionType(type) {
1757
- const types = {
1758
- 'deposit': 'deposit',
1759
- 'withdrawal': 'withdrawal',
1760
- };
1761
- return this.safeString(types, type, type);
1762
- }
1763
- /**
1764
- * @method
1765
- * @name currencycom#fetchLedger
1766
- * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1767
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getLedgerUsingGET
1768
- * @param {string} [code] unified currency code, default is undefined
1769
- * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1770
- * @param {int} [limit] max number of ledger entries to return, default is undefined
1771
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1772
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1773
- */
1774
- async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1775
- await this.loadMarkets();
1776
- const request = {};
1777
- let currency = undefined;
1778
- if (code !== undefined) {
1779
- currency = this.currency(code);
1780
- }
1781
- if (since !== undefined) {
1782
- request['startTime'] = since;
1783
- }
1784
- if (limit !== undefined) {
1785
- request['limit'] = limit;
1786
- }
1787
- const response = await this.privateGetV2Ledger(this.extend(request, params));
1788
- // in the below example, first item expresses withdrawal/deposit type, second example expresses trade
1789
- //
1790
- // [
1791
- // {
1792
- // "id": "619031398",
1793
- // "balance": "0.0",
1794
- // "amount": "-1.088",
1795
- // "currency": "CAKE",
1796
- // "type": "withdrawal",
1797
- // "timestamp": "1645460496425",
1798
- // "commission": "0.13",
1799
- // "paymentMethod": "BLOCKCHAIN", // present in withdrawal/deposit
1800
- // "blockchainTransactionHash": "0x400ac905557c3d34638b1c60eba110b3ee0f97f4eb0f7318015ab76e7f16b7d6", // present in withdrawal/deposit
1801
- // "status": "PROCESSED"
1802
- // },
1803
- // {
1804
- // "id": "619031034",
1805
- // "balance": "8.17223588",
1806
- // "amount": "-0.01326294",
1807
- // "currency": "USD",
1808
- // "type": "exchange_commission",
1809
- // "timestamp": "1645460461235",
1810
- // "commission": "0.01326294",
1811
- // "status": "PROCESSED"
1812
- // },
1813
- // ]
1814
- //
1815
- return this.parseLedger(response, currency, since, limit);
1816
- }
1817
- parseLedgerEntry(item, currency = undefined) {
1818
- const id = this.safeString(item, 'id');
1819
- const amountString = this.safeString(item, 'amount');
1820
- const amount = Precise.stringAbs(amountString);
1821
- const timestamp = this.safeInteger(item, 'timestamp');
1822
- const currencyId = this.safeString(item, 'currency');
1823
- const code = this.safeCurrencyCode(currencyId, currency);
1824
- currency = this.safeCurrency(currencyId, currency);
1825
- const feeCost = this.safeString(item, 'commission');
1826
- let fee = undefined;
1827
- if (feeCost !== undefined) {
1828
- fee = { 'currency': code, 'cost': feeCost };
1829
- }
1830
- const direction = Precise.stringLt(amountString, '0') ? 'out' : 'in';
1831
- return this.safeLedgerEntry({
1832
- 'id': id,
1833
- 'timestamp': timestamp,
1834
- 'datetime': this.iso8601(timestamp),
1835
- 'direction': direction,
1836
- 'account': undefined,
1837
- 'referenceId': this.safeString(item, 'blockchainTransactionHash'),
1838
- 'referenceAccount': undefined,
1839
- 'type': this.parseLedgerEntryType(this.safeString(item, 'type')),
1840
- 'currency': code,
1841
- 'amount': amount,
1842
- 'before': undefined,
1843
- 'after': this.safeString(item, 'balance'),
1844
- 'status': this.parseLedgerEntryStatus(this.safeString(item, 'status')),
1845
- 'fee': fee,
1846
- 'info': item,
1847
- }, currency);
1848
- }
1849
- parseLedgerEntryStatus(status) {
1850
- const statuses = {
1851
- 'APPROVAL': 'pending',
1852
- 'PROCESSED': 'ok',
1853
- 'CANCELLED': 'canceled',
1854
- };
1855
- return this.safeString(statuses, status, status);
1856
- }
1857
- parseLedgerEntryType(type) {
1858
- const types = {
1859
- 'deposit': 'transaction',
1860
- 'withdrawal': 'transaction',
1861
- 'exchange_commission': 'fee',
1862
- };
1863
- return this.safeString(types, type, type);
1864
- }
1865
- /**
1866
- * @method
1867
- * @name currencycom#fetchLeverage
1868
- * @description fetch the set leverage for a market
1869
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/leverageSettingsUsingGET
1870
- * @param {string} symbol unified market symbol
1871
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1872
- * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
1873
- */
1874
- async fetchLeverage(symbol, params = {}) {
1875
- await this.loadMarkets();
1876
- const market = this.market(symbol);
1877
- const request = {
1878
- 'symbol': market['id'],
1879
- };
1880
- const response = await this.privateGetV2LeverageSettings(this.extend(request, params));
1881
- //
1882
- // {
1883
- // "values": [ 1, 2, 5, 10, ],
1884
- // "value": "10",
1885
- // }
1886
- //
1887
- return this.parseLeverage(response, market);
1888
- }
1889
- parseLeverage(leverage, market = undefined) {
1890
- const leverageValue = this.safeInteger(leverage, 'value');
1891
- return {
1892
- 'info': leverage,
1893
- 'symbol': market['symbol'],
1894
- 'marginMode': undefined,
1895
- 'longLeverage': leverageValue,
1896
- 'shortLeverage': leverageValue,
1897
- };
1898
- }
1899
- /**
1900
- * @method
1901
- * @name currencycom#fetchDepositAddress
1902
- * @description fetch the deposit address for a currency associated with this account
1903
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/getDepositAddressUsingGET
1904
- * @param {string} code unified currency code
1905
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1906
- * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1907
- */
1908
- async fetchDepositAddress(code, params = {}) {
1909
- await this.loadMarkets();
1910
- const currency = this.currency(code);
1911
- const request = {
1912
- 'coin': currency['id'],
1913
- };
1914
- const response = await this.privateGetV2DepositAddress(this.extend(request, params));
1915
- //
1916
- // { "address":"0x97d64eb014ac779194991e7264f01c74c90327f0" }
1917
- //
1918
- return this.parseDepositAddress(response, currency);
1919
- }
1920
- parseDepositAddress(depositAddress, currency = undefined) {
1921
- const address = this.safeString(depositAddress, 'address');
1922
- this.checkAddress(address);
1923
- currency = this.safeCurrency(undefined, currency);
1924
- return {
1925
- 'info': depositAddress,
1926
- 'currency': currency['code'],
1927
- 'network': undefined,
1928
- 'address': address,
1929
- 'tag': undefined,
1930
- };
1931
- }
1932
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
1933
- let url = this.urls['api'][api] + '/' + path;
1934
- if (path === 'historicalTrades') {
1935
- headers = {
1936
- 'X-MBX-APIKEY': this.apiKey,
1937
- };
1938
- }
1939
- if (api === 'private') {
1940
- this.checkRequiredCredentials();
1941
- let query = this.urlencode(this.extend({
1942
- 'timestamp': this.nonce(),
1943
- 'recvWindow': this.options['recvWindow'],
1944
- }, params));
1945
- const signature = this.hmac(this.encode(query), this.encode(this.secret), sha256);
1946
- query += '&' + 'signature=' + signature;
1947
- headers = {
1948
- 'X-MBX-APIKEY': this.apiKey,
1949
- };
1950
- if ((method === 'GET') || (method === 'DELETE')) {
1951
- url += '?' + query;
1952
- }
1953
- else {
1954
- body = query;
1955
- headers['Content-Type'] = 'application/x-www-form-urlencoded';
1956
- }
1957
- }
1958
- else {
1959
- if (Object.keys(params).length) {
1960
- url += '?' + this.urlencode(params);
1961
- }
1962
- }
1963
- url = this.implodeHostname(url);
1964
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
1965
- }
1966
- /**
1967
- * @method
1968
- * @name currencycom#fetchPositions
1969
- * @description fetch all open positions
1970
- * @see https://apitradedoc.currency.com/swagger-ui.html#/rest-api/tradingPositionsUsingGET
1971
- * @param {string[]|undefined} symbols list of unified market symbols
1972
- * @param {object} [params] extra parameters specific to the exchange API endpoint
1973
- * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1974
- */
1975
- async fetchPositions(symbols = undefined, params = {}) {
1976
- await this.loadMarkets();
1977
- const response = await this.privateGetV2TradingPositions(params);
1978
- //
1979
- // {
1980
- // "positions": [
1981
- // {
1982
- // "accountId": "109698017416453793",
1983
- // "id": "00a18490-0079-54c4-0000-0000803e73d3",
1984
- // "instrumentId": "45463225268524228",
1985
- // "orderId": "00a18490-0079-54c4-0000-0000803e73d2",
1986
- // "openQuantity": "13.6",
1987
- // "openPrice": "0.75724",
1988
- // "closeQuantity": "0.0",
1989
- // "closePrice": "0",
1990
- // "rpl": "-0.007723848",
1991
- // "rplConverted": "0",
1992
- // "upl": "-0.006664",
1993
- // "uplConverted": "-0.006664",
1994
- // "swap": "0",
1995
- // "swapConverted": "0",
1996
- // "fee": "-0.007723848",
1997
- // "dividend": "0",
1998
- // "margin": "0.2",
1999
- // "state": "ACTIVE",
2000
- // "currency": "USD",
2001
- // "createdTimestamp": "1645473877236",
2002
- // "openTimestamp": "1645473877193",
2003
- // "type": "NET",
2004
- // "cost": "2.0583600",
2005
- // "symbol": "XRP/USD_LEVERAGE"
2006
- // }
2007
- // ]
2008
- // }
2009
- //
2010
- const data = this.safeList(response, 'positions', []);
2011
- return this.parsePositions(data, symbols);
2012
- }
2013
- parsePosition(position, market = undefined) {
2014
- //
2015
- // {
2016
- // "accountId": "109698017416453793",
2017
- // "id": "00a18490-0079-54c4-0000-0000803e73d3",
2018
- // "instrumentId": "45463225268524228",
2019
- // "orderId": "00a18490-0079-54c4-0000-0000803e73d2",
2020
- // "openQuantity": "13.6",
2021
- // "openPrice": "0.75724",
2022
- // "closeQuantity": "0.0",
2023
- // "closePrice": "0",
2024
- // "rpl": "-0.007723848",
2025
- // "rplConverted": "0",
2026
- // "upl": "-0.006664",
2027
- // "uplConverted": "-0.006664",
2028
- // "swap": "0",
2029
- // "swapConverted": "0",
2030
- // "fee": "-0.007723848",
2031
- // "dividend": "0",
2032
- // "margin": "0.2",
2033
- // "state": "ACTIVE",
2034
- // "currency": "USD",
2035
- // "createdTimestamp": "1645473877236",
2036
- // "openTimestamp": "1645473877193",
2037
- // "type": "NET",
2038
- // "cost": "2.0583600",
2039
- // "symbol": "XRP/USD_LEVERAGE"
2040
- // }
2041
- //
2042
- market = this.safeMarket(this.safeString(position, 'symbol'), market);
2043
- const symbol = market['symbol'];
2044
- const timestamp = this.safeInteger(position, 'createdTimestamp');
2045
- const quantityRaw = this.safeString(position, 'openQuantity');
2046
- const side = Precise.stringGt(quantityRaw, '0') ? 'long' : 'short';
2047
- const quantity = Precise.stringAbs(quantityRaw);
2048
- const entryPrice = this.safeNumber(position, 'openPrice');
2049
- const unrealizedProfit = this.safeNumber(position, 'upl');
2050
- const marginCoeff = this.safeString(position, 'margin');
2051
- const leverage = Precise.stringDiv('1', marginCoeff);
2052
- return this.safePosition({
2053
- 'info': position,
2054
- 'symbol': symbol,
2055
- 'timestamp': timestamp,
2056
- 'datetime': this.iso8601(timestamp),
2057
- 'lastUpdateTimestamp': undefined,
2058
- 'contracts': this.parseNumber(quantity),
2059
- 'contractSize': undefined,
2060
- 'entryPrice': entryPrice,
2061
- 'collateral': undefined,
2062
- 'side': side,
2063
- // 'realizedProfit': this.safeNumber (position, 'rpl'),
2064
- 'unrealizedPnl': unrealizedProfit,
2065
- 'leverage': leverage,
2066
- 'percentage': undefined,
2067
- 'marginMode': undefined,
2068
- 'notional': undefined,
2069
- 'markPrice': undefined,
2070
- 'lastPrice': undefined,
2071
- 'liquidationPrice': undefined,
2072
- 'initialMargin': undefined,
2073
- 'initialMarginPercentage': undefined,
2074
- 'maintenanceMargin': this.parseNumber(marginCoeff),
2075
- 'maintenanceMarginPercentage': undefined,
2076
- 'marginRatio': undefined,
2077
- 'id': undefined,
2078
- 'hedged': undefined,
2079
- 'stopLossPrice': undefined,
2080
- 'takeProfitPrice': undefined,
2081
- });
2082
- }
2083
- handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2084
- if ((httpCode === 418) || (httpCode === 429)) {
2085
- throw new DDoSProtection(this.id + ' ' + httpCode.toString() + ' ' + reason + ' ' + body);
2086
- }
2087
- // error response in a form: { "code": -1013, "msg": "Invalid quantity." }
2088
- // following block cointains legacy checks against message patterns in "msg" property
2089
- // will switch "code" checks eventually, when we know all of them
2090
- if (httpCode >= 400) {
2091
- if (body.indexOf('Price * QTY is zero or less') >= 0) {
2092
- throw new InvalidOrder(this.id + ' order cost = amount * price is zero or less ' + body);
2093
- }
2094
- if (body.indexOf('LOT_SIZE') >= 0) {
2095
- throw new InvalidOrder(this.id + ' order amount should be evenly divisible by lot size ' + body);
2096
- }
2097
- if (body.indexOf('PRICE_FILTER') >= 0) {
2098
- throw new InvalidOrder(this.id + ' order price is invalid, i.e. exceeds allowed price precision, exceeds min price or max price limits or is invalid float value in general, use this.priceToPrecision (symbol, amount) ' + body);
2099
- }
2100
- }
2101
- if (response === undefined) {
2102
- return undefined; // fallback to default error handler
2103
- }
2104
- //
2105
- // {"code":-1128,"msg":"Combination of optional parameters invalid."}
2106
- //
2107
- const errorCode = this.safeString(response, 'code');
2108
- if ((errorCode !== undefined) && (errorCode !== '0')) {
2109
- const feedback = this.id + ' ' + this.json(response);
2110
- this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
2111
- const message = this.safeString(response, 'msg');
2112
- this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
2113
- throw new ExchangeError(feedback);
2114
- }
2115
- return undefined;
2116
- }
2117
- }