ccxt 4.2.11 → 4.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +5 -5
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +1347 -490
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/_virtual/agent.js +7 -0
  6. package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
  7. package/dist/cjs/_virtual/promisify.js +7 -0
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/js/ccxt.js +474 -0
  10. package/dist/cjs/js/src/abstract/ace.js +9 -0
  11. package/dist/cjs/js/src/abstract/alpaca.js +9 -0
  12. package/dist/cjs/js/src/abstract/ascendex.js +9 -0
  13. package/dist/cjs/js/src/abstract/bigone.js +9 -0
  14. package/dist/cjs/js/src/abstract/binance.js +9 -0
  15. package/dist/cjs/js/src/abstract/bingx.js +9 -0
  16. package/dist/cjs/js/src/abstract/bit2c.js +9 -0
  17. package/dist/cjs/js/src/abstract/bitbank.js +9 -0
  18. package/dist/cjs/js/src/abstract/bitbns.js +9 -0
  19. package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
  20. package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
  21. package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
  22. package/dist/cjs/js/src/abstract/bitforex.js +9 -0
  23. package/dist/cjs/js/src/abstract/bitget.js +9 -0
  24. package/dist/cjs/js/src/abstract/bithumb.js +9 -0
  25. package/dist/cjs/js/src/abstract/bitmart.js +9 -0
  26. package/dist/cjs/js/src/abstract/bitmex.js +9 -0
  27. package/dist/cjs/js/src/abstract/bitopro.js +9 -0
  28. package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
  29. package/dist/cjs/js/src/abstract/bitrue.js +9 -0
  30. package/dist/cjs/js/src/abstract/bitso.js +9 -0
  31. package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
  32. package/dist/cjs/js/src/abstract/bitteam.js +9 -0
  33. package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
  34. package/dist/cjs/js/src/abstract/bl3p.js +9 -0
  35. package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
  36. package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
  37. package/dist/cjs/js/src/abstract/btcbox.js +9 -0
  38. package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
  39. package/dist/cjs/js/src/abstract/btcturk.js +9 -0
  40. package/dist/cjs/js/src/abstract/bybit.js +9 -0
  41. package/dist/cjs/js/src/abstract/cex.js +9 -0
  42. package/dist/cjs/js/src/abstract/coinbase.js +9 -0
  43. package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
  44. package/dist/cjs/js/src/abstract/coincheck.js +9 -0
  45. package/dist/cjs/js/src/abstract/coinex.js +9 -0
  46. package/dist/cjs/js/src/abstract/coinlist.js +9 -0
  47. package/dist/cjs/js/src/abstract/coinmate.js +9 -0
  48. package/dist/cjs/js/src/abstract/coinone.js +9 -0
  49. package/dist/cjs/js/src/abstract/coinsph.js +9 -0
  50. package/dist/cjs/js/src/abstract/coinspot.js +9 -0
  51. package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
  52. package/dist/cjs/js/src/abstract/currencycom.js +9 -0
  53. package/dist/cjs/js/src/abstract/delta.js +9 -0
  54. package/dist/cjs/js/src/abstract/deribit.js +9 -0
  55. package/dist/cjs/js/src/abstract/digifinex.js +9 -0
  56. package/dist/cjs/js/src/abstract/exmo.js +9 -0
  57. package/dist/cjs/js/src/abstract/gate.js +9 -0
  58. package/dist/cjs/js/src/abstract/gemini.js +9 -0
  59. package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
  60. package/dist/cjs/js/src/abstract/hollaex.js +9 -0
  61. package/dist/cjs/js/src/abstract/htx.js +9 -0
  62. package/dist/cjs/js/src/abstract/huobijp.js +9 -0
  63. package/dist/cjs/js/src/abstract/idex.js +9 -0
  64. package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
  65. package/dist/cjs/js/src/abstract/indodax.js +9 -0
  66. package/dist/cjs/js/src/abstract/kraken.js +9 -0
  67. package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
  68. package/dist/cjs/js/src/abstract/kucoin.js +9 -0
  69. package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
  70. package/dist/cjs/js/src/abstract/kuna.js +9 -0
  71. package/dist/cjs/js/src/abstract/latoken.js +9 -0
  72. package/dist/cjs/js/src/abstract/lbank.js +9 -0
  73. package/dist/cjs/js/src/abstract/luno.js +9 -0
  74. package/dist/cjs/js/src/abstract/lykke.js +9 -0
  75. package/dist/cjs/js/src/abstract/mercado.js +9 -0
  76. package/dist/cjs/js/src/abstract/mexc.js +9 -0
  77. package/dist/cjs/js/src/abstract/ndax.js +9 -0
  78. package/dist/cjs/js/src/abstract/novadax.js +9 -0
  79. package/dist/cjs/js/src/abstract/oceanex.js +9 -0
  80. package/dist/cjs/js/src/abstract/okcoin.js +9 -0
  81. package/dist/cjs/js/src/abstract/okx.js +9 -0
  82. package/dist/cjs/js/src/abstract/p2b.js +9 -0
  83. package/dist/cjs/js/src/abstract/paymium.js +9 -0
  84. package/dist/cjs/js/src/abstract/phemex.js +9 -0
  85. package/dist/cjs/js/src/abstract/poloniex.js +9 -0
  86. package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
  87. package/dist/cjs/js/src/abstract/probit.js +9 -0
  88. package/dist/cjs/js/src/abstract/timex.js +9 -0
  89. package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
  90. package/dist/cjs/js/src/abstract/upbit.js +9 -0
  91. package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
  92. package/dist/cjs/js/src/abstract/wazirx.js +9 -0
  93. package/dist/cjs/js/src/abstract/whitebit.js +9 -0
  94. package/dist/cjs/js/src/abstract/woo.js +9 -0
  95. package/dist/cjs/js/src/abstract/yobit.js +9 -0
  96. package/dist/cjs/js/src/abstract/zaif.js +9 -0
  97. package/dist/cjs/js/src/abstract/zonda.js +9 -0
  98. package/dist/cjs/js/src/ace.js +1058 -0
  99. package/dist/cjs/js/src/alpaca.js +1125 -0
  100. package/dist/cjs/js/src/ascendex.js +3360 -0
  101. package/dist/cjs/js/src/base/Exchange.js +5110 -0
  102. package/dist/cjs/js/src/base/Precise.js +263 -0
  103. package/dist/cjs/js/src/base/errors.js +299 -0
  104. package/dist/cjs/js/src/base/functions/crypto.js +78 -0
  105. package/dist/cjs/js/src/base/functions/encode.js +44 -0
  106. package/dist/cjs/js/src/base/functions/generic.js +193 -0
  107. package/dist/cjs/js/src/base/functions/misc.js +96 -0
  108. package/dist/cjs/js/src/base/functions/number.js +297 -0
  109. package/dist/cjs/js/src/base/functions/platform.js +28 -0
  110. package/dist/cjs/js/src/base/functions/rsa.js +34 -0
  111. package/dist/cjs/js/src/base/functions/string.js +48 -0
  112. package/dist/cjs/js/src/base/functions/throttle.js +66 -0
  113. package/dist/cjs/js/src/base/functions/time.js +187 -0
  114. package/dist/cjs/js/src/base/functions/totp.js +24 -0
  115. package/dist/cjs/js/src/base/functions/type.js +162 -0
  116. package/dist/cjs/js/src/base/functions.js +157 -0
  117. package/dist/cjs/js/src/base/ws/Cache.js +254 -0
  118. package/dist/cjs/js/src/base/ws/Client.js +299 -0
  119. package/dist/cjs/js/src/base/ws/Future.js +34 -0
  120. package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
  121. package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
  122. package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
  123. package/dist/cjs/js/src/bequant.js +33 -0
  124. package/dist/cjs/js/src/bigone.js +2209 -0
  125. package/dist/cjs/js/src/binance.js +9736 -0
  126. package/dist/cjs/js/src/binancecoinm.js +45 -0
  127. package/dist/cjs/js/src/binanceus.js +84 -0
  128. package/dist/cjs/js/src/binanceusdm.js +58 -0
  129. package/dist/cjs/js/src/bingx.js +3807 -0
  130. package/dist/cjs/js/src/bit2c.js +916 -0
  131. package/dist/cjs/js/src/bitbank.js +1000 -0
  132. package/dist/cjs/js/src/bitbay.js +17 -0
  133. package/dist/cjs/js/src/bitbns.js +1220 -0
  134. package/dist/cjs/js/src/bitcoincom.js +17 -0
  135. package/dist/cjs/js/src/bitfinex.js +1670 -0
  136. package/dist/cjs/js/src/bitfinex2.js +2990 -0
  137. package/dist/cjs/js/src/bitflyer.js +1045 -0
  138. package/dist/cjs/js/src/bitforex.js +852 -0
  139. package/dist/cjs/js/src/bitget.js +8291 -0
  140. package/dist/cjs/js/src/bithumb.js +1090 -0
  141. package/dist/cjs/js/src/bitmart.js +4454 -0
  142. package/dist/cjs/js/src/bitmex.js +2884 -0
  143. package/dist/cjs/js/src/bitopro.js +1724 -0
  144. package/dist/cjs/js/src/bitpanda.js +2002 -0
  145. package/dist/cjs/js/src/bitrue.js +3253 -0
  146. package/dist/cjs/js/src/bitso.js +1753 -0
  147. package/dist/cjs/js/src/bitstamp.js +2188 -0
  148. package/dist/cjs/js/src/bitteam.js +2309 -0
  149. package/dist/cjs/js/src/bitvavo.js +1968 -0
  150. package/dist/cjs/js/src/bl3p.js +447 -0
  151. package/dist/cjs/js/src/blockchaincom.js +1160 -0
  152. package/dist/cjs/js/src/btcalpha.js +929 -0
  153. package/dist/cjs/js/src/btcbox.js +565 -0
  154. package/dist/cjs/js/src/btcmarkets.js +1237 -0
  155. package/dist/cjs/js/src/btcturk.js +929 -0
  156. package/dist/cjs/js/src/bybit.js +7646 -0
  157. package/dist/cjs/js/src/cex.js +1693 -0
  158. package/dist/cjs/js/src/coinbase.js +3424 -0
  159. package/dist/cjs/js/src/coinbasepro.js +1866 -0
  160. package/dist/cjs/js/src/coincheck.js +843 -0
  161. package/dist/cjs/js/src/coinex.js +5414 -0
  162. package/dist/cjs/js/src/coinlist.js +2329 -0
  163. package/dist/cjs/js/src/coinmate.js +989 -0
  164. package/dist/cjs/js/src/coinone.js +1185 -0
  165. package/dist/cjs/js/src/coinsph.js +1933 -0
  166. package/dist/cjs/js/src/coinspot.js +548 -0
  167. package/dist/cjs/js/src/cryptocom.js +3007 -0
  168. package/dist/cjs/js/src/currencycom.js +2015 -0
  169. package/dist/cjs/js/src/delta.js +3256 -0
  170. package/dist/cjs/js/src/deribit.js +3306 -0
  171. package/dist/cjs/js/src/digifinex.js +4307 -0
  172. package/dist/cjs/js/src/exmo.js +2645 -0
  173. package/dist/cjs/js/src/fmfwio.js +34 -0
  174. package/dist/cjs/js/src/gate.js +7072 -0
  175. package/dist/cjs/js/src/gateio.js +16 -0
  176. package/dist/cjs/js/src/gemini.js +1801 -0
  177. package/dist/cjs/js/src/hitbtc.js +3660 -0
  178. package/dist/cjs/js/src/hitbtc3.js +19 -0
  179. package/dist/cjs/js/src/hollaex.js +1882 -0
  180. package/dist/cjs/js/src/htx.js +9049 -0
  181. package/dist/cjs/js/src/huobi.js +16 -0
  182. package/dist/cjs/js/src/huobijp.js +1918 -0
  183. package/dist/cjs/js/src/idex.js +1770 -0
  184. package/dist/cjs/js/src/independentreserve.js +761 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2857 -0
  187. package/dist/cjs/js/src/krakenfutures.js +2407 -0
  188. package/dist/cjs/js/src/kucoin.js +4489 -0
  189. package/dist/cjs/js/src/kucoinfutures.js +2475 -0
  190. package/dist/cjs/js/src/kuna.js +1949 -0
  191. package/dist/cjs/js/src/latoken.js +1729 -0
  192. package/dist/cjs/js/src/lbank.js +2851 -0
  193. package/dist/cjs/js/src/luno.js +1044 -0
  194. package/dist/cjs/js/src/lykke.js +1303 -0
  195. package/dist/cjs/js/src/mercado.js +897 -0
  196. package/dist/cjs/js/src/mexc.js +5407 -0
  197. package/dist/cjs/js/src/ndax.js +2450 -0
  198. package/dist/cjs/js/src/novadax.js +1556 -0
  199. package/dist/cjs/js/src/oceanex.js +964 -0
  200. package/dist/cjs/js/src/okcoin.js +3115 -0
  201. package/dist/cjs/js/src/okx.js +7330 -0
  202. package/dist/cjs/js/src/p2b.js +1243 -0
  203. package/dist/cjs/js/src/paymium.js +597 -0
  204. package/dist/cjs/js/src/phemex.js +4722 -0
  205. package/dist/cjs/js/src/poloniex.js +2356 -0
  206. package/dist/cjs/js/src/poloniexfutures.js +1794 -0
  207. package/dist/cjs/js/src/pro/alpaca.js +714 -0
  208. package/dist/cjs/js/src/pro/ascendex.js +957 -0
  209. package/dist/cjs/js/src/pro/bequant.js +33 -0
  210. package/dist/cjs/js/src/pro/binance.js +2796 -0
  211. package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
  212. package/dist/cjs/js/src/pro/binanceus.js +51 -0
  213. package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
  214. package/dist/cjs/js/src/pro/bingx.js +944 -0
  215. package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
  216. package/dist/cjs/js/src/pro/bitfinex.js +672 -0
  217. package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
  218. package/dist/cjs/js/src/pro/bitget.js +1733 -0
  219. package/dist/cjs/js/src/pro/bitmart.js +1486 -0
  220. package/dist/cjs/js/src/pro/bitmex.js +1576 -0
  221. package/dist/cjs/js/src/pro/bitopro.js +327 -0
  222. package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
  223. package/dist/cjs/js/src/pro/bitrue.js +462 -0
  224. package/dist/cjs/js/src/pro/bitstamp.js +547 -0
  225. package/dist/cjs/js/src/pro/bitvavo.js +704 -0
  226. package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
  227. package/dist/cjs/js/src/pro/bybit.js +1843 -0
  228. package/dist/cjs/js/src/pro/cex.js +1510 -0
  229. package/dist/cjs/js/src/pro/coinbase.js +561 -0
  230. package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
  231. package/dist/cjs/js/src/pro/coinex.js +1095 -0
  232. package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
  233. package/dist/cjs/js/src/pro/currencycom.js +563 -0
  234. package/dist/cjs/js/src/pro/deribit.js +825 -0
  235. package/dist/cjs/js/src/pro/exmo.js +658 -0
  236. package/dist/cjs/js/src/pro/gate.js +1316 -0
  237. package/dist/cjs/js/src/pro/gateio.js +16 -0
  238. package/dist/cjs/js/src/pro/gemini.js +649 -0
  239. package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
  240. package/dist/cjs/js/src/pro/hollaex.js +597 -0
  241. package/dist/cjs/js/src/pro/htx.js +2383 -0
  242. package/dist/cjs/js/src/pro/huobi.js +16 -0
  243. package/dist/cjs/js/src/pro/huobijp.js +606 -0
  244. package/dist/cjs/js/src/pro/idex.js +714 -0
  245. package/dist/cjs/js/src/pro/independentreserve.js +280 -0
  246. package/dist/cjs/js/src/pro/kraken.js +1364 -0
  247. package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
  248. package/dist/cjs/js/src/pro/kucoin.js +1052 -0
  249. package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
  250. package/dist/cjs/js/src/pro/luno.js +322 -0
  251. package/dist/cjs/js/src/pro/mexc.js +1170 -0
  252. package/dist/cjs/js/src/pro/ndax.js +545 -0
  253. package/dist/cjs/js/src/pro/okcoin.js +760 -0
  254. package/dist/cjs/js/src/pro/okx.js +1608 -0
  255. package/dist/cjs/js/src/pro/phemex.js +1511 -0
  256. package/dist/cjs/js/src/pro/poloniex.js +1253 -0
  257. package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
  258. package/dist/cjs/js/src/pro/probit.js +586 -0
  259. package/dist/cjs/js/src/pro/upbit.js +234 -0
  260. package/dist/cjs/js/src/pro/wazirx.js +776 -0
  261. package/dist/cjs/js/src/pro/whitebit.js +927 -0
  262. package/dist/cjs/js/src/pro/woo.js +769 -0
  263. package/dist/cjs/js/src/probit.js +1867 -0
  264. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
  265. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
  266. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
  267. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
  268. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  269. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  270. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  271. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
  272. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
  273. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
  274. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
  275. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
  276. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
  277. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
  278. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
  279. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
  280. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
  281. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
  282. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
  283. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
  284. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
  285. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
  286. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
  287. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
  288. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
  289. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
  290. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
  291. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
  292. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
  293. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
  294. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
  295. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
  296. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
  297. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
  298. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
  299. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
  300. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
  301. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
  302. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
  303. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
  304. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
  305. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
  306. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
  307. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
  308. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
  309. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
  310. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
  311. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
  312. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
  313. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
  314. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
  315. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  316. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
  317. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
  318. package/dist/cjs/js/src/timex.js +1562 -0
  319. package/dist/cjs/js/src/tokocrypto.js +2542 -0
  320. package/dist/cjs/js/src/upbit.js +1844 -0
  321. package/dist/cjs/js/src/wavesexchange.js +2607 -0
  322. package/dist/cjs/js/src/wazirx.js +953 -0
  323. package/dist/cjs/js/src/whitebit.js +2309 -0
  324. package/dist/cjs/js/src/woo.js +2765 -0
  325. package/dist/cjs/js/src/yobit.js +1314 -0
  326. package/dist/cjs/js/src/zaif.js +736 -0
  327. package/dist/cjs/js/src/zonda.js +1883 -0
  328. package/js/ccxt.d.ts +1 -1
  329. package/js/ccxt.js +1 -1
  330. package/js/src/abstract/bigone.d.ts +18 -0
  331. package/js/src/abstract/binance.d.ts +2 -0
  332. package/js/src/abstract/binancecoinm.d.ts +2 -0
  333. package/js/src/abstract/binanceus.d.ts +2 -0
  334. package/js/src/abstract/binanceusdm.d.ts +2 -0
  335. package/js/src/abstract/bingx.d.ts +2 -0
  336. package/js/src/abstract/bybit.d.ts +1 -0
  337. package/js/src/abstract/gate.d.ts +11 -0
  338. package/js/src/abstract/gateio.d.ts +11 -0
  339. package/js/src/abstract/okx.d.ts +1 -0
  340. package/js/src/alpaca.js +18 -18
  341. package/js/src/base/Exchange.d.ts +5 -1
  342. package/js/src/base/Exchange.js +101 -12
  343. package/js/src/bigone.d.ts +3 -2
  344. package/js/src/bigone.js +429 -167
  345. package/js/src/binance.js +48 -34
  346. package/js/src/bingx.js +115 -38
  347. package/js/src/bitfinex.d.ts +2 -2
  348. package/js/src/bitfinex.js +2 -3
  349. package/js/src/bitget.js +33 -13
  350. package/js/src/bitmart.d.ts +2 -2
  351. package/js/src/bitmart.js +5 -5
  352. package/js/src/bitmex.js +1 -0
  353. package/js/src/bybit.js +2 -0
  354. package/js/src/coinbase.d.ts +26 -3
  355. package/js/src/coinbase.js +176 -26
  356. package/js/src/coinlist.js +3 -4
  357. package/js/src/coinone.js +1 -1
  358. package/js/src/coinsph.js +2 -3
  359. package/js/src/deribit.js +1 -0
  360. package/js/src/gate.d.ts +4 -4
  361. package/js/src/gate.js +96 -59
  362. package/js/src/gemini.js +1 -1
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.d.ts +1 -0
  366. package/js/src/htx.js +29 -7
  367. package/js/src/huobijp.js +2 -3
  368. package/js/src/independentreserve.js +7 -5
  369. package/js/src/kraken.js +3 -6
  370. package/js/src/lbank.js +59 -33
  371. package/js/src/mexc.js +2 -1
  372. package/js/src/oceanex.js +1 -1
  373. package/js/src/okx.js +14 -3
  374. package/js/src/phemex.js +9 -2
  375. package/js/src/pro/binance.d.ts +2 -23
  376. package/js/src/pro/binance.js +58 -22
  377. package/js/src/pro/coinbase.d.ts +2 -2
  378. package/js/src/pro/coinbase.js +4 -1
  379. package/js/src/pro/coinbasepro.d.ts +2 -2
  380. package/js/src/pro/hitbtc.d.ts +2 -2
  381. package/js/src/pro/kraken.js +1 -1
  382. package/js/src/pro/okx.d.ts +1 -0
  383. package/js/src/pro/okx.js +52 -2
  384. package/js/src/pro/poloniex.d.ts +2 -2
  385. package/js/src/probit.js +4 -2
  386. package/js/src/upbit.d.ts +3 -101
  387. package/js/src/upbit.js +12 -12
  388. package/js/src/wavesexchange.js +1 -1
  389. package/js/src/woo.d.ts +2 -0
  390. package/js/src/woo.js +52 -0
  391. package/package.json +1 -1
  392. package/skip-tests.json +5 -0
package/js/src/hitbtc.js CHANGED
@@ -2633,11 +2633,10 @@ export default class hitbtc extends Exchange {
2633
2633
  // "2db6ebab-fb26-4537-9ef8-1a689472d236"
2634
2634
  // ]
2635
2635
  //
2636
- const timestamp = this.milliseconds();
2637
2636
  return {
2638
2637
  'id': this.safeString(transfer, 0),
2639
- 'timestamp': timestamp,
2640
- 'datetime': this.iso8601(timestamp),
2638
+ 'timestamp': undefined,
2639
+ 'datetime': undefined,
2641
2640
  'currency': this.safeCurrencyCode(undefined, currency),
2642
2641
  'amount': undefined,
2643
2642
  'fromAccount': undefined,
package/js/src/htx.d.ts CHANGED
@@ -84,6 +84,7 @@ export default class htx extends Exchange {
84
84
  parseOrderStatus(status: any): string;
85
85
  parseOrder(order: any, market?: Market): Order;
86
86
  createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
87
+ createTrailingPercentOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, trailingPercent?: any, trailingTriggerPrice?: any, params?: {}): Promise<Order>;
87
88
  createSpotOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<any>;
88
89
  createContractOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): any;
89
90
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<Order>;
package/js/src/htx.js CHANGED
@@ -50,6 +50,7 @@ export default class htx extends Exchange {
50
50
  'createStopLimitOrder': true,
51
51
  'createStopMarketOrder': true,
52
52
  'createStopOrder': true,
53
+ 'createTrailingPercentOrder': true,
53
54
  'fetchAccounts': true,
54
55
  'fetchBalance': true,
55
56
  'fetchBidsAsks': undefined,
@@ -4971,6 +4972,31 @@ export default class htx extends Exchange {
4971
4972
  params['createMarketBuyOrderRequiresPrice'] = false;
4972
4973
  return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
4973
4974
  }
4975
+ async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
4976
+ /**
4977
+ * @method
4978
+ * @name createTrailingPercentOrder
4979
+ * @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
4980
+ * @param {string} symbol unified symbol of the market to create an order in
4981
+ * @param {string} type 'market' or 'limit'
4982
+ * @param {string} side 'buy' or 'sell'
4983
+ * @param {float} amount how much you want to trade in units of the base currency, or number of contracts
4984
+ * @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
4985
+ * @param {float} trailingPercent the percent to trail away from the current market price
4986
+ * @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
4987
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
4988
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
4989
+ */
4990
+ if (trailingPercent === undefined) {
4991
+ throw new ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
4992
+ }
4993
+ if (trailingTriggerPrice === undefined) {
4994
+ throw new ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingTriggerPrice argument');
4995
+ }
4996
+ params['trailingPercent'] = trailingPercent;
4997
+ params['trailingTriggerPrice'] = trailingTriggerPrice;
4998
+ return await this.createOrder(symbol, type, side, amount, price, params);
4999
+ }
4974
5000
  async createSpotOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
4975
5001
  /**
4976
5002
  * @method
@@ -5183,15 +5209,11 @@ export default class htx extends Exchange {
5183
5209
  }
5184
5210
  }
5185
5211
  if (!isStopLossTriggerOrder && !isTakeProfitTriggerOrder) {
5186
- const leverRate = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
5187
5212
  const reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only', false);
5188
- const openOrClose = (reduceOnly) ? 'close' : 'open';
5189
- const offset = this.safeString(params, 'offset', openOrClose);
5190
- request['offset'] = offset;
5191
5213
  if (reduceOnly) {
5192
5214
  request['reduce_only'] = 1;
5193
5215
  }
5194
- request['lever_rate'] = leverRate;
5216
+ request['lever_rate'] = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
5195
5217
  if (!isTrailingPercentOrder) {
5196
5218
  request['order_price_type'] = type;
5197
5219
  }
@@ -5255,10 +5277,10 @@ export default class htx extends Exchange {
5255
5277
  response = await this.spotPrivatePostV1OrderOrdersPlace(spotRequest);
5256
5278
  }
5257
5279
  else {
5258
- const contractRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
5280
+ let contractRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
5259
5281
  if (market['linear']) {
5260
5282
  let marginMode = undefined;
5261
- [marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
5283
+ [marginMode, contractRequest] = this.handleMarginModeAndParams('createOrder', contractRequest);
5262
5284
  marginMode = (marginMode === undefined) ? 'cross' : marginMode;
5263
5285
  if (marginMode === 'isolated') {
5264
5286
  if (isStop) {
package/js/src/huobijp.js CHANGED
@@ -1451,13 +1451,12 @@ export default class huobijp extends Exchange {
1451
1451
  }
1452
1452
  const method = this.options['createOrderMethod'];
1453
1453
  const response = await this[method](this.extend(request, params));
1454
- const timestamp = this.milliseconds();
1455
1454
  const id = this.safeString(response, 'data');
1456
1455
  return this.safeOrder({
1457
1456
  'info': response,
1458
1457
  'id': id,
1459
- 'timestamp': timestamp,
1460
- 'datetime': this.iso8601(timestamp),
1458
+ 'timestamp': undefined,
1459
+ 'datetime': undefined,
1461
1460
  'lastTradeTimestamp': undefined,
1462
1461
  'status': undefined,
1463
1462
  'symbol': symbol,
@@ -686,20 +686,22 @@ export default class independentreserve extends Exchange {
686
686
  */
687
687
  await this.loadMarkets();
688
688
  const market = this.market(symbol);
689
- const capitalizedOrderType = this.capitalize(type);
690
- const method = 'privatePostPlace' + capitalizedOrderType + 'Order';
691
- let orderType = capitalizedOrderType;
689
+ let orderType = this.capitalize(type);
692
690
  orderType += (side === 'sell') ? 'Offer' : 'Bid';
693
691
  const request = this.ordered({
694
692
  'primaryCurrencyCode': market['baseId'],
695
693
  'secondaryCurrencyCode': market['quoteId'],
696
694
  'orderType': orderType,
697
695
  });
696
+ let response = undefined;
697
+ request['volume'] = amount;
698
698
  if (type === 'limit') {
699
699
  request['price'] = price;
700
+ response = await this.privatePostPlaceLimitOrder(this.extend(request, params));
701
+ }
702
+ else {
703
+ response = await this.privatePostPlaceMarketOrder(this.extend(request, params));
700
704
  }
701
- request['volume'] = amount;
702
- const response = await this[method](this.extend(request, params));
703
705
  return this.safeOrder({
704
706
  'info': response,
705
707
  'id': response['OrderGuid'],
package/js/src/kraken.js CHANGED
@@ -42,6 +42,7 @@ export default class kraken extends Exchange {
42
42
  'createStopLimitOrder': true,
43
43
  'createStopMarketOrder': true,
44
44
  'createStopOrder': true,
45
+ 'createTrailingAmountOrder': true,
45
46
  'editOrder': true,
46
47
  'fetchBalance': true,
47
48
  'fetchBorrowInterest': false,
@@ -1266,12 +1267,8 @@ export default class kraken extends Exchange {
1266
1267
  request['since'] = since * 1e6;
1267
1268
  request['since'] = since.toString() + '000000'; // expected to be in nanoseconds
1268
1269
  }
1269
- // https://github.com/ccxt/ccxt/issues/5698
1270
- if (limit !== undefined && limit !== 1000) {
1271
- const fetchTradesWarning = this.safeValue(this.options, 'fetchTradesWarning', true);
1272
- if (fetchTradesWarning) {
1273
- throw new ExchangeError(this.id + ' fetchTrades() cannot serve ' + limit.toString() + " trades without breaking the pagination, see https://github.com/ccxt/ccxt/issues/5698 for more details. Set exchange.options['fetchTradesWarning'] to acknowledge this warning and silence it.");
1274
- }
1270
+ if (limit !== undefined) {
1271
+ request['count'] = limit;
1275
1272
  }
1276
1273
  const response = await this.publicGetTrades(this.extend(request, params));
1277
1274
  //
package/js/src/lbank.js CHANGED
@@ -932,13 +932,17 @@ export default class lbank extends Exchange {
932
932
  else {
933
933
  request['size'] = 600; // max
934
934
  }
935
- let method = this.safeString(params, 'method');
935
+ const options = this.safeValue(this.options, 'fetchTrades', {});
936
+ const defaultMethod = this.safeString(options, 'method', 'spotPublicGetTrades');
937
+ const method = this.safeString(params, 'method', defaultMethod);
936
938
  params = this.omit(params, 'method');
937
- if (method === undefined) {
938
- const options = this.safeValue(this.options, 'fetchTrades', {});
939
- method = this.safeString(options, 'method', 'spotPublicGetTrades');
939
+ let response = undefined;
940
+ if (method === 'spotPublicGetSupplementTrades') {
941
+ response = await this.spotPublicGetSupplementTrades(this.extend(request, params));
942
+ }
943
+ else {
944
+ response = await this.spotPublicGetTrades(this.extend(request, params));
940
945
  }
941
- const response = await this[method](this.extend(request, params));
942
946
  //
943
947
  // {
944
948
  // "result":"true",
@@ -1175,12 +1179,19 @@ export default class lbank extends Exchange {
1175
1179
  * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1176
1180
  */
1177
1181
  await this.loadMarkets();
1178
- let method = this.safeString(params, 'method');
1179
- if (method === undefined) {
1180
- const options = this.safeValue(this.options, 'fetchBalance', {});
1181
- method = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
1182
+ const options = this.safeValue(this.options, 'fetchBalance', {});
1183
+ const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
1184
+ const method = this.safeString(params, 'method', defaultMethod);
1185
+ let response = undefined;
1186
+ if (method === 'spotPrivatePostSupplementUserInfoAccount') {
1187
+ response = await this.spotPrivatePostSupplementUserInfoAccount();
1188
+ }
1189
+ else if (method === 'spotPrivatePostUserInfo') {
1190
+ response = await this.spotPrivatePostUserInfo();
1191
+ }
1192
+ else {
1193
+ response = await this.spotPrivatePostSupplementUserInfo();
1182
1194
  }
1183
- const response = await this[method]();
1184
1195
  //
1185
1196
  // {
1186
1197
  // "result": "true",
@@ -1365,14 +1376,17 @@ export default class lbank extends Exchange {
1365
1376
  if (clientOrderId !== undefined) {
1366
1377
  request['custom_id'] = clientOrderId;
1367
1378
  }
1368
- let method = undefined;
1369
- method = this.safeString(params, 'method');
1379
+ const options = this.safeValue(this.options, 'createOrder', {});
1380
+ const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
1381
+ const method = this.safeString(params, 'method', defaultMethod);
1370
1382
  params = this.omit(params, 'method');
1371
- if (method === undefined) {
1372
- const options = this.safeValue(this.options, 'createOrder', {});
1373
- method = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
1383
+ let response = undefined;
1384
+ if (method === 'spotPrivatePostCreateOrder') {
1385
+ response = await this.spotPrivatePostCreateOrder(this.extend(request, params));
1386
+ }
1387
+ else {
1388
+ response = await this.spotPrivatePostSupplementCreateOrder(this.extend(request, params));
1374
1389
  }
1375
- const response = await this[method](this.extend(request, params));
1376
1390
  //
1377
1391
  // {
1378
1392
  // "result":true,
@@ -1907,13 +1921,18 @@ export default class lbank extends Exchange {
1907
1921
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
1908
1922
  */
1909
1923
  await this.loadMarkets();
1910
- let method = this.safeString(params, 'method');
1924
+ const options = this.safeValue(this.options, 'fetchDepositAddress', {});
1925
+ const defaultMethod = this.safeString(options, 'method', 'fetchDepositAddressDefault');
1926
+ const method = this.safeString(params, 'method', defaultMethod);
1911
1927
  params = this.omit(params, 'method');
1912
- if (method === undefined) {
1913
- const options = this.safeValue(this.options, 'fetchDepositAddress', {});
1914
- method = this.safeString(options, 'method', 'fetchDepositAddressDefault');
1928
+ let response = undefined;
1929
+ if (method === 'fetchDepositAddressSupplement') {
1930
+ response = await this.fetchDepositAddressSupplement(code, params);
1915
1931
  }
1916
- return await this[method](code, params);
1932
+ else {
1933
+ response = await this.fetchDepositAddressDefault(code, params);
1934
+ }
1935
+ return response;
1917
1936
  }
1918
1937
  async fetchDepositAddressDefault(code, params = {}) {
1919
1938
  await this.loadMarkets();
@@ -2285,13 +2304,16 @@ export default class lbank extends Exchange {
2285
2304
  const isAuthorized = this.checkRequiredCredentials(false);
2286
2305
  let result = undefined;
2287
2306
  if (isAuthorized === true) {
2288
- let method = this.safeString(params, 'method');
2307
+ const options = this.safeValue(this.options, 'fetchTransactionFees', {});
2308
+ const defaultMethod = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
2309
+ const method = this.safeString(params, 'method', defaultMethod);
2289
2310
  params = this.omit(params, 'method');
2290
- if (method === undefined) {
2291
- const options = this.safeValue(this.options, 'fetchTransactionFees', {});
2292
- method = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
2311
+ if (method === 'fetchPublicTransactionFees') {
2312
+ result = await this.fetchPublicTransactionFees(params);
2313
+ }
2314
+ else {
2315
+ result = await this.fetchPrivateTransactionFees(params);
2293
2316
  }
2294
- result = await this[method](params);
2295
2317
  }
2296
2318
  else {
2297
2319
  result = await this.fetchPublicTransactionFees(params);
@@ -2429,19 +2451,23 @@ export default class lbank extends Exchange {
2429
2451
  */
2430
2452
  await this.loadMarkets();
2431
2453
  const isAuthorized = this.checkRequiredCredentials(false);
2432
- let method = undefined;
2454
+ const response = undefined;
2433
2455
  if (isAuthorized === true) {
2434
- method = this.safeString(params, 'method');
2456
+ const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
2457
+ const defaultMethod = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
2458
+ const method = this.safeString(params, 'method', defaultMethod);
2435
2459
  params = this.omit(params, 'method');
2436
- if (method === undefined) {
2437
- const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
2438
- method = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
2460
+ if (method === 'fetchPublicDepositWithdrawFees') {
2461
+ await this.fetchPublicDepositWithdrawFees(codes, params);
2462
+ }
2463
+ else {
2464
+ await this.fetchPrivateDepositWithdrawFees(codes, params);
2439
2465
  }
2440
2466
  }
2441
2467
  else {
2442
- method = 'fetchPublicDepositWithdrawFees';
2468
+ await this.fetchPublicDepositWithdrawFees(codes, params);
2443
2469
  }
2444
- return await this[method](codes, params);
2470
+ return response;
2445
2471
  }
2446
2472
  async fetchPrivateDepositWithdrawFees(codes = undefined, params = {}) {
2447
2473
  // complete response
package/js/src/mexc.js CHANGED
@@ -1328,7 +1328,8 @@ export default class mexc extends Exchange {
1328
1328
  // ]
1329
1329
  // }
1330
1330
  //
1331
- orderbook = this.parseOrderBook(response, symbol);
1331
+ const spotTimestamp = this.safeInteger(response, 'timestamp');
1332
+ orderbook = this.parseOrderBook(response, symbol, spotTimestamp);
1332
1333
  orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
1333
1334
  }
1334
1335
  else if (market['swap']) {
package/js/src/oceanex.js CHANGED
@@ -475,7 +475,7 @@ export default class oceanex extends Exchange {
475
475
  'market': market['id'],
476
476
  };
477
477
  if (limit !== undefined) {
478
- request['limit'] = limit;
478
+ request['limit'] = Math.min(limit, 1000);
479
479
  }
480
480
  const response = await this.publicGetTrades(this.extend(request, params));
481
481
  //
package/js/src/okx.js CHANGED
@@ -48,6 +48,7 @@ export default class okx extends Exchange {
48
48
  'createStopLimitOrder': true,
49
49
  'createStopMarketOrder': true,
50
50
  'createStopOrder': true,
51
+ 'createTrailingPercentOrder': true,
51
52
  'editOrder': true,
52
53
  'fetchAccounts': true,
53
54
  'fetchBalance': true,
@@ -160,8 +161,7 @@ export default class okx extends Exchange {
160
161
  'referral': {
161
162
  // old reflink 0% discount https://www.okx.com/join/1888677
162
163
  // new reflink 20% discount https://www.okx.com/join/CCXT2023
163
- // okx + ccxt campaign reflink with 20% discount https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023
164
- 'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023',
164
+ 'url': 'https://www.okx.com/join/CCXT2023',
165
165
  'discount': 0.2,
166
166
  },
167
167
  'test': {
@@ -262,6 +262,7 @@ export default class okx extends Exchange {
262
262
  'sprd/order': 1 / 3,
263
263
  'sprd/orders-pending': 1 / 3,
264
264
  'sprd/orders-history': 1 / 2,
265
+ 'sprd/orders-history-archive': 1 / 2,
265
266
  'sprd/trades': 1 / 3,
266
267
  // trade
267
268
  'trade/order': 1 / 3,
@@ -1218,10 +1219,20 @@ export default class okx extends Exchange {
1218
1219
  for (let i = 0; i < data.length; i++) {
1219
1220
  const event = data[i];
1220
1221
  const state = this.safeString(event, 'state');
1222
+ update['eta'] = this.safeInteger(event, 'end');
1223
+ update['url'] = this.safeString(event, 'href');
1221
1224
  if (state === 'ongoing') {
1222
- update['eta'] = this.safeInteger(event, 'end');
1223
1225
  update['status'] = 'maintenance';
1224
1226
  }
1227
+ else if (state === 'scheduled') {
1228
+ update['status'] = 'ok';
1229
+ }
1230
+ else if (state === 'completed') {
1231
+ update['status'] = 'ok';
1232
+ }
1233
+ else if (state === 'canceled') {
1234
+ update['status'] = 'ok';
1235
+ }
1225
1236
  }
1226
1237
  return update;
1227
1238
  }
package/js/src/phemex.js CHANGED
@@ -455,7 +455,7 @@ export default class phemex extends Exchange {
455
455
  },
456
456
  },
457
457
  'options': {
458
- 'brokerId': 'CCXT',
458
+ 'brokerId': 'CCXT123456',
459
459
  'x-phemex-request-expiry': 60,
460
460
  'createOrderByQuoteRequiresPrice': true,
461
461
  'networks': {
@@ -2480,7 +2480,7 @@ export default class phemex extends Exchange {
2480
2480
  const takeProfit = this.safeValue(params, 'takeProfit');
2481
2481
  const takeProfitDefined = (takeProfit !== undefined);
2482
2482
  if (clientOrderId === undefined) {
2483
- const brokerId = this.safeString(this.options, 'brokerId');
2483
+ const brokerId = this.safeString(this.options, 'brokerId', 'CCXT123456');
2484
2484
  if (brokerId !== undefined) {
2485
2485
  request['clOrdID'] = brokerId + this.uuid16();
2486
2486
  }
@@ -4276,6 +4276,13 @@ export default class phemex extends Exchange {
4276
4276
  };
4277
4277
  let payload = '';
4278
4278
  if (method === 'POST') {
4279
+ const isOrderPlacement = (path === 'g-orders') || (path === 'spot/orders') || (path === 'orders');
4280
+ if (isOrderPlacement) {
4281
+ if (this.safeString(params, 'clOrdID') === undefined) {
4282
+ const id = this.safeString(this.options, 'brokerId', 'CCXT123456');
4283
+ params['clOrdID'] = id + this.uuid16();
4284
+ }
4285
+ }
4279
4286
  payload = this.json(params);
4280
4287
  body = payload;
4281
4288
  headers['Content-Type'] = 'application/json';
@@ -4,7 +4,7 @@ import Client from '../base/ws/Client.js';
4
4
  export default class binance extends binanceRest {
5
5
  describe(): any;
6
6
  requestId(url: any): any;
7
- stream(type: any, subscriptionHash: any): string;
7
+ stream(type: any, subscriptionHash: any, numSubscriptions?: number): string;
8
8
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
9
9
  watchOrderBookForSymbols(symbols: string[], limit?: Int, params?: {}): Promise<OrderBook>;
10
10
  fetchOrderBookSnapshot(client: any, message: any, subscription: any): Promise<void>;
@@ -22,28 +22,7 @@ export default class binance extends binanceRest {
22
22
  handleOHLCV(client: Client, message: any): void;
23
23
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
24
24
  watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
25
- parseWsTicker(message: any, marketType: any): {
26
- symbol: string;
27
- timestamp: any;
28
- datetime: string;
29
- high: number;
30
- low: number;
31
- bid: number;
32
- bidVolume: number;
33
- ask: number;
34
- askVolume: number;
35
- vwap: number;
36
- open: number;
37
- close: number;
38
- last: number;
39
- previousClose: number;
40
- change: number;
41
- percentage: number;
42
- average: any;
43
- baseVolume: number;
44
- quoteVolume: number;
45
- info: any;
46
- };
25
+ parseWsTicker(message: any, marketType: any): Ticker;
47
26
  handleTicker(client: Client, message: any): void;
48
27
  handleTickers(client: Client, message: any): void;
49
28
  signParams(params?: {}): any;
@@ -73,6 +73,12 @@ export default class binance extends binanceRest {
73
73
  'future': 50,
74
74
  'delivery': 50, // max 200
75
75
  },
76
+ 'subscriptionLimitByStream': {
77
+ 'spot': 200,
78
+ 'margin': 200,
79
+ 'future': 200,
80
+ 'delivery': 200,
81
+ },
76
82
  'streamBySubscriptionsHash': {},
77
83
  'streamIndex': -1,
78
84
  // get updates every 1000ms or 100ms
@@ -121,7 +127,7 @@ export default class binance extends binanceRest {
121
127
  this.options['requestId'][url] = newValue;
122
128
  return newValue;
123
129
  }
124
- stream(type, subscriptionHash) {
130
+ stream(type, subscriptionHash, numSubscriptions = 1) {
125
131
  const streamBySubscriptionsHash = this.safeValue(this.options, 'streamBySubscriptionsHash', {});
126
132
  let stream = this.safeString(streamBySubscriptionsHash, subscriptionHash);
127
133
  if (stream === undefined) {
@@ -133,6 +139,17 @@ export default class binance extends binanceRest {
133
139
  this.options['streamIndex'] = streamIndex;
134
140
  stream = this.numberToString(normalizedIndex);
135
141
  this.options['streamBySubscriptionsHash'][subscriptionHash] = stream;
142
+ const subscriptionsByStreams = this.safeValue(this.options, 'numSubscriptionsByStream');
143
+ if (subscriptionsByStreams === undefined) {
144
+ this.options['numSubscriptionsByStream'] = {};
145
+ }
146
+ const subscriptionsByStream = this.safeInteger(this.options['numSubscriptionsByStream'], stream, 0);
147
+ const newNumSubscriptions = subscriptionsByStream + numSubscriptions;
148
+ const subscriptionLimitByStream = this.safeInteger(this.options, 'subscriptionLimitByStream', 200);
149
+ if (newNumSubscriptions > subscriptionLimitByStream) {
150
+ throw new BadRequest(this.id + ' reached the limit of subscriptions by stream. Increase the number of streams, or increase the stream limit or subscription limit by stream if the exchange allows.');
151
+ }
152
+ this.options['numSubscriptionsByStream'][stream] = subscriptionsByStream + numSubscriptions;
136
153
  }
137
154
  return stream;
138
155
  }
@@ -203,8 +220,14 @@ export default class binance extends binanceRest {
203
220
  type = firstMarket['linear'] ? 'future' : 'delivery';
204
221
  }
205
222
  const name = 'depth';
206
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, 'multipleOrderbook');
207
- const requestId = this.requestId(url);
223
+ let streamHash = 'multipleOrderbook';
224
+ if (symbols !== undefined) {
225
+ const symbolsLength = symbols.length;
226
+ if (symbolsLength > 200) {
227
+ throw new BadRequest(this.id + ' watchOrderBookForSymbols() accepts 200 symbols at most. To watch more symbols call watchOrderBookForSymbols() multiple times');
228
+ }
229
+ streamHash += '::' + symbols.join(',');
230
+ }
208
231
  const watchOrderBookRate = this.safeString(this.options, 'watchOrderBookRate', '100');
209
232
  const subParams = [];
210
233
  const messageHashes = [];
@@ -216,6 +239,9 @@ export default class binance extends binanceRest {
216
239
  const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
217
240
  subParams.push(symbolHash);
218
241
  }
242
+ const messageHashesLength = messageHashes.length;
243
+ const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, messageHashesLength);
244
+ const requestId = this.requestId(url);
219
245
  const request = {
220
246
  'method': 'SUBSCRIBE',
221
247
  'params': subParams,
@@ -459,6 +485,14 @@ export default class binance extends binanceRest {
459
485
  */
460
486
  await this.loadMarkets();
461
487
  symbols = this.marketSymbols(symbols, undefined, false, true, true);
488
+ let streamHash = 'multipleTrades';
489
+ if (symbols !== undefined) {
490
+ const symbolsLength = symbols.length;
491
+ if (symbolsLength > 200) {
492
+ throw new BadRequest(this.id + ' watchTradesForSymbols() accepts 200 symbols at most. To watch more symbols call watchTradesForSymbols() multiple times');
493
+ }
494
+ streamHash += '::' + symbols.join(',');
495
+ }
462
496
  const options = this.safeValue(this.options, 'watchTradesForSymbols', {});
463
497
  const name = this.safeString(options, 'name', 'trade');
464
498
  const firstMarket = this.market(symbols[0]);
@@ -474,7 +508,8 @@ export default class binance extends binanceRest {
474
508
  subParams.push(currentMessageHash);
475
509
  }
476
510
  const query = this.omit(params, 'type');
477
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, 'multipleTrades');
511
+ const subParamsLength = subParams.length;
512
+ const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, subParamsLength);
478
513
  const requestId = this.requestId(url);
479
514
  const request = {
480
515
  'method': 'SUBSCRIBE',
@@ -958,30 +993,30 @@ export default class binance extends binanceRest {
958
993
  }
959
994
  const marketId = this.safeString(message, 's');
960
995
  const symbol = this.safeSymbol(marketId, undefined, undefined, marketType);
961
- const last = this.safeFloat(message, 'c');
962
- const ticker = {
996
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
997
+ const last = this.safeString(message, 'c');
998
+ return this.safeTicker({
963
999
  'symbol': symbol,
964
1000
  'timestamp': timestamp,
965
1001
  'datetime': this.iso8601(timestamp),
966
- 'high': this.safeFloat(message, 'h'),
967
- 'low': this.safeFloat(message, 'l'),
968
- 'bid': this.safeFloat(message, 'b'),
969
- 'bidVolume': this.safeFloat(message, 'B'),
970
- 'ask': this.safeFloat(message, 'a'),
971
- 'askVolume': this.safeFloat(message, 'A'),
972
- 'vwap': this.safeFloat(message, 'w'),
973
- 'open': this.safeFloat(message, 'o'),
1002
+ 'high': this.safeString(message, 'h'),
1003
+ 'low': this.safeString(message, 'l'),
1004
+ 'bid': this.safeString(message, 'b'),
1005
+ 'bidVolume': this.safeString(message, 'B'),
1006
+ 'ask': this.safeString(message, 'a'),
1007
+ 'askVolume': this.safeString(message, 'A'),
1008
+ 'vwap': this.safeString(message, 'w'),
1009
+ 'open': this.safeString(message, 'o'),
974
1010
  'close': last,
975
1011
  'last': last,
976
- 'previousClose': this.safeFloat(message, 'x'),
977
- 'change': this.safeFloat(message, 'p'),
978
- 'percentage': this.safeFloat(message, 'P'),
1012
+ 'previousClose': this.safeString(message, 'x'),
1013
+ 'change': this.safeString(message, 'p'),
1014
+ 'percentage': this.safeString(message, 'P'),
979
1015
  'average': undefined,
980
- 'baseVolume': this.safeFloat(message, 'v'),
981
- 'quoteVolume': this.safeFloat(message, 'q'),
1016
+ 'baseVolume': this.safeString(message, 'v'),
1017
+ 'quoteVolume': this.safeString(message, 'q'),
982
1018
  'info': message,
983
- };
984
- return ticker;
1019
+ }, market);
985
1020
  }
986
1021
  handleTicker(client, message) {
987
1022
  //
@@ -2246,7 +2281,8 @@ export default class binance extends binanceRest {
2246
2281
  market = this.getMarketFromSymbols(symbols);
2247
2282
  messageHash = '::' + symbols.join(',');
2248
2283
  }
2249
- let type = this.handleMarketTypeAndParams('watchPositions', market, params);
2284
+ let type = undefined;
2285
+ [type, params] = this.handleMarketTypeAndParams('watchPositions', market, params);
2250
2286
  if (type === 'spot' || type === 'margin') {
2251
2287
  type = 'future';
2252
2288
  }
@@ -1,10 +1,10 @@
1
1
  import coinbaseRest from '../coinbase.js';
2
- import { Ticker, Int, Trade, OrderBook, Order } from '../base/types.js';
2
+ import { Strings, Tickers, Ticker, Int, Trade, OrderBook, Order } from '../base/types.js';
3
3
  export default class coinbase extends coinbaseRest {
4
4
  describe(): any;
5
5
  subscribe(name: any, symbol?: any, params?: {}): Promise<any>;
6
6
  watchTicker(symbol: any, params?: {}): Promise<Ticker>;
7
- watchTickers(symbols?: any, params?: {}): Promise<any>;
7
+ watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
8
8
  handleTickers(client: any, message: any): any;
9
9
  parseWsTicker(ticker: any, market?: any): Ticker;
10
10
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
@@ -117,7 +117,10 @@ export default class coinbase extends coinbaseRest {
117
117
  }
118
118
  const name = 'ticker_batch';
119
119
  const tickers = await this.subscribe(name, symbols, params);
120
- return tickers;
120
+ if (this.newUpdates) {
121
+ return tickers;
122
+ }
123
+ return this.tickers;
121
124
  }
122
125
  handleTickers(client, message) {
123
126
  //