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