ccxt 4.5.16 → 4.5.18

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 (914) hide show
  1. package/README.md +8 -5
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +7 -26
  4. package/dist/cjs/src/abstract/alpaca.js +1 -1
  5. package/dist/cjs/src/abstract/apex.js +1 -1
  6. package/dist/cjs/src/abstract/arkham.js +1 -1
  7. package/dist/cjs/src/abstract/ascendex.js +1 -1
  8. package/dist/cjs/src/abstract/backpack.js +1 -1
  9. package/dist/cjs/src/abstract/bigone.js +1 -1
  10. package/dist/cjs/src/abstract/binance.js +1 -1
  11. package/dist/cjs/src/abstract/bingx.js +1 -1
  12. package/dist/cjs/src/abstract/bit2c.js +1 -1
  13. package/dist/cjs/src/abstract/bitbank.js +1 -1
  14. package/dist/cjs/src/abstract/bitbns.js +1 -1
  15. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  16. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  17. package/dist/cjs/src/abstract/bitget.js +1 -1
  18. package/dist/cjs/src/abstract/bithumb.js +1 -1
  19. package/dist/cjs/src/abstract/bitmart.js +1 -1
  20. package/dist/cjs/src/abstract/bitmex.js +1 -1
  21. package/dist/cjs/src/abstract/bitopro.js +1 -1
  22. package/dist/cjs/src/abstract/bitrue.js +1 -1
  23. package/dist/cjs/src/abstract/bitso.js +1 -1
  24. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  25. package/dist/cjs/src/abstract/bitteam.js +1 -1
  26. package/dist/cjs/src/abstract/bittrade.js +1 -1
  27. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  28. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  29. package/dist/cjs/src/abstract/blofin.js +1 -1
  30. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  31. package/dist/cjs/src/abstract/btcbox.js +1 -1
  32. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  33. package/dist/cjs/src/abstract/btcturk.js +1 -1
  34. package/dist/cjs/src/abstract/bybit.js +1 -1
  35. package/dist/cjs/src/abstract/cex.js +1 -1
  36. package/dist/cjs/src/abstract/coinbase.js +1 -1
  37. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  38. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  39. package/dist/cjs/src/abstract/coincatch.js +1 -1
  40. package/dist/cjs/src/abstract/coincheck.js +1 -1
  41. package/dist/cjs/src/abstract/coinex.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/cryptomus.js +1 -1
  49. package/dist/cjs/src/abstract/deepcoin.js +11 -0
  50. package/dist/cjs/src/abstract/defx.js +1 -1
  51. package/dist/cjs/src/abstract/delta.js +1 -1
  52. package/dist/cjs/src/abstract/deribit.js +1 -1
  53. package/dist/cjs/src/abstract/derive.js +1 -1
  54. package/dist/cjs/src/abstract/digifinex.js +1 -1
  55. package/dist/cjs/src/abstract/exmo.js +1 -1
  56. package/dist/cjs/src/abstract/foxbit.js +1 -1
  57. package/dist/cjs/src/abstract/gate.js +1 -1
  58. package/dist/cjs/src/abstract/gemini.js +1 -1
  59. package/dist/cjs/src/abstract/hashkey.js +1 -1
  60. package/dist/cjs/src/abstract/hibachi.js +1 -1
  61. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  62. package/dist/cjs/src/abstract/hollaex.js +1 -1
  63. package/dist/cjs/src/abstract/htx.js +1 -1
  64. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  65. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  66. package/dist/cjs/src/abstract/indodax.js +1 -1
  67. package/dist/cjs/src/abstract/kraken.js +1 -1
  68. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  69. package/dist/cjs/src/abstract/kucoin.js +1 -1
  70. package/dist/cjs/src/abstract/kucoinfutures.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/modetrade.js +1 -1
  77. package/dist/cjs/src/abstract/ndax.js +1 -1
  78. package/dist/cjs/src/abstract/novadax.js +1 -1
  79. package/dist/cjs/src/abstract/oceanex.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/probit.js +1 -1
  89. package/dist/cjs/src/abstract/timex.js +1 -1
  90. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  91. package/dist/cjs/src/abstract/toobit.js +1 -1
  92. package/dist/cjs/src/abstract/upbit.js +1 -1
  93. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  94. package/dist/cjs/src/abstract/whitebit.js +1 -1
  95. package/dist/cjs/src/abstract/woo.js +1 -1
  96. package/dist/cjs/src/abstract/woofipro.js +1 -1
  97. package/dist/cjs/src/abstract/xt.js +1 -1
  98. package/dist/cjs/src/abstract/yobit.js +1 -1
  99. package/dist/cjs/src/abstract/zaif.js +1 -1
  100. package/dist/cjs/src/abstract/zonda.js +1 -1
  101. package/dist/cjs/src/alpaca.js +1 -1
  102. package/dist/cjs/src/apex.js +34 -16
  103. package/dist/cjs/src/arkham.js +21 -1
  104. package/dist/cjs/src/ascendex.js +1 -1
  105. package/dist/cjs/src/backpack.js +1 -1
  106. package/dist/cjs/src/base/Exchange.js +3 -3
  107. package/dist/cjs/src/base/Precise.js +6 -0
  108. package/dist/cjs/src/base/errors.js +6 -0
  109. package/dist/cjs/src/base/functions/crypto.js +1 -1
  110. package/dist/cjs/src/base/functions/encode.js +1 -1
  111. package/dist/cjs/src/base/functions/misc.js +1 -0
  112. package/dist/cjs/src/base/functions/number.js +6 -0
  113. package/dist/cjs/src/base/functions/platform.js +6 -0
  114. package/dist/cjs/src/base/functions/rsa.js +1 -0
  115. package/dist/cjs/src/base/functions/string.js +6 -0
  116. package/dist/cjs/src/base/functions/throttle.js +1 -1
  117. package/dist/cjs/src/base/functions/time.js +6 -0
  118. package/dist/cjs/src/base/functions/totp.js +1 -0
  119. package/dist/cjs/src/base/functions/type.js +6 -0
  120. package/dist/cjs/src/base/functions.js +1 -1
  121. package/dist/cjs/src/base/ws/Cache.js +6 -0
  122. package/dist/cjs/src/base/ws/Client.js +9 -7
  123. package/dist/cjs/src/base/ws/Future.js +1 -1
  124. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  125. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  126. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  127. package/dist/cjs/src/bequant.js +1 -1
  128. package/dist/cjs/src/bigone.js +21 -1
  129. package/dist/cjs/src/binance.js +1 -1
  130. package/dist/cjs/src/binancecoinm.js +1 -1
  131. package/dist/cjs/src/binanceus.js +32 -2
  132. package/dist/cjs/src/binanceusdm.js +1 -1
  133. package/dist/cjs/src/bingx.js +1 -1
  134. package/dist/cjs/src/bit2c.js +1 -1
  135. package/dist/cjs/src/bitbank.js +1 -1
  136. package/dist/cjs/src/bitbns.js +1 -1
  137. package/dist/cjs/src/bitfinex.js +1 -1
  138. package/dist/cjs/src/bitflyer.js +1 -1
  139. package/dist/cjs/src/bitget.js +1 -1
  140. package/dist/cjs/src/bithumb.js +1 -1
  141. package/dist/cjs/src/bitmart.js +1 -1
  142. package/dist/cjs/src/bitmex.js +1 -1
  143. package/dist/cjs/src/bitopro.js +1 -1
  144. package/dist/cjs/src/bitrue.js +1 -1
  145. package/dist/cjs/src/bitso.js +1 -1
  146. package/dist/cjs/src/bitstamp.js +1 -1
  147. package/dist/cjs/src/bitteam.js +1 -1
  148. package/dist/cjs/src/bittrade.js +1 -1
  149. package/dist/cjs/src/blockchaincom.js +1 -1
  150. package/dist/cjs/src/blofin.js +5 -2
  151. package/dist/cjs/src/btcalpha.js +1 -1
  152. package/dist/cjs/src/btcbox.js +1 -1
  153. package/dist/cjs/src/btcmarkets.js +1 -1
  154. package/dist/cjs/src/btcturk.js +1 -1
  155. package/dist/cjs/src/bybit.js +4 -1
  156. package/dist/cjs/src/cex.js +1 -1
  157. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  158. package/dist/cjs/src/coincatch.js +1 -1
  159. package/dist/cjs/src/coincheck.js +1 -1
  160. package/dist/cjs/src/coinex.js +1 -1
  161. package/dist/cjs/src/coinmate.js +1 -1
  162. package/dist/cjs/src/coinmetro.js +1 -1
  163. package/dist/cjs/src/coinone.js +1 -1
  164. package/dist/cjs/src/coinsph.js +1 -0
  165. package/dist/cjs/src/coinspot.js +1 -1
  166. package/dist/cjs/src/cryptocom.js +1 -1
  167. package/dist/cjs/src/cryptomus.js +1 -1
  168. package/dist/cjs/src/deepcoin.js +3024 -0
  169. package/dist/cjs/src/defx.js +1 -1
  170. package/dist/cjs/src/delta.js +1 -1
  171. package/dist/cjs/src/deribit.js +1 -1
  172. package/dist/cjs/src/derive.js +1 -1
  173. package/dist/cjs/src/digifinex.js +1 -1
  174. package/dist/cjs/src/exmo.js +1 -1
  175. package/dist/cjs/src/fmfwio.js +1 -1
  176. package/dist/cjs/src/foxbit.js +1 -1
  177. package/dist/cjs/src/gate.js +1 -1
  178. package/dist/cjs/src/gateio.js +1 -1
  179. package/dist/cjs/src/gemini.js +1 -1
  180. package/dist/cjs/src/hashkey.js +1 -1
  181. package/dist/cjs/src/hibachi.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/hyperliquid.js +42 -3
  187. package/dist/cjs/src/independentreserve.js +1 -1
  188. package/dist/cjs/src/indodax.js +1 -1
  189. package/dist/cjs/src/kraken.js +1 -1
  190. package/dist/cjs/src/krakenfutures.js +1 -1
  191. package/dist/cjs/src/kucoin.js +2 -1
  192. package/dist/cjs/src/kucoinfutures.js +1 -1
  193. package/dist/cjs/src/latoken.js +1 -1
  194. package/dist/cjs/src/lbank.js +1 -1
  195. package/dist/cjs/src/luno.js +1 -1
  196. package/dist/cjs/src/mercado.js +1 -1
  197. package/dist/cjs/src/mexc.js +1 -1
  198. package/dist/cjs/src/modetrade.js +1 -1
  199. package/dist/cjs/src/myokx.js +1 -1
  200. package/dist/cjs/src/ndax.js +1 -1
  201. package/dist/cjs/src/novadax.js +1 -1
  202. package/dist/cjs/src/oceanex.js +1 -1
  203. package/dist/cjs/src/okx.js +1 -1
  204. package/dist/cjs/src/okxus.js +1 -1
  205. package/dist/cjs/src/onetrading.js +1 -1
  206. package/dist/cjs/src/oxfun.js +1 -1
  207. package/dist/cjs/src/p2b.js +1 -1
  208. package/dist/cjs/src/paradex.js +1 -1
  209. package/dist/cjs/src/paymium.js +1 -1
  210. package/dist/cjs/src/poloniex.js +1 -1
  211. package/dist/cjs/src/pro/alpaca.js +1 -1
  212. package/dist/cjs/src/pro/apex.js +1 -1
  213. package/dist/cjs/src/pro/arkham.js +1 -1
  214. package/dist/cjs/src/pro/ascendex.js +3 -3
  215. package/dist/cjs/src/pro/backpack.js +1 -1
  216. package/dist/cjs/src/pro/bequant.js +1 -1
  217. package/dist/cjs/src/pro/binance.js +100 -3
  218. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  219. package/dist/cjs/src/pro/binanceus.js +20 -1
  220. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  221. package/dist/cjs/src/pro/bingx.js +1 -1
  222. package/dist/cjs/src/pro/bitfinex.js +1 -1
  223. package/dist/cjs/src/pro/bitget.js +1 -1
  224. package/dist/cjs/src/pro/bithumb.js +1 -1
  225. package/dist/cjs/src/pro/bitmart.js +1 -1
  226. package/dist/cjs/src/pro/bitmex.js +1 -1
  227. package/dist/cjs/src/pro/bitrue.js +1 -1
  228. package/dist/cjs/src/pro/bitstamp.js +1 -1
  229. package/dist/cjs/src/pro/bitvavo.js +1 -1
  230. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  231. package/dist/cjs/src/pro/blofin.js +12 -3
  232. package/dist/cjs/src/pro/bybit.js +1 -1
  233. package/dist/cjs/src/pro/cex.js +1 -1
  234. package/dist/cjs/src/pro/coinbase.js +1 -1
  235. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  236. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  237. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  238. package/dist/cjs/src/pro/coincatch.js +1 -1
  239. package/dist/cjs/src/pro/coincheck.js +1 -1
  240. package/dist/cjs/src/pro/coinex.js +1 -1
  241. package/dist/cjs/src/pro/coinone.js +1 -1
  242. package/dist/cjs/src/pro/cryptocom.js +1 -1
  243. package/dist/cjs/src/pro/deepcoin.js +1225 -0
  244. package/dist/cjs/src/pro/defx.js +1 -1
  245. package/dist/cjs/src/pro/deribit.js +1 -1
  246. package/dist/cjs/src/pro/exmo.js +1 -1
  247. package/dist/cjs/src/pro/gate.js +1 -1
  248. package/dist/cjs/src/pro/gateio.js +1 -1
  249. package/dist/cjs/src/pro/gemini.js +1 -1
  250. package/dist/cjs/src/pro/hashkey.js +1 -1
  251. package/dist/cjs/src/pro/hitbtc.js +1 -1
  252. package/dist/cjs/src/pro/hollaex.js +1 -1
  253. package/dist/cjs/src/pro/htx.js +1 -1
  254. package/dist/cjs/src/pro/huobi.js +1 -1
  255. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  256. package/dist/cjs/src/pro/independentreserve.js +1 -1
  257. package/dist/cjs/src/pro/kraken.js +6 -2
  258. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  259. package/dist/cjs/src/pro/kucoin.js +1 -1
  260. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  261. package/dist/cjs/src/pro/lbank.js +1 -0
  262. package/dist/cjs/src/pro/luno.js +1 -1
  263. package/dist/cjs/src/pro/mexc.js +1 -1
  264. package/dist/cjs/src/pro/myokx.js +1 -1
  265. package/dist/cjs/src/pro/ndax.js +1 -1
  266. package/dist/cjs/src/pro/okx.js +1 -1
  267. package/dist/cjs/src/pro/okxus.js +1 -1
  268. package/dist/cjs/src/pro/onetrading.js +1 -1
  269. package/dist/cjs/src/pro/oxfun.js +1 -1
  270. package/dist/cjs/src/pro/p2b.js +1 -1
  271. package/dist/cjs/src/pro/paradex.js +1 -1
  272. package/dist/cjs/src/pro/phemex.js +1 -1
  273. package/dist/cjs/src/pro/poloniex.js +1 -1
  274. package/dist/cjs/src/pro/probit.js +1 -1
  275. package/dist/cjs/src/pro/toobit.js +1 -1
  276. package/dist/cjs/src/pro/upbit.js +1 -1
  277. package/dist/cjs/src/pro/whitebit.js +1 -1
  278. package/dist/cjs/src/pro/xt.js +1 -1
  279. package/dist/cjs/src/probit.js +1 -1
  280. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +0 -1
  281. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  282. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  283. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  284. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  285. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  286. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  287. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  288. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  289. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  290. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  291. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  292. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  293. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  294. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  295. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  296. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  297. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  298. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  299. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  300. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  301. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  302. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  303. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  304. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  305. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  306. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  307. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  308. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  309. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  310. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  321. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  322. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  323. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  324. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  327. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  328. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  332. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  333. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  335. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  336. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  337. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  338. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  339. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  340. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  341. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  342. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  343. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  344. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  345. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  346. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  347. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  348. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  349. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  350. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  351. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  352. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  353. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  354. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  355. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  356. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  357. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  358. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  359. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  360. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  361. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  362. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  363. package/dist/cjs/src/static_dependencies/qs/formats.js +6 -0
  364. package/dist/cjs/src/static_dependencies/qs/index.js +1 -0
  365. package/dist/cjs/src/static_dependencies/qs/parse.js +1 -0
  366. package/dist/cjs/src/static_dependencies/qs/stringify.js +1 -0
  367. package/dist/cjs/src/static_dependencies/qs/utils.js +6 -0
  368. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  369. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  370. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  371. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  372. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  373. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  374. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  375. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  376. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  377. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  378. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  379. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  388. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  389. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  390. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  391. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  392. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  393. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  394. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  395. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  396. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  397. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  398. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  399. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  400. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  401. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  402. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  403. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  404. package/dist/cjs/src/timex.js +1 -0
  405. package/dist/cjs/src/tokocrypto.js +1 -1
  406. package/dist/cjs/src/toobit.js +1 -1
  407. package/dist/cjs/src/upbit.js +1 -1
  408. package/dist/cjs/src/wavesexchange.js +1 -1
  409. package/dist/cjs/src/whitebit.js +1 -1
  410. package/dist/cjs/src/woo.js +1 -1
  411. package/dist/cjs/src/woofipro.js +1 -1
  412. package/dist/cjs/src/xt.js +1 -1
  413. package/dist/cjs/src/yobit.js +1 -1
  414. package/dist/cjs/src/zaif.js +1 -1
  415. package/dist/cjs/src/zonda.js +1 -1
  416. package/js/ccxt.d.ts +8 -2
  417. package/js/ccxt.js +12 -2
  418. package/js/src/abstract/alpaca.js +6 -0
  419. package/js/src/abstract/apex.js +6 -0
  420. package/js/src/abstract/arkham.js +6 -0
  421. package/js/src/abstract/ascendex.js +6 -0
  422. package/js/src/abstract/backpack.js +6 -0
  423. package/js/src/abstract/bequant.js +6 -0
  424. package/js/src/abstract/bigone.js +6 -0
  425. package/js/src/abstract/binance.js +6 -0
  426. package/js/src/abstract/binancecoinm.js +6 -0
  427. package/js/src/abstract/binanceus.js +6 -0
  428. package/js/src/abstract/binanceusdm.js +6 -0
  429. package/js/src/abstract/bingx.js +6 -0
  430. package/js/src/abstract/bit2c.js +6 -0
  431. package/js/src/abstract/bitbank.js +6 -0
  432. package/js/src/abstract/bitbns.js +6 -0
  433. package/js/src/abstract/bitfinex.js +6 -0
  434. package/js/src/abstract/bitflyer.js +6 -0
  435. package/js/src/abstract/bitget.js +6 -0
  436. package/js/src/abstract/bithumb.js +6 -0
  437. package/js/src/abstract/bitmart.js +6 -0
  438. package/js/src/abstract/bitmex.js +6 -0
  439. package/js/src/abstract/bitopro.js +6 -0
  440. package/js/src/abstract/bitrue.js +6 -0
  441. package/js/src/abstract/bitso.js +6 -0
  442. package/js/src/abstract/bitstamp.js +6 -0
  443. package/js/src/abstract/bitteam.js +6 -0
  444. package/js/src/abstract/bittrade.js +6 -0
  445. package/js/src/abstract/bitvavo.js +6 -0
  446. package/js/src/abstract/blockchaincom.js +6 -0
  447. package/js/src/abstract/blofin.js +6 -0
  448. package/js/src/abstract/btcalpha.js +6 -0
  449. package/js/src/abstract/btcbox.js +6 -0
  450. package/js/src/abstract/btcmarkets.js +6 -0
  451. package/js/src/abstract/btcturk.js +6 -0
  452. package/js/src/abstract/bybit.d.ts +3 -0
  453. package/js/src/abstract/bybit.js +6 -0
  454. package/js/src/abstract/cex.js +6 -0
  455. package/js/src/abstract/coinbase.js +6 -0
  456. package/js/src/abstract/coinbaseadvanced.js +6 -0
  457. package/js/src/abstract/coinbaseexchange.js +6 -0
  458. package/js/src/abstract/coinbaseinternational.js +6 -0
  459. package/js/src/abstract/coincatch.js +6 -0
  460. package/js/src/abstract/coincheck.js +6 -0
  461. package/js/src/abstract/coinex.js +6 -0
  462. package/js/src/abstract/coinmate.js +6 -0
  463. package/js/src/abstract/coinmetro.js +6 -0
  464. package/js/src/abstract/coinone.js +6 -0
  465. package/js/src/abstract/coinsph.js +6 -0
  466. package/js/src/abstract/coinspot.js +6 -0
  467. package/js/src/abstract/cryptocom.js +6 -0
  468. package/js/src/abstract/cryptomus.js +6 -0
  469. package/js/src/abstract/deepcoin.d.ts +60 -0
  470. package/js/src/abstract/deepcoin.js +11 -0
  471. package/js/src/abstract/defx.js +6 -0
  472. package/js/src/abstract/delta.js +6 -0
  473. package/js/src/abstract/deribit.js +6 -0
  474. package/js/src/abstract/derive.js +6 -0
  475. package/js/src/abstract/digifinex.js +6 -0
  476. package/js/src/abstract/exmo.js +6 -0
  477. package/js/src/abstract/fmfwio.js +6 -0
  478. package/js/src/abstract/foxbit.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/hibachi.js +6 -0
  484. package/js/src/abstract/hitbtc.js +6 -0
  485. package/js/src/abstract/hollaex.js +6 -0
  486. package/js/src/abstract/htx.js +6 -0
  487. package/js/src/abstract/huobi.js +6 -0
  488. package/js/src/abstract/hyperliquid.js +6 -0
  489. package/js/src/abstract/independentreserve.js +6 -0
  490. package/js/src/abstract/indodax.js +6 -0
  491. package/js/src/abstract/kraken.js +6 -0
  492. package/js/src/abstract/krakenfutures.js +6 -0
  493. package/js/src/abstract/kucoin.js +6 -0
  494. package/js/src/abstract/kucoinfutures.js +6 -0
  495. package/js/src/abstract/latoken.js +6 -0
  496. package/js/src/abstract/lbank.js +6 -0
  497. package/js/src/abstract/luno.js +6 -0
  498. package/js/src/abstract/mercado.js +6 -0
  499. package/js/src/abstract/mexc.js +6 -0
  500. package/js/src/abstract/modetrade.js +6 -0
  501. package/js/src/abstract/myokx.js +6 -0
  502. package/js/src/abstract/ndax.js +6 -0
  503. package/js/src/abstract/novadax.js +6 -0
  504. package/js/src/abstract/oceanex.js +6 -0
  505. package/js/src/abstract/okx.js +6 -0
  506. package/js/src/abstract/okxus.js +6 -0
  507. package/js/src/abstract/onetrading.js +6 -0
  508. package/js/src/abstract/oxfun.js +6 -0
  509. package/js/src/abstract/p2b.js +6 -0
  510. package/js/src/abstract/paradex.js +6 -0
  511. package/js/src/abstract/paymium.js +6 -0
  512. package/js/src/abstract/phemex.js +6 -0
  513. package/js/src/abstract/poloniex.js +6 -0
  514. package/js/src/abstract/probit.js +6 -0
  515. package/js/src/abstract/timex.js +6 -0
  516. package/js/src/abstract/tokocrypto.js +6 -0
  517. package/js/src/abstract/toobit.js +6 -0
  518. package/js/src/abstract/upbit.js +6 -0
  519. package/js/src/abstract/wavesexchange.js +6 -0
  520. package/js/src/abstract/whitebit.js +6 -0
  521. package/js/src/abstract/woo.js +6 -0
  522. package/js/src/abstract/woofipro.js +6 -0
  523. package/js/src/abstract/xt.js +6 -0
  524. package/js/src/abstract/yobit.js +6 -0
  525. package/js/src/abstract/zaif.js +6 -0
  526. package/js/src/abstract/zonda.js +6 -0
  527. package/js/src/alpaca.js +6 -0
  528. package/js/src/apex.d.ts +2 -0
  529. package/js/src/apex.js +39 -15
  530. package/js/src/arkham.js +26 -0
  531. package/js/src/ascendex.js +6 -0
  532. package/js/src/backpack.js +6 -0
  533. package/js/src/base/Exchange.js +9 -3
  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 +14 -7
  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 +26 -0
  560. package/js/src/binance.js +6 -0
  561. package/js/src/binancecoinm.js +6 -0
  562. package/js/src/binanceus.js +37 -1
  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/bitfinex.js +6 -0
  569. package/js/src/bitflyer.js +6 -0
  570. package/js/src/bitget.js +6 -0
  571. package/js/src/bithumb.js +6 -0
  572. package/js/src/bitmart.js +6 -0
  573. package/js/src/bitmex.js +6 -0
  574. package/js/src/bitopro.js +6 -0
  575. package/js/src/bitrue.js +6 -0
  576. package/js/src/bitso.js +6 -0
  577. package/js/src/bitstamp.js +6 -0
  578. package/js/src/bitteam.js +6 -0
  579. package/js/src/bittrade.js +6 -0
  580. package/js/src/bitvavo.js +6 -0
  581. package/js/src/blockchaincom.js +6 -0
  582. package/js/src/blofin.js +10 -1
  583. package/js/src/btcalpha.js +6 -0
  584. package/js/src/btcbox.js +6 -0
  585. package/js/src/btcmarkets.js +6 -0
  586. package/js/src/btcturk.js +6 -0
  587. package/js/src/bybit.js +9 -0
  588. package/js/src/cex.js +6 -0
  589. package/js/src/coinbase.js +6 -0
  590. package/js/src/coinbaseadvanced.js +6 -0
  591. package/js/src/coinbaseexchange.js +6 -0
  592. package/js/src/coinbaseinternational.js +6 -0
  593. package/js/src/coincatch.js +6 -0
  594. package/js/src/coincheck.js +6 -0
  595. package/js/src/coinex.js +6 -0
  596. package/js/src/coinmate.js +6 -0
  597. package/js/src/coinmetro.js +6 -0
  598. package/js/src/coinone.js +6 -0
  599. package/js/src/coinsph.js +6 -0
  600. package/js/src/coinspot.js +6 -0
  601. package/js/src/cryptocom.js +6 -0
  602. package/js/src/cryptomus.js +6 -0
  603. package/js/src/deepcoin.d.ts +498 -0
  604. package/js/src/deepcoin.js +3022 -0
  605. package/js/src/defx.js +6 -0
  606. package/js/src/delta.js +6 -0
  607. package/js/src/deribit.js +6 -0
  608. package/js/src/derive.js +6 -0
  609. package/js/src/digifinex.js +6 -0
  610. package/js/src/exmo.js +6 -0
  611. package/js/src/fmfwio.js +6 -0
  612. package/js/src/foxbit.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/hibachi.js +6 -0
  618. package/js/src/hitbtc.js +6 -0
  619. package/js/src/hollaex.js +6 -0
  620. package/js/src/htx.js +6 -0
  621. package/js/src/huobi.js +6 -0
  622. package/js/src/hyperliquid.d.ts +2 -0
  623. package/js/src/hyperliquid.js +47 -2
  624. package/js/src/independentreserve.js +6 -0
  625. package/js/src/indodax.js +6 -0
  626. package/js/src/kraken.js +6 -0
  627. package/js/src/krakenfutures.js +6 -0
  628. package/js/src/kucoin.js +7 -0
  629. package/js/src/kucoinfutures.js +6 -0
  630. package/js/src/latoken.js +6 -0
  631. package/js/src/lbank.js +6 -0
  632. package/js/src/luno.js +6 -0
  633. package/js/src/mercado.js +6 -0
  634. package/js/src/mexc.js +6 -0
  635. package/js/src/modetrade.js +6 -0
  636. package/js/src/myokx.js +6 -0
  637. package/js/src/ndax.js +6 -0
  638. package/js/src/novadax.js +6 -0
  639. package/js/src/oceanex.js +6 -0
  640. package/js/src/okx.js +6 -0
  641. package/js/src/okxus.js +6 -0
  642. package/js/src/onetrading.js +6 -0
  643. package/js/src/oxfun.js +6 -0
  644. package/js/src/p2b.js +6 -0
  645. package/js/src/paradex.js +6 -0
  646. package/js/src/paymium.js +6 -0
  647. package/js/src/phemex.js +6 -0
  648. package/js/src/poloniex.js +6 -0
  649. package/js/src/pro/alpaca.js +6 -0
  650. package/js/src/pro/apex.js +6 -0
  651. package/js/src/pro/arkham.js +6 -0
  652. package/js/src/pro/ascendex.d.ts +1 -1
  653. package/js/src/pro/ascendex.js +8 -2
  654. package/js/src/pro/backpack.js +6 -0
  655. package/js/src/pro/bequant.js +6 -0
  656. package/js/src/pro/binance.d.ts +35 -1
  657. package/js/src/pro/binance.js +103 -3
  658. package/js/src/pro/binancecoinm.js +6 -0
  659. package/js/src/pro/binanceus.js +25 -0
  660. package/js/src/pro/binanceusdm.js +6 -0
  661. package/js/src/pro/bingx.js +6 -0
  662. package/js/src/pro/bitfinex.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 +6 -0
  668. package/js/src/pro/bitrue.js +6 -0
  669. package/js/src/pro/bitstamp.js +6 -0
  670. package/js/src/pro/bittrade.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.d.ts +5 -0
  674. package/js/src/pro/blofin.js +17 -2
  675. package/js/src/pro/bybit.js +6 -0
  676. package/js/src/pro/cex.js +6 -0
  677. package/js/src/pro/coinbase.js +6 -0
  678. package/js/src/pro/coinbaseadvanced.js +6 -0
  679. package/js/src/pro/coinbaseexchange.js +6 -0
  680. package/js/src/pro/coinbaseinternational.js +6 -0
  681. package/js/src/pro/coincatch.js +6 -0
  682. package/js/src/pro/coincheck.js +6 -0
  683. package/js/src/pro/coinex.js +6 -0
  684. package/js/src/pro/coinone.js +6 -0
  685. package/js/src/pro/cryptocom.js +6 -0
  686. package/js/src/pro/deepcoin.d.ts +169 -0
  687. package/js/src/pro/deepcoin.js +1224 -0
  688. package/js/src/pro/defx.js +6 -0
  689. package/js/src/pro/deribit.js +6 -0
  690. package/js/src/pro/derive.js +6 -0
  691. package/js/src/pro/exmo.js +6 -0
  692. package/js/src/pro/gate.js +6 -0
  693. package/js/src/pro/gateio.js +6 -0
  694. package/js/src/pro/gemini.js +6 -0
  695. package/js/src/pro/hashkey.js +6 -0
  696. package/js/src/pro/hitbtc.js +6 -0
  697. package/js/src/pro/hollaex.js +6 -0
  698. package/js/src/pro/htx.js +6 -0
  699. package/js/src/pro/huobi.js +6 -0
  700. package/js/src/pro/hyperliquid.js +6 -0
  701. package/js/src/pro/independentreserve.js +6 -0
  702. package/js/src/pro/kraken.js +11 -1
  703. package/js/src/pro/krakenfutures.js +6 -0
  704. package/js/src/pro/kucoin.js +6 -0
  705. package/js/src/pro/kucoinfutures.js +6 -0
  706. package/js/src/pro/lbank.js +6 -0
  707. package/js/src/pro/luno.js +6 -0
  708. package/js/src/pro/mexc.js +6 -0
  709. package/js/src/pro/modetrade.js +6 -0
  710. package/js/src/pro/myokx.js +6 -0
  711. package/js/src/pro/ndax.js +6 -0
  712. package/js/src/pro/okx.js +6 -0
  713. package/js/src/pro/okxus.js +6 -0
  714. package/js/src/pro/onetrading.js +6 -0
  715. package/js/src/pro/oxfun.js +6 -0
  716. package/js/src/pro/p2b.js +6 -0
  717. package/js/src/pro/paradex.js +6 -0
  718. package/js/src/pro/phemex.js +6 -0
  719. package/js/src/pro/poloniex.js +6 -0
  720. package/js/src/pro/probit.js +6 -0
  721. package/js/src/pro/toobit.js +6 -0
  722. package/js/src/pro/upbit.js +6 -0
  723. package/js/src/pro/whitebit.js +6 -0
  724. package/js/src/pro/woo.js +6 -0
  725. package/js/src/pro/woofipro.js +6 -0
  726. package/js/src/pro/xt.js +6 -0
  727. package/js/src/probit.js +6 -0
  728. package/js/src/protobuf/mexc/compiled.cjs +6 -0
  729. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  730. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  731. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  732. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  733. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  734. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  735. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  736. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  737. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  738. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  739. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  740. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  741. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  742. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  743. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  744. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  745. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  746. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  747. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  748. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  749. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  750. package/js/src/static_dependencies/ethers/index.js +6 -0
  751. package/js/src/static_dependencies/ethers/interface.js +6 -0
  752. package/js/src/static_dependencies/ethers/typed.js +6 -0
  753. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  754. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  755. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  756. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  757. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  758. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  759. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  760. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  761. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  762. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  763. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  764. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  765. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  766. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  767. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  768. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  769. package/js/src/static_dependencies/fflake/browser.js +6 -0
  770. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  771. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  772. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  773. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  774. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  775. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  776. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  777. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  778. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  779. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  780. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  781. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  782. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  783. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  784. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  785. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  786. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  787. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  788. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  789. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  790. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  791. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  792. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  793. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  794. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  795. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  796. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  797. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  798. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  799. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  800. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  801. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  802. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  803. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  804. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  805. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  806. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  807. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  808. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  809. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  810. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  811. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  812. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  813. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  814. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  815. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  816. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  817. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  818. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  819. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  820. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  821. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  822. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  823. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  824. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  825. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  826. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  827. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  828. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  829. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  830. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  831. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  832. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  833. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  834. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  835. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  836. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  837. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  838. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  839. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  840. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  841. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  842. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  843. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  844. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  845. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  846. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  847. package/js/src/static_dependencies/qs/formats.js +6 -0
  848. package/js/src/static_dependencies/qs/index.js +6 -0
  849. package/js/src/static_dependencies/qs/parse.js +6 -0
  850. package/js/src/static_dependencies/qs/stringify.js +6 -0
  851. package/js/src/static_dependencies/qs/utils.js +6 -0
  852. package/js/src/static_dependencies/scure-base/index.js +6 -0
  853. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  854. package/js/src/static_dependencies/starknet/constants.js +6 -0
  855. package/js/src/static_dependencies/starknet/index.js +6 -0
  856. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  857. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  858. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  859. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  860. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  861. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  862. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  863. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  864. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  865. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  866. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  867. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  868. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  869. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  870. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  871. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  872. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  873. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  874. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  875. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  876. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  877. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  878. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  879. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  880. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  881. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  882. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  883. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  884. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  885. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  886. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  887. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  888. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  889. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  890. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  891. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  892. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  893. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  894. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  895. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  896. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  897. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  898. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  899. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  900. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  901. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  902. package/js/src/timex.js +6 -0
  903. package/js/src/tokocrypto.js +6 -0
  904. package/js/src/toobit.js +6 -0
  905. package/js/src/upbit.js +6 -0
  906. package/js/src/wavesexchange.js +6 -0
  907. package/js/src/whitebit.js +6 -0
  908. package/js/src/woo.js +6 -0
  909. package/js/src/woofipro.js +6 -0
  910. package/js/src/xt.js +6 -0
  911. package/js/src/yobit.js +6 -0
  912. package/js/src/zaif.js +6 -0
  913. package/js/src/zonda.js +6 -0
  914. package/package.json +1 -1
@@ -0,0 +1,1225 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var deepcoin$1 = require('../deepcoin.js');
6
+ var errors = require('../base/errors.js');
7
+ var Cache = require('../base/ws/Cache.js');
8
+
9
+ // ----------------------------------------------------------------------------
10
+ // ---------------------------------------------------------------------------
11
+ class deepcoin extends deepcoin$1["default"] {
12
+ describe() {
13
+ return this.deepExtend(super.describe(), {
14
+ 'has': {
15
+ 'ws': true,
16
+ 'watchTicker': true,
17
+ 'watchMarkPrice': false,
18
+ 'watchMarkPrices': false,
19
+ 'watchTickers': false,
20
+ 'watchBidsAsks': false,
21
+ 'watchOrderBook': true,
22
+ 'watchTrades': true,
23
+ 'watchTradesForSymbols': false,
24
+ 'watchOrderBookForSymbols': false,
25
+ 'watchBalance': false,
26
+ 'watchLiquidations': false,
27
+ 'watchLiquidationsForSymbols': false,
28
+ 'watchMyLiquidations': false,
29
+ 'watchMyLiquidationsForSymbols': false,
30
+ 'watchOHLCV': true,
31
+ 'watchOHLCVForSymbols': false,
32
+ 'watchOrders': true,
33
+ 'watchMyTrades': true,
34
+ 'watchPositions': true,
35
+ 'watchFundingRate': false,
36
+ 'watchFundingRates': false,
37
+ 'createOrderWs': false,
38
+ 'editOrderWs': false,
39
+ 'cancelOrderWs': false,
40
+ 'cancelOrdersWs': false,
41
+ 'cancelAllOrdersWs': false,
42
+ 'unWatchTicker': true,
43
+ 'unWatchTrades': true,
44
+ 'unWatchOHLCV': true,
45
+ 'unWatchOrderBook': true,
46
+ },
47
+ 'urls': {
48
+ 'api': {
49
+ 'ws': {
50
+ 'public': {
51
+ 'spot': 'wss://stream.deepcoin.com/streamlet/trade/public/spot?platform=api',
52
+ 'swap': 'wss://stream.deepcoin.com/streamlet/trade/public/swap?platform=api',
53
+ },
54
+ 'private': 'wss://stream.deepcoin.com/v1/private',
55
+ },
56
+ },
57
+ },
58
+ 'options': {
59
+ 'lastRequestId': undefined,
60
+ 'listenKey': undefined,
61
+ 'listenKeyExpiryTimestamp': undefined,
62
+ 'authenticate': {
63
+ 'method': 'privateGetDeepcoinListenkeyExtend', // refresh existing listen key or 'privateGetDeepcoinListenkeyAcquire' - get a new one
64
+ },
65
+ 'timeframes': {
66
+ '1m': '1m',
67
+ '5m': '5m',
68
+ '15m': '15m',
69
+ '30m': '30m',
70
+ '1h': '1h',
71
+ '4h': '4h',
72
+ '12h': '12h',
73
+ '1d': '1d',
74
+ '1w': '1w',
75
+ '1M': '1o',
76
+ '1y': '1y',
77
+ },
78
+ },
79
+ 'streaming': {
80
+ 'ping': this.ping,
81
+ },
82
+ });
83
+ }
84
+ ping(client) {
85
+ const url = client.url;
86
+ if (url.indexOf('private') >= 0) {
87
+ client.lastPong = this.milliseconds();
88
+ // prevent automatic disconnects on private channel
89
+ }
90
+ return 'ping';
91
+ }
92
+ handlePong(client, message) {
93
+ client.lastPong = this.milliseconds();
94
+ return message;
95
+ }
96
+ requestId() {
97
+ const previousValue = this.safeInteger(this.options, 'lastRequestId', 0);
98
+ const newValue = this.sum(previousValue, 1);
99
+ this.options['lastRequestId'] = newValue;
100
+ return newValue;
101
+ }
102
+ createPublicRequest(market, requestId, topicID, suffix = '', unWatch = false) {
103
+ let marketId = market['symbol']; // spot markets use symbol with slash
104
+ if (market['type'] === 'swap') {
105
+ marketId = market['baseId'] + market['quoteId']; // swap markets use symbol without slash
106
+ }
107
+ let action = '1'; // subscribe
108
+ if (unWatch) {
109
+ action = '0'; // unsubscribe
110
+ }
111
+ const request = {
112
+ 'sendTopicAction': {
113
+ 'Action': action,
114
+ 'FilterValue': 'DeepCoin_' + marketId + suffix,
115
+ 'LocalNo': requestId,
116
+ 'ResumeNo': -1,
117
+ 'TopicID': topicID,
118
+ },
119
+ };
120
+ return request;
121
+ }
122
+ async watchPublic(market, messageHash, topicID, params = {}, suffix = '') {
123
+ const url = this.urls['api']['ws']['public'][market['type']];
124
+ const requestId = this.requestId();
125
+ const request = this.createPublicRequest(market, requestId, topicID, suffix);
126
+ const subscription = {
127
+ 'subHash': messageHash,
128
+ 'id': requestId,
129
+ };
130
+ return await this.watch(url, messageHash, this.deepExtend(request, params), messageHash, subscription);
131
+ }
132
+ async unWatchPublic(market, messageHash, topicID, params = {}, subscription = {}, suffix = '') {
133
+ const url = this.urls['api']['ws']['public'][market['type']];
134
+ const requestId = this.requestId();
135
+ const client = this.client(url);
136
+ const existingSubscription = this.safeDict(client.subscriptions, messageHash);
137
+ if (existingSubscription === undefined) {
138
+ throw new errors.BadRequest(this.id + ' no subscription for ' + messageHash);
139
+ }
140
+ const subId = this.safeInteger(existingSubscription, 'id');
141
+ const request = this.createPublicRequest(market, subId, topicID, suffix, true); // unsubscribe message uses the same id as the original subscribe message
142
+ const unsubHash = 'unsubscribe::' + messageHash;
143
+ subscription = this.extend(subscription, {
144
+ 'subHash': messageHash,
145
+ 'unsubHash': unsubHash,
146
+ 'symbols': [market['symbol']],
147
+ 'id': requestId,
148
+ });
149
+ return await this.watch(url, unsubHash, this.deepExtend(request, params), unsubHash, subscription);
150
+ }
151
+ async watchPrivate(messageHash, params = {}) {
152
+ const listenKey = await this.authenticate();
153
+ const url = this.urls['api']['ws']['private'] + '?listenKey=' + listenKey;
154
+ return await this.watch(url, messageHash, undefined, 'private', params);
155
+ }
156
+ async authenticate(params = {}) {
157
+ this.checkRequiredCredentials();
158
+ const time = this.milliseconds();
159
+ let listenKeyExpiryTimestamp = this.safeInteger(this.options, 'listenKeyExpiryTimestamp', time);
160
+ const expired = (time - listenKeyExpiryTimestamp) > 60000; // 1 minute before expiry
161
+ let listenKey = this.safeString(this.options, 'listenKey');
162
+ let response = undefined;
163
+ if (listenKey === undefined) {
164
+ response = await this.privateGetDeepcoinListenkeyAcquire(params);
165
+ }
166
+ else if (expired) {
167
+ const method = this.safeString(this.options, 'method', 'privateGetDeepcoinListenkeyExtend');
168
+ const getNewKey = (method === 'privateGetDeepcoinListenkeyAcquire');
169
+ if (getNewKey) {
170
+ response = await this.privateGetDeepcoinListenkeyAcquire(params);
171
+ }
172
+ else {
173
+ const request = {
174
+ 'listenkey': listenKey,
175
+ };
176
+ response = await this.privateGetDeepcoinListenkeyExtend(this.extend(request, params));
177
+ }
178
+ }
179
+ if (response !== undefined) {
180
+ const data = this.safeDict(response, 'data', {});
181
+ listenKey = this.safeString(data, 'listenkey');
182
+ listenKeyExpiryTimestamp = this.safeTimestamp(data, 'expire_time');
183
+ this.options['listenKey'] = listenKey;
184
+ this.options['listenKeyExpiryTimestamp'] = listenKeyExpiryTimestamp;
185
+ }
186
+ return listenKey;
187
+ }
188
+ /**
189
+ * @method
190
+ * @name deepcoin#watchTicker
191
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
192
+ * @see https://www.deepcoin.com/docs/publicWS/latestMarketData
193
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
194
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
195
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
196
+ */
197
+ async watchTicker(symbol, params = {}) {
198
+ await this.loadMarkets();
199
+ const market = this.market(symbol);
200
+ const messageHash = 'ticker' + '::' + market['symbol'];
201
+ return await this.watchPublic(market, messageHash, '7', params);
202
+ }
203
+ /**
204
+ * @method
205
+ * @name deepcoin#unWatchTicker
206
+ * @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
207
+ * @see https://www.deepcoin.com/docs/publicWS/latestMarketData
208
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
209
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
210
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
211
+ */
212
+ async unWatchTicker(symbol, params = {}) {
213
+ await this.loadMarkets();
214
+ const market = this.market(symbol);
215
+ const messageHash = 'ticker' + '::' + market['symbol'];
216
+ const subscription = {
217
+ 'topic': 'ticker',
218
+ };
219
+ return await this.unWatchPublic(market, messageHash, '7', params, subscription);
220
+ }
221
+ handleTicker(client, message) {
222
+ //
223
+ // a: 'PO',
224
+ // m: 'Success',
225
+ // tt: 1760913034780,
226
+ // mt: 1760913034780,
227
+ // r: [
228
+ // {
229
+ // d: {
230
+ // I: 'BTC/USDT',
231
+ // U: 1760913034742,
232
+ // PF: 0,
233
+ // E: 0,
234
+ // O: 108479.9,
235
+ // H: 109449.9,
236
+ // L: 108238,
237
+ // V: 789.3424915,
238
+ // T: 43003872.3705223,
239
+ // N: 109345,
240
+ // M: 87294.7,
241
+ // D: 0,
242
+ // V2: 3086.4496105,
243
+ // T2: 332811624.339836,
244
+ // F: 0,
245
+ // C: 0,
246
+ // BP1: 109344.9,
247
+ // AP1: 109345.2
248
+ // }
249
+ // }
250
+ // ]
251
+ //
252
+ const response = this.safeList(message, 'r', []);
253
+ const first = this.safeDict(response, 0, {});
254
+ const data = this.safeDict(first, 'd', {});
255
+ const marketId = this.safeString(data, 'I');
256
+ const market = this.safeMarket(marketId, undefined, '/');
257
+ const symbol = this.safeSymbol(marketId, market);
258
+ const parsedTicker = this.parseWsTicker(data, market);
259
+ const messageHash = 'ticker' + '::' + symbol;
260
+ this.tickers[symbol] = parsedTicker;
261
+ client.resolve(parsedTicker, messageHash);
262
+ }
263
+ parseWsTicker(ticker, market = undefined) {
264
+ //
265
+ // {
266
+ // I: 'BTC/USDT',
267
+ // U: 1760913034742,
268
+ // PF: 0,
269
+ // E: 0,
270
+ // O: 108479.9,
271
+ // H: 109449.9,
272
+ // L: 108238,
273
+ // V: 789.3424915,
274
+ // T: 43003872.3705223,
275
+ // N: 109345,
276
+ // M: 87294.7,
277
+ // D: 0,
278
+ // V2: 3086.4496105,
279
+ // T2: 332811624.339836,
280
+ // F: 0,
281
+ // C: 0,
282
+ // BP1: 109344.9,
283
+ // AP1: 109345.2
284
+ // }
285
+ //
286
+ const timestamp = this.safeInteger(ticker, 'U');
287
+ const high = this.safeNumber(ticker, 'H');
288
+ const low = this.safeNumber(ticker, 'L');
289
+ const open = this.safeNumber(ticker, 'O');
290
+ const last = this.safeNumber(ticker, 'N');
291
+ const bid = this.safeNumber(ticker, 'BP1');
292
+ const ask = this.safeNumber(ticker, 'AP1');
293
+ let baseVolume = this.safeNumber(ticker, 'V');
294
+ let quoteVolume = this.safeNumber(ticker, 'T');
295
+ if (market['inverse']) {
296
+ const temp = baseVolume;
297
+ baseVolume = quoteVolume;
298
+ quoteVolume = temp;
299
+ }
300
+ return this.safeTicker({
301
+ 'symbol': market['symbol'],
302
+ 'timestamp': timestamp,
303
+ 'datetime': this.iso8601(timestamp),
304
+ 'high': high,
305
+ 'low': low,
306
+ 'bid': bid,
307
+ 'bidVolume': undefined,
308
+ 'ask': ask,
309
+ 'askVolume': undefined,
310
+ 'vwap': undefined,
311
+ 'open': open,
312
+ 'close': last,
313
+ 'last': last,
314
+ 'previousClose': undefined,
315
+ 'change': undefined,
316
+ 'percentage': undefined,
317
+ 'average': undefined,
318
+ 'baseVolume': baseVolume,
319
+ 'quoteVolume': quoteVolume,
320
+ 'info': ticker,
321
+ }, market);
322
+ }
323
+ /**
324
+ * @method
325
+ * @name deepcoin#watchTrades
326
+ * @description watches information on multiple trades made in a market
327
+ * @see https://www.deepcoin.com/docs/publicWS/lastTransactions
328
+ * @param {string} symbol unified market symbol of the market trades were made in
329
+ * @param {int} [since] the earliest time in ms to fetch orders for
330
+ * @param {int} [limit] the maximum number of trade structures to retrieve
331
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
332
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
333
+ */
334
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
335
+ await this.loadMarkets();
336
+ const market = this.market(symbol);
337
+ const messageHash = 'trades' + '::' + market['symbol'];
338
+ const trades = await this.watchPublic(market, messageHash, '2', params);
339
+ if (this.newUpdates) {
340
+ limit = trades.getLimit(symbol, limit);
341
+ }
342
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
343
+ }
344
+ /**
345
+ * @method
346
+ * @name deepcoin#unWatchTrades
347
+ * @description unWatches the list of most recent trades for a particular symbol
348
+ * @see https://www.deepcoin.com/docs/publicWS/lastTransactions
349
+ * @param {string} symbol unified symbol of the market to fetch trades for
350
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
351
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
352
+ */
353
+ async unWatchTrades(symbol, params = {}) {
354
+ await this.loadMarkets();
355
+ const market = this.market(symbol);
356
+ const messageHash = 'trades' + '::' + market['symbol'];
357
+ const subscription = {
358
+ 'topic': 'trades',
359
+ };
360
+ return await this.unWatchPublic(market, messageHash, '2', params, subscription);
361
+ }
362
+ handleTrades(client, message) {
363
+ //
364
+ // {
365
+ // "a": "PMT",
366
+ // "b": 0,
367
+ // "tt": 1760968672380,
368
+ // "mt": 1760968672380,
369
+ // "r": [
370
+ // {
371
+ // "d": {
372
+ // "TradeID": "1001056452325378",
373
+ // "I": "BTC/USDT",
374
+ // "D": "1",
375
+ // "P": 111061,
376
+ // "V": 0.00137,
377
+ // "T": 1760968672
378
+ // }
379
+ // }
380
+ // ]
381
+ // }
382
+ //
383
+ const response = this.safeList(message, 'r', []);
384
+ const first = this.safeDict(response, 0, {});
385
+ const data = this.safeDict(first, 'd', {});
386
+ const marketId = this.safeString(data, 'I');
387
+ const market = this.safeMarket(marketId, undefined, '/');
388
+ const symbol = this.safeSymbol(marketId, market);
389
+ if (!(symbol in this.trades)) {
390
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
391
+ this.trades[symbol] = new Cache.ArrayCache(limit);
392
+ }
393
+ const strored = this.trades[symbol];
394
+ if (data !== undefined) {
395
+ const trade = this.parseWsTrade(data, market);
396
+ strored.append(trade);
397
+ }
398
+ const messageHash = 'trades' + '::' + symbol;
399
+ client.resolve(strored, messageHash);
400
+ }
401
+ parseWsTrade(trade, market = undefined) {
402
+ //
403
+ // watchTrades
404
+ // {
405
+ // "TradeID": "1001056452325378",
406
+ // "I": "BTC/USDT",
407
+ // "D": "1",
408
+ // "P": 111061,
409
+ // "V": 0.00137,
410
+ // "T": 1760968672
411
+ // }
412
+ //
413
+ // watchMyTrades
414
+ // {
415
+ // "A": "9256245",
416
+ // "CC": "USDT",
417
+ // "CP": 0,
418
+ // "D": "0",
419
+ // "F": 0.152,
420
+ // "I": "DOGE/USDT",
421
+ // "IT": 1761048103,
422
+ // "M": "9256245",
423
+ // "OS": "1001437462198486",
424
+ // "P": 0.19443,
425
+ // "T": 14.77668,
426
+ // "TI": "1001056459096708",
427
+ // "TT": 1761048103,
428
+ // "V": 76,
429
+ // "f": "DOGE",
430
+ // "l": 1,
431
+ // "m": "1",
432
+ // "o": "0"
433
+ // }
434
+ //
435
+ const direction = this.safeString(trade, 'D');
436
+ const timestamp = this.safeTimestamp2(trade, 'TT', 'T');
437
+ const matchRole = this.safeString(trade, 'm');
438
+ let fee = undefined;
439
+ const feeCost = this.safeString(trade, 'F');
440
+ if (feeCost !== undefined) {
441
+ fee = {
442
+ 'cost': feeCost,
443
+ 'currency': this.safeCurrencyCode(this.safeString(trade, 'f')),
444
+ };
445
+ }
446
+ return this.safeTrade({
447
+ 'info': trade,
448
+ 'timestamp': timestamp,
449
+ 'datetime': this.iso8601(timestamp),
450
+ 'symbol': market['symbol'],
451
+ 'id': this.safeString2(trade, 'TradeID', 'TI'),
452
+ 'order': this.safeString(trade, 'OS'),
453
+ 'type': undefined,
454
+ 'takerOrMaker': this.handleTakerOrMaker(matchRole),
455
+ 'side': this.parseTradeSide(direction),
456
+ 'price': this.safeString(trade, 'P'),
457
+ 'amount': this.safeString(trade, 'V'),
458
+ 'cost': this.safeString(trade, 'T'),
459
+ 'fee': fee,
460
+ }, market);
461
+ }
462
+ parseTradeSide(direction) {
463
+ const sides = {
464
+ '0': 'buy',
465
+ '1': 'sell',
466
+ };
467
+ return this.safeString(sides, direction, direction);
468
+ }
469
+ handleTakerOrMaker(matchRole) {
470
+ const roles = {
471
+ '0': 'maker',
472
+ '1': 'taker',
473
+ };
474
+ return this.safeString(roles, matchRole, matchRole);
475
+ }
476
+ /**
477
+ * @method
478
+ * @name deepcoin#watchOHLCV
479
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
480
+ * @see https://www.deepcoin.com/docs/publicWS/KLines
481
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
482
+ * @param {string} [timeframe] the length of time each candle represents
483
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
484
+ * @param {int} [limit] the maximum amount of candles to fetch
485
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
486
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
487
+ */
488
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
489
+ await this.loadMarkets();
490
+ const market = this.market(symbol);
491
+ symbol = market['symbol'];
492
+ const timeframes = this.safeDict(this.options, 'timeframes', {});
493
+ const interval = this.safeString(timeframes, timeframe, timeframe);
494
+ const messageHash = 'ohlcv' + '::' + symbol + '::' + timeframe;
495
+ const suffix = '_' + interval;
496
+ const ohlcv = await this.watchPublic(market, messageHash, '11', params, suffix);
497
+ if (this.newUpdates) {
498
+ limit = ohlcv.getLimit(symbol, limit);
499
+ }
500
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
501
+ }
502
+ /**
503
+ * @method
504
+ * @name deepcoin#unWatchOHLCV
505
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
506
+ * @see https://docs.backpack.exchange/#tag/Streams/Public/K-Line
507
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
508
+ * @param {string} [timeframe] the length of time each candle represents
509
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
510
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
511
+ */
512
+ async unWatchOHLCV(symbol, timeframe = '1m', params = {}) {
513
+ await this.loadMarkets();
514
+ const market = this.market(symbol);
515
+ symbol = market['symbol'];
516
+ const timeframes = this.safeDict(this.options, 'timeframes', {});
517
+ const interval = this.safeString(timeframes, timeframe, timeframe);
518
+ const messageHash = 'ohlcv' + '::' + symbol + '::' + timeframe;
519
+ const suffix = '_' + interval;
520
+ const subscription = {
521
+ 'topic': 'ohlcv',
522
+ 'symbolsAndTimeframes': [[symbol, timeframe]],
523
+ };
524
+ return await this.unWatchPublic(market, messageHash, '11', params, subscription, suffix);
525
+ }
526
+ handleOHLCV(client, message) {
527
+ //
528
+ // {
529
+ // "a": "PK",
530
+ // "tt": 1760972831580,
531
+ // "mt": 1760972831580,
532
+ // "r": [
533
+ // {
534
+ // "d": {
535
+ // "I": "BTC/USDT",
536
+ // "P": "1m",
537
+ // "B": 1760972820,
538
+ // "O": 111373,
539
+ // "C": 111382.9,
540
+ // "H": 111382.9,
541
+ // "L": 111373,
542
+ // "V": 0.2414172,
543
+ // "M": 26888.19693324
544
+ // },
545
+ // "t": "LK"
546
+ // }
547
+ // ]
548
+ // }
549
+ //
550
+ const response = this.safeList(message, 'r', []);
551
+ const first = this.safeDict(response, 0, {});
552
+ const data = this.safeDict(first, 'd', {});
553
+ const marketId = this.safeString(data, 'I');
554
+ const market = this.safeMarket(marketId, undefined, '/');
555
+ const symbol = this.safeSymbol(marketId, market);
556
+ const interval = this.safeString(data, 'P');
557
+ const timeframe = this.findTimeframe(interval);
558
+ if (!(symbol in this.ohlcvs)) {
559
+ this.ohlcvs[symbol] = {};
560
+ }
561
+ if (!(timeframe in this.ohlcvs[symbol])) {
562
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
563
+ this.ohlcvs[symbol][timeframe] = new Cache.ArrayCacheByTimestamp(limit);
564
+ }
565
+ const stored = this.ohlcvs[symbol][timeframe];
566
+ if (data !== undefined) {
567
+ const ohlcv = this.parseWsOHLCV(data, market);
568
+ stored.append(ohlcv);
569
+ }
570
+ const messageHash = 'ohlcv' + '::' + symbol + '::' + timeframe;
571
+ client.resolve(stored, messageHash);
572
+ }
573
+ parseWsOHLCV(ohlcv, market = undefined) {
574
+ //
575
+ // {
576
+ // "I": "BTC/USDT",
577
+ // "P": "1m",
578
+ // "B": 1760972820,
579
+ // "O": 111373,
580
+ // "C": 111382.9,
581
+ // "H": 111382.9,
582
+ // "L": 111373,
583
+ // "V": 0.2414172,
584
+ // "M": 26888.19693324
585
+ // }
586
+ //
587
+ return [
588
+ this.safeTimestamp(ohlcv, 'B'),
589
+ this.safeNumber(ohlcv, 'O'),
590
+ this.safeNumber(ohlcv, 'H'),
591
+ this.safeNumber(ohlcv, 'L'),
592
+ this.safeNumber(ohlcv, 'C'),
593
+ this.safeNumber(ohlcv, 'V'),
594
+ ];
595
+ }
596
+ /**
597
+ * @method
598
+ * @name deepcoin#watchOrderBook
599
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
600
+ * @see https://www.deepcoin.com/docs/publicWS/25LevelIncrementalMarketData
601
+ * @param {string} symbol unified symbol of the market to fetch the order book for
602
+ * @param {int} [limit] the maximum amount of order book entries to return.
603
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
604
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
605
+ */
606
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
607
+ await this.loadMarkets();
608
+ const market = this.market(symbol);
609
+ const messageHash = 'orderbook' + '::' + market['symbol'];
610
+ const suffix = '_0.1';
611
+ const orderbook = await this.watchPublic(market, messageHash, '25', params, suffix);
612
+ return orderbook.limit();
613
+ }
614
+ /**
615
+ * @method
616
+ * @name deepcoin#unWatchOrderBook
617
+ * @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
618
+ * @see https://www.deepcoin.com/docs/publicWS/25LevelIncrementalMarketData
619
+ * @param {string} symbol unified array of symbols
620
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
621
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
622
+ */
623
+ async unWatchOrderBook(symbol, params = {}) {
624
+ await this.loadMarkets();
625
+ const market = this.market(symbol);
626
+ const messageHash = 'orderbook' + '::' + market['symbol'];
627
+ const suffix = '_0.1';
628
+ const subscription = {
629
+ 'topic': 'orderbook',
630
+ };
631
+ return await this.unWatchPublic(market, messageHash, '25', params, subscription, suffix);
632
+ }
633
+ handleOrderBook(client, message) {
634
+ //
635
+ // {
636
+ // "a": "PMO",
637
+ // "t": "i", // i - update, f - snapshot
638
+ // "r": [
639
+ // {
640
+ // "d": { "I": "ETH/USDT", "D": "1", "P": 4021, "V": 54.39979 }
641
+ // },
642
+ // {
643
+ // "d": { "I": "ETH/USDT", "D": "0", "P": 4021.1, "V": 49.56724 }
644
+ // }
645
+ // ],
646
+ // "tt": 1760975816446,
647
+ // "mt": 1760975816446
648
+ // }
649
+ //
650
+ const response = this.safeList(message, 'r', []);
651
+ const first = this.safeDict(response, 0, {});
652
+ const data = this.safeDict(first, 'd', {});
653
+ const marketId = this.safeString(data, 'I');
654
+ const market = this.safeMarket(marketId, undefined, '/');
655
+ const symbol = this.safeSymbol(marketId, market);
656
+ if (!(symbol in this.orderbooks)) {
657
+ this.orderbooks[symbol] = this.orderBook();
658
+ }
659
+ const orderbook = this.orderbooks[symbol];
660
+ const type = this.safeString(message, 't');
661
+ if (orderbook['timestamp'] === undefined) {
662
+ if (type === 'f') {
663
+ // snapshot
664
+ this.handleOrderBookSnapshot(client, message);
665
+ }
666
+ else {
667
+ // cache the updates until the snapshot is received
668
+ orderbook.cache.push(message);
669
+ }
670
+ }
671
+ else {
672
+ this.handleOrderBookMessage(client, message, orderbook);
673
+ const messageHash = 'orderbook' + '::' + symbol;
674
+ client.resolve(orderbook, messageHash);
675
+ }
676
+ }
677
+ handleOrderBookSnapshot(client, message) {
678
+ const entries = this.safeList(message, 'r', []);
679
+ const first = this.safeDict(entries, 0, {});
680
+ const data = this.safeDict(first, 'd', {});
681
+ const marketId = this.safeString(data, 'I');
682
+ const market = this.safeMarket(marketId, undefined, '/');
683
+ const symbol = this.safeSymbol(marketId, market);
684
+ const orderbook = this.orderbooks[symbol];
685
+ const orderedEntries = {
686
+ 'bids': [],
687
+ 'asks': [],
688
+ };
689
+ for (let i = 0; i < entries.length; i++) {
690
+ const entry = entries[i];
691
+ const entryData = this.safeDict(entry, 'd', {});
692
+ const side = this.safeString(entryData, 'D');
693
+ const price = this.safeNumber(entryData, 'P');
694
+ const volume = this.safeNumber(entryData, 'V');
695
+ if (side === '0') {
696
+ // bid
697
+ orderedEntries['bids'].push([price, volume]);
698
+ }
699
+ else if (side === '1') {
700
+ // ask
701
+ orderedEntries['asks'].push([price, volume]);
702
+ }
703
+ }
704
+ const timestamp = this.safeInteger(message, 'mt');
705
+ const snapshot = this.parseOrderBook(orderedEntries, symbol, timestamp);
706
+ orderbook.reset(snapshot);
707
+ const cachedMessages = orderbook.cache;
708
+ for (let j = 0; j < cachedMessages.length; j++) {
709
+ const cachedMessage = cachedMessages[j];
710
+ this.handleOrderBookMessage(client, cachedMessage, orderbook);
711
+ }
712
+ orderbook.cache = [];
713
+ const messageHash = 'orderbook' + '::' + symbol;
714
+ client.resolve(orderbook, messageHash);
715
+ }
716
+ handleOrderBookMessage(client, message, orderbook) {
717
+ // {
718
+ // "a": "PMO",
719
+ // "t": "i", // i - update, f - snapshot
720
+ // "r": [
721
+ // {
722
+ // "d": { "I": "ETH/USDT", "D": "1", "P": 4021, "V": 54.39979 }
723
+ // },
724
+ // {
725
+ // "d": { "I": "ETH/USDT", "D": "0", "P": 4021.1, "V": 49.56724 }
726
+ // }
727
+ // ],
728
+ // "tt": 1760975816446,
729
+ // "mt": 1760975816446
730
+ // }
731
+ //
732
+ const timestamp = this.safeInteger(message, 'mt');
733
+ if (timestamp > orderbook['timestamp']) {
734
+ const response = this.safeList(message, 'r', []);
735
+ this.handleDeltas(orderbook, response);
736
+ orderbook['timestamp'] = timestamp;
737
+ orderbook['datetime'] = this.iso8601(timestamp);
738
+ }
739
+ }
740
+ handleDelta(orderbook, entry) {
741
+ const data = this.safeDict(entry, 'd', {});
742
+ const bids = orderbook['bids'];
743
+ const asks = orderbook['asks'];
744
+ const side = this.safeString(data, 'D');
745
+ const price = this.safeNumber(data, 'P');
746
+ const volume = this.safeNumber(data, 'V');
747
+ if (side === '0') {
748
+ // bid
749
+ bids.store(price, volume);
750
+ }
751
+ else if (side === '1') {
752
+ // ask
753
+ asks.store(price, volume);
754
+ }
755
+ }
756
+ /**
757
+ * @method
758
+ * @name deepcoin#watchMyTrades
759
+ * @description watches information on multiple trades made by the user
760
+ * @see https://www.deepcoin.com/docs/privateWS/Trade
761
+ * @param {string} symbol unified market symbol of the market orders were made in
762
+ * @param {int} [since] the earliest time in ms to fetch orders for
763
+ * @param {int} [limit] the maximum number of order structures to retrieve
764
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
765
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
766
+ */
767
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
768
+ let messageHash = 'myTrades';
769
+ await this.loadMarkets();
770
+ if (symbol !== undefined) {
771
+ symbol = this.symbol(symbol);
772
+ messageHash += '::' + symbol;
773
+ }
774
+ const trades = await this.watchPrivate(messageHash, params);
775
+ if (this.newUpdates) {
776
+ limit = trades.getLimit(symbol, limit);
777
+ }
778
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
779
+ }
780
+ handleMyTrade(client, message) {
781
+ //
782
+ // {
783
+ // "action": "PushTrade",
784
+ // "result": [
785
+ // {
786
+ // "table": "Trade",
787
+ // "data": {
788
+ // "A": "9256245",
789
+ // "CC": "USDT",
790
+ // "CP": 0,
791
+ // "D": "0",
792
+ // "F": 0.152,
793
+ // "I": "DOGE/USDT",
794
+ // "IT": 1761048103,
795
+ // "M": "9256245",
796
+ // "OS": "1001437462198486",
797
+ // "P": 0.19443,
798
+ // "T": 14.77668,
799
+ // "TI": "1001056459096708",
800
+ // "TT": 1761048103,
801
+ // "V": 76,
802
+ // "f": "DOGE",
803
+ // "l": 1,
804
+ // "m": "1",
805
+ // "o": "0"
806
+ // }
807
+ // }
808
+ // ]
809
+ // }
810
+ //
811
+ const result = this.safeList(message, 'result', []);
812
+ const first = this.safeDict(result, 0, {});
813
+ const data = this.safeDict(first, 'data', {});
814
+ const marketId = this.safeString(data, 'I');
815
+ const market = this.safeMarket(marketId, undefined, '/');
816
+ const symbol = this.safeSymbol(marketId, market);
817
+ const messageHash = 'myTrades';
818
+ const symbolMessageHash = messageHash + '::' + symbol;
819
+ if ((messageHash in client.futures) || (symbolMessageHash in client.futures)) {
820
+ if (this.myTrades === undefined) {
821
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
822
+ this.myTrades = new Cache.ArrayCacheBySymbolById(limit);
823
+ }
824
+ const stored = this.myTrades;
825
+ const parsed = this.parseWsTrade(data, market);
826
+ stored.append(parsed);
827
+ client.resolve(stored, messageHash);
828
+ client.resolve(stored, symbolMessageHash);
829
+ }
830
+ }
831
+ /**
832
+ * @method
833
+ * @name deepcoin#watchOrders
834
+ * @description watches information on multiple orders made by the user
835
+ * @see https://www.deepcoin.com/docs/privateWS/order
836
+ * @param {string} symbol unified market symbol of the market orders were made in
837
+ * @param {int} [since] the earliest time in ms to fetch orders for
838
+ * @param {int} [limit] the maximum number of order structures to retrieve
839
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
840
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
841
+ */
842
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
843
+ let messageHash = 'orders';
844
+ await this.loadMarkets();
845
+ if (symbol !== undefined) {
846
+ symbol = this.symbol(symbol);
847
+ messageHash += '::' + symbol;
848
+ }
849
+ const orders = await this.watchPrivate(messageHash, params);
850
+ if (this.newUpdates) {
851
+ limit = orders.getLimit(symbol, limit);
852
+ }
853
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
854
+ }
855
+ handleOrder(client, message) {
856
+ //
857
+ // {
858
+ // "action": "PushOrder",
859
+ // "result": [
860
+ // {
861
+ // "table": "Order",
862
+ // "data": {
863
+ // "D": "0",
864
+ // "I": "DOGE/USDT",
865
+ // "IT": 1761051006,
866
+ // "L": "1001437480817468",
867
+ // "OPT": "4",
868
+ // "OS": "1001437480817468",
869
+ // "OT": "0",
870
+ // "Or": "1",
871
+ // "P": 0.19537,
872
+ // "T": 14.84128,
873
+ // "U": 1761051006,
874
+ // "V": 76,
875
+ // "VT": 76,
876
+ // "i": 1,
877
+ // "l": 1,
878
+ // "o": "0",
879
+ // "p": "0",
880
+ // "t": 0.19528
881
+ // }
882
+ // }
883
+ // ]
884
+ // }
885
+ //
886
+ const result = this.safeList(message, 'result', []);
887
+ const first = this.safeDict(result, 0, {});
888
+ const data = this.safeDict(first, 'data', {});
889
+ const marketId = this.safeString(data, 'I');
890
+ const market = this.safeMarket(marketId, undefined, '/');
891
+ const symbol = this.safeSymbol(marketId, market);
892
+ const messageHash = 'orders';
893
+ const symbolMessageHash = messageHash + '::' + symbol;
894
+ if ((messageHash in client.futures) || (symbolMessageHash in client.futures)) {
895
+ if (this.orders === undefined) {
896
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
897
+ this.orders = new Cache.ArrayCacheBySymbolById(limit);
898
+ }
899
+ const parsed = this.parseWsOrder(data, market);
900
+ this.orders.append(parsed);
901
+ client.resolve(this.orders, messageHash);
902
+ client.resolve(this.orders, symbolMessageHash);
903
+ }
904
+ }
905
+ parseWsOrder(order, market = undefined) {
906
+ //
907
+ // {
908
+ // "D": "0",
909
+ // "I": "DOGE/USDT",
910
+ // "IT": 1761051006,
911
+ // "L": "1001437480817468",
912
+ // "OPT": "4",
913
+ // "OS": "1001437480817468",
914
+ // "OT": "0",
915
+ // "Or": "1",
916
+ // "P": 0.19537,
917
+ // "T": 14.84128,
918
+ // "U": 1761051006,
919
+ // "V": 76,
920
+ // "VT": 76,
921
+ // "i": 1,
922
+ // "l": 1,
923
+ // "o": "0",
924
+ // "p": "0",
925
+ // "t": 0.19528
926
+ // }
927
+ //
928
+ const state = this.safeString(order, 'Or');
929
+ const timestamp = this.safeTimestamp(order, 'IT');
930
+ const direction = this.safeString(order, 'D');
931
+ return this.safeOrder({
932
+ 'id': this.safeString(order, 'OS'),
933
+ 'clientOrderId': undefined,
934
+ 'datetime': this.iso8601(timestamp),
935
+ 'timestamp': timestamp,
936
+ 'lastTradeTimestamp': undefined,
937
+ 'lastUpdateTimestamp': this.safeTimestamp(order, 'U'),
938
+ 'status': this.parseWsOrderStatus(state),
939
+ 'symbol': market['symbol'],
940
+ 'type': undefined,
941
+ 'timeInForce': undefined,
942
+ 'side': this.parseTradeSide(direction),
943
+ 'price': this.safeString(order, 'P'),
944
+ 'average': this.safeString(order, 't'),
945
+ 'amount': this.safeString(order, 'V'),
946
+ 'filled': this.safeString(order, 'VT'),
947
+ 'remaining': undefined,
948
+ 'triggerPrice': undefined,
949
+ 'takeProfitPrice': this.safeString(order, 'TPT'),
950
+ 'stopLossPrice': this.safeString(order, 'SLT'),
951
+ 'cost': this.safeString(order, 'T'),
952
+ 'trades': undefined,
953
+ 'fee': undefined,
954
+ 'reduceOnly': undefined,
955
+ 'postOnly': undefined,
956
+ 'info': order,
957
+ }, market);
958
+ }
959
+ parseWsOrderStatus(status) {
960
+ const statuses = {
961
+ '1': 'closed',
962
+ '4': 'open',
963
+ '6': 'canceled',
964
+ };
965
+ return this.safeString(statuses, status, status);
966
+ }
967
+ /**
968
+ * @method
969
+ * @name deepcoin#watchPositions
970
+ * @description watch all open positions
971
+ * @see https://www.deepcoin.com/docs/privateWS/Position
972
+ * @param {string[]} [symbols] list of unified market symbols to watch positions for
973
+ * @param {int} [since] the earliest time in ms to fetch positions for
974
+ * @param {int} [limit] the maximum number of positions to retrieve
975
+ * @param {object} params extra parameters specific to the exchange API endpoint
976
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
977
+ */
978
+ async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
979
+ await this.loadMarkets();
980
+ const listenKey = await this.authenticate();
981
+ symbols = this.marketSymbols(symbols);
982
+ const messageHash = 'positions';
983
+ const messageHashes = [];
984
+ if (symbols !== undefined) {
985
+ for (let i = 0; i < symbols.length; i++) {
986
+ const symbol = symbols[i];
987
+ const symbolMessageHash = messageHash + '::' + symbol;
988
+ messageHashes.push(symbolMessageHash);
989
+ }
990
+ }
991
+ else {
992
+ messageHashes.push(messageHash);
993
+ }
994
+ const url = this.urls['api']['ws']['private'] + '?listenKey=' + listenKey;
995
+ const positions = await this.watchMultiple(url, messageHashes, params, ['private']);
996
+ if (this.newUpdates) {
997
+ return positions;
998
+ }
999
+ return this.filterBySymbolsSinceLimit(this.positions, symbols, since, limit, true);
1000
+ }
1001
+ handlePosition(client, message) {
1002
+ //
1003
+ // {
1004
+ // "action": "PushPosition",
1005
+ // "result": [
1006
+ // {
1007
+ // "table": "Position",
1008
+ // "data": {
1009
+ // "A": "9256245",
1010
+ // "CP": 0,
1011
+ // "I": "DOGE/USDT",
1012
+ // "M": "9256245",
1013
+ // "OP": 0.198845,
1014
+ // "Po": 151.696,
1015
+ // "U": 1761058213,
1016
+ // "i": 1,
1017
+ // "l": 1,
1018
+ // "p": "0",
1019
+ // "u": 0
1020
+ // }
1021
+ // }
1022
+ // ]
1023
+ // }
1024
+ //
1025
+ const result = this.safeList(message, 'result', []);
1026
+ const first = this.safeDict(result, 0, {});
1027
+ const data = this.safeDict(first, 'data', {});
1028
+ const marketId = this.safeString(data, 'I');
1029
+ const market = this.safeMarket(marketId, undefined, '/');
1030
+ const symbol = this.safeSymbol(marketId, market);
1031
+ const messageHash = 'positions';
1032
+ const symbolMessageHash = messageHash + '::' + symbol;
1033
+ if ((messageHash in client.futures) || (symbolMessageHash in client.futures)) {
1034
+ if (this.positions === undefined) {
1035
+ this.positions = new Cache.ArrayCacheBySymbolBySide();
1036
+ }
1037
+ const parsed = this.parseWsPosition(data, market);
1038
+ this.positions.append(parsed);
1039
+ client.resolve(this.positions, messageHash);
1040
+ client.resolve(this.positions, symbolMessageHash);
1041
+ }
1042
+ }
1043
+ parseWsPosition(position, market = undefined) {
1044
+ //
1045
+ // {
1046
+ // "A": "9256245",
1047
+ // "CP": 0,
1048
+ // "I": "DOGE/USDT",
1049
+ // "M": "9256245",
1050
+ // "OP": 0.198845,
1051
+ // "Po": 151.696,
1052
+ // "U": 1761058213,
1053
+ // "i": 1,
1054
+ // "l": 1,
1055
+ // "p": "0",
1056
+ // "u": 0
1057
+ // }
1058
+ //
1059
+ const timestamp = this.safeInteger(position, 'U');
1060
+ const direction = this.safeString(position, 'p');
1061
+ const marginMode = this.safeString(position, 'i');
1062
+ return this.safePosition({
1063
+ 'symbol': market['symbol'],
1064
+ 'id': undefined,
1065
+ 'timestamp': timestamp,
1066
+ 'datetime': this.iso8601(timestamp),
1067
+ 'contracts': this.safeString(position, 'Po'),
1068
+ 'contractSize': undefined,
1069
+ 'side': this.parsePositionSide(direction),
1070
+ 'notional': undefined,
1071
+ 'leverage': this.omitZero(this.safeString(position, 'l')),
1072
+ 'unrealizedPnl': undefined,
1073
+ 'realizedPnl': undefined,
1074
+ 'collateral': undefined,
1075
+ 'entryPrice': this.safeString(position, 'OP'),
1076
+ 'markPrice': undefined,
1077
+ 'liquidationPrice': undefined,
1078
+ 'marginMode': this.parseWsMarginMode(marginMode),
1079
+ 'hedged': true,
1080
+ 'maintenanceMargin': this.safeString(position, 'u'),
1081
+ 'maintenanceMarginPercentage': undefined,
1082
+ 'initialMargin': undefined,
1083
+ 'initialMarginPercentage': undefined,
1084
+ 'marginRatio': undefined,
1085
+ 'lastUpdateTimestamp': undefined,
1086
+ 'lastPrice': undefined,
1087
+ 'stopLossPrice': undefined,
1088
+ 'takeProfitPrice': undefined,
1089
+ 'percentage': undefined,
1090
+ 'info': position,
1091
+ });
1092
+ }
1093
+ parsePositionSide(direction) {
1094
+ if (direction === undefined) {
1095
+ return direction;
1096
+ }
1097
+ const directions = {
1098
+ '0': 'long',
1099
+ '1': 'short',
1100
+ };
1101
+ return this.safeString(directions, direction, direction);
1102
+ }
1103
+ parseWsMarginMode(marginMode) {
1104
+ if (marginMode === undefined) {
1105
+ return marginMode;
1106
+ }
1107
+ const modes = {
1108
+ '0': 'isolated',
1109
+ '1': 'cross',
1110
+ };
1111
+ return this.safeString(modes, marginMode, marginMode);
1112
+ }
1113
+ handleMessage(client, message) {
1114
+ if (message === 'pong') {
1115
+ this.handlePong(client, message);
1116
+ }
1117
+ else {
1118
+ const m = this.safeString(message, 'm');
1119
+ if ((m !== undefined) && (m !== 'Success')) {
1120
+ this.handleErrorMessage(client, message);
1121
+ }
1122
+ const action = this.safeString2(message, 'a', 'action');
1123
+ if (action === 'RecvTopicAction') {
1124
+ this.handleSubscriptionStatus(client, message);
1125
+ }
1126
+ else if (action === 'PO') {
1127
+ this.handleTicker(client, message);
1128
+ }
1129
+ else if (action === 'PMT') {
1130
+ this.handleTrades(client, message);
1131
+ }
1132
+ else if (action === 'PK') {
1133
+ this.handleOHLCV(client, message);
1134
+ }
1135
+ else if (action === 'PMO') {
1136
+ this.handleOrderBook(client, message);
1137
+ }
1138
+ else if (action === 'PushTrade') {
1139
+ this.handleMyTrade(client, message);
1140
+ }
1141
+ else if (action === 'PushOrder') {
1142
+ this.handleOrder(client, message);
1143
+ }
1144
+ else if (action === 'PushPosition') {
1145
+ this.handlePosition(client, message);
1146
+ }
1147
+ }
1148
+ }
1149
+ handleSubscriptionStatus(client, message) {
1150
+ //
1151
+ // {
1152
+ // "a": "RecvTopicAction",
1153
+ // "m": "Success",
1154
+ // "r": [
1155
+ // {
1156
+ // "d": {
1157
+ // "A": "0",
1158
+ // "L": 1,
1159
+ // "T": "7",
1160
+ // "F": "DeepCoin_BTC/USDT",
1161
+ // "R": -1
1162
+ // }
1163
+ // }
1164
+ // ]
1165
+ // }
1166
+ //
1167
+ const response = this.safeList(message, 'r', []);
1168
+ const first = this.safeDict(response, 0, {});
1169
+ const data = this.safeDict(first, 'd', {});
1170
+ const action = this.safeString(data, 'A'); // 1 = subscribe, 0 = unsubscribe
1171
+ if (action === '0') {
1172
+ const subscriptionsById = this.indexBy(client.subscriptions, 'id');
1173
+ const subId = this.safeInteger(data, 'L');
1174
+ const subscription = this.safeDict(subscriptionsById, subId, {}); // original watch subscription
1175
+ const subHash = this.safeString(subscription, 'subHash');
1176
+ const unsubHash = 'unsubscribe::' + subHash;
1177
+ const unsubsciption = this.safeDict(client.subscriptions, unsubHash, {}); // unWatch subscription
1178
+ this.handleUnSubscription(client, unsubsciption);
1179
+ }
1180
+ }
1181
+ handleUnSubscription(client, subscription) {
1182
+ const subHash = this.safeString(subscription, 'subHash');
1183
+ const unsubHash = this.safeString(subscription, 'unsubHash');
1184
+ this.cleanUnsubscription(client, subHash, unsubHash);
1185
+ this.cleanCache(subscription);
1186
+ }
1187
+ handleErrorMessage(client, message) {
1188
+ //
1189
+ // {
1190
+ // "a": "RecvTopicAction",
1191
+ // "m": "subscription cluster does not "exist": BTC/USD",
1192
+ // "r": [
1193
+ // {
1194
+ // "d": {
1195
+ // "A": "1",
1196
+ // "L": 1,
1197
+ // "T": "7",
1198
+ // "F": "DeepCoin_BTC/USD",
1199
+ // "R": -1
1200
+ // }
1201
+ // }
1202
+ // ]
1203
+ // }
1204
+ //
1205
+ const messageText = this.safeString(message, 'm', '');
1206
+ const response = this.safeList(message, 'r', []);
1207
+ const first = this.safeDict(response, 0, {});
1208
+ const data = this.safeDict(first, 'd', {});
1209
+ const requestId = this.safeInteger(data, 'L');
1210
+ const subscriptionsById = this.indexBy(client.subscriptions, 'id');
1211
+ const subscription = this.safeDict(subscriptionsById, requestId, {});
1212
+ const messageHash = this.safeString(subscription, 'subHash');
1213
+ const feedback = this.id + ' ' + this.json(message);
1214
+ try {
1215
+ this.throwExactlyMatchedException(this.exceptions['exact'], messageText, feedback);
1216
+ this.throwBroadlyMatchedException(this.exceptions['broad'], messageText, feedback);
1217
+ throw new errors.ExchangeError(feedback);
1218
+ }
1219
+ catch (e) {
1220
+ client.reject(e, messageHash);
1221
+ }
1222
+ }
1223
+ }
1224
+
1225
+ exports["default"] = deepcoin;