ccxt 4.5.4 → 4.5.6

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 (930) hide show
  1. package/README.md +7 -6
  2. package/dist/ccxt.browser.min.js +15 -15
  3. package/dist/cjs/ccxt.js +11 -6
  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/ascendex.js +1 -1
  7. package/dist/cjs/src/abstract/backpack.js +11 -0
  8. package/dist/cjs/src/abstract/bigone.js +1 -1
  9. package/dist/cjs/src/abstract/binance.js +1 -1
  10. package/dist/cjs/src/abstract/bingx.js +1 -1
  11. package/dist/cjs/src/abstract/bit2c.js +1 -1
  12. package/dist/cjs/src/abstract/bitbank.js +1 -1
  13. package/dist/cjs/src/abstract/bitbns.js +1 -1
  14. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  15. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  16. package/dist/cjs/src/abstract/bitget.js +1 -1
  17. package/dist/cjs/src/abstract/bithumb.js +1 -1
  18. package/dist/cjs/src/abstract/bitmart.js +1 -1
  19. package/dist/cjs/src/abstract/bitmex.js +1 -1
  20. package/dist/cjs/src/abstract/bitopro.js +1 -1
  21. package/dist/cjs/src/abstract/bitrue.js +1 -1
  22. package/dist/cjs/src/abstract/bitso.js +1 -1
  23. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  24. package/dist/cjs/src/abstract/bitteam.js +1 -1
  25. package/dist/cjs/src/abstract/bittrade.js +1 -1
  26. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  27. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  28. package/dist/cjs/src/abstract/blofin.js +1 -1
  29. package/dist/cjs/src/abstract/btcalpha.js +1 -1
  30. package/dist/cjs/src/abstract/btcbox.js +1 -1
  31. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  32. package/dist/cjs/src/abstract/btcturk.js +1 -1
  33. package/dist/cjs/src/abstract/bybit.js +1 -1
  34. package/dist/cjs/src/abstract/cex.js +1 -1
  35. package/dist/cjs/src/abstract/coinbase.js +1 -1
  36. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  37. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  38. package/dist/cjs/src/abstract/coincatch.js +1 -1
  39. package/dist/cjs/src/abstract/coincheck.js +1 -1
  40. package/dist/cjs/src/abstract/coinex.js +1 -1
  41. package/dist/cjs/src/abstract/coinmate.js +1 -1
  42. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  43. package/dist/cjs/src/abstract/coinone.js +1 -1
  44. package/dist/cjs/src/abstract/coinsph.js +1 -1
  45. package/dist/cjs/src/abstract/coinspot.js +1 -1
  46. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  47. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  48. package/dist/cjs/src/abstract/defx.js +1 -1
  49. package/dist/cjs/src/abstract/delta.js +1 -1
  50. package/dist/cjs/src/abstract/deribit.js +1 -1
  51. package/dist/cjs/src/abstract/derive.js +1 -1
  52. package/dist/cjs/src/abstract/digifinex.js +1 -1
  53. package/dist/cjs/src/abstract/exmo.js +1 -1
  54. package/dist/cjs/src/abstract/foxbit.js +1 -1
  55. package/dist/cjs/src/abstract/gate.js +1 -1
  56. package/dist/cjs/src/abstract/gemini.js +1 -1
  57. package/dist/cjs/src/abstract/hashkey.js +1 -1
  58. package/dist/cjs/src/abstract/hibachi.js +1 -1
  59. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  60. package/dist/cjs/src/abstract/hollaex.js +1 -1
  61. package/dist/cjs/src/abstract/htx.js +1 -1
  62. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  63. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  64. package/dist/cjs/src/abstract/indodax.js +1 -1
  65. package/dist/cjs/src/abstract/kraken.js +1 -1
  66. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  67. package/dist/cjs/src/abstract/kucoin.js +1 -1
  68. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  69. package/dist/cjs/src/abstract/latoken.js +1 -1
  70. package/dist/cjs/src/abstract/lbank.js +1 -1
  71. package/dist/cjs/src/abstract/luno.js +1 -1
  72. package/dist/cjs/src/abstract/mercado.js +1 -1
  73. package/dist/cjs/src/abstract/mexc.js +1 -1
  74. package/dist/cjs/src/abstract/modetrade.js +1 -1
  75. package/dist/cjs/src/abstract/ndax.js +1 -1
  76. package/dist/cjs/src/abstract/novadax.js +1 -1
  77. package/dist/cjs/src/abstract/oceanex.js +1 -1
  78. package/dist/cjs/src/abstract/okcoin.js +1 -1
  79. package/dist/cjs/src/abstract/okx.js +1 -1
  80. package/dist/cjs/src/abstract/onetrading.js +1 -1
  81. package/dist/cjs/src/abstract/oxfun.js +1 -1
  82. package/dist/cjs/src/abstract/p2b.js +1 -1
  83. package/dist/cjs/src/abstract/paradex.js +1 -1
  84. package/dist/cjs/src/abstract/paymium.js +1 -1
  85. package/dist/cjs/src/abstract/phemex.js +1 -1
  86. package/dist/cjs/src/abstract/poloniex.js +1 -1
  87. package/dist/cjs/src/abstract/probit.js +1 -1
  88. package/dist/cjs/src/abstract/timex.js +1 -1
  89. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  90. package/dist/cjs/src/abstract/toobit.js +11 -0
  91. package/dist/cjs/src/abstract/upbit.js +1 -1
  92. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  93. package/dist/cjs/src/abstract/whitebit.js +1 -1
  94. package/dist/cjs/src/abstract/woo.js +1 -1
  95. package/dist/cjs/src/abstract/woofipro.js +1 -1
  96. package/dist/cjs/src/abstract/xt.js +1 -1
  97. package/dist/cjs/src/abstract/yobit.js +1 -1
  98. package/dist/cjs/src/abstract/zaif.js +1 -1
  99. package/dist/cjs/src/abstract/zonda.js +1 -1
  100. package/dist/cjs/src/alpaca.js +1 -1
  101. package/dist/cjs/src/apex.js +1 -1
  102. package/dist/cjs/src/ascendex.js +1 -1
  103. package/dist/cjs/src/backpack.js +2280 -0
  104. package/dist/cjs/src/base/Exchange.js +226 -62
  105. package/dist/cjs/src/base/Precise.js +0 -6
  106. package/dist/cjs/src/base/errors.js +0 -6
  107. package/dist/cjs/src/base/functions/crypto.js +1 -1
  108. package/dist/cjs/src/base/functions/encode.js +1 -1
  109. package/dist/cjs/src/base/functions/misc.js +0 -1
  110. package/dist/cjs/src/base/functions/number.js +0 -6
  111. package/dist/cjs/src/base/functions/platform.js +0 -6
  112. package/dist/cjs/src/base/functions/rsa.js +0 -1
  113. package/dist/cjs/src/base/functions/string.js +0 -6
  114. package/dist/cjs/src/base/functions/throttle.js +1 -1
  115. package/dist/cjs/src/base/functions/time.js +0 -6
  116. package/dist/cjs/src/base/functions/totp.js +0 -1
  117. package/dist/cjs/src/base/functions/type.js +0 -6
  118. package/dist/cjs/src/base/functions.js +1 -1
  119. package/dist/cjs/src/base/ws/Cache.js +0 -6
  120. package/dist/cjs/src/base/ws/Client.js +0 -1
  121. package/dist/cjs/src/base/ws/Future.js +1 -1
  122. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  123. package/dist/cjs/src/base/ws/OrderBookSide.js +0 -6
  124. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  125. package/dist/cjs/src/bequant.js +1 -1
  126. package/dist/cjs/src/bigone.js +5 -5
  127. package/dist/cjs/src/binance.js +80 -21
  128. package/dist/cjs/src/binancecoinm.js +1 -1
  129. package/dist/cjs/src/binanceus.js +1 -1
  130. package/dist/cjs/src/binanceusdm.js +1 -1
  131. package/dist/cjs/src/bingx.js +6 -3
  132. package/dist/cjs/src/bit2c.js +1 -1
  133. package/dist/cjs/src/bitbank.js +2 -2
  134. package/dist/cjs/src/bitbns.js +1 -1
  135. package/dist/cjs/src/bitfinex.js +1 -1
  136. package/dist/cjs/src/bitflyer.js +1 -1
  137. package/dist/cjs/src/bitget.js +73 -19
  138. package/dist/cjs/src/bithumb.js +1 -1
  139. package/dist/cjs/src/bitmart.js +1 -1
  140. package/dist/cjs/src/bitmex.js +1 -1
  141. package/dist/cjs/src/bitopro.js +1 -1
  142. package/dist/cjs/src/bitrue.js +1 -1
  143. package/dist/cjs/src/bitso.js +1 -1
  144. package/dist/cjs/src/bitstamp.js +1 -1
  145. package/dist/cjs/src/bitteam.js +1 -1
  146. package/dist/cjs/src/bittrade.js +1 -1
  147. package/dist/cjs/src/blockchaincom.js +1 -1
  148. package/dist/cjs/src/blofin.js +1 -1
  149. package/dist/cjs/src/btcalpha.js +1 -1
  150. package/dist/cjs/src/btcbox.js +1 -1
  151. package/dist/cjs/src/btcmarkets.js +1 -1
  152. package/dist/cjs/src/btcturk.js +1 -1
  153. package/dist/cjs/src/bybit.js +187 -128
  154. package/dist/cjs/src/cex.js +1 -1
  155. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  156. package/dist/cjs/src/coincatch.js +2 -2
  157. package/dist/cjs/src/coincheck.js +1 -1
  158. package/dist/cjs/src/coinex.js +1 -1
  159. package/dist/cjs/src/coinmate.js +1 -1
  160. package/dist/cjs/src/coinmetro.js +12 -1
  161. package/dist/cjs/src/coinone.js +1 -1
  162. package/dist/cjs/src/coinsph.js +4 -2
  163. package/dist/cjs/src/coinspot.js +1 -1
  164. package/dist/cjs/src/cryptocom.js +7 -4
  165. package/dist/cjs/src/cryptomus.js +1 -1
  166. package/dist/cjs/src/defx.js +1 -1
  167. package/dist/cjs/src/delta.js +1 -1
  168. package/dist/cjs/src/deribit.js +1 -1
  169. package/dist/cjs/src/derive.js +1 -1
  170. package/dist/cjs/src/digifinex.js +1 -1
  171. package/dist/cjs/src/exmo.js +1 -1
  172. package/dist/cjs/src/fmfwio.js +1 -1
  173. package/dist/cjs/src/foxbit.js +1 -1
  174. package/dist/cjs/src/gate.js +9 -3
  175. package/dist/cjs/src/gateio.js +1 -1
  176. package/dist/cjs/src/gemini.js +13 -8
  177. package/dist/cjs/src/hashkey.js +1 -1
  178. package/dist/cjs/src/hibachi.js +1 -1
  179. package/dist/cjs/src/hitbtc.js +0 -1
  180. package/dist/cjs/src/hollaex.js +1 -1
  181. package/dist/cjs/src/htx.js +1 -1
  182. package/dist/cjs/src/huobi.js +1 -1
  183. package/dist/cjs/src/hyperliquid.js +4 -1
  184. package/dist/cjs/src/independentreserve.js +1 -1
  185. package/dist/cjs/src/indodax.js +1 -1
  186. package/dist/cjs/src/kraken.js +7 -3
  187. package/dist/cjs/src/krakenfutures.js +2 -2
  188. package/dist/cjs/src/kucoin.js +2 -3
  189. package/dist/cjs/src/kucoinfutures.js +52 -4
  190. package/dist/cjs/src/latoken.js +1 -1
  191. package/dist/cjs/src/lbank.js +1 -1
  192. package/dist/cjs/src/luno.js +5 -2
  193. package/dist/cjs/src/mercado.js +1 -1
  194. package/dist/cjs/src/mexc.js +5 -2
  195. package/dist/cjs/src/modetrade.js +1 -1
  196. package/dist/cjs/src/myokx.js +1 -1
  197. package/dist/cjs/src/ndax.js +1 -1
  198. package/dist/cjs/src/novadax.js +1 -1
  199. package/dist/cjs/src/oceanex.js +1 -1
  200. package/dist/cjs/src/okcoin.js +5 -2
  201. package/dist/cjs/src/okx.js +59 -18
  202. package/dist/cjs/src/okxus.js +1 -1
  203. package/dist/cjs/src/onetrading.js +161 -66
  204. package/dist/cjs/src/oxfun.js +1 -1
  205. package/dist/cjs/src/p2b.js +1 -1
  206. package/dist/cjs/src/paradex.js +1 -1
  207. package/dist/cjs/src/paymium.js +1 -1
  208. package/dist/cjs/src/phemex.js +16 -10
  209. package/dist/cjs/src/poloniex.js +1 -1
  210. package/dist/cjs/src/pro/alpaca.js +1 -1
  211. package/dist/cjs/src/pro/apex.js +2 -1
  212. package/dist/cjs/src/pro/ascendex.js +1 -1
  213. package/dist/cjs/src/pro/backpack.js +1325 -0
  214. package/dist/cjs/src/pro/bequant.js +1 -1
  215. package/dist/cjs/src/pro/binance.js +159 -19
  216. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  217. package/dist/cjs/src/pro/binanceus.js +1 -1
  218. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  219. package/dist/cjs/src/pro/bingx.js +1 -1
  220. package/dist/cjs/src/pro/bitfinex.js +1 -1
  221. package/dist/cjs/src/pro/bitget.js +373 -88
  222. package/dist/cjs/src/pro/bithumb.js +1 -1
  223. package/dist/cjs/src/pro/bitmart.js +1 -1
  224. package/dist/cjs/src/pro/bitmex.js +1 -1
  225. package/dist/cjs/src/pro/bitrue.js +1 -1
  226. package/dist/cjs/src/pro/bitstamp.js +1 -1
  227. package/dist/cjs/src/pro/bitvavo.js +1 -1
  228. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  229. package/dist/cjs/src/pro/blofin.js +1 -1
  230. package/dist/cjs/src/pro/bybit.js +4 -1
  231. package/dist/cjs/src/pro/cex.js +2 -1
  232. package/dist/cjs/src/pro/coinbase.js +227 -1
  233. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  234. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  235. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  236. package/dist/cjs/src/pro/coincatch.js +1 -1
  237. package/dist/cjs/src/pro/coincheck.js +1 -1
  238. package/dist/cjs/src/pro/coinex.js +1 -1
  239. package/dist/cjs/src/pro/coinone.js +1 -1
  240. package/dist/cjs/src/pro/cryptocom.js +1 -1
  241. package/dist/cjs/src/pro/defx.js +1 -1
  242. package/dist/cjs/src/pro/deribit.js +1 -1
  243. package/dist/cjs/src/pro/exmo.js +1 -1
  244. package/dist/cjs/src/pro/gate.js +1 -1
  245. package/dist/cjs/src/pro/gateio.js +1 -1
  246. package/dist/cjs/src/pro/gemini.js +1 -1
  247. package/dist/cjs/src/pro/hashkey.js +1 -1
  248. package/dist/cjs/src/pro/hitbtc.js +1 -1
  249. package/dist/cjs/src/pro/hollaex.js +1 -1
  250. package/dist/cjs/src/pro/htx.js +1 -1
  251. package/dist/cjs/src/pro/huobi.js +1 -1
  252. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  253. package/dist/cjs/src/pro/independentreserve.js +2 -1
  254. package/dist/cjs/src/pro/kraken.js +1 -1
  255. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  256. package/dist/cjs/src/pro/kucoin.js +1 -1
  257. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  258. package/dist/cjs/src/pro/lbank.js +0 -1
  259. package/dist/cjs/src/pro/luno.js +1 -1
  260. package/dist/cjs/src/pro/mexc.js +24 -24
  261. package/dist/cjs/src/pro/myokx.js +1 -1
  262. package/dist/cjs/src/pro/ndax.js +1 -1
  263. package/dist/cjs/src/pro/okcoin.js +1 -1
  264. package/dist/cjs/src/pro/okx.js +47 -11
  265. package/dist/cjs/src/pro/okxus.js +1 -1
  266. package/dist/cjs/src/pro/onetrading.js +1 -1
  267. package/dist/cjs/src/pro/oxfun.js +1 -1
  268. package/dist/cjs/src/pro/p2b.js +1 -1
  269. package/dist/cjs/src/pro/paradex.js +1 -1
  270. package/dist/cjs/src/pro/phemex.js +1 -1
  271. package/dist/cjs/src/pro/poloniex.js +1 -1
  272. package/dist/cjs/src/pro/probit.js +1 -1
  273. package/dist/cjs/src/pro/toobit.js +1163 -0
  274. package/dist/cjs/src/pro/upbit.js +1 -1
  275. package/dist/cjs/src/pro/whitebit.js +1 -1
  276. package/dist/cjs/src/pro/xt.js +1 -1
  277. package/dist/cjs/src/probit.js +1 -1
  278. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
  279. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
  280. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  281. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  282. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
  283. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
  284. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
  285. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
  286. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
  287. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
  288. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
  289. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
  290. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
  291. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
  292. package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
  293. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  294. package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
  295. package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
  296. package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
  297. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
  298. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
  299. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
  300. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
  301. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  302. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
  303. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
  304. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
  305. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
  306. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  307. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
  308. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
  309. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  310. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  311. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  312. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  313. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
  314. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  315. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  316. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  317. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  318. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  319. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  320. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  321. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
  322. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  323. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  324. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  325. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -1
  326. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  327. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  328. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  329. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  330. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  331. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  332. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  333. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  334. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +0 -6
  335. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
  336. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
  337. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
  338. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
  339. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
  340. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
  341. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
  342. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
  343. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
  344. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  345. package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
  346. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
  347. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
  348. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
  349. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
  350. package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
  351. package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
  352. package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
  353. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  354. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  355. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
  356. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
  357. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
  358. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
  359. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
  360. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  361. package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
  362. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  363. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  364. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +0 -6
  365. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  366. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  367. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
  368. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
  369. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
  370. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  371. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  372. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  373. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -1
  374. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
  375. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  376. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  377. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  378. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
  379. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  380. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -1
  381. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
  382. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  383. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
  384. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
  385. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
  386. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  387. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
  388. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
  389. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
  390. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
  391. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
  392. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
  393. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
  394. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  395. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
  396. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  397. package/dist/cjs/src/timex.js +0 -1
  398. package/dist/cjs/src/tokocrypto.js +1 -1
  399. package/dist/cjs/src/toobit.js +2999 -0
  400. package/dist/cjs/src/upbit.js +1 -1
  401. package/dist/cjs/src/wavesexchange.js +1 -1
  402. package/dist/cjs/src/whitebit.js +1 -1
  403. package/dist/cjs/src/woo.js +1 -1
  404. package/dist/cjs/src/woofipro.js +1 -1
  405. package/dist/cjs/src/xt.js +10 -1
  406. package/dist/cjs/src/yobit.js +10 -1
  407. package/dist/cjs/src/zaif.js +1 -1
  408. package/dist/cjs/src/zonda.js +1 -1
  409. package/js/ccxt.d.ts +14 -8
  410. package/js/ccxt.js +10 -12
  411. package/js/src/abstract/alpaca.js +0 -6
  412. package/js/src/abstract/apex.js +0 -6
  413. package/js/src/abstract/ascendex.js +0 -6
  414. package/js/src/abstract/backpack.d.ts +63 -0
  415. package/js/src/abstract/backpack.js +5 -0
  416. package/js/src/abstract/bequant.js +0 -6
  417. package/js/src/abstract/bigone.js +0 -6
  418. package/js/src/abstract/binance.js +0 -6
  419. package/js/src/abstract/binancecoinm.js +0 -6
  420. package/js/src/abstract/binanceus.js +0 -6
  421. package/js/src/abstract/binanceusdm.js +0 -6
  422. package/js/src/abstract/bingx.js +0 -6
  423. package/js/src/abstract/bit2c.js +0 -6
  424. package/js/src/abstract/bitbank.js +0 -6
  425. package/js/src/abstract/bitbns.js +0 -6
  426. package/js/src/abstract/bitfinex.js +0 -6
  427. package/js/src/abstract/bitflyer.js +0 -6
  428. package/js/src/abstract/bitget.js +0 -6
  429. package/js/src/abstract/bithumb.js +0 -6
  430. package/js/src/abstract/bitmart.js +0 -6
  431. package/js/src/abstract/bitmex.js +0 -6
  432. package/js/src/abstract/bitopro.js +0 -6
  433. package/js/src/abstract/bitrue.js +0 -6
  434. package/js/src/abstract/bitso.js +0 -6
  435. package/js/src/abstract/bitstamp.js +0 -6
  436. package/js/src/abstract/bitteam.js +0 -6
  437. package/js/src/abstract/bittrade.js +0 -6
  438. package/js/src/abstract/bitvavo.js +0 -6
  439. package/js/src/abstract/blockchaincom.js +0 -6
  440. package/js/src/abstract/blofin.js +0 -6
  441. package/js/src/abstract/btcalpha.js +0 -6
  442. package/js/src/abstract/btcbox.js +0 -6
  443. package/js/src/abstract/btcmarkets.js +0 -6
  444. package/js/src/abstract/btcturk.js +0 -6
  445. package/js/src/abstract/bybit.js +0 -6
  446. package/js/src/abstract/cex.js +0 -6
  447. package/js/src/abstract/coinbase.js +0 -6
  448. package/js/src/abstract/coinbaseadvanced.js +0 -6
  449. package/js/src/abstract/coinbaseexchange.js +0 -6
  450. package/js/src/abstract/coinbaseinternational.js +0 -6
  451. package/js/src/abstract/coincatch.js +0 -6
  452. package/js/src/abstract/coincheck.js +0 -6
  453. package/js/src/abstract/coinex.js +0 -6
  454. package/js/src/abstract/coinmate.js +0 -6
  455. package/js/src/abstract/coinmetro.js +0 -6
  456. package/js/src/abstract/coinone.js +0 -6
  457. package/js/src/abstract/coinsph.js +0 -6
  458. package/js/src/abstract/coinspot.js +0 -6
  459. package/js/src/abstract/cryptocom.js +0 -6
  460. package/js/src/abstract/cryptomus.js +0 -6
  461. package/js/src/abstract/defx.js +0 -6
  462. package/js/src/abstract/delta.js +0 -6
  463. package/js/src/abstract/deribit.js +0 -6
  464. package/js/src/abstract/derive.js +0 -6
  465. package/js/src/abstract/digifinex.js +0 -6
  466. package/js/src/abstract/exmo.js +0 -6
  467. package/js/src/abstract/fmfwio.js +0 -6
  468. package/js/src/abstract/foxbit.js +0 -6
  469. package/js/src/abstract/gate.js +0 -6
  470. package/js/src/abstract/gateio.js +0 -6
  471. package/js/src/abstract/gemini.js +0 -6
  472. package/js/src/abstract/hashkey.js +0 -6
  473. package/js/src/abstract/hibachi.js +0 -6
  474. package/js/src/abstract/hitbtc.js +0 -6
  475. package/js/src/abstract/hollaex.js +0 -6
  476. package/js/src/abstract/htx.js +0 -6
  477. package/js/src/abstract/huobi.js +0 -6
  478. package/js/src/abstract/hyperliquid.js +0 -6
  479. package/js/src/abstract/independentreserve.js +0 -6
  480. package/js/src/abstract/indodax.js +0 -6
  481. package/js/src/abstract/kraken.js +0 -6
  482. package/js/src/abstract/krakenfutures.js +0 -6
  483. package/js/src/abstract/kucoin.js +0 -6
  484. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  485. package/js/src/abstract/kucoinfutures.js +0 -6
  486. package/js/src/abstract/latoken.js +0 -6
  487. package/js/src/abstract/lbank.js +0 -6
  488. package/js/src/abstract/luno.js +0 -6
  489. package/js/src/abstract/mercado.js +0 -6
  490. package/js/src/abstract/mexc.js +0 -6
  491. package/js/src/abstract/modetrade.js +0 -6
  492. package/js/src/abstract/myokx.d.ts +1 -0
  493. package/js/src/abstract/myokx.js +0 -6
  494. package/js/src/abstract/ndax.js +0 -6
  495. package/js/src/abstract/novadax.js +0 -6
  496. package/js/src/abstract/oceanex.js +0 -6
  497. package/js/src/abstract/okcoin.js +0 -6
  498. package/js/src/abstract/okx.d.ts +1 -0
  499. package/js/src/abstract/okx.js +0 -6
  500. package/js/src/abstract/okxus.d.ts +1 -0
  501. package/js/src/abstract/okxus.js +0 -6
  502. package/js/src/abstract/onetrading.js +0 -6
  503. package/js/src/abstract/oxfun.js +0 -6
  504. package/js/src/abstract/p2b.js +0 -6
  505. package/js/src/abstract/paradex.js +0 -6
  506. package/js/src/abstract/paymium.js +0 -6
  507. package/js/src/abstract/phemex.d.ts +1 -1
  508. package/js/src/abstract/phemex.js +0 -6
  509. package/js/src/abstract/poloniex.js +0 -6
  510. package/js/src/abstract/probit.js +0 -6
  511. package/js/src/abstract/timex.js +0 -6
  512. package/js/src/abstract/tokocrypto.js +0 -6
  513. package/js/src/abstract/toobit.d.ts +66 -0
  514. package/js/src/abstract/toobit.js +5 -0
  515. package/js/src/abstract/upbit.js +0 -6
  516. package/js/src/abstract/wavesexchange.js +0 -6
  517. package/js/src/abstract/whitebit.js +0 -6
  518. package/js/src/abstract/woo.js +0 -6
  519. package/js/src/abstract/woofipro.js +0 -6
  520. package/js/src/abstract/xt.js +0 -6
  521. package/js/src/abstract/yobit.js +0 -6
  522. package/js/src/abstract/zaif.js +0 -6
  523. package/js/src/abstract/zonda.js +0 -6
  524. package/js/src/alpaca.js +0 -6
  525. package/js/src/apex.js +0 -6
  526. package/js/src/ascendex.js +0 -6
  527. package/js/src/backpack.d.ts +371 -0
  528. package/js/src/backpack.js +2273 -0
  529. package/js/src/base/Exchange.d.ts +48 -40
  530. package/js/src/base/Exchange.js +231 -72
  531. package/js/src/base/Precise.js +0 -6
  532. package/js/src/base/errorHierarchy.js +0 -6
  533. package/js/src/base/errors.js +0 -6
  534. package/js/src/base/functions/crypto.js +0 -6
  535. package/js/src/base/functions/encode.js +0 -6
  536. package/js/src/base/functions/generic.js +0 -6
  537. package/js/src/base/functions/misc.js +0 -6
  538. package/js/src/base/functions/number.js +0 -6
  539. package/js/src/base/functions/platform.js +0 -6
  540. package/js/src/base/functions/rsa.js +0 -6
  541. package/js/src/base/functions/string.js +0 -6
  542. package/js/src/base/functions/throttle.js +0 -6
  543. package/js/src/base/functions/time.js +0 -6
  544. package/js/src/base/functions/totp.js +0 -6
  545. package/js/src/base/functions/type.js +0 -6
  546. package/js/src/base/functions.js +0 -6
  547. package/js/src/base/types.d.ts +1 -3
  548. package/js/src/base/types.js +0 -6
  549. package/js/src/base/ws/Cache.js +0 -6
  550. package/js/src/base/ws/Client.js +0 -6
  551. package/js/src/base/ws/Future.js +0 -6
  552. package/js/src/base/ws/OrderBook.js +0 -6
  553. package/js/src/base/ws/OrderBookSide.js +0 -6
  554. package/js/src/base/ws/WsClient.js +0 -6
  555. package/js/src/base/ws/functions.js +0 -6
  556. package/js/src/bequant.js +0 -6
  557. package/js/src/bigone.js +4 -10
  558. package/js/src/binance.d.ts +10 -1
  559. package/js/src/binance.js +79 -26
  560. package/js/src/binancecoinm.js +0 -6
  561. package/js/src/binanceus.js +0 -6
  562. package/js/src/binanceusdm.js +0 -6
  563. package/js/src/bingx.js +5 -8
  564. package/js/src/bit2c.js +0 -6
  565. package/js/src/bitbank.js +1 -7
  566. package/js/src/bitbns.js +0 -6
  567. package/js/src/bitfinex.js +0 -6
  568. package/js/src/bitflyer.js +0 -6
  569. package/js/src/bitget.d.ts +3 -1
  570. package/js/src/bitget.js +72 -24
  571. package/js/src/bithumb.js +0 -6
  572. package/js/src/bitmart.js +0 -6
  573. package/js/src/bitmex.js +0 -6
  574. package/js/src/bitopro.js +0 -6
  575. package/js/src/bitrue.js +0 -6
  576. package/js/src/bitso.js +0 -6
  577. package/js/src/bitstamp.js +0 -6
  578. package/js/src/bitteam.js +0 -6
  579. package/js/src/bittrade.js +0 -6
  580. package/js/src/bitvavo.js +0 -6
  581. package/js/src/blockchaincom.js +0 -6
  582. package/js/src/blofin.js +0 -6
  583. package/js/src/btcalpha.js +0 -6
  584. package/js/src/btcbox.js +0 -6
  585. package/js/src/btcmarkets.js +0 -6
  586. package/js/src/btcturk.js +0 -6
  587. package/js/src/bybit.d.ts +8 -0
  588. package/js/src/bybit.js +186 -133
  589. package/js/src/cex.js +0 -6
  590. package/js/src/coinbase.d.ts +1 -1
  591. package/js/src/coinbase.js +0 -6
  592. package/js/src/coinbaseadvanced.js +0 -6
  593. package/js/src/coinbaseexchange.js +0 -6
  594. package/js/src/coinbaseinternational.js +0 -6
  595. package/js/src/coincatch.js +1 -7
  596. package/js/src/coincheck.js +0 -6
  597. package/js/src/coinex.js +0 -6
  598. package/js/src/coinmate.js +0 -6
  599. package/js/src/coinmetro.js +11 -6
  600. package/js/src/coinone.js +0 -6
  601. package/js/src/coinsph.js +4 -7
  602. package/js/src/coinspot.js +0 -6
  603. package/js/src/cryptocom.js +6 -9
  604. package/js/src/cryptomus.js +0 -6
  605. package/js/src/defx.js +0 -6
  606. package/js/src/delta.js +0 -6
  607. package/js/src/deribit.js +0 -6
  608. package/js/src/derive.js +0 -6
  609. package/js/src/digifinex.js +0 -6
  610. package/js/src/exmo.js +0 -6
  611. package/js/src/fmfwio.js +0 -6
  612. package/js/src/foxbit.js +0 -6
  613. package/js/src/gate.d.ts +6 -0
  614. package/js/src/gate.js +8 -8
  615. package/js/src/gateio.js +0 -6
  616. package/js/src/gemini.js +12 -13
  617. package/js/src/hashkey.js +0 -6
  618. package/js/src/hibachi.js +0 -6
  619. package/js/src/hitbtc.js +0 -6
  620. package/js/src/hollaex.js +0 -6
  621. package/js/src/htx.js +0 -6
  622. package/js/src/huobi.js +0 -6
  623. package/js/src/hyperliquid.js +3 -6
  624. package/js/src/independentreserve.js +0 -6
  625. package/js/src/indodax.js +0 -6
  626. package/js/src/kraken.d.ts +1 -1
  627. package/js/src/kraken.js +6 -8
  628. package/js/src/krakenfutures.js +1 -7
  629. package/js/src/kucoin.js +1 -8
  630. package/js/src/kucoinfutures.d.ts +14 -1
  631. package/js/src/kucoinfutures.js +51 -9
  632. package/js/src/latoken.js +0 -6
  633. package/js/src/lbank.js +0 -6
  634. package/js/src/luno.js +4 -7
  635. package/js/src/mercado.js +0 -6
  636. package/js/src/mexc.js +4 -7
  637. package/js/src/modetrade.js +0 -6
  638. package/js/src/myokx.js +0 -6
  639. package/js/src/ndax.js +0 -6
  640. package/js/src/novadax.js +0 -6
  641. package/js/src/oceanex.js +0 -6
  642. package/js/src/okcoin.js +4 -7
  643. package/js/src/okx.js +58 -23
  644. package/js/src/okxus.js +0 -6
  645. package/js/src/onetrading.d.ts +1 -0
  646. package/js/src/onetrading.js +160 -71
  647. package/js/src/oxfun.js +0 -6
  648. package/js/src/p2b.js +0 -6
  649. package/js/src/paradex.js +0 -6
  650. package/js/src/paymium.js +0 -6
  651. package/js/src/phemex.d.ts +3 -3
  652. package/js/src/phemex.js +16 -16
  653. package/js/src/poloniex.js +0 -6
  654. package/js/src/pro/alpaca.js +0 -6
  655. package/js/src/pro/apex.js +1 -6
  656. package/js/src/pro/ascendex.js +0 -6
  657. package/js/src/pro/backpack.d.ts +264 -0
  658. package/js/src/pro/backpack.js +1318 -0
  659. package/js/src/pro/bequant.js +0 -6
  660. package/js/src/pro/binance.d.ts +24 -0
  661. package/js/src/pro/binance.js +159 -25
  662. package/js/src/pro/binancecoinm.js +0 -6
  663. package/js/src/pro/binanceus.js +0 -6
  664. package/js/src/pro/binanceusdm.js +0 -6
  665. package/js/src/pro/bingx.js +0 -6
  666. package/js/src/pro/bitfinex.js +0 -6
  667. package/js/src/pro/bitget.d.ts +12 -0
  668. package/js/src/pro/bitget.js +372 -93
  669. package/js/src/pro/bithumb.js +0 -6
  670. package/js/src/pro/bitmart.js +0 -6
  671. package/js/src/pro/bitmex.js +0 -6
  672. package/js/src/pro/bitopro.js +0 -6
  673. package/js/src/pro/bitrue.js +0 -6
  674. package/js/src/pro/bitstamp.js +0 -6
  675. package/js/src/pro/bittrade.js +0 -6
  676. package/js/src/pro/bitvavo.js +0 -6
  677. package/js/src/pro/blockchaincom.js +0 -6
  678. package/js/src/pro/blofin.js +0 -6
  679. package/js/src/pro/bybit.js +3 -6
  680. package/js/src/pro/cex.js +1 -6
  681. package/js/src/pro/coinbase.d.ts +85 -0
  682. package/js/src/pro/coinbase.js +226 -6
  683. package/js/src/pro/coinbaseadvanced.js +0 -6
  684. package/js/src/pro/coinbaseexchange.js +0 -6
  685. package/js/src/pro/coinbaseinternational.js +0 -6
  686. package/js/src/pro/coincatch.js +0 -6
  687. package/js/src/pro/coincheck.js +0 -6
  688. package/js/src/pro/coinex.js +0 -6
  689. package/js/src/pro/coinone.js +0 -6
  690. package/js/src/pro/cryptocom.js +0 -6
  691. package/js/src/pro/defx.js +0 -6
  692. package/js/src/pro/deribit.js +0 -6
  693. package/js/src/pro/derive.js +0 -6
  694. package/js/src/pro/exmo.js +0 -6
  695. package/js/src/pro/gate.js +0 -6
  696. package/js/src/pro/gateio.js +0 -6
  697. package/js/src/pro/gemini.js +0 -6
  698. package/js/src/pro/hashkey.js +0 -6
  699. package/js/src/pro/hitbtc.js +0 -6
  700. package/js/src/pro/hollaex.js +0 -6
  701. package/js/src/pro/htx.js +0 -6
  702. package/js/src/pro/huobi.js +0 -6
  703. package/js/src/pro/hyperliquid.js +0 -6
  704. package/js/src/pro/independentreserve.js +1 -6
  705. package/js/src/pro/kraken.js +0 -6
  706. package/js/src/pro/krakenfutures.js +0 -6
  707. package/js/src/pro/kucoin.js +0 -6
  708. package/js/src/pro/kucoinfutures.js +0 -6
  709. package/js/src/pro/lbank.js +0 -6
  710. package/js/src/pro/luno.js +0 -6
  711. package/js/src/pro/mexc.js +23 -29
  712. package/js/src/pro/modetrade.js +0 -6
  713. package/js/src/pro/myokx.js +0 -6
  714. package/js/src/pro/ndax.js +0 -6
  715. package/js/src/pro/okcoin.js +0 -6
  716. package/js/src/pro/okx.d.ts +7 -1
  717. package/js/src/pro/okx.js +46 -16
  718. package/js/src/pro/okxus.js +0 -6
  719. package/js/src/pro/onetrading.js +0 -6
  720. package/js/src/pro/oxfun.js +0 -6
  721. package/js/src/pro/p2b.js +0 -6
  722. package/js/src/pro/paradex.js +0 -6
  723. package/js/src/pro/phemex.js +0 -6
  724. package/js/src/pro/poloniex.js +0 -6
  725. package/js/src/pro/probit.js +0 -6
  726. package/js/src/pro/toobit.d.ts +174 -0
  727. package/js/src/pro/toobit.js +1162 -0
  728. package/js/src/pro/upbit.js +0 -6
  729. package/js/src/pro/whitebit.js +0 -6
  730. package/js/src/pro/woo.js +0 -6
  731. package/js/src/pro/woofipro.js +0 -6
  732. package/js/src/pro/xt.js +0 -6
  733. package/js/src/probit.js +0 -6
  734. package/js/src/protobuf/mexc/compiled.cjs +0 -6
  735. package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
  736. package/js/src/static_dependencies/ethers/address/address.js +0 -6
  737. package/js/src/static_dependencies/ethers/address/checks.js +0 -6
  738. package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
  739. package/js/src/static_dependencies/ethers/address/index.js +0 -6
  740. package/js/src/static_dependencies/ethers/bytes32.js +0 -6
  741. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
  742. package/js/src/static_dependencies/ethers/coders/address.js +0 -6
  743. package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
  744. package/js/src/static_dependencies/ethers/coders/array.js +0 -6
  745. package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
  746. package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
  747. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
  748. package/js/src/static_dependencies/ethers/coders/null.js +0 -6
  749. package/js/src/static_dependencies/ethers/coders/number.js +0 -6
  750. package/js/src/static_dependencies/ethers/coders/string.js +0 -6
  751. package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
  752. package/js/src/static_dependencies/ethers/fragments.js +0 -6
  753. package/js/src/static_dependencies/ethers/hash/index.js +0 -6
  754. package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
  755. package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
  756. package/js/src/static_dependencies/ethers/index.js +0 -6
  757. package/js/src/static_dependencies/ethers/interface.js +0 -6
  758. package/js/src/static_dependencies/ethers/typed.js +0 -6
  759. package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
  760. package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
  761. package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
  762. package/js/src/static_dependencies/ethers/utils/data.js +0 -6
  763. package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
  764. package/js/src/static_dependencies/ethers/utils/events.js +0 -6
  765. package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
  766. package/js/src/static_dependencies/ethers/utils/index.js +0 -6
  767. package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
  768. package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
  769. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
  770. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
  771. package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
  772. package/js/src/static_dependencies/ethers/utils/units.js +0 -6
  773. package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
  774. package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
  775. package/js/src/static_dependencies/fflake/browser.js +0 -6
  776. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
  777. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
  778. package/js/src/static_dependencies/jsencrypt/index.js +0 -6
  779. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
  780. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
  781. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
  782. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
  783. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
  784. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
  785. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
  786. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
  787. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
  788. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
  789. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
  790. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
  791. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
  792. package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
  793. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
  794. package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
  795. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
  796. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
  797. package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
  798. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
  799. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
  800. package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
  801. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
  802. package/js/src/static_dependencies/noble-curves/bn.js +0 -6
  803. package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
  804. package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
  805. package/js/src/static_dependencies/noble-curves/index.js +0 -6
  806. package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
  807. package/js/src/static_dependencies/noble-curves/p256.js +0 -6
  808. package/js/src/static_dependencies/noble-curves/p384.js +0 -6
  809. package/js/src/static_dependencies/noble-curves/p521.js +0 -6
  810. package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
  811. package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
  812. package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
  813. package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
  814. package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
  815. package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
  816. package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
  817. package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
  818. package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
  819. package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
  820. package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
  821. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
  822. package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
  823. package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
  824. package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
  825. package/js/src/static_dependencies/noble-hashes/index.js +0 -6
  826. package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
  827. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
  828. package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
  829. package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
  830. package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
  831. package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
  832. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
  833. package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
  834. package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
  835. package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
  836. package/js/src/static_dependencies/node-fetch/body.js +0 -6
  837. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
  838. package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
  839. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
  840. package/js/src/static_dependencies/node-fetch/headers.js +0 -6
  841. package/js/src/static_dependencies/node-fetch/index.js +0 -6
  842. package/js/src/static_dependencies/node-fetch/request.js +0 -6
  843. package/js/src/static_dependencies/node-fetch/response.js +0 -6
  844. package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
  845. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
  846. package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
  847. package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
  848. package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
  849. package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
  850. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
  851. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
  852. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
  853. package/js/src/static_dependencies/qs/formats.cjs +0 -6
  854. package/js/src/static_dependencies/qs/index.cjs +0 -6
  855. package/js/src/static_dependencies/qs/parse.cjs +0 -6
  856. package/js/src/static_dependencies/qs/stringify.cjs +0 -6
  857. package/js/src/static_dependencies/qs/utils.cjs +0 -6
  858. package/js/src/static_dependencies/scure-base/index.js +0 -6
  859. package/js/src/static_dependencies/scure-starknet/index.js +0 -6
  860. package/js/src/static_dependencies/starknet/constants.js +0 -6
  861. package/js/src/static_dependencies/starknet/index.js +0 -6
  862. package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
  863. package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
  864. package/js/src/static_dependencies/starknet/types/index.js +0 -6
  865. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
  866. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
  867. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
  868. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
  869. package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
  870. package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
  871. package/js/src/static_dependencies/starknet/utils/address.js +0 -6
  872. package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
  873. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
  874. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
  875. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
  876. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
  877. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
  878. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
  879. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
  880. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
  881. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
  882. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
  883. package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
  884. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
  885. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
  886. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
  887. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
  888. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
  889. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
  890. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
  891. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
  892. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
  893. package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
  894. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
  895. package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
  896. package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
  897. package/js/src/static_dependencies/starknet/utils/num.js +0 -6
  898. package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
  899. package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
  900. package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
  901. package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
  902. package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
  903. package/js/src/static_dependencies/starknet/utils/url.js +0 -6
  904. package/js/src/static_dependencies/watchable/src/index.js +0 -6
  905. package/js/src/static_dependencies/watchable/src/types.js +0 -6
  906. package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
  907. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
  908. package/js/src/timex.js +0 -6
  909. package/js/src/tokocrypto.js +0 -6
  910. package/js/src/toobit.d.ts +456 -0
  911. package/js/src/toobit.js +2992 -0
  912. package/js/src/upbit.js +0 -6
  913. package/js/src/wavesexchange.js +0 -6
  914. package/js/src/whitebit.js +0 -6
  915. package/js/src/woo.js +0 -6
  916. package/js/src/woofipro.js +0 -6
  917. package/js/src/xt.d.ts +1 -0
  918. package/js/src/xt.js +9 -6
  919. package/js/src/yobit.js +9 -6
  920. package/js/src/zaif.js +0 -6
  921. package/js/src/zonda.js +0 -6
  922. package/package.json +1 -1
  923. package/dist/373.ccxt.browser.js +0 -7630
  924. package/dist/373.ccxt.browser.min.js +0 -1
  925. package/js/src/abstract/tradeogre.d.ts +0 -21
  926. package/js/src/abstract/tradeogre.js +0 -11
  927. package/js/src/pro/tradeogre.d.ts +0 -49
  928. package/js/src/pro/tradeogre.js +0 -284
  929. package/js/src/tradeogre.d.ts +0 -149
  930. package/js/src/tradeogre.js +0 -878
@@ -0,0 +1,1163 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var toobit$1 = require('../toobit.js');
6
+ var errors = require('../base/errors.js');
7
+ var Cache = require('../base/ws/Cache.js');
8
+
9
+ // ---------------------------------------------------------------------------
10
+ // ---------------------------------------------------------------------------
11
+ class toobit extends toobit$1["default"] {
12
+ describe() {
13
+ return this.deepExtend(super.describe(), {
14
+ 'has': {
15
+ 'ws': true,
16
+ 'watchBalance': true,
17
+ 'watchMyTrades': true,
18
+ 'watchOHLCV': true,
19
+ 'watchOHLCVForSymbols': true,
20
+ 'watchOrderBook': true,
21
+ 'watchOrderBookForSymbols': true,
22
+ 'watchOrders': true,
23
+ 'watchTicker': true,
24
+ 'watchTickers': true,
25
+ 'watchTrades': true,
26
+ 'watchTradesForSymbols': true,
27
+ // 'watchPosition': false,
28
+ },
29
+ 'urls': {
30
+ 'api': {
31
+ 'ws': {
32
+ 'common': 'wss://stream.toobit.com',
33
+ },
34
+ },
35
+ },
36
+ 'options': {
37
+ 'ws': {
38
+ 'timeframes': {
39
+ '1m': '1m',
40
+ '3m': '3m',
41
+ '5m': '5m',
42
+ '15m': '15m',
43
+ '30m': '30m',
44
+ '1h': '1h',
45
+ '2h': '2h',
46
+ '4h': '4h',
47
+ '6h': '6h',
48
+ '8h': '8h',
49
+ '12h': '12h',
50
+ '1d': '1d',
51
+ '1w': '1w',
52
+ '1M': '1M',
53
+ },
54
+ 'watchOrderBook': {
55
+ 'channel': 'depth', // depth, diffDepth
56
+ },
57
+ 'listenKeyRefreshRate': 1200000, // 20 mins
58
+ },
59
+ },
60
+ 'streaming': {
61
+ 'keepAlive': (60 - 1) * 5 * 1000,
62
+ 'ping': this.ping,
63
+ },
64
+ 'exceptions': {
65
+ 'ws': {
66
+ 'exact': {},
67
+ },
68
+ },
69
+ });
70
+ }
71
+ ping(client) {
72
+ return {
73
+ 'ping': this.milliseconds(),
74
+ };
75
+ }
76
+ handleMessage(client, message) {
77
+ //
78
+ // public
79
+ //
80
+ // {
81
+ // topic: "trade",
82
+ // symbol: "DOGEUSDT",
83
+ // symbolName: "DOGEUSDT",
84
+ // params: {
85
+ // realtimeInterval: "24h",
86
+ // binary: "false",
87
+ // },
88
+ // data: [
89
+ // {
90
+ // v: "4864732022868004630",
91
+ // t: 1757243788405,
92
+ // p: "0.21804",
93
+ // q: "80",
94
+ // m: true,
95
+ // },
96
+ // ],
97
+ // f: true, // initial first snapshot or not
98
+ // sendTime: 1757244002117,
99
+ // shared: false,
100
+ // }
101
+ //
102
+ // private
103
+ //
104
+ // [
105
+ // {
106
+ // e: 'outboundContractAccountInfo',
107
+ // E: '1758228398234',
108
+ // T: true,
109
+ // W: true,
110
+ // D: true,
111
+ // B: [ [Object] ]
112
+ // }
113
+ // ]
114
+ //
115
+ const topic = this.safeString(message, 'topic');
116
+ if (this.handleErrorMessage(client, message)) {
117
+ return;
118
+ }
119
+ //
120
+ // handle ping-pong: { ping: 1758540450000 }
121
+ //
122
+ const pongTimestamp = this.safeInteger(message, 'pong');
123
+ if (pongTimestamp !== undefined) {
124
+ this.handleIncomingPong(client, pongTimestamp);
125
+ return;
126
+ }
127
+ const methods = {
128
+ 'trade': this.handleTrades,
129
+ 'kline': this.handleOHLCV,
130
+ 'realtimes': this.handleTickers,
131
+ 'depth': this.handleOrderBookPartialSnapshot,
132
+ 'diffDepth': this.handleOrderBook,
133
+ 'outboundAccountInfo': this.handleBalance,
134
+ 'outboundContractAccountInfo': this.handleBalance,
135
+ 'executionReport': this.handleOrder,
136
+ 'contractExecutionReport': this.handleOrder,
137
+ 'ticketInfo': this.handleMyTrade,
138
+ 'outboundContractPositionInfo': this.handlePositions,
139
+ };
140
+ const method = this.safeValue(methods, topic);
141
+ if (method !== undefined) {
142
+ method.call(this, client, message);
143
+ }
144
+ else {
145
+ // check private streams
146
+ for (let i = 0; i < message.length; i++) {
147
+ const item = message[i];
148
+ const event = this.safeString(item, 'e');
149
+ const method2 = this.safeValue(methods, event);
150
+ if (method2 !== undefined) {
151
+ method2.call(this, client, item);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ handleIncomingPong(client, pongTimestamp) {
157
+ client.lastPong = pongTimestamp;
158
+ }
159
+ /**
160
+ * @method
161
+ * @name toobit#watchTrades
162
+ * @description watches information on multiple trades made in a market
163
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#trade-streams
164
+ * @param {string} symbol unified market symbol of the market trades were made in
165
+ * @param {int} [since] the earliest time in ms to fetch trades for
166
+ * @param {int} [limit] the maximum number of trade structures to retrieve
167
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
168
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
169
+ */
170
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
171
+ return await this.watchTradesForSymbols([symbol], since, limit, params);
172
+ }
173
+ /**
174
+ * @method
175
+ * @name toobit#watchTradesForSymbols
176
+ * @description get the list of most recent trades for a list of symbols
177
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#trade-streams
178
+ * @param {string[]} symbols unified symbol of the market to fetch trades for
179
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
180
+ * @param {int} [limit] the maximum amount of trades to fetch
181
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
182
+ * @param {string} [params.name] the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
183
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
184
+ */
185
+ async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
186
+ await this.loadMarkets();
187
+ symbols = this.marketSymbols(symbols, undefined, false);
188
+ const messageHashes = [];
189
+ for (let i = 0; i < symbols.length; i++) {
190
+ const symbol = symbols[i];
191
+ const market = this.market(symbol);
192
+ messageHashes.push('trade::' + symbol);
193
+ market['id'];
194
+ }
195
+ const marketIds = this.marketIds(symbols);
196
+ const url = this.urls['api']['ws']['common'] + '/quote/ws/v1';
197
+ const request = {
198
+ 'symbol': marketIds.join(','),
199
+ 'topic': 'trade',
200
+ 'event': 'sub',
201
+ };
202
+ const trades = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
203
+ if (this.newUpdates) {
204
+ const first = this.safeValue(trades, 0);
205
+ const tradeSymbol = this.safeString(first, 'symbol');
206
+ limit = trades.getLimit(tradeSymbol, limit);
207
+ }
208
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
209
+ }
210
+ handleTrades(client, message) {
211
+ //
212
+ // {
213
+ // symbol: "DOGEUSDT",
214
+ // symbolName: "DOGEUSDT",
215
+ // topic: "trade",
216
+ // params: {
217
+ // realtimeInterval: "24h",
218
+ // binary: "false",
219
+ // },
220
+ // data: [
221
+ // {
222
+ // v: "4864732022868004630",
223
+ // t: 1757243788405,
224
+ // p: "0.21804",
225
+ // q: "80",
226
+ // m: true,
227
+ // },
228
+ // ],
229
+ // f: true, // initial first snapshot or not
230
+ // sendTime: 1757244002117,
231
+ // shared: false,
232
+ // }
233
+ //
234
+ const marketId = this.safeString(message, 'symbol');
235
+ const symbol = this.safeSymbol(marketId);
236
+ if (!(symbol in this.trades)) {
237
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
238
+ this.trades[symbol] = new Cache.ArrayCache(limit);
239
+ }
240
+ const stored = this.trades[symbol];
241
+ const data = this.safeList(message, 'data', []);
242
+ const parsed = this.parseWsTrades(data);
243
+ for (let i = 0; i < parsed.length; i++) {
244
+ const trade = parsed[i];
245
+ trade['symbol'] = symbol;
246
+ stored.append(trade);
247
+ }
248
+ const messageHash = 'trade::' + symbol;
249
+ client.resolve(stored, messageHash);
250
+ }
251
+ parseWsTrade(trade, market = undefined) {
252
+ return this.parseTrade(trade, market);
253
+ }
254
+ /**
255
+ * @method
256
+ * @name toobit#watchOHLCV
257
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
258
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#kline-candlestick-streams
259
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
260
+ * @param {string} timeframe the length of time each candle represents
261
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
262
+ * @param {int} [limit] the maximum amount of candles to fetch
263
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
264
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
265
+ */
266
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
267
+ params['callerMethodName'] = 'watchOHLCV';
268
+ const result = await this.watchOHLCVForSymbols([[symbol, timeframe]], since, limit, params);
269
+ return result[symbol][timeframe];
270
+ }
271
+ /**
272
+ * @method
273
+ * @name toobit#watchOHLCVForSymbols
274
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
275
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#kline-candlestick-streams
276
+ * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
277
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
278
+ * @param {int} [limit] the maximum amount of candles to fetch
279
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
280
+ * @returns {object} A list of candles ordered as timestamp, open, high, low, close, volume
281
+ */
282
+ async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
283
+ await this.loadMarkets();
284
+ const url = this.urls['api']['ws']['common'] + '/quote/ws/v1';
285
+ const messageHashes = [];
286
+ const timeframes = this.safeDict(this.options['ws'], 'timeframes', {});
287
+ const marketIds = [];
288
+ let selectedTimeframe = undefined;
289
+ for (let i = 0; i < symbolsAndTimeframes.length; i++) {
290
+ const data = symbolsAndTimeframes[i];
291
+ const symbolStr = this.safeString(data, 0);
292
+ const market = this.market(symbolStr);
293
+ const marketId = market['id'];
294
+ const unfiedTimeframe = this.safeString(data, 1, '1m');
295
+ const rawTimeframe = this.safeString(timeframes, unfiedTimeframe, unfiedTimeframe);
296
+ if (selectedTimeframe !== undefined && selectedTimeframe !== rawTimeframe) {
297
+ throw new errors.NotSupported(this.id + ' watchOHLCVForSymbols() only supports a single timeframe for all symbols');
298
+ }
299
+ else {
300
+ selectedTimeframe = rawTimeframe;
301
+ }
302
+ marketIds.push(marketId);
303
+ messageHashes.push('ohlcv::' + symbolStr + '::' + unfiedTimeframe);
304
+ }
305
+ const request = {
306
+ 'symbol': marketIds.join(','),
307
+ 'topic': 'kline_' + selectedTimeframe,
308
+ 'event': 'sub',
309
+ };
310
+ const [symbol, timeframe, stored] = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
311
+ if (this.newUpdates) {
312
+ limit = stored.getLimit(symbol, limit);
313
+ }
314
+ const filtered = this.filterBySinceLimit(stored, since, limit, 0, true);
315
+ return this.createOHLCVObject(symbol, timeframe, filtered);
316
+ }
317
+ handleOHLCV(client, message) {
318
+ //
319
+ // {
320
+ // symbol: 'DOGEUSDT',
321
+ // symbolName: 'DOGEUSDT',
322
+ // klineType: '1m',
323
+ // topic: 'kline',
324
+ // params: { realtimeInterval: '24h', klineType: '1m', binary: 'false' },
325
+ // data: [
326
+ // {
327
+ // t: 1757251200000,
328
+ // s: 'DOGEUSDT',
329
+ // sn: 'DOGEUSDT',
330
+ // c: '0.21889',
331
+ // h: '0.21898',
332
+ // l: '0.21889',
333
+ // o: '0.21897',
334
+ // v: '5247',
335
+ // st: 0
336
+ // }
337
+ // ],
338
+ // f: true,
339
+ // sendTime: 1757251217643,
340
+ // shared: false
341
+ // }
342
+ //
343
+ const marketId = this.safeString(message, 'symbol');
344
+ const market = this.market(marketId);
345
+ const symbol = market['symbol'];
346
+ const params = this.safeDict(message, 'params', {});
347
+ const timeframeId = this.safeString(params, 'klineType');
348
+ const timeframe = this.findTimeframe(timeframeId);
349
+ if (!(symbol in this.ohlcvs)) {
350
+ this.ohlcvs[symbol] = {};
351
+ }
352
+ if (!(timeframe in this.ohlcvs[symbol])) {
353
+ const limit = this.safeInteger(this.options['ws'], 'OHLCVLimit', 1000);
354
+ this.ohlcvs[symbol][timeframe] = new Cache.ArrayCacheByTimestamp(limit);
355
+ }
356
+ const stored = this.ohlcvs[symbol][timeframe];
357
+ const data = this.safeList(message, 'data', []);
358
+ for (let i = 0; i < data.length; i++) {
359
+ const parsed = this.parseWsOHLCV(data[i], market);
360
+ stored.append(parsed);
361
+ }
362
+ const messageHash = 'ohlcv::' + symbol + '::' + timeframe;
363
+ const resolveData = [symbol, timeframe, stored];
364
+ client.resolve(resolveData, messageHash);
365
+ }
366
+ parseWsOHLCV(ohlcv, market = undefined) {
367
+ //
368
+ // {
369
+ // t: 1757251200000,
370
+ // o: '0.21897',
371
+ // h: '0.21898',
372
+ // l: '0.21889',
373
+ // c: '0.21889',
374
+ // v: '5247',
375
+ // s: 'DOGEUSDT',
376
+ // sn: 'DOGEUSDT',
377
+ // st: 0
378
+ // }
379
+ //
380
+ const parsed = this.parseOHLCV(ohlcv, market);
381
+ return parsed;
382
+ }
383
+ /**
384
+ * @method
385
+ * @name toobit#watchTicker
386
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#individual-symbol-ticker-streams
387
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
388
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
389
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
390
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
391
+ */
392
+ async watchTicker(symbol, params = {}) {
393
+ await this.loadMarkets();
394
+ symbol = this.symbol(symbol);
395
+ const tickers = await this.watchTickers([symbol], params);
396
+ return tickers[symbol];
397
+ }
398
+ /**
399
+ * @method
400
+ * @name toobit#watchTickers
401
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#individual-symbol-ticker-streams
402
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
403
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
404
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
405
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
406
+ */
407
+ async watchTickers(symbols = undefined, params = {}) {
408
+ await this.loadMarkets();
409
+ symbols = this.marketSymbols(symbols, undefined, false);
410
+ const messageHashes = [];
411
+ for (let i = 0; i < symbols.length; i++) {
412
+ const symbol = symbols[i];
413
+ const market = this.market(symbol);
414
+ messageHashes.push('ticker::' + symbol);
415
+ market['id'];
416
+ }
417
+ const marketIds = this.marketIds(symbols);
418
+ const url = this.urls['api']['ws']['common'] + '/quote/ws/v1';
419
+ const request = {
420
+ 'symbol': marketIds.join(','),
421
+ 'topic': 'realtimes',
422
+ 'event': 'sub',
423
+ };
424
+ const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
425
+ if (this.newUpdates) {
426
+ const result = {};
427
+ result[ticker['symbol']] = ticker;
428
+ return result;
429
+ }
430
+ return this.filterByArray(this.tickers, 'symbol', symbols);
431
+ }
432
+ handleTickers(client, message) {
433
+ //
434
+ // {
435
+ // "symbol": "DOGEUSDT",
436
+ // "symbolName": "DOGEUSDT",
437
+ // "topic": "realtimes",
438
+ // "params": {
439
+ // "realtimeInterval": "24h"
440
+ // },
441
+ // "data": [
442
+ // {
443
+ // "t": 1757257643683,
444
+ // "s": "DOGEUSDT",
445
+ // "o": "0.21462",
446
+ // "h": "0.22518",
447
+ // "l": "0.21229",
448
+ // "c": "0.2232",
449
+ // "v": "283337017",
450
+ // "qv": "62063771.42702",
451
+ // "sn": "DOGEUSDT",
452
+ // "m": "0.04",
453
+ // "e": 301,
454
+ // "c24h": "0.2232",
455
+ // "h24h": "0.22518",
456
+ // "l24h": "0.21229",
457
+ // "o24h": "0.21462",
458
+ // "v24h": "283337017",
459
+ // "qv24h": "62063771.42702",
460
+ // "m24h": "0.04"
461
+ // }
462
+ // ],
463
+ // "f": false,
464
+ // "sendTime": 1757257643751,
465
+ // "shared": false
466
+ // }
467
+ //
468
+ const data = this.safeList(message, 'data');
469
+ const newTickers = {};
470
+ for (let i = 0; i < data.length; i++) {
471
+ const ticker = data[i];
472
+ const parsed = this.parseWsTicker(ticker);
473
+ const symbol = parsed['symbol'];
474
+ this.tickers[symbol] = parsed;
475
+ newTickers[symbol] = parsed;
476
+ const messageHash = 'ticker::' + symbol;
477
+ client.resolve(parsed, messageHash);
478
+ }
479
+ client.resolve(newTickers, 'tickers');
480
+ }
481
+ parseWsTicker(ticker, market = undefined) {
482
+ return this.parseTicker(ticker, market);
483
+ }
484
+ /**
485
+ * @method
486
+ * @name toobit#watchOrderBook
487
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
488
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#partial-book-depth-streams
489
+ * @param {string} symbol unified symbol of the market to fetch the order book for
490
+ * @param {int} [limit] the maximum amount of order book entries to return.
491
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
492
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
493
+ */
494
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
495
+ return await this.watchOrderBookForSymbols([symbol], limit, params);
496
+ }
497
+ /**
498
+ * @method
499
+ * @name toobit#watchOrderBookForSymbols
500
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
501
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#partial-book-depth-streams
502
+ * @param {string[]} symbols unified array of symbols
503
+ * @param {int} [limit] the maximum amount of order book entries to return.
504
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
505
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
506
+ */
507
+ async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
508
+ await this.loadMarkets();
509
+ symbols = this.marketSymbols(symbols, undefined, false);
510
+ let channel = undefined;
511
+ [channel, params] = this.handleOptionAndParams(params, 'watchOrderBook', 'channel', 'depth');
512
+ const messageHashes = [];
513
+ for (let i = 0; i < symbols.length; i++) {
514
+ const symbol = symbols[i];
515
+ const market = this.market(symbol);
516
+ messageHashes.push('orderBook::' + symbol + '::' + channel);
517
+ market['id'];
518
+ }
519
+ const marketIds = this.marketIds(symbols);
520
+ const url = this.urls['api']['ws']['common'] + '/quote/ws/v1';
521
+ const request = {
522
+ 'symbol': marketIds.join(','),
523
+ 'topic': channel,
524
+ 'event': 'sub',
525
+ };
526
+ const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
527
+ return orderbook.limit();
528
+ }
529
+ handleOrderBook(client, message) {
530
+ //
531
+ // {
532
+ // symbol: 'DOGEUSDT',
533
+ // symbolName: 'DOGEUSDT',
534
+ // topic: 'depth',
535
+ // params: { realtimeInterval: '24h' },
536
+ // data: [
537
+ // {
538
+ // e: 301,
539
+ // t: 1757304842860,
540
+ // v: '9814355_1E-18',
541
+ // b: [Array],
542
+ // a: [Array],
543
+ // o: 0
544
+ // }
545
+ // ],
546
+ // f: false,
547
+ // sendTime: 1757304843047,
548
+ // shared: false
549
+ // }
550
+ //
551
+ const isSnapshot = this.safeBool(message, 'f', false);
552
+ if (isSnapshot) {
553
+ this.setOrderBookSnapshot(client, message, 'diffDepth');
554
+ return;
555
+ }
556
+ const marketId = this.safeString(message, 'symbol');
557
+ const market = this.safeMarket(marketId);
558
+ const symbol = market['symbol'];
559
+ const data = this.safeList(message, 'data', []);
560
+ for (let i = 0; i < data.length; i++) {
561
+ const entry = data[i];
562
+ const messageHash = 'orderBook::' + symbol + '::' + 'diffDepth';
563
+ if (!(symbol in this.orderbooks)) {
564
+ const limit = this.safeInteger(this.options['ws'], 'orderBookLimit', 1000);
565
+ this.orderbooks[symbol] = this.orderBook({}, limit);
566
+ }
567
+ const orderBook = this.orderbooks[symbol];
568
+ const timestamp = this.safeInteger(entry, 't');
569
+ const bids = this.safeList(entry, 'b', []);
570
+ const asks = this.safeList(entry, 'a', []);
571
+ this.handleDeltas(orderBook['asks'], asks);
572
+ this.handleDeltas(orderBook['bids'], bids);
573
+ orderBook['timestamp'] = timestamp;
574
+ this.orderbooks[symbol] = orderBook;
575
+ client.resolve(orderBook, messageHash);
576
+ }
577
+ }
578
+ handleDelta(bookside, delta) {
579
+ const bidAsk = this.parseBidAsk(delta);
580
+ bookside.storeArray(bidAsk);
581
+ }
582
+ handleOrderBookPartialSnapshot(client, message) {
583
+ //
584
+ // {
585
+ // symbol: 'DOGEUSDT',
586
+ // symbolName: 'DOGEUSDT',
587
+ // topic: 'depth',
588
+ // params: { realtimeInterval: '24h' },
589
+ // data: [
590
+ // {
591
+ // e: 301,
592
+ // s: 'DOGEUSDT',
593
+ // t: 1757304842860,
594
+ // v: '9814355_1E-18',
595
+ // b: [Array],
596
+ // a: [Array],
597
+ // o: 0
598
+ // }
599
+ // ],
600
+ // f: false,
601
+ // sendTime: 1757304843047,
602
+ // shared: false
603
+ // }
604
+ //
605
+ this.setOrderBookSnapshot(client, message, 'depth');
606
+ }
607
+ setOrderBookSnapshot(client, message, channel) {
608
+ const data = this.safeList(message, 'data', []);
609
+ const length = data.length;
610
+ if (length === 0) {
611
+ return;
612
+ }
613
+ for (let i = 0; i < length; i++) {
614
+ const entry = data[i];
615
+ const marketId = this.safeString(entry, 's');
616
+ const symbol = this.safeSymbol(marketId);
617
+ const messageHash = 'orderBook::' + symbol + '::' + channel;
618
+ if (!(symbol in this.orderbooks)) {
619
+ const limit = this.safeInteger(this.options['ws'], 'orderBookLimit', 1000);
620
+ this.orderbooks[symbol] = this.orderBook({}, limit);
621
+ }
622
+ const orderbook = this.orderbooks[symbol];
623
+ const timestamp = this.safeInteger(entry, 't');
624
+ const snapshot = this.parseOrderBook(entry, symbol, timestamp, 'b', 'a');
625
+ orderbook.reset(snapshot);
626
+ client.resolve(orderbook, messageHash);
627
+ }
628
+ }
629
+ /**
630
+ * @method
631
+ * @name toobit#watchBalance
632
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
633
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#payload-account-update
634
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
635
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
636
+ */
637
+ async watchBalance(params = {}) {
638
+ await this.loadMarkets();
639
+ await this.authenticate();
640
+ let marketType = undefined;
641
+ [marketType, params] = this.handleMarketTypeAndParams('watchBalance', undefined, params);
642
+ const isSpot = (marketType === 'spot');
643
+ const type = isSpot ? 'spot' : 'contract';
644
+ const spotSubHash = 'spot:balance';
645
+ const swapSubHash = 'contract:private';
646
+ const spotMessageHash = 'spot:balance';
647
+ const swapMessageHash = 'contract:balance';
648
+ const messageHash = isSpot ? spotMessageHash : swapMessageHash;
649
+ const subscriptionHash = isSpot ? spotSubHash : swapSubHash;
650
+ const url = this.getUserStreamUrl();
651
+ const client = this.client(url);
652
+ this.setBalanceCache(client, marketType, subscriptionHash, params);
653
+ client.future(type + ':fetchBalanceSnapshot');
654
+ return await this.watch(url, messageHash, params, subscriptionHash);
655
+ }
656
+ setBalanceCache(client, marketType, subscriptionHash = undefined, params = {}) {
657
+ if (subscriptionHash in client.subscriptions) {
658
+ return;
659
+ }
660
+ const type = (marketType === 'spot') ? 'spot' : 'contract';
661
+ const messageHash = type + ':fetchBalanceSnapshot';
662
+ if (!(messageHash in client.futures)) {
663
+ client.future(messageHash);
664
+ this.spawn(this.loadBalanceSnapshot, client, messageHash, marketType);
665
+ }
666
+ }
667
+ handleBalance(client, message) {
668
+ //
669
+ // spot
670
+ //
671
+ // [
672
+ // {
673
+ // e: 'outboundAccountInfo',
674
+ // E: '1758226989725',
675
+ // T: true,
676
+ // W: true,
677
+ // D: true,
678
+ // B: [
679
+ // {
680
+ // a: "USDT",
681
+ // f: "6.37242839",
682
+ // l: "0",
683
+ // },
684
+ // ]
685
+ // }
686
+ // ]
687
+ //
688
+ // contract
689
+ //
690
+ // [
691
+ // {
692
+ // e: 'outboundContractAccountInfo',
693
+ // E: '1758226989742',
694
+ // T: true,
695
+ // W: true,
696
+ // D: true,
697
+ // B: [ [Object] ]
698
+ // }
699
+ // ]
700
+ //
701
+ const channel = this.safeString(message, 'e');
702
+ const data = this.safeList(message, 'B', []);
703
+ const timestamp = this.safeInteger(message, 'E');
704
+ const type = (channel === 'outboundContractAccountInfo') ? 'contract' : 'spot';
705
+ if (!(type in this.balance)) {
706
+ this.balance[type] = {};
707
+ }
708
+ this.balance[type]['info'] = data;
709
+ this.balance[type]['timestamp'] = timestamp;
710
+ this.balance[type]['datetime'] = this.iso8601(timestamp);
711
+ for (let i = 0; i < data.length; i++) {
712
+ const balance = data[i];
713
+ const currencyId = this.safeString(balance, 'a');
714
+ const code = this.safeCurrencyCode(currencyId);
715
+ const account = this.account();
716
+ account['info'] = balance;
717
+ account['used'] = this.safeString(balance, 'l');
718
+ account['free'] = this.safeString(balance, 'f');
719
+ this.balance[type][code] = account;
720
+ }
721
+ this.balance[type] = this.safeBalance(this.balance[type]);
722
+ client.resolve(this.balance[type], type + ':balance');
723
+ }
724
+ async loadBalanceSnapshot(client, messageHash, marketType) {
725
+ const response = await this.fetchBalance({ 'type': marketType });
726
+ const type = (marketType === 'spot') ? 'spot' : 'contract';
727
+ this.balance[type] = this.extend(response, this.safeDict(this.balance, type, {}));
728
+ // don't remove the future from the .futures cache
729
+ const future = client.futures[messageHash];
730
+ future.resolve();
731
+ client.resolve(this.balance[type], type + ':fetchBalanceSnapshot');
732
+ client.resolve(this.balance[type], type + ':balance'); // we should also resolve right away after snapshot, so user doesn't double-fetch balance
733
+ }
734
+ /**
735
+ * @method
736
+ * @name toobit#watchOrders
737
+ * @description watches information on multiple orders made by the user
738
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#payload-order-update
739
+ * @param {string} symbol unified market symbol of the market orders were made in
740
+ * @param {int} [since] the earliest time in ms to fetch orders for
741
+ * @param {int} [limit] the maximum number of order structures to retrieve
742
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
743
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
744
+ */
745
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
746
+ await this.loadMarkets();
747
+ await this.authenticate();
748
+ const market = this.marketOrNull(symbol);
749
+ symbol = this.safeString(market, 'symbol', symbol);
750
+ let messageHash = 'orders';
751
+ if (symbol !== undefined) {
752
+ messageHash = messageHash + ':' + symbol;
753
+ }
754
+ const url = this.getUserStreamUrl();
755
+ const orders = await this.watch(url, messageHash, params, messageHash);
756
+ if (this.newUpdates) {
757
+ limit = orders.getLimit(symbol, limit);
758
+ }
759
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
760
+ }
761
+ handleOrder(client, message) {
762
+ //
763
+ // {
764
+ // "e": "executionReport",
765
+ // "E": "1758311011844",
766
+ // "s": "DOGEUSDT",
767
+ // "c": "1758311011948",
768
+ // "S": "BUY",
769
+ // "o": "LIMIT",
770
+ // "f": "GTC",
771
+ // "q": "22",
772
+ // "p": "0.23",
773
+ // "pt": "INPUT",
774
+ // "X": "NEW",
775
+ // "i": "2043255292855185152",
776
+ // "l": "0", // Last executed quantity
777
+ // "z": "0", // Cumulative filled quantity
778
+ // "L": "0", // Last executed price
779
+ // "n": "0",
780
+ // "N": "",
781
+ // "u": true,
782
+ // "w": true,
783
+ // "m": false,
784
+ // "O": "1758311011833",
785
+ // "U": "1758311011841",
786
+ // "Z": "0",
787
+ // "C": false,
788
+ // "v": "0",
789
+ // "rp": "0",
790
+ // "td": "0"
791
+ // }
792
+ //
793
+ if (this.orders === undefined) {
794
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
795
+ this.orders = new Cache.ArrayCacheBySymbolById(limit);
796
+ }
797
+ const orders = this.orders;
798
+ const order = this.parseWsOrder(message);
799
+ orders.append(order);
800
+ let messageHash = 'orders';
801
+ client.resolve(orders, messageHash);
802
+ messageHash = 'orders:' + this.safeString(order, 'symbol');
803
+ client.resolve(orders, messageHash);
804
+ }
805
+ parseWsOrder(order, market = undefined) {
806
+ const timestamp = this.safeInteger(order, 'O');
807
+ const marketId = this.safeString(order, 's');
808
+ const symbol = this.safeSymbol(marketId, market);
809
+ const priceType = this.safeStringLower(order, 'pt');
810
+ const rawOrderType = this.safeStringLower(order, 'o');
811
+ let orderType = undefined;
812
+ if (priceType === 'market') {
813
+ orderType = 'market';
814
+ }
815
+ else {
816
+ orderType = rawOrderType;
817
+ }
818
+ const feeCost = this.safeNumber(order, 'n');
819
+ let fee = undefined;
820
+ if (feeCost !== undefined) {
821
+ fee = {
822
+ 'cost': feeCost,
823
+ 'currency': undefined,
824
+ };
825
+ }
826
+ return this.safeOrder({
827
+ 'info': order,
828
+ 'id': this.safeString(order, 'i'),
829
+ 'clientOrderId': this.safeString(order, 'c'),
830
+ 'timestamp': timestamp,
831
+ 'datetime': this.iso8601(timestamp),
832
+ 'lastUpdateTimestamp': this.safeInteger2(order, 'U', 'E'),
833
+ 'symbol': symbol,
834
+ 'type': orderType,
835
+ 'timeInForce': this.safeStringUpper(order, 'f'),
836
+ 'postOnly': undefined,
837
+ 'side': this.safeStringLower(order, 'S'),
838
+ 'price': this.safeString(order, 'L'),
839
+ 'stopPrice': undefined,
840
+ 'triggerPrice': undefined,
841
+ 'amount': this.safeString(order, 'q'),
842
+ 'cost': undefined,
843
+ 'average': this.safeString(order, 'p'),
844
+ 'filled': this.safeString(order, 'z'),
845
+ 'remaining': undefined,
846
+ 'status': this.parseOrderStatus(this.safeString(order, 'X')),
847
+ 'fee': fee,
848
+ 'trades': undefined,
849
+ }, market);
850
+ }
851
+ /**
852
+ * @method
853
+ * @name toobit#watchMyTrades
854
+ * @description watches information on multiple trades made by the user
855
+ * @see https://toobit-docs.github.io/apidocs/spot/v1/en/#payload-ticket-push
856
+ * @param {string} symbol unified market symbol of the market trades were made in
857
+ * @param {int} [since] the earliest time in ms to fetch trades for
858
+ * @param {int} [limit] the maximum number of trade structures to retrieve
859
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
860
+ * @param {boolean} [params.unifiedMargin] use unified margin account
861
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
862
+ */
863
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
864
+ await this.loadMarkets();
865
+ await this.authenticate();
866
+ const market = this.marketOrNull(symbol);
867
+ symbol = this.safeString(market, 'symbol', symbol);
868
+ let messageHash = 'myTrades';
869
+ if (symbol !== undefined) {
870
+ messageHash = messageHash + ':' + symbol;
871
+ }
872
+ const url = this.getUserStreamUrl();
873
+ const trades = await this.watch(url, messageHash, params, messageHash);
874
+ if (this.newUpdates) {
875
+ limit = trades.getLimit(symbol, limit);
876
+ }
877
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
878
+ }
879
+ handleMyTrade(client, message) {
880
+ //
881
+ // {
882
+ // "e": "ticketInfo",
883
+ // "E": "1758314657847",
884
+ // "s": "DOGEUSDT",
885
+ // "q": "22.0",
886
+ // "t": "1758314657842",
887
+ // "p": "0.26667",
888
+ // "T": "4864732022877055421",
889
+ // "o": "2043285877770284800",
890
+ // "c": "1758314657002",
891
+ // "a": "1783404067076253952",
892
+ // "m": false,
893
+ // "S": "BUY"
894
+ // }
895
+ //
896
+ let myTrades = this.myTrades;
897
+ if (myTrades === undefined) {
898
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
899
+ myTrades = new Cache.ArrayCacheBySymbolById(limit);
900
+ }
901
+ const trade = this.parseMyTrade(message);
902
+ myTrades.append(trade);
903
+ let messageHash = 'myTrades:' + trade['symbol'];
904
+ client.resolve(myTrades, messageHash);
905
+ messageHash = 'myTrades';
906
+ client.resolve(myTrades, messageHash);
907
+ }
908
+ parseMyTrade(trade, market = undefined) {
909
+ const marketId = this.safeString(trade, 's');
910
+ const ts = this.safeString(trade, 't');
911
+ return this.safeTrade({
912
+ 'info': trade,
913
+ 'id': this.safeString(trade, 'T'),
914
+ 'timestamp': ts,
915
+ 'datetime': this.iso8601(ts),
916
+ 'symbol': this.safeSymbol(marketId, market),
917
+ 'order': this.safeString(trade, 'o'),
918
+ 'type': undefined,
919
+ 'side': this.safeStringLower(trade, 'S'),
920
+ 'takerOrMaker': this.safeBool(trade, 'm') ? 'maker' : 'taker',
921
+ 'price': this.safeString(trade, 'p'),
922
+ 'amount': this.safeString(trade, 'q'),
923
+ 'cost': undefined,
924
+ 'fee': undefined,
925
+ }, market);
926
+ }
927
+ /**
928
+ * @method
929
+ * @name toobit#watchPositions
930
+ * @see https://toobit-docs.github.io/apidocs/usdt_swap/v1/en/#event-position-update
931
+ * @description watch all open positions
932
+ * @param {string[]} [symbols] list of unified market symbols
933
+ * @param {int} [since] the earliest time in ms to fetch positions for
934
+ * @param {int} [limit] the maximum number of positions to retrieve
935
+ * @param {object} params extra parameters specific to the exchange API endpoint
936
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
937
+ */
938
+ async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
939
+ await this.loadMarkets();
940
+ await this.authenticate();
941
+ let messageHash = '';
942
+ if (!this.isEmpty(symbols)) {
943
+ symbols = this.marketSymbols(symbols);
944
+ messageHash = '::' + symbols.join(',');
945
+ }
946
+ const url = this.getUserStreamUrl();
947
+ const client = this.client(url);
948
+ await this.authenticate(url);
949
+ this.setPositionsCache(client, symbols);
950
+ const cache = this.positions;
951
+ if (cache === undefined) {
952
+ const snapshot = await client.future('fetchPositionsSnapshot');
953
+ return this.filterBySymbolsSinceLimit(snapshot, symbols, since, limit, true);
954
+ }
955
+ const newPositions = await this.watch(url, messageHash, undefined, messageHash);
956
+ if (this.newUpdates) {
957
+ return newPositions;
958
+ }
959
+ return this.filterBySymbolsSinceLimit(cache, symbols, since, limit, true);
960
+ }
961
+ setPositionsCache(client, type, symbols = undefined, isPortfolioMargin = false) {
962
+ if (this.positions === undefined) {
963
+ this.positions = {};
964
+ }
965
+ if (type in this.positions) {
966
+ return;
967
+ }
968
+ const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', false);
969
+ if (fetchPositionsSnapshot) {
970
+ const messageHash = type + ':fetchPositionsSnapshot';
971
+ if (!(messageHash in client.futures)) {
972
+ client.future(messageHash);
973
+ this.spawn(this.loadPositionsSnapshot, client, messageHash, type, isPortfolioMargin);
974
+ }
975
+ }
976
+ else {
977
+ this.positions[type] = new Cache.ArrayCacheBySymbolBySide();
978
+ }
979
+ }
980
+ async loadPositionsSnapshot(client, messageHash, type) {
981
+ const params = {
982
+ 'type': type,
983
+ };
984
+ const positions = await this.fetchPositions(undefined, params);
985
+ this.positions[type] = new Cache.ArrayCacheBySymbolBySide();
986
+ const cache = this.positions[type];
987
+ for (let i = 0; i < positions.length; i++) {
988
+ const position = positions[i];
989
+ cache.append(position);
990
+ }
991
+ // don't remove the future from the .futures cache
992
+ const future = client.futures[messageHash];
993
+ future.resolve(cache);
994
+ client.resolve(cache, type + ':positions');
995
+ }
996
+ handlePositions(client, message) {
997
+ //
998
+ // [
999
+ // {
1000
+ // e: 'outboundContractPositionInfo',
1001
+ // E: '1758316454554',
1002
+ // A: '1783404067076253954',
1003
+ // s: 'DOGE-SWAP-USDT',
1004
+ // S: 'LONG',
1005
+ // p: '0',
1006
+ // P: '0',
1007
+ // a: '0',
1008
+ // f: '0.1228',
1009
+ // m: '0',
1010
+ // r: '0',
1011
+ // up: '0',
1012
+ // pr: '0',
1013
+ // pv: '0',
1014
+ // v: '3.0',
1015
+ // mt: 'CROSS',
1016
+ // mm: '0',
1017
+ // mp: '0.265410000000000000'
1018
+ // }
1019
+ // ]
1020
+ //
1021
+ const subscriptions = Object.keys(client.subscriptions);
1022
+ const accountType = subscriptions[0];
1023
+ if (this.positions === undefined) {
1024
+ this.positions = {};
1025
+ }
1026
+ if (!(accountType in this.positions)) {
1027
+ this.positions[accountType] = new Cache.ArrayCacheBySymbolBySide();
1028
+ }
1029
+ const cache = this.positions[accountType];
1030
+ const newPositions = [];
1031
+ for (let i = 0; i < message.length; i++) {
1032
+ const rawPosition = message[i];
1033
+ const position = this.parseWsPosition(rawPosition);
1034
+ const timestamp = this.safeInteger(rawPosition, 'E');
1035
+ position['timestamp'] = timestamp;
1036
+ position['datetime'] = this.iso8601(timestamp);
1037
+ newPositions.push(position);
1038
+ cache.append(position);
1039
+ }
1040
+ const messageHashes = this.findMessageHashes(client, accountType + ':positions::');
1041
+ for (let i = 0; i < messageHashes.length; i++) {
1042
+ const messageHash = messageHashes[i];
1043
+ const parts = messageHash.split('::');
1044
+ const symbolsString = parts[1];
1045
+ const symbols = symbolsString.split(',');
1046
+ const positions = this.filterByArray(newPositions, 'symbol', symbols, false);
1047
+ if (!this.isEmpty(positions)) {
1048
+ client.resolve(positions, messageHash);
1049
+ }
1050
+ }
1051
+ client.resolve(newPositions, accountType + ':positions');
1052
+ }
1053
+ parseWsPosition(position, market = undefined) {
1054
+ const marketId = this.safeString(position, 's');
1055
+ return this.safePosition({
1056
+ 'info': position,
1057
+ 'id': undefined,
1058
+ 'symbol': this.safeSymbol(marketId, undefined),
1059
+ 'notional': this.omitZero(this.safeString(position, 'pv')),
1060
+ 'marginMode': this.safeStringLower(position, 'mt'),
1061
+ 'liquidationPrice': this.safeString(position, 'f'),
1062
+ 'entryPrice': this.safeString(position, 'p'),
1063
+ 'unrealizedPnl': this.safeString(position, 'up'),
1064
+ 'realizedPnl': this.safeNumber(position, 'r'),
1065
+ 'percentage': undefined,
1066
+ 'contracts': undefined,
1067
+ 'contractSize': undefined,
1068
+ 'markPrice': this.safeString(position, 'mp'),
1069
+ 'side': this.safeStringLower(position, 'S'),
1070
+ 'hedged': undefined,
1071
+ 'timestamp': undefined,
1072
+ 'datetime': undefined,
1073
+ 'maintenanceMargin': this.safeString(position, 'mm'),
1074
+ 'maintenanceMarginPercentage': undefined,
1075
+ 'collateral': undefined,
1076
+ 'initialMargin': this.omitZero(this.safeString(position, 'm')),
1077
+ 'initialMarginPercentage': undefined,
1078
+ 'leverage': this.safeString(position, 'v'),
1079
+ 'marginRatio': undefined,
1080
+ });
1081
+ }
1082
+ async authenticate(params = {}) {
1083
+ const client = this.client(this.getUserStreamUrl());
1084
+ const messageHash = 'authenticated';
1085
+ const future = client.future(messageHash);
1086
+ const authenticated = this.safeValue(client.subscriptions, messageHash);
1087
+ if (authenticated === undefined) {
1088
+ this.checkRequiredCredentials();
1089
+ const time = this.milliseconds();
1090
+ const lastAuthenticatedTime = this.safeInteger(this.options['ws'], 'lastAuthenticatedTime', 0);
1091
+ const listenKeyRefreshRate = this.safeInteger(this.options['ws'], 'listenKeyRefreshRate', 1200000);
1092
+ const delay = this.sum(listenKeyRefreshRate, 10000);
1093
+ if (time - lastAuthenticatedTime > delay) {
1094
+ try {
1095
+ client.subscriptions[messageHash] = true;
1096
+ const response = await this.privatePostApiV1UserDataStream(params);
1097
+ this.options['ws']['listenKey'] = this.safeString(response, 'listenKey');
1098
+ this.options['ws']['lastAuthenticatedTime'] = time;
1099
+ future.resolve(true);
1100
+ this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
1101
+ }
1102
+ catch (e) {
1103
+ const err = new errors.AuthenticationError(this.id + ' ' + this.json(e));
1104
+ client.reject(err, messageHash);
1105
+ if (messageHash in client.subscriptions) {
1106
+ delete client.subscriptions[messageHash];
1107
+ }
1108
+ }
1109
+ }
1110
+ }
1111
+ return await future;
1112
+ }
1113
+ async keepAliveListenKey(params = {}) {
1114
+ const options = this.safeValue(this.options, 'ws', {});
1115
+ const listenKey = this.safeString(options, 'listenKey');
1116
+ if (listenKey === undefined) {
1117
+ // A network error happened: we can't renew a listen key that does not exist.
1118
+ return;
1119
+ }
1120
+ try {
1121
+ const response = await this.privatePostApiV1UserDataStream(params);
1122
+ this.options['ws']['listenKey'] = this.safeString(response, 'listenKey');
1123
+ this.options['ws']['lastAuthenticatedTime'] = this.milliseconds();
1124
+ }
1125
+ catch (error) {
1126
+ const url = this.getUserStreamUrl();
1127
+ const client = this.client(url);
1128
+ const messageHashes = Object.keys(client.futures);
1129
+ for (let i = 0; i < messageHashes.length; i++) {
1130
+ const messageHash = messageHashes[i];
1131
+ client.reject(error, messageHash);
1132
+ }
1133
+ this.options['ws']['listenKey'] = undefined;
1134
+ this.options['ws']['lastAuthenticatedTime'] = 0;
1135
+ return;
1136
+ }
1137
+ // whether or not to schedule another listenKey keepAlive request
1138
+ const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 1200000);
1139
+ this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
1140
+ }
1141
+ getUserStreamUrl() {
1142
+ return this.urls['api']['ws']['common'] + '/api/v1/ws/' + this.options['ws']['listenKey'];
1143
+ }
1144
+ handleErrorMessage(client, message) {
1145
+ //
1146
+ // {
1147
+ // "code": '-100010',
1148
+ // "desc": "Invalid Symbols!"
1149
+ // }
1150
+ //
1151
+ const code = this.safeString(message, 'code');
1152
+ if (code !== undefined) {
1153
+ const desc = this.safeString(message, 'desc');
1154
+ const msg = this.id + ' code: ' + code + ' message: ' + desc;
1155
+ const exception = new errors.ExchangeError(msg); // c# fix
1156
+ client.reject(exception);
1157
+ return true;
1158
+ }
1159
+ return false;
1160
+ }
1161
+ }
1162
+
1163
+ exports["default"] = toobit;