ccxt 4.5.47 → 4.5.48

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 (992) hide show
  1. package/README.md +120 -118
  2. package/dist/ccxt.browser.min.js +10 -10
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/aftermath.js +1 -1
  5. package/dist/cjs/src/abstract/alpaca.js +1 -1
  6. package/dist/cjs/src/abstract/apex.js +1 -1
  7. package/dist/cjs/src/abstract/arkham.js +1 -1
  8. package/dist/cjs/src/abstract/ascendex.js +1 -1
  9. package/dist/cjs/src/abstract/aster.js +1 -1
  10. package/dist/cjs/src/abstract/backpack.js +1 -1
  11. package/dist/cjs/src/abstract/bigone.js +1 -1
  12. package/dist/cjs/src/abstract/binance.js +1 -1
  13. package/dist/cjs/src/abstract/bingx.js +1 -1
  14. package/dist/cjs/src/abstract/bit2c.js +1 -1
  15. package/dist/cjs/src/abstract/bitbank.js +1 -1
  16. package/dist/cjs/src/abstract/bitbns.js +1 -1
  17. package/dist/cjs/src/abstract/bitfinex.js +1 -1
  18. package/dist/cjs/src/abstract/bitflyer.js +1 -1
  19. package/dist/cjs/src/abstract/bitget.js +1 -1
  20. package/dist/cjs/src/abstract/bithumb.js +1 -1
  21. package/dist/cjs/src/abstract/bitmart.js +1 -1
  22. package/dist/cjs/src/abstract/bitmex.js +1 -1
  23. package/dist/cjs/src/abstract/bitopro.js +1 -1
  24. package/dist/cjs/src/abstract/bitrue.js +1 -1
  25. package/dist/cjs/src/abstract/bitso.js +1 -1
  26. package/dist/cjs/src/abstract/bitstamp.js +1 -1
  27. package/dist/cjs/src/abstract/bitteam.js +1 -1
  28. package/dist/cjs/src/abstract/bittrade.js +1 -1
  29. package/dist/cjs/src/abstract/bitvavo.js +1 -1
  30. package/dist/cjs/src/abstract/blockchaincom.js +1 -1
  31. package/dist/cjs/src/abstract/blofin.js +1 -1
  32. package/dist/cjs/src/abstract/btcbox.js +1 -1
  33. package/dist/cjs/src/abstract/btcmarkets.js +1 -1
  34. package/dist/cjs/src/abstract/btcturk.js +1 -1
  35. package/dist/cjs/src/abstract/bullish.js +1 -1
  36. package/dist/cjs/src/abstract/bybit.js +1 -1
  37. package/dist/cjs/src/abstract/bydfi.js +1 -1
  38. package/dist/cjs/src/abstract/cex.js +1 -1
  39. package/dist/cjs/src/abstract/coinbase.js +1 -1
  40. package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
  41. package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
  42. package/dist/cjs/src/abstract/coincheck.js +1 -1
  43. package/dist/cjs/src/abstract/coinex.js +1 -1
  44. package/dist/cjs/src/abstract/coinmate.js +1 -1
  45. package/dist/cjs/src/abstract/coinmetro.js +1 -1
  46. package/dist/cjs/src/abstract/coinone.js +1 -1
  47. package/dist/cjs/src/abstract/coinsph.js +1 -1
  48. package/dist/cjs/src/abstract/coinspot.js +1 -1
  49. package/dist/cjs/src/abstract/cryptocom.js +1 -1
  50. package/dist/cjs/src/abstract/cryptomus.js +1 -1
  51. package/dist/cjs/src/abstract/deepcoin.js +1 -1
  52. package/dist/cjs/src/abstract/delta.js +1 -1
  53. package/dist/cjs/src/abstract/deribit.js +1 -1
  54. package/dist/cjs/src/abstract/derive.js +1 -1
  55. package/dist/cjs/src/abstract/digifinex.js +1 -1
  56. package/dist/cjs/src/abstract/dydx.js +1 -1
  57. package/dist/cjs/src/abstract/exmo.js +1 -1
  58. package/dist/cjs/src/abstract/foxbit.js +1 -1
  59. package/dist/cjs/src/abstract/gate.js +1 -1
  60. package/dist/cjs/src/abstract/gemini.js +1 -1
  61. package/dist/cjs/src/abstract/grvt.js +1 -1
  62. package/dist/cjs/src/abstract/hashkey.js +1 -1
  63. package/dist/cjs/src/abstract/hibachi.js +1 -1
  64. package/dist/cjs/src/abstract/hitbtc.js +1 -1
  65. package/dist/cjs/src/abstract/hollaex.js +1 -1
  66. package/dist/cjs/src/abstract/htx.js +1 -1
  67. package/dist/cjs/src/abstract/hyperliquid.js +1 -1
  68. package/dist/cjs/src/abstract/independentreserve.js +1 -1
  69. package/dist/cjs/src/abstract/indodax.js +1 -1
  70. package/dist/cjs/src/abstract/kraken.js +1 -1
  71. package/dist/cjs/src/abstract/krakenfutures.js +1 -1
  72. package/dist/cjs/src/abstract/kucoin.js +1 -1
  73. package/dist/cjs/src/abstract/latoken.js +1 -1
  74. package/dist/cjs/src/abstract/lbank.js +1 -1
  75. package/dist/cjs/src/abstract/lighter.js +1 -1
  76. package/dist/cjs/src/abstract/luno.js +1 -1
  77. package/dist/cjs/src/abstract/mercado.js +1 -1
  78. package/dist/cjs/src/abstract/mexc.js +1 -1
  79. package/dist/cjs/src/abstract/modetrade.js +1 -1
  80. package/dist/cjs/src/abstract/ndax.js +1 -1
  81. package/dist/cjs/src/abstract/novadax.js +1 -1
  82. package/dist/cjs/src/abstract/okx.js +1 -1
  83. package/dist/cjs/src/abstract/onetrading.js +1 -1
  84. package/dist/cjs/src/abstract/oxfun.js +1 -1
  85. package/dist/cjs/src/abstract/p2b.js +1 -1
  86. package/dist/cjs/src/abstract/pacifica.js +11 -0
  87. package/dist/cjs/src/abstract/paradex.js +1 -1
  88. package/dist/cjs/src/abstract/paymium.js +1 -1
  89. package/dist/cjs/src/abstract/phemex.js +1 -1
  90. package/dist/cjs/src/abstract/poloniex.js +1 -1
  91. package/dist/cjs/src/abstract/tokocrypto.js +1 -1
  92. package/dist/cjs/src/abstract/toobit.js +1 -1
  93. package/dist/cjs/src/abstract/upbit.js +1 -1
  94. package/dist/cjs/src/abstract/wavesexchange.js +1 -1
  95. package/dist/cjs/src/abstract/whitebit.js +1 -1
  96. package/dist/cjs/src/abstract/woo.js +1 -1
  97. package/dist/cjs/src/abstract/woofipro.js +1 -1
  98. package/dist/cjs/src/abstract/xt.js +1 -1
  99. package/dist/cjs/src/abstract/yobit.js +1 -1
  100. package/dist/cjs/src/abstract/zaif.js +1 -1
  101. package/dist/cjs/src/abstract/zebpay.js +1 -1
  102. package/dist/cjs/src/abstract/zonda.js +1 -1
  103. package/dist/cjs/src/aftermath.js +1 -0
  104. package/dist/cjs/src/alpaca.js +1 -1
  105. package/dist/cjs/src/apex.js +1 -1
  106. package/dist/cjs/src/arkham.js +1 -1
  107. package/dist/cjs/src/ascendex.js +1 -1
  108. package/dist/cjs/src/aster.js +53 -1
  109. package/dist/cjs/src/backpack.js +1 -1
  110. package/dist/cjs/src/base/Exchange.js +7 -0
  111. package/dist/cjs/src/base/Precise.js +6 -0
  112. package/dist/cjs/src/base/errors.js +6 -0
  113. package/dist/cjs/src/base/functions/crypto.js +1 -1
  114. package/dist/cjs/src/base/functions/encode.js +1 -1
  115. package/dist/cjs/src/base/functions/io.js +1 -1
  116. package/dist/cjs/src/base/functions/misc.js +1 -0
  117. package/dist/cjs/src/base/functions/number.js +6 -0
  118. package/dist/cjs/src/base/functions/platform.js +6 -0
  119. package/dist/cjs/src/base/functions/rsa.js +1 -0
  120. package/dist/cjs/src/base/functions/string.js +6 -0
  121. package/dist/cjs/src/base/functions/throttle.js +1 -1
  122. package/dist/cjs/src/base/functions/time.js +6 -0
  123. package/dist/cjs/src/base/functions/totp.js +1 -0
  124. package/dist/cjs/src/base/functions/type.js +6 -0
  125. package/dist/cjs/src/base/functions.js +1 -1
  126. package/dist/cjs/src/base/ws/Cache.js +6 -0
  127. package/dist/cjs/src/base/ws/Client.js +1 -0
  128. package/dist/cjs/src/base/ws/Future.js +1 -1
  129. package/dist/cjs/src/base/ws/OrderBook.js +1 -1
  130. package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
  131. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  132. package/dist/cjs/src/bequant.js +1 -1
  133. package/dist/cjs/src/bigone.js +1 -1
  134. package/dist/cjs/src/binance.js +2 -4
  135. package/dist/cjs/src/binancecoinm.js +1 -1
  136. package/dist/cjs/src/binanceus.js +1 -1
  137. package/dist/cjs/src/binanceusdm.js +1 -1
  138. package/dist/cjs/src/bingx.js +1 -1
  139. package/dist/cjs/src/bit2c.js +1 -1
  140. package/dist/cjs/src/bitbank.js +1 -1
  141. package/dist/cjs/src/bitbns.js +1 -1
  142. package/dist/cjs/src/bitfinex.js +39 -43
  143. package/dist/cjs/src/bitflyer.js +1 -1
  144. package/dist/cjs/src/bitget.js +1 -1
  145. package/dist/cjs/src/bithumb.js +1 -1
  146. package/dist/cjs/src/bitmart.js +1 -1
  147. package/dist/cjs/src/bitmex.js +1 -1
  148. package/dist/cjs/src/bitopro.js +1 -1
  149. package/dist/cjs/src/bitrue.js +1 -1
  150. package/dist/cjs/src/bitso.js +1 -1
  151. package/dist/cjs/src/bitstamp.js +1 -1
  152. package/dist/cjs/src/bitteam.js +1 -1
  153. package/dist/cjs/src/bittrade.js +2 -2
  154. package/dist/cjs/src/blockchaincom.js +1 -1
  155. package/dist/cjs/src/blofin.js +16 -3
  156. package/dist/cjs/src/btcbox.js +1 -1
  157. package/dist/cjs/src/btcmarkets.js +1 -1
  158. package/dist/cjs/src/btcturk.js +1 -1
  159. package/dist/cjs/src/bullish.js +1 -1
  160. package/dist/cjs/src/bybit.js +1 -1
  161. package/dist/cjs/src/bydfi.js +1 -1
  162. package/dist/cjs/src/cex.js +1 -1
  163. package/dist/cjs/src/coinbaseadvanced.js +1 -1
  164. package/dist/cjs/src/coincheck.js +1 -1
  165. package/dist/cjs/src/coinex.js +1 -1
  166. package/dist/cjs/src/coinmate.js +1 -1
  167. package/dist/cjs/src/coinmetro.js +1 -1
  168. package/dist/cjs/src/coinone.js +1 -1
  169. package/dist/cjs/src/coinsph.js +5 -0
  170. package/dist/cjs/src/coinspot.js +1 -1
  171. package/dist/cjs/src/cryptocom.js +1 -1
  172. package/dist/cjs/src/cryptomus.js +1 -1
  173. package/dist/cjs/src/deepcoin.js +1 -1
  174. package/dist/cjs/src/delta.js +1 -1
  175. package/dist/cjs/src/deribit.js +1 -1
  176. package/dist/cjs/src/derive.js +1 -1
  177. package/dist/cjs/src/digifinex.js +1 -1
  178. package/dist/cjs/src/dydx.js +1 -1
  179. package/dist/cjs/src/exmo.js +1 -1
  180. package/dist/cjs/src/fmfwio.js +1 -1
  181. package/dist/cjs/src/foxbit.js +1 -1
  182. package/dist/cjs/src/gate.js +1 -1
  183. package/dist/cjs/src/gateio.js +1 -1
  184. package/dist/cjs/src/gemini.js +1 -1
  185. package/dist/cjs/src/grvt.js +1 -1
  186. package/dist/cjs/src/hashkey.js +1 -1
  187. package/dist/cjs/src/hibachi.js +1 -1
  188. package/dist/cjs/src/hitbtc.js +1 -0
  189. package/dist/cjs/src/hollaex.js +1 -1
  190. package/dist/cjs/src/htx.js +1 -1
  191. package/dist/cjs/src/huobi.js +1 -1
  192. package/dist/cjs/src/hyperliquid.js +1 -1
  193. package/dist/cjs/src/independentreserve.js +1 -1
  194. package/dist/cjs/src/indodax.js +1 -1
  195. package/dist/cjs/src/kraken.js +1 -1
  196. package/dist/cjs/src/krakenfutures.js +1 -1
  197. package/dist/cjs/src/kucoin.js +1 -1
  198. package/dist/cjs/src/kucoinfutures.js +1 -1
  199. package/dist/cjs/src/latoken.js +1 -1
  200. package/dist/cjs/src/lbank.js +1 -1
  201. package/dist/cjs/src/lighter.js +197 -72
  202. package/dist/cjs/src/luno.js +1 -1
  203. package/dist/cjs/src/mercado.js +1 -1
  204. package/dist/cjs/src/mexc.js +50 -1
  205. package/dist/cjs/src/modetrade.js +1 -1
  206. package/dist/cjs/src/myokx.js +1 -1
  207. package/dist/cjs/src/ndax.js +1 -1
  208. package/dist/cjs/src/novadax.js +1 -1
  209. package/dist/cjs/src/okx.js +7 -5
  210. package/dist/cjs/src/okxus.js +1 -1
  211. package/dist/cjs/src/onetrading.js +1 -1
  212. package/dist/cjs/src/oxfun.js +1 -1
  213. package/dist/cjs/src/p2b.js +1 -1
  214. package/dist/cjs/src/pacifica.js +3254 -0
  215. package/dist/cjs/src/paradex.js +1 -1
  216. package/dist/cjs/src/paymium.js +1 -1
  217. package/dist/cjs/src/poloniex.js +1 -1
  218. package/dist/cjs/src/pro/alpaca.js +1 -1
  219. package/dist/cjs/src/pro/apex.js +1 -1
  220. package/dist/cjs/src/pro/arkham.js +1 -1
  221. package/dist/cjs/src/pro/ascendex.js +1 -1
  222. package/dist/cjs/src/pro/aster.js +1 -1
  223. package/dist/cjs/src/pro/backpack.js +1 -1
  224. package/dist/cjs/src/pro/bequant.js +1 -1
  225. package/dist/cjs/src/pro/binance.js +12 -1
  226. package/dist/cjs/src/pro/binancecoinm.js +1 -1
  227. package/dist/cjs/src/pro/binanceus.js +1 -1
  228. package/dist/cjs/src/pro/binanceusdm.js +1 -1
  229. package/dist/cjs/src/pro/bingx.js +2 -2
  230. package/dist/cjs/src/pro/bitfinex.js +1 -1
  231. package/dist/cjs/src/pro/bitget.js +1 -1
  232. package/dist/cjs/src/pro/bithumb.js +1 -1
  233. package/dist/cjs/src/pro/bitmart.js +5 -4
  234. package/dist/cjs/src/pro/bitmex.js +1 -1
  235. package/dist/cjs/src/pro/bitrue.js +1 -1
  236. package/dist/cjs/src/pro/bitstamp.js +1 -1
  237. package/dist/cjs/src/pro/bitvavo.js +9 -1
  238. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  239. package/dist/cjs/src/pro/blofin.js +1 -1
  240. package/dist/cjs/src/pro/bullish.js +1 -1
  241. package/dist/cjs/src/pro/bybit.js +1 -1
  242. package/dist/cjs/src/pro/bydfi.js +1 -1
  243. package/dist/cjs/src/pro/cex.js +1 -1
  244. package/dist/cjs/src/pro/coinbase.js +1 -1
  245. package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
  246. package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
  247. package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
  248. package/dist/cjs/src/pro/coincheck.js +1 -1
  249. package/dist/cjs/src/pro/coinex.js +1 -1
  250. package/dist/cjs/src/pro/coinone.js +1 -1
  251. package/dist/cjs/src/pro/cryptocom.js +1 -1
  252. package/dist/cjs/src/pro/deepcoin.js +1 -1
  253. package/dist/cjs/src/pro/deribit.js +1 -1
  254. package/dist/cjs/src/pro/dydx.js +1 -1
  255. package/dist/cjs/src/pro/exmo.js +1 -1
  256. package/dist/cjs/src/pro/gate.js +4 -1
  257. package/dist/cjs/src/pro/gateio.js +1 -1
  258. package/dist/cjs/src/pro/gemini.js +1 -1
  259. package/dist/cjs/src/pro/grvt.js +1 -1
  260. package/dist/cjs/src/pro/hashkey.js +1 -1
  261. package/dist/cjs/src/pro/hitbtc.js +1 -1
  262. package/dist/cjs/src/pro/hollaex.js +1 -1
  263. package/dist/cjs/src/pro/htx.js +1 -1
  264. package/dist/cjs/src/pro/huobi.js +1 -1
  265. package/dist/cjs/src/pro/hyperliquid.js +1 -1
  266. package/dist/cjs/src/pro/independentreserve.js +1 -1
  267. package/dist/cjs/src/pro/kraken.js +1 -1
  268. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  269. package/dist/cjs/src/pro/kucoin.js +1 -1
  270. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  271. package/dist/cjs/src/pro/lbank.js +1 -0
  272. package/dist/cjs/src/pro/lighter.js +36 -17
  273. package/dist/cjs/src/pro/luno.js +1 -1
  274. package/dist/cjs/src/pro/mexc.js +1 -1
  275. package/dist/cjs/src/pro/myokx.js +1 -1
  276. package/dist/cjs/src/pro/ndax.js +1 -1
  277. package/dist/cjs/src/pro/okx.js +1 -1
  278. package/dist/cjs/src/pro/okxus.js +1 -1
  279. package/dist/cjs/src/pro/onetrading.js +1 -1
  280. package/dist/cjs/src/pro/oxfun.js +1 -1
  281. package/dist/cjs/src/pro/p2b.js +1 -1
  282. package/dist/cjs/src/pro/pacifica.js +1397 -0
  283. package/dist/cjs/src/pro/paradex.js +1 -1
  284. package/dist/cjs/src/pro/phemex.js +1 -1
  285. package/dist/cjs/src/pro/poloniex.js +1 -1
  286. package/dist/cjs/src/pro/toobit.js +1 -1
  287. package/dist/cjs/src/pro/upbit.js +1 -1
  288. package/dist/cjs/src/pro/whitebit.js +1 -1
  289. package/dist/cjs/src/pro/xt.js +1 -1
  290. package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +0 -1
  291. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +1 -0
  292. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +1 -0
  293. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +1 -0
  294. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +1 -0
  295. package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +1 -0
  296. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +1 -0
  297. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +1 -0
  298. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +1 -0
  299. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +1 -0
  300. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +1 -0
  301. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +1 -0
  302. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +1 -0
  303. package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +1 -0
  304. package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +1 -0
  305. package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
  306. package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +1 -0
  307. package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +1 -0
  308. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
  309. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
  310. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  311. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  312. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
  313. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  314. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
  315. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  316. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  317. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
  318. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  319. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
  320. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
  321. package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
  322. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  323. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
  324. package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
  325. package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
  326. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
  327. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
  328. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
  329. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
  330. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  331. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
  332. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
  333. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
  334. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
  335. package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
  336. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
  337. package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
  338. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
  339. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  340. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  341. package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  342. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
  343. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
  344. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  345. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
  346. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
  347. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  348. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
  349. package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  350. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
  351. package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
  352. package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
  353. package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
  354. package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
  355. package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
  356. package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
  357. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
  358. package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  359. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  360. package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
  361. package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
  362. package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
  363. package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
  364. package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
  365. package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
  366. package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
  367. package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
  368. package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
  369. package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +1 -0
  370. package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +1 -0
  371. package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
  372. package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
  373. package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
  374. package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
  375. package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
  376. package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
  377. package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
  378. package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
  379. package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
  380. package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
  381. package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
  382. package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
  383. package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
  384. package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  385. package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  386. package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
  387. package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
  388. package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
  389. package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
  390. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
  391. package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  392. package/dist/cjs/src/static_dependencies/qs/formats.js +6 -0
  393. package/dist/cjs/src/static_dependencies/qs/index.js +1 -0
  394. package/dist/cjs/src/static_dependencies/qs/parse.js +1 -0
  395. package/dist/cjs/src/static_dependencies/qs/stringify.js +1 -0
  396. package/dist/cjs/src/static_dependencies/qs/utils.js +6 -0
  397. package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
  398. package/dist/cjs/src/static_dependencies/scure-bip32/index.js +1 -19
  399. package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
  400. package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
  401. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
  402. package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
  403. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
  404. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  405. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  406. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
  407. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
  408. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
  409. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
  410. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
  411. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
  412. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
  413. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
  414. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  415. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  416. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  417. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
  418. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
  419. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
  420. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
  421. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  422. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
  423. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
  424. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
  425. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
  426. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
  427. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
  428. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
  429. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
  430. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
  431. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
  432. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
  433. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
  434. package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
  435. package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  436. package/dist/cjs/src/tokocrypto.js +1 -1
  437. package/dist/cjs/src/toobit.js +1 -1
  438. package/dist/cjs/src/upbit.js +1 -1
  439. package/dist/cjs/src/wavesexchange.js +1 -1
  440. package/dist/cjs/src/whitebit.js +1 -1
  441. package/dist/cjs/src/woo.js +1 -1
  442. package/dist/cjs/src/woofipro.js +1 -1
  443. package/dist/cjs/src/xt.js +1 -1
  444. package/dist/cjs/src/yobit.js +1 -1
  445. package/dist/cjs/src/zaif.js +1 -1
  446. package/dist/cjs/src/zebpay.js +1 -1
  447. package/dist/cjs/src/zonda.js +1 -1
  448. package/js/ccxt.d.ts +8 -2
  449. package/js/ccxt.js +12 -2
  450. package/js/src/abstract/aftermath.js +6 -0
  451. package/js/src/abstract/alpaca.js +6 -0
  452. package/js/src/abstract/apex.js +6 -0
  453. package/js/src/abstract/arkham.js +6 -0
  454. package/js/src/abstract/ascendex.js +6 -0
  455. package/js/src/abstract/aster.d.ts +52 -0
  456. package/js/src/abstract/aster.js +6 -0
  457. package/js/src/abstract/backpack.js +6 -0
  458. package/js/src/abstract/bequant.js +6 -0
  459. package/js/src/abstract/bigone.js +6 -0
  460. package/js/src/abstract/binance.d.ts +1 -0
  461. package/js/src/abstract/binance.js +6 -0
  462. package/js/src/abstract/binancecoinm.d.ts +1 -0
  463. package/js/src/abstract/binancecoinm.js +6 -0
  464. package/js/src/abstract/binanceus.d.ts +1 -0
  465. package/js/src/abstract/binanceus.js +6 -0
  466. package/js/src/abstract/binanceusdm.d.ts +1 -0
  467. package/js/src/abstract/binanceusdm.js +6 -0
  468. package/js/src/abstract/bingx.js +6 -0
  469. package/js/src/abstract/bit2c.js +6 -0
  470. package/js/src/abstract/bitbank.js +6 -0
  471. package/js/src/abstract/bitbns.js +6 -0
  472. package/js/src/abstract/bitfinex.js +6 -0
  473. package/js/src/abstract/bitflyer.js +6 -0
  474. package/js/src/abstract/bitget.js +6 -0
  475. package/js/src/abstract/bithumb.js +6 -0
  476. package/js/src/abstract/bitmart.js +6 -0
  477. package/js/src/abstract/bitmex.js +6 -0
  478. package/js/src/abstract/bitopro.js +6 -0
  479. package/js/src/abstract/bitrue.js +6 -0
  480. package/js/src/abstract/bitso.js +6 -0
  481. package/js/src/abstract/bitstamp.js +6 -0
  482. package/js/src/abstract/bitteam.js +6 -0
  483. package/js/src/abstract/bittrade.js +6 -0
  484. package/js/src/abstract/bitvavo.js +6 -0
  485. package/js/src/abstract/blockchaincom.js +6 -0
  486. package/js/src/abstract/blofin.js +6 -0
  487. package/js/src/abstract/btcbox.js +6 -0
  488. package/js/src/abstract/btcmarkets.js +6 -0
  489. package/js/src/abstract/btcturk.js +6 -0
  490. package/js/src/abstract/bullish.js +6 -0
  491. package/js/src/abstract/bybit.js +6 -0
  492. package/js/src/abstract/bydfi.js +6 -0
  493. package/js/src/abstract/cex.js +6 -0
  494. package/js/src/abstract/coinbase.js +6 -0
  495. package/js/src/abstract/coinbaseadvanced.js +6 -0
  496. package/js/src/abstract/coinbaseexchange.js +6 -0
  497. package/js/src/abstract/coinbaseinternational.js +6 -0
  498. package/js/src/abstract/coincheck.js +6 -0
  499. package/js/src/abstract/coinex.js +6 -0
  500. package/js/src/abstract/coinmate.js +6 -0
  501. package/js/src/abstract/coinmetro.js +6 -0
  502. package/js/src/abstract/coinone.js +6 -0
  503. package/js/src/abstract/coinsph.js +6 -0
  504. package/js/src/abstract/coinspot.js +6 -0
  505. package/js/src/abstract/cryptocom.js +6 -0
  506. package/js/src/abstract/cryptomus.js +6 -0
  507. package/js/src/abstract/deepcoin.js +6 -0
  508. package/js/src/abstract/delta.js +6 -0
  509. package/js/src/abstract/deribit.js +6 -0
  510. package/js/src/abstract/derive.js +6 -0
  511. package/js/src/abstract/digifinex.js +6 -0
  512. package/js/src/abstract/dydx.js +6 -0
  513. package/js/src/abstract/exmo.js +6 -0
  514. package/js/src/abstract/fmfwio.js +6 -0
  515. package/js/src/abstract/foxbit.js +6 -0
  516. package/js/src/abstract/gate.js +6 -0
  517. package/js/src/abstract/gateio.js +6 -0
  518. package/js/src/abstract/gemini.js +6 -0
  519. package/js/src/abstract/grvt.js +6 -0
  520. package/js/src/abstract/hashkey.js +6 -0
  521. package/js/src/abstract/hibachi.js +6 -0
  522. package/js/src/abstract/hitbtc.js +6 -0
  523. package/js/src/abstract/hollaex.js +6 -0
  524. package/js/src/abstract/htx.js +6 -0
  525. package/js/src/abstract/huobi.js +6 -0
  526. package/js/src/abstract/hyperliquid.js +6 -0
  527. package/js/src/abstract/independentreserve.js +6 -0
  528. package/js/src/abstract/indodax.js +6 -0
  529. package/js/src/abstract/kraken.js +6 -0
  530. package/js/src/abstract/krakenfutures.js +6 -0
  531. package/js/src/abstract/kucoin.js +6 -0
  532. package/js/src/abstract/kucoinfutures.js +6 -0
  533. package/js/src/abstract/latoken.js +6 -0
  534. package/js/src/abstract/lbank.js +6 -0
  535. package/js/src/abstract/lighter.js +6 -0
  536. package/js/src/abstract/luno.js +6 -0
  537. package/js/src/abstract/mercado.js +6 -0
  538. package/js/src/abstract/mexc.d.ts +49 -0
  539. package/js/src/abstract/mexc.js +6 -0
  540. package/js/src/abstract/modetrade.js +6 -0
  541. package/js/src/abstract/myokx.js +6 -0
  542. package/js/src/abstract/ndax.js +6 -0
  543. package/js/src/abstract/novadax.js +6 -0
  544. package/js/src/abstract/okx.js +6 -0
  545. package/js/src/abstract/okxus.js +6 -0
  546. package/js/src/abstract/onetrading.js +6 -0
  547. package/js/src/abstract/oxfun.js +6 -0
  548. package/js/src/abstract/p2b.js +6 -0
  549. package/js/src/abstract/pacifica.d.ts +46 -0
  550. package/js/src/abstract/pacifica.js +11 -0
  551. package/js/src/abstract/paradex.js +6 -0
  552. package/js/src/abstract/paymium.js +6 -0
  553. package/js/src/abstract/phemex.js +6 -0
  554. package/js/src/abstract/poloniex.js +6 -0
  555. package/js/src/abstract/tokocrypto.js +6 -0
  556. package/js/src/abstract/toobit.js +6 -0
  557. package/js/src/abstract/upbit.js +6 -0
  558. package/js/src/abstract/wavesexchange.js +6 -0
  559. package/js/src/abstract/whitebit.js +6 -0
  560. package/js/src/abstract/woo.js +6 -0
  561. package/js/src/abstract/woofipro.js +6 -0
  562. package/js/src/abstract/xt.js +6 -0
  563. package/js/src/abstract/yobit.js +6 -0
  564. package/js/src/abstract/zaif.js +6 -0
  565. package/js/src/abstract/zebpay.js +6 -0
  566. package/js/src/abstract/zonda.js +6 -0
  567. package/js/src/aftermath.js +6 -0
  568. package/js/src/alpaca.js +6 -0
  569. package/js/src/apex.js +6 -0
  570. package/js/src/arkham.js +6 -0
  571. package/js/src/ascendex.js +6 -0
  572. package/js/src/aster.js +58 -0
  573. package/js/src/backpack.js +6 -0
  574. package/js/src/base/Exchange.d.ts +2 -0
  575. package/js/src/base/Exchange.js +13 -0
  576. package/js/src/base/Precise.js +6 -0
  577. package/js/src/base/errorHierarchy.js +6 -0
  578. package/js/src/base/errors.js +6 -0
  579. package/js/src/base/functions/crypto.js +6 -0
  580. package/js/src/base/functions/encode.js +6 -0
  581. package/js/src/base/functions/generic.js +6 -0
  582. package/js/src/base/functions/io.js +6 -0
  583. package/js/src/base/functions/misc.js +6 -0
  584. package/js/src/base/functions/number.js +6 -0
  585. package/js/src/base/functions/platform.js +6 -0
  586. package/js/src/base/functions/rsa.js +6 -0
  587. package/js/src/base/functions/string.js +6 -0
  588. package/js/src/base/functions/throttle.js +6 -0
  589. package/js/src/base/functions/time.js +6 -0
  590. package/js/src/base/functions/totp.js +6 -0
  591. package/js/src/base/functions/type.js +6 -0
  592. package/js/src/base/functions.js +6 -0
  593. package/js/src/base/types.js +6 -0
  594. package/js/src/base/ws/Cache.js +6 -0
  595. package/js/src/base/ws/Client.js +6 -0
  596. package/js/src/base/ws/Future.js +6 -0
  597. package/js/src/base/ws/OrderBook.js +6 -0
  598. package/js/src/base/ws/OrderBookSide.js +6 -0
  599. package/js/src/base/ws/WsClient.js +6 -0
  600. package/js/src/base/ws/functions.js +6 -0
  601. package/js/src/bequant.js +6 -0
  602. package/js/src/bigone.js +6 -0
  603. package/js/src/binance.d.ts +0 -1
  604. package/js/src/binance.js +7 -3
  605. package/js/src/binancecoinm.js +6 -0
  606. package/js/src/binanceus.js +6 -0
  607. package/js/src/binanceusdm.js +6 -0
  608. package/js/src/bingx.js +6 -0
  609. package/js/src/bit2c.js +6 -0
  610. package/js/src/bitbank.js +6 -0
  611. package/js/src/bitbns.js +6 -0
  612. package/js/src/bitfinex.js +44 -42
  613. package/js/src/bitflyer.js +6 -0
  614. package/js/src/bitget.js +6 -0
  615. package/js/src/bithumb.js +6 -0
  616. package/js/src/bitmart.js +6 -0
  617. package/js/src/bitmex.js +6 -0
  618. package/js/src/bitopro.js +6 -0
  619. package/js/src/bitrue.js +6 -0
  620. package/js/src/bitso.js +6 -0
  621. package/js/src/bitstamp.js +6 -0
  622. package/js/src/bitteam.js +6 -0
  623. package/js/src/bittrade.js +7 -1
  624. package/js/src/bitvavo.js +6 -0
  625. package/js/src/blockchaincom.js +6 -0
  626. package/js/src/blofin.d.ts +2 -1
  627. package/js/src/blofin.js +21 -2
  628. package/js/src/btcbox.js +6 -0
  629. package/js/src/btcmarkets.js +6 -0
  630. package/js/src/btcturk.js +6 -0
  631. package/js/src/bullish.js +6 -0
  632. package/js/src/bybit.js +6 -0
  633. package/js/src/bydfi.js +6 -0
  634. package/js/src/cex.js +6 -0
  635. package/js/src/coinbase.js +6 -0
  636. package/js/src/coinbaseadvanced.js +6 -0
  637. package/js/src/coinbaseexchange.js +6 -0
  638. package/js/src/coinbaseinternational.js +6 -0
  639. package/js/src/coincheck.js +6 -0
  640. package/js/src/coinex.js +6 -0
  641. package/js/src/coinmate.js +6 -0
  642. package/js/src/coinmetro.js +6 -0
  643. package/js/src/coinone.js +6 -0
  644. package/js/src/coinsph.js +10 -0
  645. package/js/src/coinspot.js +6 -0
  646. package/js/src/cryptocom.js +6 -0
  647. package/js/src/cryptomus.js +6 -0
  648. package/js/src/deepcoin.js +6 -0
  649. package/js/src/delta.js +6 -0
  650. package/js/src/deribit.js +6 -0
  651. package/js/src/derive.js +6 -0
  652. package/js/src/digifinex.js +6 -0
  653. package/js/src/dydx.js +6 -0
  654. package/js/src/exmo.js +6 -0
  655. package/js/src/fmfwio.js +6 -0
  656. package/js/src/foxbit.js +6 -0
  657. package/js/src/gate.js +6 -0
  658. package/js/src/gateio.js +6 -0
  659. package/js/src/gemini.js +6 -0
  660. package/js/src/grvt.js +6 -0
  661. package/js/src/hashkey.js +6 -0
  662. package/js/src/hibachi.js +6 -0
  663. package/js/src/hitbtc.js +6 -0
  664. package/js/src/hollaex.js +6 -0
  665. package/js/src/htx.js +6 -0
  666. package/js/src/huobi.js +6 -0
  667. package/js/src/hyperliquid.js +6 -0
  668. package/js/src/independentreserve.js +6 -0
  669. package/js/src/indodax.js +6 -0
  670. package/js/src/kraken.js +6 -0
  671. package/js/src/krakenfutures.js +6 -0
  672. package/js/src/kucoin.js +6 -0
  673. package/js/src/kucoinfutures.js +6 -0
  674. package/js/src/latoken.js +6 -0
  675. package/js/src/lbank.js +6 -0
  676. package/js/src/lighter.d.ts +4 -2
  677. package/js/src/lighter.js +202 -71
  678. package/js/src/luno.js +6 -0
  679. package/js/src/mercado.js +6 -0
  680. package/js/src/mexc.js +55 -0
  681. package/js/src/modetrade.js +6 -0
  682. package/js/src/myokx.js +6 -0
  683. package/js/src/ndax.js +6 -0
  684. package/js/src/novadax.js +6 -0
  685. package/js/src/okx.js +12 -4
  686. package/js/src/okxus.js +6 -0
  687. package/js/src/onetrading.js +6 -0
  688. package/js/src/oxfun.js +6 -0
  689. package/js/src/p2b.js +6 -0
  690. package/js/src/pacifica.d.ts +531 -0
  691. package/js/src/pacifica.js +3257 -0
  692. package/js/src/paradex.js +6 -0
  693. package/js/src/paymium.js +6 -0
  694. package/js/src/phemex.js +6 -0
  695. package/js/src/poloniex.js +6 -0
  696. package/js/src/pro/aftermath.js +6 -0
  697. package/js/src/pro/alpaca.js +6 -0
  698. package/js/src/pro/apex.js +6 -0
  699. package/js/src/pro/arkham.js +6 -0
  700. package/js/src/pro/ascendex.js +6 -0
  701. package/js/src/pro/aster.js +6 -0
  702. package/js/src/pro/backpack.js +6 -0
  703. package/js/src/pro/bequant.js +6 -0
  704. package/js/src/pro/binance.js +18 -1
  705. package/js/src/pro/binancecoinm.js +6 -0
  706. package/js/src/pro/binanceus.js +6 -0
  707. package/js/src/pro/binanceusdm.js +6 -0
  708. package/js/src/pro/bingx.js +7 -1
  709. package/js/src/pro/bitfinex.js +6 -0
  710. package/js/src/pro/bitget.js +6 -0
  711. package/js/src/pro/bithumb.js +6 -0
  712. package/js/src/pro/bitmart.js +10 -3
  713. package/js/src/pro/bitmex.js +6 -0
  714. package/js/src/pro/bitopro.js +6 -0
  715. package/js/src/pro/bitrue.js +6 -0
  716. package/js/src/pro/bitstamp.js +6 -0
  717. package/js/src/pro/bittrade.js +6 -0
  718. package/js/src/pro/bitvavo.js +14 -0
  719. package/js/src/pro/blockchaincom.js +6 -0
  720. package/js/src/pro/blofin.js +6 -0
  721. package/js/src/pro/bullish.js +6 -0
  722. package/js/src/pro/bybit.js +6 -0
  723. package/js/src/pro/bydfi.js +6 -0
  724. package/js/src/pro/cex.js +6 -0
  725. package/js/src/pro/coinbase.js +6 -0
  726. package/js/src/pro/coinbaseadvanced.js +6 -0
  727. package/js/src/pro/coinbaseexchange.js +6 -0
  728. package/js/src/pro/coinbaseinternational.js +6 -0
  729. package/js/src/pro/coincheck.js +6 -0
  730. package/js/src/pro/coinex.js +6 -0
  731. package/js/src/pro/coinone.js +6 -0
  732. package/js/src/pro/cryptocom.js +6 -0
  733. package/js/src/pro/deepcoin.js +6 -0
  734. package/js/src/pro/deribit.js +6 -0
  735. package/js/src/pro/derive.js +6 -0
  736. package/js/src/pro/dydx.js +6 -0
  737. package/js/src/pro/exmo.js +6 -0
  738. package/js/src/pro/gate.js +9 -0
  739. package/js/src/pro/gateio.js +6 -0
  740. package/js/src/pro/gemini.js +6 -0
  741. package/js/src/pro/grvt.js +6 -0
  742. package/js/src/pro/hashkey.js +6 -0
  743. package/js/src/pro/hitbtc.js +6 -0
  744. package/js/src/pro/hollaex.js +6 -0
  745. package/js/src/pro/htx.js +6 -0
  746. package/js/src/pro/huobi.js +6 -0
  747. package/js/src/pro/hyperliquid.js +6 -0
  748. package/js/src/pro/independentreserve.js +6 -0
  749. package/js/src/pro/kraken.js +6 -0
  750. package/js/src/pro/krakenfutures.js +6 -0
  751. package/js/src/pro/kucoin.js +6 -0
  752. package/js/src/pro/kucoinfutures.js +6 -0
  753. package/js/src/pro/lbank.js +6 -0
  754. package/js/src/pro/lighter.js +41 -16
  755. package/js/src/pro/luno.js +6 -0
  756. package/js/src/pro/mexc.js +6 -0
  757. package/js/src/pro/modetrade.js +6 -0
  758. package/js/src/pro/myokx.js +6 -0
  759. package/js/src/pro/ndax.js +6 -0
  760. package/js/src/pro/okx.js +6 -0
  761. package/js/src/pro/okxus.js +6 -0
  762. package/js/src/pro/onetrading.js +6 -0
  763. package/js/src/pro/oxfun.js +6 -0
  764. package/js/src/pro/p2b.js +6 -0
  765. package/js/src/pro/pacifica.d.ts +267 -0
  766. package/js/src/pro/pacifica.js +1396 -0
  767. package/js/src/pro/paradex.js +6 -0
  768. package/js/src/pro/phemex.js +6 -0
  769. package/js/src/pro/poloniex.js +6 -0
  770. package/js/src/pro/toobit.js +6 -0
  771. package/js/src/pro/upbit.js +6 -0
  772. package/js/src/pro/whitebit.js +6 -0
  773. package/js/src/pro/woo.js +6 -0
  774. package/js/src/pro/woofipro.js +6 -0
  775. package/js/src/pro/xt.js +6 -0
  776. package/js/src/protobuf/mexc/compiled.cjs +6 -0
  777. package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +6 -0
  778. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +6 -0
  779. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +6 -0
  780. package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +6 -0
  781. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +6 -0
  782. package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +6 -0
  783. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +6 -0
  784. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +6 -0
  785. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +6 -0
  786. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +6 -0
  787. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +6 -0
  788. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +6 -0
  789. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +6 -0
  790. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +6 -0
  791. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +6 -0
  792. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +6 -0
  793. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +6 -0
  794. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +6 -0
  795. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +6 -0
  796. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +6 -0
  797. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +6 -0
  798. package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +6 -0
  799. package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +6 -0
  800. package/js/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
  801. package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +6 -0
  802. package/js/src/static_dependencies/dydx-v4-client/onboarding.js +6 -0
  803. package/js/src/static_dependencies/dydx-v4-client/registry.js +6 -0
  804. package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
  805. package/js/src/static_dependencies/ethers/address/address.js +6 -0
  806. package/js/src/static_dependencies/ethers/address/checks.js +6 -0
  807. package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
  808. package/js/src/static_dependencies/ethers/address/index.js +6 -0
  809. package/js/src/static_dependencies/ethers/bytes32.js +6 -0
  810. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
  811. package/js/src/static_dependencies/ethers/coders/address.js +6 -0
  812. package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
  813. package/js/src/static_dependencies/ethers/coders/array.js +6 -0
  814. package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
  815. package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
  816. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
  817. package/js/src/static_dependencies/ethers/coders/null.js +6 -0
  818. package/js/src/static_dependencies/ethers/coders/number.js +6 -0
  819. package/js/src/static_dependencies/ethers/coders/string.js +6 -0
  820. package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
  821. package/js/src/static_dependencies/ethers/fragments.js +6 -0
  822. package/js/src/static_dependencies/ethers/hash/index.js +6 -0
  823. package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
  824. package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
  825. package/js/src/static_dependencies/ethers/index.js +6 -0
  826. package/js/src/static_dependencies/ethers/interface.js +6 -0
  827. package/js/src/static_dependencies/ethers/typed.js +6 -0
  828. package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
  829. package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
  830. package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
  831. package/js/src/static_dependencies/ethers/utils/data.js +6 -0
  832. package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
  833. package/js/src/static_dependencies/ethers/utils/events.js +6 -0
  834. package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
  835. package/js/src/static_dependencies/ethers/utils/index.js +6 -0
  836. package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
  837. package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
  838. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
  839. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
  840. package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
  841. package/js/src/static_dependencies/ethers/utils/units.js +6 -0
  842. package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
  843. package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
  844. package/js/src/static_dependencies/fflake/browser.js +6 -0
  845. package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
  846. package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
  847. package/js/src/static_dependencies/jsencrypt/index.js +6 -0
  848. package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
  849. package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
  850. package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
  851. package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
  852. package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
  853. package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
  854. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
  855. package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
  856. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
  857. package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
  858. package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
  859. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
  860. package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
  861. package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
  862. package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
  863. package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
  864. package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
  865. package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
  866. package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
  867. package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
  868. package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
  869. package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
  870. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
  871. package/js/src/static_dependencies/noble-curves/bn.js +6 -0
  872. package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
  873. package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
  874. package/js/src/static_dependencies/noble-curves/index.js +6 -0
  875. package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
  876. package/js/src/static_dependencies/noble-curves/p256.js +6 -0
  877. package/js/src/static_dependencies/noble-curves/p384.js +6 -0
  878. package/js/src/static_dependencies/noble-curves/p521.js +6 -0
  879. package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
  880. package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
  881. package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
  882. package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
  883. package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
  884. package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
  885. package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
  886. package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
  887. package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
  888. package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
  889. package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
  890. package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
  891. package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
  892. package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
  893. package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
  894. package/js/src/static_dependencies/noble-hashes/index.js +6 -0
  895. package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
  896. package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
  897. package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
  898. package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
  899. package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
  900. package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
  901. package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
  902. package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
  903. package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
  904. package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
  905. package/js/src/static_dependencies/node-fetch/body.js +6 -0
  906. package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
  907. package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
  908. package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
  909. package/js/src/static_dependencies/node-fetch/headers.js +6 -0
  910. package/js/src/static_dependencies/node-fetch/index.js +6 -0
  911. package/js/src/static_dependencies/node-fetch/request.js +6 -0
  912. package/js/src/static_dependencies/node-fetch/response.js +6 -0
  913. package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
  914. package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
  915. package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
  916. package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
  917. package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
  918. package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
  919. package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
  920. package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
  921. package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
  922. package/js/src/static_dependencies/qs/formats.js +6 -0
  923. package/js/src/static_dependencies/qs/index.js +6 -0
  924. package/js/src/static_dependencies/qs/parse.js +6 -0
  925. package/js/src/static_dependencies/qs/stringify.js +6 -0
  926. package/js/src/static_dependencies/qs/utils.js +6 -0
  927. package/js/src/static_dependencies/scure-base/index.js +6 -0
  928. package/js/src/static_dependencies/scure-bip32/index.js +6 -0
  929. package/js/src/static_dependencies/scure-bip39/index.js +6 -0
  930. package/js/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
  931. package/js/src/static_dependencies/scure-starknet/index.js +6 -0
  932. package/js/src/static_dependencies/starknet/constants.js +6 -0
  933. package/js/src/static_dependencies/starknet/index.js +6 -0
  934. package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
  935. package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
  936. package/js/src/static_dependencies/starknet/types/index.js +6 -0
  937. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
  938. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
  939. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
  940. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
  941. package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
  942. package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
  943. package/js/src/static_dependencies/starknet/utils/address.js +6 -0
  944. package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
  945. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
  946. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
  947. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
  948. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
  949. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
  950. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
  951. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
  952. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
  953. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
  954. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
  955. package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
  956. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
  957. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
  958. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
  959. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
  960. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
  961. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
  962. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
  963. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
  964. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
  965. package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
  966. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
  967. package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
  968. package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
  969. package/js/src/static_dependencies/starknet/utils/num.js +6 -0
  970. package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
  971. package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
  972. package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
  973. package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
  974. package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
  975. package/js/src/static_dependencies/starknet/utils/url.js +6 -0
  976. package/js/src/static_dependencies/watchable/src/index.js +6 -0
  977. package/js/src/static_dependencies/watchable/src/types.js +6 -0
  978. package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
  979. package/js/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
  980. package/js/src/tokocrypto.js +6 -0
  981. package/js/src/toobit.js +6 -0
  982. package/js/src/upbit.js +6 -0
  983. package/js/src/wavesexchange.js +6 -0
  984. package/js/src/whitebit.js +6 -0
  985. package/js/src/woo.js +6 -0
  986. package/js/src/woofipro.js +6 -0
  987. package/js/src/xt.js +6 -0
  988. package/js/src/yobit.js +6 -0
  989. package/js/src/zaif.js +6 -0
  990. package/js/src/zebpay.js +6 -0
  991. package/js/src/zonda.js +6 -0
  992. package/package.json +1 -1
@@ -0,0 +1,1396 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // ---------------------------------------------------------------------------
8
+ import pacificaRest from '../pacifica.js';
9
+ import { ArgumentsRequired, NotSupported } from '../base/errors.js';
10
+ import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById } from '../base/ws/Cache.js';
11
+ // ---------------------------------------------------------------------------
12
+ export default class pacifica extends pacificaRest {
13
+ describe() {
14
+ return this.deepExtend(super.describe(), {
15
+ 'has': {
16
+ 'ws': true,
17
+ 'cancelOrderWs': true,
18
+ 'cancelOrdersWs': true,
19
+ 'cancelAllOrdersWs': true,
20
+ 'createOrderWs': true,
21
+ 'createOrdersWs': true,
22
+ 'editOrderWs': true,
23
+ 'watchBalance': false,
24
+ 'watchMyTrades': true,
25
+ 'watchOHLCV': true,
26
+ 'watchOrderBook': true,
27
+ 'watchOrders': true,
28
+ 'watchTicker': true,
29
+ 'watchTickers': true,
30
+ 'watchTrades': true,
31
+ 'watchTradesForSymbols': false,
32
+ 'watchPosition': false,
33
+ 'unWatchOrderBook': true,
34
+ 'unWatchTickers': true,
35
+ 'unWatchTrades': true,
36
+ 'unWatchOHLCV': true,
37
+ 'unWatchMyTrades': true,
38
+ 'unWatchOrders': true,
39
+ },
40
+ 'urls': {
41
+ 'api': {
42
+ 'ws': {
43
+ 'public': 'wss://ws.pacifica.fi/ws',
44
+ },
45
+ },
46
+ 'test': {
47
+ 'ws': {
48
+ 'public': 'wss://test-ws.pacifica.fi/ws',
49
+ },
50
+ },
51
+ },
52
+ 'options': {
53
+ 'ws': {
54
+ 'options': {
55
+ 'headers': {},
56
+ },
57
+ },
58
+ },
59
+ 'streaming': {
60
+ 'ping': this.ping,
61
+ 'keepAlive': 20000,
62
+ },
63
+ 'exceptions': {
64
+ 'ws': {
65
+ 'exact': {},
66
+ },
67
+ },
68
+ });
69
+ }
70
+ setupApiKeyHeaders(key = undefined) {
71
+ const headers = {};
72
+ if (key !== undefined) {
73
+ headers['PF-API-KEY'] = key;
74
+ }
75
+ else {
76
+ if (this.handleOption('setupApiKeyHeaders', 'apiKey', undefined) !== undefined) {
77
+ headers['PF-API-KEY'] = this.options['apiKey'];
78
+ }
79
+ }
80
+ this.options['ws']['options']['headers'] = headers;
81
+ }
82
+ /**
83
+ * @method
84
+ * @name pacifica#createOrderWs
85
+ * @description create a trade order
86
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/create-market-order
87
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/create-limit-order
88
+ * @param {string} symbol unified symbol of the market to create an order in
89
+ * @param {string} type 'market' or 'limit'
90
+ * @param {string} side 'buy' or 'sell'
91
+ * @param {float} amount how much of currency you want to trade in units of base currency
92
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
93
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
94
+ * @param {float} [params.triggerPrice] The price a trigger order is triggered at
95
+ * @param {float|undefined} [params.stopLossPrice] the price that a stop loss order is triggered at (optional provide stopLossCloid)
96
+ * @param {float|undefined} [params.takeProfitPrice] the price that a take profit order is triggered at (optional provide takeProfitCloid)
97
+ * @param {string|undefined} [params.timeInForce] "GTC", "IOC", or "PO" or "ALO" or "PO_TOB" (or "TOB" - PO by top of book)
98
+ * @param {bool|undefined} [params.reduceOnly] Ensures that the executed order does not flip the opened position.
99
+ * @param {string|undefined} [params.clientOrderId] client order id, (optional uuid v4 e.g.: f47ac10b-58cc-4372-a567-0e02b2c3d479)
100
+ * @param {int|undefined} [params.expiryWindow] time to live in milliseconds
101
+ * @param {string|undefined} [params.agentAddress] only if agent wallet in use.
102
+ * @param {string|undefined} [params.originAddress] only if agent in use. Agent's owner address ( default = credentials walletAddress )
103
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure}
104
+ */
105
+ async createOrderWs(symbol, type, side, amount, price = undefined, params = {}) {
106
+ await this.loadMarkets();
107
+ const [request, operationType] = this.createOrderRequest(symbol, type, side, amount, price, params);
108
+ params = this.omit(params, [
109
+ 'reduceOnly', 'clientOrderId', 'stopLimitPrice', 'timeInForce', 'triggerPrice', 'stopLossCloid',
110
+ 'stopLossPrice', 'stopLossLimitPrice', 'takeProfitCloid', 'takeProfitPrice', 'takeProfitLimitPrice', 'expiryWindow', 'agentAddress', 'originAddress',
111
+ ]);
112
+ const isTestnet = this.isSandboxModeEnabled;
113
+ const urlKey = (isTestnet) ? 'test' : 'api';
114
+ const url = this.urls[urlKey]['ws']['public'];
115
+ const wsRequest = this.wrapAsPostAction(operationType, request);
116
+ const requestId = this.safeString(wsRequest, 'id');
117
+ if (operationType === 'create_stop_order') {
118
+ throw new NotSupported(this.id + ' createOrderWs() do not support stop order type of order. Check provided arguments correctly!');
119
+ }
120
+ else if (operationType === 'set_position_tpsl') {
121
+ throw new NotSupported(this.id + ' createOrderWs() do not support set position tpsl type of order. Check provided arguments correctly!');
122
+ }
123
+ const response = await this.watch(url, requestId, wsRequest, requestId);
124
+ //
125
+ // market order
126
+ // {
127
+ // "code": 200,
128
+ // "data": {
129
+ // "I": "79f948fd-7556-4066-a128-083f3ea49322",
130
+ // "i": 645953,
131
+ // "s": "BTC"
132
+ // },
133
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
134
+ // "t": 1749223025962,
135
+ // "type": "create_market_order"
136
+ // }
137
+ //
138
+ // limit order
139
+ // {
140
+ // "code": 200,
141
+ // "data": {
142
+ // "I": "79f948fd-7556-4066-a128-083f3ea49322",
143
+ // "i": 645953,
144
+ // "s": "BTC"
145
+ // },
146
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
147
+ // "t": 1749223025962,
148
+ // "type": "create_order"
149
+ // }
150
+ //
151
+ const code = this.safeInteger(response, 'code');
152
+ let success = false;
153
+ if (code === 200) {
154
+ success = true;
155
+ }
156
+ let status = undefined;
157
+ if (!success) {
158
+ status = 'rejected';
159
+ }
160
+ else {
161
+ status = 'open';
162
+ }
163
+ const order = this.safeDict(response, 'data', {});
164
+ const orderId = this.safeString(order, 'i');
165
+ const clientOrderId = this.safeString(order, 'I');
166
+ return this.safeOrder({ 'id': orderId, 'clientOrderId': clientOrderId, 'status': status, 'info': response, 'symbol': symbol });
167
+ }
168
+ /**
169
+ * @method
170
+ * @name pacifica#editOrderWs
171
+ * @description edit a trade order
172
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/edit-order
173
+ * @param {string} id edit order id
174
+ * @param {string} symbol unified symbol of the market to edit an order in
175
+ * @param {string} type 'market' or 'limit'
176
+ * @param {string} side 'buy' or 'sell'
177
+ * @param {float} amount how much of currency you want to trade in units of base currency
178
+ * @param {float} price the price at which the order is to be fulfilled, in units of the quote currency
179
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
180
+ * @param {string} [params.clientOrderId] client order id, (optional uuid v4 e.g.: f47ac10b-58cc-4372-a567-0e02b2c3d479)
181
+ * @param {int|undefined} [params.expiryWindow] time to live in milliseconds
182
+ * @param {string|undefined} [params.agentAddress] only if agent wallet in use
183
+ * @param {string|undefined} [params.originAddress] only if agent in use. Agent's owner address ( default = credentials walletAddress )
184
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure}
185
+ */
186
+ async editOrderWs(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
187
+ const batchOperationType = 'edit_order';
188
+ await this.loadMarkets();
189
+ const market = this.market(symbol);
190
+ const request = this.editOrderRequest(id, symbol, type, side, amount, price, market, params);
191
+ params = this.omit(params, ['originAddress', 'agentAddress', 'expiryWindow', 'clientOrderId']);
192
+ const isTestnet = this.isSandboxModeEnabled;
193
+ const urlKey = (isTestnet) ? 'test' : 'api';
194
+ const url = this.urls[urlKey]['ws']['public'];
195
+ const wsRequest = this.wrapAsPostAction(batchOperationType, request);
196
+ const requestId = this.safeString(wsRequest, 'id');
197
+ const response = await this.watch(url, requestId, wsRequest, requestId);
198
+ // {
199
+ // "code": 200,
200
+ // "data": {
201
+ // "I": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
202
+ // "i": 645954,
203
+ // "s": "BTC"
204
+ // },
205
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
206
+ // "t": 1749223026150,
207
+ // "type": "edit_order"
208
+ // }
209
+ const code = this.safeInteger(response, 'code');
210
+ let success = false;
211
+ if (code === 200) {
212
+ success = true;
213
+ }
214
+ let status = undefined;
215
+ if (!success) {
216
+ status = 'rejected';
217
+ }
218
+ else {
219
+ status = 'open';
220
+ }
221
+ const order = this.safeDict(response, 'data', {});
222
+ const orderId = this.safeString(order, 'i');
223
+ const clientOrderId = this.safeString(order, 'I');
224
+ return this.safeOrder({ 'id': orderId, 'clientOrderId': clientOrderId, 'status': status, 'info': response, 'symbol': symbol });
225
+ }
226
+ /**
227
+ * @method
228
+ * @name pacifica#cancelOrdersWs
229
+ * @description cancel multiple orders
230
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/batch-order
231
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/cancel-order
232
+ * @param {string[]} ids order ids
233
+ * @param {string} [symbol] unified market symbol
234
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
235
+ * @param {string|string[]} [params.clientOrderId] client order ids, (optional uuid v4 e.g.: f47ac10b-58cc-4372-a567-0e02b2c3d479)
236
+ * @param {int|undefined} [params.expiryWindow] time to live in milliseconds
237
+ * @param {string|undefined} [params.agentAddress] only if agent wallet in use
238
+ * @param {string|undefined} [params.originAddress] only if agent in use. Agent's owner address ( default = credentials walletAddress )
239
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
240
+ */
241
+ async cancelOrdersWs(ids, symbol = undefined, params = {}) {
242
+ const batchOperationType = 'batch_orders';
243
+ await this.loadMarkets();
244
+ if (symbol === undefined) {
245
+ throw new ArgumentsRequired(this.id + 'cancelOrders() requires a "symbol" argument!');
246
+ }
247
+ const request = this.cancelOrdersRequest(ids, symbol, params);
248
+ params = this.omit(params, ['originAddress', 'agentAddress', 'expiryWindow', 'clientOrderIds']);
249
+ const isTestnet = this.isSandboxModeEnabled;
250
+ const urlKey = (isTestnet) ? 'test' : 'api';
251
+ const url = this.urls[urlKey]['ws']['public'];
252
+ const wsRequest = this.wrapAsPostAction(batchOperationType, request);
253
+ const requestId = this.safeString(wsRequest, 'id');
254
+ const response = await this.watch(url, requestId, wsRequest, requestId);
255
+ //
256
+ // {
257
+ // "code": 200,
258
+ // "data": {
259
+ // "results": [
260
+ // {
261
+ // "success": true,
262
+ // "order_id": 645953,
263
+ // "client_order_id": "57a5efb1-bb96-49a5-8bfd-f25d5f22bc7e",
264
+ // "symbol": "BTC"
265
+ // },
266
+ // {
267
+ // "success": true,
268
+ // "order_id": 645954,
269
+ // "symbol": "ETH"
270
+ // }
271
+ // ]
272
+ // },
273
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
274
+ // "t": 1749223025962,
275
+ // "type": "batch_orders"
276
+ // }
277
+ //
278
+ const data = this.safeDict(response, 'data', {});
279
+ const results = this.safeList(data, 'results', []);
280
+ const ordersToReturn = [];
281
+ for (let i = 0; i < results.length; i++) {
282
+ const order = results[i];
283
+ const error = this.safeString(order, 'error', undefined);
284
+ const success = this.safeBool(order, 'success', false);
285
+ const marketId = this.safeString(order, 'symbol');
286
+ const market = this.safeMarket(marketId);
287
+ const orderId = this.safeString(order, 'i');
288
+ const clientOrderId = this.safeString(order, 'I');
289
+ let status = undefined;
290
+ if ((error !== undefined) || (!success)) {
291
+ status = 'closed';
292
+ }
293
+ else {
294
+ status = 'canceled';
295
+ }
296
+ ordersToReturn.push(this.safeOrder({ 'id': orderId, 'clientOrderId': clientOrderId, 'status': status, 'info': response, 'symbol': market['symbol'] }));
297
+ }
298
+ return ordersToReturn;
299
+ }
300
+ /**
301
+ * @method
302
+ * @name pacifica#cancelOrderWs
303
+ * @description cancels an open order
304
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/cancel-order
305
+ * @param {string} id order id
306
+ * @param {string} symbol unified symbol of the market the order was made in
307
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
308
+ * @param {bool|undefined} [params.stop] necessary if this is to cancel a stop order.
309
+ * @param {string|undefined} [params.clientOrderId] client order id, (optional uuid v4 e.g.: f47ac10b-58cc-4372-a567-0e02b2c3d479)
310
+ * @param {int|undefined} [params.expiryWindow] time to live in milliseconds
311
+ * @param {string|undefined} [params.agentAddress] only if agent wallet in use
312
+ * @param {string|undefined} [params.originAddress] only if agent in use. Agent's owner address ( default = credentials walletAddress )
313
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/?id=order-structure}
314
+ */
315
+ async cancelOrderWs(id, symbol = undefined, params = {}) {
316
+ const operationType = 'cancel_order';
317
+ await this.loadMarkets();
318
+ if (symbol === undefined) {
319
+ throw new ArgumentsRequired(this.id + ' cancelOrderWs() requires a symbol argument');
320
+ }
321
+ const request = this.cancelOrderRequest(id, symbol, params);
322
+ params = this.omit(params, ['originAddress', 'agentAddress', 'expiryWindow', 'trigger', 'stop', 'clientOrderId']);
323
+ const isTestnet = this.isSandboxModeEnabled;
324
+ const urlKey = (isTestnet) ? 'test' : 'api';
325
+ const url = this.urls[urlKey]['ws']['public'];
326
+ const wsRequest = this.wrapAsPostAction(operationType, request);
327
+ const requestId = this.safeString(wsRequest, 'id');
328
+ const response = await this.watch(url, requestId, wsRequest, requestId);
329
+ //
330
+ // {
331
+ // "code": 200,
332
+ // "data": {
333
+ // "I": "79f948fd-7556-4066-a128-083f3ea49322",
334
+ // "i": null,
335
+ // "s": "BTC"
336
+ // },
337
+ // "id": "1bb2b72f-f545-4938-8a38-c5cda8823675",
338
+ // "t": 1749223343610,
339
+ // "type": "cancel_order"
340
+ // }
341
+ //
342
+ const code = this.safeInteger(response, 'code');
343
+ let success = false;
344
+ if (code === 200) {
345
+ success = true;
346
+ }
347
+ let status = undefined;
348
+ if (!success) {
349
+ status = 'rejected';
350
+ }
351
+ else {
352
+ status = 'open';
353
+ }
354
+ const order = this.safeDict(response, 'data', {});
355
+ const orderId = this.safeString(order, 'i');
356
+ const clientOrderId = this.safeString(order, 'I');
357
+ return this.safeOrder({ 'id': orderId, 'clientOrderId': clientOrderId, 'status': status, 'info': response, 'symbol': symbol });
358
+ }
359
+ /**
360
+ * @method
361
+ * @name pacifica#cancelAllOrdersWs
362
+ * @description cancel all open orders in a market
363
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/trading-operations/cancel-all-orders
364
+ * @param {string} symbol (optional) unified market symbol of the market to cancel orders in.
365
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
366
+ * @param {boolean|undefined} [params.excludeReduceOnly] whether to exclude reduce-only orders
367
+ * @param {int|undefined} [params.expiryWindow] time to live in milliseconds
368
+ * @param {string|undefined} [params.agentAddress] only if agent wallet in use
369
+ * @param {string|undefined} [params.originAddress] only if agent in use. Agent's owner address ( default = credentials walletAddress )
370
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
371
+ */
372
+ async cancelAllOrdersWs(symbol = undefined, params = {}) {
373
+ await this.loadMarkets();
374
+ const operationType = 'cancel_all_orders';
375
+ const request = this.cancelAllOrdersRequest(symbol, params);
376
+ params = this.omit(params, ['excludeReduceOnly', 'agentAddress', 'originAddress', 'expiryWindow']);
377
+ const isTestnet = this.isSandboxModeEnabled;
378
+ const urlKey = (isTestnet) ? 'test' : 'api';
379
+ const url = this.urls[urlKey]['ws']['public'];
380
+ const wsRequest = this.wrapAsPostAction(operationType, request);
381
+ const requestId = this.safeString(wsRequest, 'id');
382
+ const response = await this.watch(url, requestId, wsRequest, requestId);
383
+ // {
384
+ // "code": 200,
385
+ // "data": {
386
+ // "cancelled_count": 10
387
+ // },
388
+ // "id": "b86b4f45-49da-4191-84e2-93e141acdeab",
389
+ // "t": 1749221787291,
390
+ // "type": "cancel_all_orders"
391
+ // }
392
+ //
393
+ return [
394
+ this.safeOrder({
395
+ 'info': response,
396
+ }),
397
+ ];
398
+ }
399
+ /**
400
+ * @method
401
+ * @name pacifica#watchOrderBook
402
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
403
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/orderbook
404
+ * @param {string} symbol unified symbol of the market to fetch the order book for
405
+ * @param {int} [limit] the maximum amount of order book entries to return
406
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
407
+ * @param {int|undefined} [params.aggLevel] aggregation level for price grouping. Defaults to 1. Can be 1, 10, 100, 1000, 10000
408
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
409
+ */
410
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
411
+ this.setupApiKeyHeaders();
412
+ await this.loadMarkets();
413
+ const market = this.market(symbol);
414
+ let aggLevel = undefined;
415
+ [aggLevel, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'aggLevel', 1);
416
+ const messageHash = 'orderbook:' + symbol;
417
+ const isTestnet = this.isSandboxModeEnabled;
418
+ const urlKey = (isTestnet) ? 'test' : 'api';
419
+ const url = this.urls[urlKey]['ws']['public'];
420
+ const request = {
421
+ 'method': 'subscribe',
422
+ 'params': {
423
+ 'source': 'book',
424
+ 'symbol': market['id'],
425
+ 'agg_level': aggLevel,
426
+ },
427
+ };
428
+ const message = this.extend(request, params);
429
+ const orderbook = await this.watch(url, messageHash, message, messageHash);
430
+ return orderbook.limit();
431
+ }
432
+ /**
433
+ * @method
434
+ * @name pacifica#unWatchOrderBook
435
+ * @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
436
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/orderbook
437
+ * @param {string} symbol unified symbol of the market to fetch the order book for
438
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
439
+ * @param {int|undefined} [params.aggLevel] aggregation level for price grouping. Defaults to 1. Can be 1, 10, 100, 1000, 10000
440
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
441
+ */
442
+ async unWatchOrderBook(symbol, params = {}) {
443
+ await this.loadMarkets();
444
+ const market = this.market(symbol);
445
+ let aggLevel = undefined;
446
+ [aggLevel, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'aggLevel', 1);
447
+ const subMessageHash = 'orderbook:' + symbol;
448
+ const messageHash = 'unsubscribe:' + subMessageHash;
449
+ const isTestnet = this.isSandboxModeEnabled;
450
+ const urlKey = (isTestnet) ? 'test' : 'api';
451
+ const url = this.urls[urlKey]['ws']['public'];
452
+ const request = {
453
+ 'method': 'unsubscribe',
454
+ 'params': {
455
+ 'source': 'book',
456
+ 'symbol': market['id'],
457
+ 'agg_level': aggLevel,
458
+ },
459
+ };
460
+ const message = this.extend(request, params);
461
+ return await this.watch(url, messageHash, message, messageHash);
462
+ }
463
+ handleOrderBook(client, message) {
464
+ //
465
+ // {
466
+ // "channel": "book",
467
+ // "data": {
468
+ // "l": [
469
+ // [
470
+ // {
471
+ // "a": "37.86",
472
+ // "n": 4,
473
+ // "p": "157.47"
474
+ // },
475
+ // // ... other aggegated bid levels
476
+ // ],
477
+ // [
478
+ // {
479
+ // "a": "12.7",
480
+ // "n": 2,
481
+ // "p": "157.49"
482
+ // },
483
+ // {
484
+ // "a": "44.45",
485
+ // "n": 3,
486
+ // "p": "157.5"
487
+ // },
488
+ // // ... other aggregated ask levels
489
+ // ]
490
+ // ],
491
+ // "s": "SOL",
492
+ // "t": 1749051881187,
493
+ // "li": 1559885104 // sequence id - last order id
494
+ // }
495
+ // }
496
+ //
497
+ const entry = this.safeDict(message, 'data', {});
498
+ const marketId = this.safeString(entry, 's');
499
+ const market = this.safeMarket(marketId);
500
+ const symbol = market['symbol'];
501
+ const levels = this.safeList(entry, 'l', []);
502
+ const result = {
503
+ 'bids': this.safeList(levels, 0, []),
504
+ 'asks': this.safeList(levels, 1, []),
505
+ };
506
+ const timestamp = this.safeInteger(entry, 't');
507
+ const snapshot = this.parseOrderBook(result, symbol, timestamp, 'bids', 'asks', 'p', 'a');
508
+ const nonce = this.safeInteger(entry, 'li');
509
+ if (nonce) {
510
+ snapshot['nonce'] = nonce;
511
+ }
512
+ if (!(symbol in this.orderbooks)) {
513
+ const ob = this.orderBook(snapshot);
514
+ this.orderbooks[symbol] = ob;
515
+ }
516
+ const orderbook = this.orderbooks[symbol];
517
+ orderbook.reset(snapshot);
518
+ const messageHash = 'orderbook:' + symbol;
519
+ client.resolve(orderbook, messageHash);
520
+ }
521
+ /**
522
+ * @method
523
+ * @name pacifica#watchTicker
524
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/prices
525
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
526
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
527
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
528
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
529
+ */
530
+ async watchTicker(symbol, params = {}) {
531
+ const tickers = await this.watchTickers([symbol], params);
532
+ return tickers[symbol];
533
+ }
534
+ /**
535
+ * @method
536
+ * @name pacifica#watchTickers
537
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
538
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/prices
539
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
540
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
541
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
542
+ */
543
+ async watchTickers(symbols = undefined, params = {}) {
544
+ this.setupApiKeyHeaders();
545
+ await this.loadMarkets();
546
+ symbols = this.marketSymbols(symbols, undefined, true);
547
+ const messageHash = 'tickers';
548
+ const isTestnet = this.isSandboxModeEnabled;
549
+ const urlKey = (isTestnet) ? 'test' : 'api';
550
+ const url = this.urls[urlKey]['ws']['public'];
551
+ const request = {
552
+ 'method': 'subscribe',
553
+ 'params': {
554
+ 'source': 'prices',
555
+ },
556
+ };
557
+ const tickers = await this.watch(url, messageHash, this.extend(request, params), messageHash);
558
+ if (this.newUpdates) {
559
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
560
+ }
561
+ return this.tickers;
562
+ }
563
+ /**
564
+ * @method
565
+ * @name pacifica#unWatchTickers
566
+ * @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
567
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/prices
568
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
569
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
570
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
571
+ */
572
+ async unWatchTickers(symbols = undefined, params = {}) {
573
+ await this.loadMarkets();
574
+ symbols = this.marketSymbols(symbols, undefined, true);
575
+ const subMessageHash = 'tickers';
576
+ const messageHash = 'unsubscribe:' + subMessageHash;
577
+ const isTestnet = this.isSandboxModeEnabled;
578
+ const urlKey = (isTestnet) ? 'test' : 'api';
579
+ const url = this.urls[urlKey]['ws']['public'];
580
+ const request = {
581
+ 'method': 'unsubscribe',
582
+ 'params': {
583
+ 'source': 'prices',
584
+ },
585
+ };
586
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
587
+ }
588
+ /**
589
+ * @method
590
+ * @name pacifica#watchMyTrades
591
+ * @description watches information on multiple trades made by the user
592
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/account-trades
593
+ * @param {string} symbol unified market symbol of the market orders were made in
594
+ * @param {int} [since] the earliest time in ms to fetch orders for
595
+ * @param {int} [limit] the maximum number of order structures to retrieve
596
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
597
+ * @param {string|undefined} [params.account] will default to options' walletAddress if not provided
598
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
599
+ */
600
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
601
+ let userAddress = undefined;
602
+ [userAddress, params] = this.handleOriginAndSingleAddress('watchMyTrades', params);
603
+ await this.loadMarkets();
604
+ let messageHash = 'myTrades';
605
+ if (symbol !== undefined) {
606
+ symbol = this.symbol(symbol);
607
+ messageHash += ':' + symbol;
608
+ }
609
+ const isTestnet = this.isSandboxModeEnabled;
610
+ const urlKey = (isTestnet) ? 'test' : 'api';
611
+ const url = this.urls[urlKey]['ws']['public'];
612
+ const request = {
613
+ 'method': 'subscribe',
614
+ 'params': {
615
+ 'source': 'account_trades',
616
+ 'account': userAddress,
617
+ },
618
+ };
619
+ const message = this.extend(request, params);
620
+ const trades = await this.watch(url, messageHash, message, messageHash);
621
+ if (this.newUpdates) {
622
+ limit = trades.getLimit(symbol, limit);
623
+ }
624
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
625
+ }
626
+ /**
627
+ * @method
628
+ * @name pacifica#unWatchMyTrades
629
+ * @description unWatches information on multiple trades made by the user
630
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/account-trades
631
+ * @param {string} symbol unified market symbol of the market orders were made in
632
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
633
+ * @param {string|undefined} [params.account] will default to options' walletAddress if not provided
634
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
635
+ */
636
+ async unWatchMyTrades(symbol = undefined, params = {}) {
637
+ await this.loadMarkets();
638
+ if (symbol !== undefined) {
639
+ throw new NotSupported(this.id + ' unWatchMyTrades does not support a symbol argument, unWatch from all markets only');
640
+ }
641
+ let userAddress = undefined;
642
+ [userAddress, params] = this.handleOriginAndSingleAddress('unWatchMyTrades', params);
643
+ const messageHash = 'unsubscribe:myTrades';
644
+ const isTestnet = this.isSandboxModeEnabled;
645
+ const urlKey = (isTestnet) ? 'test' : 'api';
646
+ const url = this.urls[urlKey]['ws']['public'];
647
+ const request = {
648
+ 'method': 'unsubscribe',
649
+ 'params': {
650
+ 'source': 'account_trades',
651
+ 'account': userAddress,
652
+ },
653
+ };
654
+ const message = this.extend(request, params);
655
+ return await this.watch(url, messageHash, message, messageHash);
656
+ }
657
+ handleWsTickers(client, message) {
658
+ //
659
+ // {
660
+ // "channel": "prices",
661
+ // "data": [
662
+ // {
663
+ // "funding": "0.0000125",
664
+ // "mark": "105473",
665
+ // "mid": "105476",
666
+ // "next_funding": "0.0000125",
667
+ // "open_interest": "0.00524",
668
+ // "oracle": "105473",
669
+ // "symbol": "BTC",
670
+ // "timestamp": 1749051612681,
671
+ // "volume_24h": "63265.87522",
672
+ // "yesterday_price": "955476"
673
+ // }
674
+ // // ... other symbol prices
675
+ // ],
676
+ // }
677
+ //
678
+ const parsedTickers = [];
679
+ const data = this.safeList(message, 'data', []);
680
+ for (let i = 0; i < data.length; i++) {
681
+ const info = data[i];
682
+ const marketId = this.safeString(info, 'symbol');
683
+ const market = this.safeMarket(marketId);
684
+ const symbol = market['symbol'];
685
+ const ticker = this.parseWsTicker(info, market);
686
+ this.tickers[symbol] = ticker;
687
+ parsedTickers.push(ticker);
688
+ }
689
+ const tickers = this.indexBy(parsedTickers, 'symbol');
690
+ client.resolve(tickers, 'tickers');
691
+ return true;
692
+ }
693
+ parseWsTicker(rawTicker, market = undefined) {
694
+ return this.parseTicker(rawTicker, market);
695
+ }
696
+ handleMyTrades(client, message) {
697
+ //
698
+ // {
699
+ // "channel": "account_trades",
700
+ // "data": [
701
+ // {
702
+ // "h": 80063441, // history id
703
+ // "i": 1559912767, // oid
704
+ // "I": null, // cloid
705
+ // "u": "BrZp5bidJ3WUvceSq7X78bhjTfZXeezzGvGEV4hAYKTa", // account address
706
+ // "s": "BTC", // symbol
707
+ // "p": "89477", // price
708
+ // "o": "89505", // entry price
709
+ // "a": "0.00036", // amount
710
+ // "te": "fulfill_taker",
711
+ // "ts": "close_long",
712
+ // "tc": "normal", // trade type
713
+ // "f": "0.012885", // fee
714
+ // "n": "-0.022965", // pnl
715
+ // "t": 1765018588190,
716
+ // "li": 1559912767
717
+ // }
718
+ // ]
719
+ // }
720
+ //
721
+ if (this.myTrades === undefined) {
722
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
723
+ this.myTrades = new ArrayCacheBySymbolById(limit);
724
+ }
725
+ const trades = this.myTrades;
726
+ const symbols = {};
727
+ const data = this.safeList(message, 'data', []);
728
+ const dataLength = data.length;
729
+ if (dataLength === 0) {
730
+ return;
731
+ }
732
+ for (let i = 0; i < data.length; i++) {
733
+ const rawTrade = data[i];
734
+ const parsed = this.parseWsTrade(rawTrade);
735
+ const symbol = parsed['symbol'];
736
+ symbols[symbol] = true;
737
+ trades.append(parsed);
738
+ }
739
+ const keys = Object.keys(symbols);
740
+ for (let i = 0; i < keys.length; i++) {
741
+ const currentMessageHash = 'myTrades:' + keys[i];
742
+ client.resolve(trades, currentMessageHash);
743
+ }
744
+ // non-symbol specific
745
+ const messageHash = 'myTrades';
746
+ client.resolve(trades, messageHash);
747
+ }
748
+ /**
749
+ * @method
750
+ * @name pacifica#watchTrades
751
+ * @description watches information on multiple trades made in a market
752
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/trades
753
+ * @param {string} symbol unified market symbol of the market trades were made in
754
+ * @param {int} [since] the earliest time in ms to fetch trades for
755
+ * @param {int} [limit] the maximum number of trade structures to retrieve
756
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
757
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=trade-structure}
758
+ */
759
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
760
+ await this.loadMarkets();
761
+ const market = this.market(symbol);
762
+ symbol = market['symbol'];
763
+ const messageHash = 'trade:' + symbol;
764
+ const isTestnet = this.isSandboxModeEnabled;
765
+ const urlKey = (isTestnet) ? 'test' : 'api';
766
+ const url = this.urls[urlKey]['ws']['public'];
767
+ const request = {
768
+ 'method': 'subscribe',
769
+ 'params': {
770
+ 'source': 'trades',
771
+ 'symbol': market['id'],
772
+ },
773
+ };
774
+ const message = this.extend(request, params);
775
+ const trades = await this.watch(url, messageHash, message, messageHash);
776
+ if (this.newUpdates) {
777
+ limit = trades.getLimit(symbol, limit);
778
+ }
779
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
780
+ }
781
+ /**
782
+ * @method
783
+ * @name pacifica#unWatchTrades
784
+ * @description unWatches information on multiple trades made in a market
785
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/trades
786
+ * @param {string} symbol unified market symbol of the market trades were made in
787
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
788
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=trade-structure}
789
+ */
790
+ async unWatchTrades(symbol, params = {}) {
791
+ await this.loadMarkets();
792
+ const market = this.market(symbol);
793
+ symbol = market['symbol'];
794
+ const subMessageHash = 'trade:' + symbol;
795
+ const messageHash = 'unsubscribe:' + subMessageHash;
796
+ const isTestnet = this.isSandboxModeEnabled;
797
+ const urlKey = (isTestnet) ? 'test' : 'api';
798
+ const url = this.urls[urlKey]['ws']['public'];
799
+ const request = {
800
+ 'method': 'unsubscribe',
801
+ 'params': {
802
+ 'source': 'trades',
803
+ 'symbol': market['id'],
804
+ },
805
+ };
806
+ const message = this.extend(request, params);
807
+ return await this.watch(url, messageHash, message, messageHash);
808
+ }
809
+ handleTrades(client, message) {
810
+ //
811
+ // {
812
+ // "channel": "trades",
813
+ // "data": [
814
+ // {
815
+ // "h": 80062522,
816
+ // "s": "BTC",
817
+ // "a": "0.00001",
818
+ // "p": "89471",
819
+ // "d": "close_short",
820
+ // "tc": "normal",
821
+ // "t": 1765018379085,
822
+ // "li": 1559885104
823
+ // }
824
+ // ]
825
+ // }
826
+ //
827
+ const entry = this.safeList(message, 'data', []);
828
+ const first = this.safeDict(entry, 0, {});
829
+ const marketId = this.safeString(first, 's');
830
+ const market = this.safeMarket(marketId);
831
+ const symbol = market['symbol'];
832
+ if (!(symbol in this.trades)) {
833
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
834
+ const stored = new ArrayCache(limit);
835
+ this.trades[symbol] = stored;
836
+ }
837
+ const trades = this.trades[symbol];
838
+ for (let i = 0; i < entry.length; i++) {
839
+ const data = this.safeDict(entry, i);
840
+ const trade = this.parseWsTrade(data);
841
+ trades.append(trade);
842
+ }
843
+ const messageHash = 'trade:' + symbol;
844
+ client.resolve(trades, messageHash);
845
+ }
846
+ parseWsTrade(trade, market = undefined) {
847
+ //
848
+ // fetchMyTrades
849
+ //
850
+ // {
851
+ // "h": 80063441, // history id
852
+ // "i": 1559912767, // oid
853
+ // "I": null, // cloid
854
+ // "u": "BrZp5bidJ3WUvceSq7X78bhjTfZXeezzGvGEV4hAYKTa", // account address
855
+ // "s": "BTC", // symbol
856
+ // "p": "89477", // price
857
+ // "o": "89505", // entry price
858
+ // "a": "0.00036", // amount
859
+ // "te": "fulfill_taker",
860
+ // "ts": "close_long",
861
+ // "tc": "normal", // trade type
862
+ // "f": "0.012885", // fee
863
+ // "n": "-0.022965", // pnl
864
+ // "t": 1765018588190,
865
+ // "li": 1559912767
866
+ // }
867
+ //
868
+ // fetchTrades
869
+ //
870
+ // {
871
+ // "h": 80062522,
872
+ // "s": "BTC",
873
+ // "a": "0.00001",
874
+ // "p": "89471",
875
+ // "d": "close_short",
876
+ // "tc": "normal",
877
+ // "t": 1765018379085,
878
+ // "li": 1559885104
879
+ // }
880
+ //
881
+ const timestamp = this.safeInteger(trade, 't');
882
+ const price = this.safeString(trade, 'p');
883
+ const amount = this.safeString(trade, 'a');
884
+ const marketId = this.safeString(trade, 's');
885
+ market = this.safeMarket(marketId, market);
886
+ const symbol = market['symbol'];
887
+ const id = this.safeString(trade, 'h');
888
+ const fee = this.safeString(trade, 'f');
889
+ let side = this.safeString2(trade, 'ts', 'd');
890
+ if (side === 'open_long') {
891
+ side = 'buy';
892
+ }
893
+ else if (side === 'close_long') {
894
+ side = 'sell';
895
+ }
896
+ else if (side === 'open_short') {
897
+ side = 'sell';
898
+ }
899
+ else if (side === 'close_short') {
900
+ side = 'buy';
901
+ }
902
+ const eventType = this.safeString(trade, 'te');
903
+ let takerOrMaker = undefined;
904
+ if (eventType !== undefined) {
905
+ takerOrMaker = (eventType === 'fulfill_maker') ? 'maker' : 'taker';
906
+ }
907
+ const orderId = this.safeString(trade, 'i');
908
+ // public trades have no orderId
909
+ if (orderId === undefined) {
910
+ takerOrMaker = undefined;
911
+ }
912
+ return this.safeTrade({
913
+ 'info': trade,
914
+ 'timestamp': timestamp,
915
+ 'datetime': this.iso8601(timestamp),
916
+ 'symbol': symbol,
917
+ 'id': id,
918
+ 'order': this.safeString(trade, 'i'),
919
+ 'type': undefined,
920
+ 'side': side,
921
+ 'takerOrMaker': takerOrMaker,
922
+ 'price': price,
923
+ 'amount': amount,
924
+ 'cost': undefined,
925
+ 'fee': { 'cost': fee, 'currency': 'USDC' },
926
+ }, market);
927
+ }
928
+ /**
929
+ * @method
930
+ * @name pacifica#watchOHLCV
931
+ * @description watches historical candlestick data containing the open, high, low, close price, and the volume of a market
932
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/candle
933
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
934
+ * @param {string} timeframe the length of time each candle represents
935
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
936
+ * @param {int} [limit] the maximum amount of candles to fetch
937
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
938
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
939
+ */
940
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
941
+ await this.loadMarkets();
942
+ const market = this.market(symbol);
943
+ symbol = market['symbol'];
944
+ const isTestnet = this.isSandboxModeEnabled;
945
+ const parsedTf = this.safeString(this.timeframes, timeframe, timeframe);
946
+ const urlKey = (isTestnet) ? 'test' : 'api';
947
+ const url = this.urls[urlKey]['ws']['public'];
948
+ const request = {
949
+ 'method': 'subscribe',
950
+ 'params': {
951
+ 'source': 'candle',
952
+ 'symbol': market['id'],
953
+ 'interval': parsedTf,
954
+ },
955
+ };
956
+ const messageHash = 'candles:' + parsedTf + ':' + symbol;
957
+ const message = this.extend(request, params);
958
+ const ohlcv = await this.watch(url, messageHash, message, messageHash);
959
+ if (this.newUpdates) {
960
+ limit = ohlcv.getLimit(symbol, limit);
961
+ }
962
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
963
+ }
964
+ /**
965
+ * @method
966
+ * @name pacifica#unWatchOHLCV
967
+ * @description watches historical candlestick data containing the open, high, low, close price, and the volume of a market
968
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/candle
969
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
970
+ * @param {string} timeframe the length of time each candle represents
971
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
972
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
973
+ */
974
+ async unWatchOHLCV(symbol, timeframe = '1m', params = {}) {
975
+ await this.loadMarkets();
976
+ const market = this.market(symbol);
977
+ symbol = market['symbol'];
978
+ const isTestnet = this.isSandboxModeEnabled;
979
+ const urlKey = (isTestnet) ? 'test' : 'api';
980
+ const url = this.urls[urlKey]['ws']['public'];
981
+ const request = {
982
+ 'method': 'unsubscribe',
983
+ 'params': {
984
+ 'source': 'candle',
985
+ 'symbol': market['id'],
986
+ 'interval': timeframe,
987
+ },
988
+ };
989
+ const subMessageHash = 'candles:' + timeframe + ':' + symbol;
990
+ const messagehash = 'unsubscribe:' + subMessageHash;
991
+ const message = this.extend(request, params);
992
+ return await this.watch(url, messagehash, message, messagehash);
993
+ }
994
+ handleOHLCV(client, message) {
995
+ //
996
+ // {
997
+ // "channel": "candle",
998
+ // "data": {
999
+ // "t": 1749052260000,
1000
+ // "T": 1749052320000,
1001
+ // "s": "SOL",
1002
+ // "i": "1m",
1003
+ // "o": "157.3",
1004
+ // "c": "157.32",
1005
+ // "h": "157.32",
1006
+ // "l": "157.3",
1007
+ // "v": "1.22",
1008
+ // "n": 8
1009
+ // }
1010
+ // }
1011
+ //
1012
+ const data = this.safeDict(message, 'data', {});
1013
+ const marketId = this.safeString(data, 's');
1014
+ const market = this.safeMarket(marketId);
1015
+ const symbol = market['symbol'];
1016
+ const timeframe = this.safeString(data, 'i');
1017
+ if (!(symbol in this.ohlcvs)) {
1018
+ this.ohlcvs[symbol] = {};
1019
+ }
1020
+ if (!(timeframe in this.ohlcvs[symbol])) {
1021
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
1022
+ const stored = new ArrayCacheByTimestamp(limit);
1023
+ this.ohlcvs[symbol][timeframe] = stored;
1024
+ }
1025
+ const ohlcv = this.ohlcvs[symbol][timeframe];
1026
+ const parsed = this.parseOHLCV(data);
1027
+ ohlcv.append(parsed);
1028
+ const messageHash = 'candles:' + timeframe + ':' + symbol;
1029
+ client.resolve(ohlcv, messageHash);
1030
+ }
1031
+ /**
1032
+ * @method
1033
+ * @name pacifica#watchOrders
1034
+ * @description watches information on multiple orders made by the user
1035
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/account-order-updates
1036
+ * @param {string} symbol unified market symbol of the market orders were made in
1037
+ * @param {int} [since] the earliest time in ms to fetch orders for
1038
+ * @param {int} [limit] the maximum number of order structures to retrieve
1039
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1040
+ * @param {string|undefined} [params.account] will default to options' walletAddress if not provided
1041
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
1042
+ */
1043
+ async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1044
+ await this.loadMarkets();
1045
+ let userAddress = undefined;
1046
+ [userAddress, params] = this.handleOriginAndSingleAddress('watchOrders', params);
1047
+ let market = undefined;
1048
+ let messageHash = 'order';
1049
+ if (symbol !== undefined) {
1050
+ market = this.market(symbol);
1051
+ symbol = market['symbol'];
1052
+ messageHash = messageHash + ':' + symbol;
1053
+ }
1054
+ const isTestnet = this.isSandboxModeEnabled;
1055
+ const urlKey = (isTestnet) ? 'test' : 'api';
1056
+ const url = this.urls[urlKey]['ws']['public'];
1057
+ const request = {
1058
+ 'method': 'subscribe',
1059
+ 'params': {
1060
+ 'source': 'account_order_updates',
1061
+ 'account': userAddress,
1062
+ },
1063
+ };
1064
+ const message = this.extend(request, params);
1065
+ const orders = await this.watch(url, messageHash, message, messageHash);
1066
+ if (this.newUpdates) {
1067
+ limit = orders.getLimit(symbol, limit);
1068
+ }
1069
+ return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
1070
+ }
1071
+ /**
1072
+ * @method
1073
+ * @name pacifica#unWatchOrders
1074
+ * @description unWatches information on multiple orders made by the user
1075
+ * @see https://docs.pacifica.fi/api-documentation/api/websocket/subscriptions/account-order-updates
1076
+ * @param {string} symbol unified market symbol of the market orders were made in
1077
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1078
+ * @param {string|undefined} [params.account] will default to options' walletAddress if not provided
1079
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1080
+ */
1081
+ async unWatchOrders(symbol = undefined, params = {}) {
1082
+ await this.loadMarkets();
1083
+ if (symbol !== undefined) {
1084
+ throw new NotSupported(this.id + ' unWatchOrders() does not support a symbol argument, unWatch from all markets only');
1085
+ }
1086
+ const messageHash = 'unsubscribe:order';
1087
+ const isTestnet = this.isSandboxModeEnabled;
1088
+ const urlKey = (isTestnet) ? 'test' : 'api';
1089
+ const url = this.urls[urlKey]['ws']['public'];
1090
+ let userAddress = undefined;
1091
+ [userAddress, params] = this.handleOriginAndSingleAddress('unWatchOrders', params);
1092
+ const request = {
1093
+ 'method': 'unsubscribe',
1094
+ 'params': {
1095
+ 'source': 'account_order_updates',
1096
+ 'account': userAddress,
1097
+ },
1098
+ };
1099
+ const message = this.extend(request, params);
1100
+ return await this.watch(url, messageHash, message, messageHash);
1101
+ }
1102
+ handleOrder(client, message) {
1103
+ // not snapshot, only updates
1104
+ // {
1105
+ // "channel": "account_order_updates",
1106
+ // "data": [
1107
+ // {
1108
+ // "i": 1559665358,
1109
+ // "I": null,
1110
+ // "u": "BrZp5bidJ3WUvceSq7X78bhjTfZXeezzGvGEV4hAYKTa",
1111
+ // "s": "BTC",
1112
+ // "d": "bid",
1113
+ // "p": "89501",
1114
+ // "ip": "89501",
1115
+ // "lp": "89501",
1116
+ // "a": "0.00012",
1117
+ // "f": "0.00012",
1118
+ // "oe": "fulfill_limit",
1119
+ // "os": "filled",
1120
+ // "ot": "limit",
1121
+ // "sp": null,
1122
+ // "si": null,
1123
+ // "r": false,
1124
+ // "ct": 1765017049008,
1125
+ // "ut": 1765017219639,
1126
+ // "li": 1559696133
1127
+ // }
1128
+ // ]
1129
+ // }
1130
+ const data = this.safeList(message, 'data', []);
1131
+ if (this.orders === undefined) {
1132
+ const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
1133
+ this.orders = new ArrayCacheBySymbolById(limit);
1134
+ }
1135
+ const dataLength = data.length;
1136
+ if (dataLength === 0) {
1137
+ return;
1138
+ }
1139
+ const stored = this.orders;
1140
+ const messageHash = 'order';
1141
+ const marketSymbols = {};
1142
+ for (let i = 0; i < data.length; i++) {
1143
+ const rawOrder = data[i];
1144
+ const order = this.parseOrder(rawOrder);
1145
+ stored.append(order);
1146
+ const symbol = this.safeString(order, 'symbol');
1147
+ marketSymbols[symbol] = true;
1148
+ }
1149
+ const keys = Object.keys(marketSymbols);
1150
+ for (let i = 0; i < keys.length; i++) {
1151
+ const symbol = keys[i];
1152
+ const innerMessageHash = messageHash + ':' + symbol;
1153
+ client.resolve(stored, innerMessageHash);
1154
+ }
1155
+ client.resolve(stored, messageHash);
1156
+ }
1157
+ handleErrorMessage(client, message) {
1158
+ //
1159
+ // 'rl' key is present only when a rate-limited API key is used
1160
+ // {"id":"64107e37-a999-4b90-a3cf-b4322ae110d9","type":"cancel_order","code":420,"err":"Failed to cancel order","t":1769474703073,"rl":{"r":1245,"q":1250,"t":56}}
1161
+ //
1162
+ const error = this.safeString(message, 'err', '');
1163
+ const postType = this.safeString(message, 'type', '');
1164
+ const data = this.safeDict(message, 'data', {});
1165
+ let id = this.safeString(message, 'id');
1166
+ if (id === undefined) {
1167
+ id = this.safeString(data, 'id');
1168
+ }
1169
+ try {
1170
+ this.handleErrors(0, error, '', postType, this.options['ws']['options']['headers'], this.json(data), message, {}, {});
1171
+ }
1172
+ catch (e) {
1173
+ client.reject(e, id);
1174
+ return true;
1175
+ }
1176
+ return false;
1177
+ }
1178
+ handleOrderBookUnsubscription(client, subscription) {
1179
+ const marketId = this.safeString2(subscription, 'symbol', 's');
1180
+ const market = this.safeMarket(marketId);
1181
+ const symbol = market['symbol'];
1182
+ const subMessageHash = 'orderbook:' + symbol;
1183
+ const messageHash = 'unsubscribe:' + subMessageHash;
1184
+ this.cleanUnsubscription(client, subMessageHash, messageHash);
1185
+ if (symbol in this.orderbooks) {
1186
+ delete this.orderbooks[symbol];
1187
+ }
1188
+ }
1189
+ handleTradesUnsubscription(client, subscription) {
1190
+ const marketId = this.safeString2(subscription, 'symbol', 's');
1191
+ const market = this.safeMarket(marketId);
1192
+ const symbol = market['symbol'];
1193
+ const subMessageHash = 'trade:' + symbol;
1194
+ const messageHash = 'unsubscribe:' + subMessageHash;
1195
+ this.cleanUnsubscription(client, subMessageHash, messageHash);
1196
+ if (symbol in this.trades) {
1197
+ delete this.trades[symbol];
1198
+ }
1199
+ }
1200
+ handleTickersUnsubscription(client, subscription) {
1201
+ const subMessageHash = 'tickers';
1202
+ const messageHash = 'unsubscribe:' + subMessageHash;
1203
+ this.cleanUnsubscription(client, subMessageHash, messageHash);
1204
+ const symbols = Object.keys(this.tickers);
1205
+ for (let i = 0; i < symbols.length; i++) {
1206
+ delete this.tickers[symbols[i]];
1207
+ }
1208
+ }
1209
+ handleOHLCVUnsubscription(client, subscription) {
1210
+ const marketId = this.safeString2(subscription, 'symbol', 's');
1211
+ const market = this.safeMarket(marketId);
1212
+ const symbol = market['symbol'];
1213
+ const interval = this.safeString(subscription, 'interval');
1214
+ const timeframe = this.findTimeframe(interval);
1215
+ const subMessageHash = 'candles:' + timeframe + ':' + symbol;
1216
+ const messageHash = 'unsubscribe:' + subMessageHash;
1217
+ this.cleanUnsubscription(client, subMessageHash, messageHash);
1218
+ if (symbol in this.ohlcvs) {
1219
+ if (timeframe in this.ohlcvs[symbol]) {
1220
+ delete this.ohlcvs[symbol][timeframe];
1221
+ }
1222
+ }
1223
+ }
1224
+ handleOrderUnsubscription(client, subscription) {
1225
+ const subHash = 'order';
1226
+ const unSubHash = 'unsubscribe:' + subHash;
1227
+ this.cleanUnsubscription(client, subHash, unSubHash, true);
1228
+ const topicStructure = {
1229
+ 'topic': 'orders',
1230
+ };
1231
+ this.cleanCache(topicStructure);
1232
+ }
1233
+ handleMyTradesUnsubscription(client, subscription) {
1234
+ const subHash = 'myTrades';
1235
+ const unSubHash = 'unsubscribe:' + subHash;
1236
+ this.cleanUnsubscription(client, subHash, unSubHash, true);
1237
+ const topicStructure = {
1238
+ 'topic': 'myTrades',
1239
+ };
1240
+ this.cleanCache(topicStructure);
1241
+ }
1242
+ handleSubscriptionResponse(client, message) {
1243
+ // {
1244
+ // "channel": "subscribe",
1245
+ // "data": {
1246
+ // "source": "book",
1247
+ // "symbol": "SOL",
1248
+ // "agg_level": 1
1249
+ // }
1250
+ // }
1251
+ //
1252
+ // {
1253
+ // "channel": "unsubscribe",
1254
+ // "data": {
1255
+ // "source": "book",
1256
+ // "symbol": "SOL",
1257
+ // "agg_level": 1
1258
+ // }
1259
+ // }
1260
+ //
1261
+ const data = this.safeDict(message, 'data', {});
1262
+ const method = this.safeString(message, 'channel');
1263
+ if (method === 'unsubscribe') {
1264
+ const subscription = this.safeDict(data, 'data', {});
1265
+ const type = this.safeString(subscription, 'source');
1266
+ if (type === 'book') {
1267
+ this.handleOrderBookUnsubscription(client, subscription);
1268
+ }
1269
+ else if (type === 'trades') {
1270
+ this.handleTradesUnsubscription(client, subscription);
1271
+ }
1272
+ else if (type === 'prices') {
1273
+ this.handleTickersUnsubscription(client, subscription);
1274
+ }
1275
+ else if (type === 'candle') {
1276
+ this.handleOHLCVUnsubscription(client, subscription);
1277
+ }
1278
+ else if (type === 'account_order_updates') {
1279
+ this.handleOrderUnsubscription(client, subscription);
1280
+ }
1281
+ else if (type === 'account_trades') {
1282
+ this.handleMyTradesUnsubscription(client, subscription);
1283
+ }
1284
+ }
1285
+ }
1286
+ handleMessage(client, message) {
1287
+ //
1288
+ // {
1289
+ // "channel":"subscribe",
1290
+ // "data":{
1291
+ // "method":"unsubscribe",
1292
+ // "subscription":{
1293
+ // "type":"l2Book",
1294
+ // "coin":"BTC",
1295
+ // "nSigFigs":5,
1296
+ // "mantissa":null
1297
+ // }
1298
+ // }
1299
+ // }
1300
+ //
1301
+ if (this.handleErrorMessage(client, message)) {
1302
+ return;
1303
+ }
1304
+ const postType = this.safeString(message, 'type', undefined);
1305
+ const topic = this.safeString(message, 'channel', '');
1306
+ const methods = {
1307
+ 'pong': this.handlePong,
1308
+ 'trades': this.handleTrades,
1309
+ 'book': this.handleOrderBook,
1310
+ 'candle': this.handleOHLCV,
1311
+ 'account_order_updates': this.handleOrder,
1312
+ 'account_trades': this.handleMyTrades,
1313
+ 'prices': this.handleWsTickers,
1314
+ 'subscribe': this.handleSubscriptionResponse,
1315
+ 'unsubscribe': this.handleSubscriptionResponse,
1316
+ };
1317
+ const exacMethod = this.safeValue(methods, topic);
1318
+ if (exacMethod !== undefined) {
1319
+ exacMethod.call(this, client, message);
1320
+ return;
1321
+ }
1322
+ if (postType !== undefined) {
1323
+ this.handleWsPost(client, message);
1324
+ return;
1325
+ }
1326
+ const keys = Object.keys(methods);
1327
+ for (let i = 0; i < keys.length; i++) {
1328
+ const key = keys[i];
1329
+ if (topic.indexOf(keys[i]) >= 0) {
1330
+ const method = methods[key];
1331
+ method.call(this, client, message);
1332
+ return;
1333
+ }
1334
+ }
1335
+ }
1336
+ ping(client) {
1337
+ return {
1338
+ 'method': 'ping',
1339
+ };
1340
+ }
1341
+ handlePong(client, message) {
1342
+ //
1343
+ // {
1344
+ // "channel": "pong"
1345
+ // }
1346
+ //
1347
+ client.lastPong = this.safeInteger(message, 'pong', this.milliseconds());
1348
+ return message;
1349
+ }
1350
+ requestId() {
1351
+ return this.uuid(); // uuid v4
1352
+ }
1353
+ wrapAsPostAction(operationType, request) {
1354
+ if (operationType === undefined) {
1355
+ throw new ArgumentsRequired(this.id + 'postAction() requires a "operationType" argument!');
1356
+ }
1357
+ const requestId = this.requestId();
1358
+ const payload = {
1359
+ 'id': requestId,
1360
+ 'params': {},
1361
+ };
1362
+ payload['params'][operationType] = request;
1363
+ return payload;
1364
+ }
1365
+ handleWsPost(client, message) {
1366
+ //
1367
+ // market order
1368
+ // {
1369
+ // "code": 200,
1370
+ // "data": {
1371
+ // "I": "79f948fd-7556-4066-a128-083f3ea49322",
1372
+ // "i": 645953,
1373
+ // "s": "BTC"
1374
+ // },
1375
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
1376
+ // "t": 1749223025962,
1377
+ // "type": "create_market_order"
1378
+ // }
1379
+ //
1380
+ // limit order
1381
+ // {
1382
+ // "code": 200,
1383
+ // "data": {
1384
+ // "I": "79f948fd-7556-4066-a128-083f3ea49322",
1385
+ // "i": 645953,
1386
+ // "s": "BTC"
1387
+ // },
1388
+ // "id": "660065de-8f32-46ad-ba1e-83c93d3e3966",
1389
+ // "t": 1749223025962,
1390
+ // "type": "create_order"
1391
+ // }
1392
+ //
1393
+ const id = this.safeString(message, 'id');
1394
+ client.resolve(message, id);
1395
+ }
1396
+ }