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.
- package/README.md +120 -118
- package/dist/ccxt.browser.min.js +10 -10
- package/dist/cjs/ccxt.js +6 -1
- package/dist/cjs/src/abstract/aftermath.js +1 -1
- package/dist/cjs/src/abstract/alpaca.js +1 -1
- package/dist/cjs/src/abstract/apex.js +1 -1
- package/dist/cjs/src/abstract/arkham.js +1 -1
- package/dist/cjs/src/abstract/ascendex.js +1 -1
- package/dist/cjs/src/abstract/aster.js +1 -1
- package/dist/cjs/src/abstract/backpack.js +1 -1
- package/dist/cjs/src/abstract/bigone.js +1 -1
- package/dist/cjs/src/abstract/binance.js +1 -1
- package/dist/cjs/src/abstract/bingx.js +1 -1
- package/dist/cjs/src/abstract/bit2c.js +1 -1
- package/dist/cjs/src/abstract/bitbank.js +1 -1
- package/dist/cjs/src/abstract/bitbns.js +1 -1
- package/dist/cjs/src/abstract/bitfinex.js +1 -1
- package/dist/cjs/src/abstract/bitflyer.js +1 -1
- package/dist/cjs/src/abstract/bitget.js +1 -1
- package/dist/cjs/src/abstract/bithumb.js +1 -1
- package/dist/cjs/src/abstract/bitmart.js +1 -1
- package/dist/cjs/src/abstract/bitmex.js +1 -1
- package/dist/cjs/src/abstract/bitopro.js +1 -1
- package/dist/cjs/src/abstract/bitrue.js +1 -1
- package/dist/cjs/src/abstract/bitso.js +1 -1
- package/dist/cjs/src/abstract/bitstamp.js +1 -1
- package/dist/cjs/src/abstract/bitteam.js +1 -1
- package/dist/cjs/src/abstract/bittrade.js +1 -1
- package/dist/cjs/src/abstract/bitvavo.js +1 -1
- package/dist/cjs/src/abstract/blockchaincom.js +1 -1
- package/dist/cjs/src/abstract/blofin.js +1 -1
- package/dist/cjs/src/abstract/btcbox.js +1 -1
- package/dist/cjs/src/abstract/btcmarkets.js +1 -1
- package/dist/cjs/src/abstract/btcturk.js +1 -1
- package/dist/cjs/src/abstract/bullish.js +1 -1
- package/dist/cjs/src/abstract/bybit.js +1 -1
- package/dist/cjs/src/abstract/bydfi.js +1 -1
- package/dist/cjs/src/abstract/cex.js +1 -1
- package/dist/cjs/src/abstract/coinbase.js +1 -1
- package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
- package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
- package/dist/cjs/src/abstract/coincheck.js +1 -1
- package/dist/cjs/src/abstract/coinex.js +1 -1
- package/dist/cjs/src/abstract/coinmate.js +1 -1
- package/dist/cjs/src/abstract/coinmetro.js +1 -1
- package/dist/cjs/src/abstract/coinone.js +1 -1
- package/dist/cjs/src/abstract/coinsph.js +1 -1
- package/dist/cjs/src/abstract/coinspot.js +1 -1
- package/dist/cjs/src/abstract/cryptocom.js +1 -1
- package/dist/cjs/src/abstract/cryptomus.js +1 -1
- package/dist/cjs/src/abstract/deepcoin.js +1 -1
- package/dist/cjs/src/abstract/delta.js +1 -1
- package/dist/cjs/src/abstract/deribit.js +1 -1
- package/dist/cjs/src/abstract/derive.js +1 -1
- package/dist/cjs/src/abstract/digifinex.js +1 -1
- package/dist/cjs/src/abstract/dydx.js +1 -1
- package/dist/cjs/src/abstract/exmo.js +1 -1
- package/dist/cjs/src/abstract/foxbit.js +1 -1
- package/dist/cjs/src/abstract/gate.js +1 -1
- package/dist/cjs/src/abstract/gemini.js +1 -1
- package/dist/cjs/src/abstract/grvt.js +1 -1
- package/dist/cjs/src/abstract/hashkey.js +1 -1
- package/dist/cjs/src/abstract/hibachi.js +1 -1
- package/dist/cjs/src/abstract/hitbtc.js +1 -1
- package/dist/cjs/src/abstract/hollaex.js +1 -1
- package/dist/cjs/src/abstract/htx.js +1 -1
- package/dist/cjs/src/abstract/hyperliquid.js +1 -1
- package/dist/cjs/src/abstract/independentreserve.js +1 -1
- package/dist/cjs/src/abstract/indodax.js +1 -1
- package/dist/cjs/src/abstract/kraken.js +1 -1
- package/dist/cjs/src/abstract/krakenfutures.js +1 -1
- package/dist/cjs/src/abstract/kucoin.js +1 -1
- package/dist/cjs/src/abstract/latoken.js +1 -1
- package/dist/cjs/src/abstract/lbank.js +1 -1
- package/dist/cjs/src/abstract/lighter.js +1 -1
- package/dist/cjs/src/abstract/luno.js +1 -1
- package/dist/cjs/src/abstract/mercado.js +1 -1
- package/dist/cjs/src/abstract/mexc.js +1 -1
- package/dist/cjs/src/abstract/modetrade.js +1 -1
- package/dist/cjs/src/abstract/ndax.js +1 -1
- package/dist/cjs/src/abstract/novadax.js +1 -1
- package/dist/cjs/src/abstract/okx.js +1 -1
- package/dist/cjs/src/abstract/onetrading.js +1 -1
- package/dist/cjs/src/abstract/oxfun.js +1 -1
- package/dist/cjs/src/abstract/p2b.js +1 -1
- package/dist/cjs/src/abstract/pacifica.js +11 -0
- package/dist/cjs/src/abstract/paradex.js +1 -1
- package/dist/cjs/src/abstract/paymium.js +1 -1
- package/dist/cjs/src/abstract/phemex.js +1 -1
- package/dist/cjs/src/abstract/poloniex.js +1 -1
- package/dist/cjs/src/abstract/tokocrypto.js +1 -1
- package/dist/cjs/src/abstract/toobit.js +1 -1
- package/dist/cjs/src/abstract/upbit.js +1 -1
- package/dist/cjs/src/abstract/wavesexchange.js +1 -1
- package/dist/cjs/src/abstract/whitebit.js +1 -1
- package/dist/cjs/src/abstract/woo.js +1 -1
- package/dist/cjs/src/abstract/woofipro.js +1 -1
- package/dist/cjs/src/abstract/xt.js +1 -1
- package/dist/cjs/src/abstract/yobit.js +1 -1
- package/dist/cjs/src/abstract/zaif.js +1 -1
- package/dist/cjs/src/abstract/zebpay.js +1 -1
- package/dist/cjs/src/abstract/zonda.js +1 -1
- package/dist/cjs/src/aftermath.js +1 -0
- package/dist/cjs/src/alpaca.js +1 -1
- package/dist/cjs/src/apex.js +1 -1
- package/dist/cjs/src/arkham.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/aster.js +53 -1
- package/dist/cjs/src/backpack.js +1 -1
- package/dist/cjs/src/base/Exchange.js +7 -0
- package/dist/cjs/src/base/Precise.js +6 -0
- package/dist/cjs/src/base/errors.js +6 -0
- package/dist/cjs/src/base/functions/crypto.js +1 -1
- package/dist/cjs/src/base/functions/encode.js +1 -1
- package/dist/cjs/src/base/functions/io.js +1 -1
- package/dist/cjs/src/base/functions/misc.js +1 -0
- package/dist/cjs/src/base/functions/number.js +6 -0
- package/dist/cjs/src/base/functions/platform.js +6 -0
- package/dist/cjs/src/base/functions/rsa.js +1 -0
- package/dist/cjs/src/base/functions/string.js +6 -0
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/base/functions/time.js +6 -0
- package/dist/cjs/src/base/functions/totp.js +1 -0
- package/dist/cjs/src/base/functions/type.js +6 -0
- package/dist/cjs/src/base/functions.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +6 -0
- package/dist/cjs/src/base/ws/Client.js +1 -0
- package/dist/cjs/src/base/ws/Future.js +1 -1
- package/dist/cjs/src/base/ws/OrderBook.js +1 -1
- package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
- package/dist/cjs/src/base/ws/WsClient.js +1 -1
- package/dist/cjs/src/bequant.js +1 -1
- package/dist/cjs/src/bigone.js +1 -1
- package/dist/cjs/src/binance.js +2 -4
- package/dist/cjs/src/binancecoinm.js +1 -1
- package/dist/cjs/src/binanceus.js +1 -1
- package/dist/cjs/src/binanceusdm.js +1 -1
- package/dist/cjs/src/bingx.js +1 -1
- package/dist/cjs/src/bit2c.js +1 -1
- package/dist/cjs/src/bitbank.js +1 -1
- package/dist/cjs/src/bitbns.js +1 -1
- package/dist/cjs/src/bitfinex.js +39 -43
- package/dist/cjs/src/bitflyer.js +1 -1
- package/dist/cjs/src/bitget.js +1 -1
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +1 -1
- package/dist/cjs/src/bitmex.js +1 -1
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +1 -1
- package/dist/cjs/src/bitso.js +1 -1
- package/dist/cjs/src/bitstamp.js +1 -1
- package/dist/cjs/src/bitteam.js +1 -1
- package/dist/cjs/src/bittrade.js +2 -2
- package/dist/cjs/src/blockchaincom.js +1 -1
- package/dist/cjs/src/blofin.js +16 -3
- package/dist/cjs/src/btcbox.js +1 -1
- package/dist/cjs/src/btcmarkets.js +1 -1
- package/dist/cjs/src/btcturk.js +1 -1
- package/dist/cjs/src/bullish.js +1 -1
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/bydfi.js +1 -1
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/coincheck.js +1 -1
- package/dist/cjs/src/coinex.js +1 -1
- package/dist/cjs/src/coinmate.js +1 -1
- package/dist/cjs/src/coinmetro.js +1 -1
- package/dist/cjs/src/coinone.js +1 -1
- package/dist/cjs/src/coinsph.js +5 -0
- package/dist/cjs/src/coinspot.js +1 -1
- package/dist/cjs/src/cryptocom.js +1 -1
- package/dist/cjs/src/cryptomus.js +1 -1
- package/dist/cjs/src/deepcoin.js +1 -1
- package/dist/cjs/src/delta.js +1 -1
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/derive.js +1 -1
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/dydx.js +1 -1
- package/dist/cjs/src/exmo.js +1 -1
- package/dist/cjs/src/fmfwio.js +1 -1
- package/dist/cjs/src/foxbit.js +1 -1
- package/dist/cjs/src/gate.js +1 -1
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/grvt.js +1 -1
- package/dist/cjs/src/hashkey.js +1 -1
- package/dist/cjs/src/hibachi.js +1 -1
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/hollaex.js +1 -1
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +1 -1
- package/dist/cjs/src/independentreserve.js +1 -1
- package/dist/cjs/src/indodax.js +1 -1
- package/dist/cjs/src/kraken.js +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +1 -1
- package/dist/cjs/src/kucoinfutures.js +1 -1
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/lighter.js +197 -72
- package/dist/cjs/src/luno.js +1 -1
- package/dist/cjs/src/mercado.js +1 -1
- package/dist/cjs/src/mexc.js +50 -1
- package/dist/cjs/src/modetrade.js +1 -1
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +1 -1
- package/dist/cjs/src/okx.js +7 -5
- package/dist/cjs/src/okxus.js +1 -1
- package/dist/cjs/src/onetrading.js +1 -1
- package/dist/cjs/src/oxfun.js +1 -1
- package/dist/cjs/src/p2b.js +1 -1
- package/dist/cjs/src/pacifica.js +3254 -0
- package/dist/cjs/src/paradex.js +1 -1
- package/dist/cjs/src/paymium.js +1 -1
- package/dist/cjs/src/poloniex.js +1 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/apex.js +1 -1
- package/dist/cjs/src/pro/arkham.js +1 -1
- package/dist/cjs/src/pro/ascendex.js +1 -1
- package/dist/cjs/src/pro/aster.js +1 -1
- package/dist/cjs/src/pro/backpack.js +1 -1
- package/dist/cjs/src/pro/bequant.js +1 -1
- package/dist/cjs/src/pro/binance.js +12 -1
- package/dist/cjs/src/pro/binancecoinm.js +1 -1
- package/dist/cjs/src/pro/binanceus.js +1 -1
- package/dist/cjs/src/pro/binanceusdm.js +1 -1
- package/dist/cjs/src/pro/bingx.js +2 -2
- package/dist/cjs/src/pro/bitfinex.js +1 -1
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bithumb.js +1 -1
- package/dist/cjs/src/pro/bitmart.js +5 -4
- package/dist/cjs/src/pro/bitmex.js +1 -1
- package/dist/cjs/src/pro/bitrue.js +1 -1
- package/dist/cjs/src/pro/bitstamp.js +1 -1
- package/dist/cjs/src/pro/bitvavo.js +9 -1
- package/dist/cjs/src/pro/blockchaincom.js +1 -1
- package/dist/cjs/src/pro/blofin.js +1 -1
- package/dist/cjs/src/pro/bullish.js +1 -1
- package/dist/cjs/src/pro/bybit.js +1 -1
- package/dist/cjs/src/pro/bydfi.js +1 -1
- package/dist/cjs/src/pro/cex.js +1 -1
- package/dist/cjs/src/pro/coinbase.js +1 -1
- package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
- package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
- package/dist/cjs/src/pro/coincheck.js +1 -1
- package/dist/cjs/src/pro/coinex.js +1 -1
- package/dist/cjs/src/pro/coinone.js +1 -1
- package/dist/cjs/src/pro/cryptocom.js +1 -1
- package/dist/cjs/src/pro/deepcoin.js +1 -1
- package/dist/cjs/src/pro/deribit.js +1 -1
- package/dist/cjs/src/pro/dydx.js +1 -1
- package/dist/cjs/src/pro/exmo.js +1 -1
- package/dist/cjs/src/pro/gate.js +4 -1
- package/dist/cjs/src/pro/gateio.js +1 -1
- package/dist/cjs/src/pro/gemini.js +1 -1
- package/dist/cjs/src/pro/grvt.js +1 -1
- package/dist/cjs/src/pro/hashkey.js +1 -1
- package/dist/cjs/src/pro/hitbtc.js +1 -1
- package/dist/cjs/src/pro/hollaex.js +1 -1
- package/dist/cjs/src/pro/htx.js +1 -1
- package/dist/cjs/src/pro/huobi.js +1 -1
- package/dist/cjs/src/pro/hyperliquid.js +1 -1
- package/dist/cjs/src/pro/independentreserve.js +1 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/krakenfutures.js +1 -1
- package/dist/cjs/src/pro/kucoin.js +1 -1
- package/dist/cjs/src/pro/kucoinfutures.js +1 -1
- package/dist/cjs/src/pro/lbank.js +1 -0
- package/dist/cjs/src/pro/lighter.js +36 -17
- package/dist/cjs/src/pro/luno.js +1 -1
- package/dist/cjs/src/pro/mexc.js +1 -1
- package/dist/cjs/src/pro/myokx.js +1 -1
- package/dist/cjs/src/pro/ndax.js +1 -1
- package/dist/cjs/src/pro/okx.js +1 -1
- package/dist/cjs/src/pro/okxus.js +1 -1
- package/dist/cjs/src/pro/onetrading.js +1 -1
- package/dist/cjs/src/pro/oxfun.js +1 -1
- package/dist/cjs/src/pro/p2b.js +1 -1
- package/dist/cjs/src/pro/pacifica.js +1397 -0
- package/dist/cjs/src/pro/paradex.js +1 -1
- package/dist/cjs/src/pro/phemex.js +1 -1
- package/dist/cjs/src/pro/poloniex.js +1 -1
- package/dist/cjs/src/pro/toobit.js +1 -1
- package/dist/cjs/src/pro/upbit.js +1 -1
- package/dist/cjs/src/pro/whitebit.js +1 -1
- package/dist/cjs/src/pro/xt.js +1 -1
- package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
- package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
- package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
- package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
- package/dist/cjs/src/static_dependencies/qs/formats.js +6 -0
- package/dist/cjs/src/static_dependencies/qs/index.js +1 -0
- package/dist/cjs/src/static_dependencies/qs/parse.js +1 -0
- package/dist/cjs/src/static_dependencies/qs/stringify.js +1 -0
- package/dist/cjs/src/static_dependencies/qs/utils.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-bip32/index.js +1 -19
- package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
- package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
- package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
- package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
- package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
- package/dist/cjs/src/tokocrypto.js +1 -1
- package/dist/cjs/src/toobit.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +1 -1
- package/dist/cjs/src/woo.js +1 -1
- package/dist/cjs/src/woofipro.js +1 -1
- package/dist/cjs/src/xt.js +1 -1
- package/dist/cjs/src/yobit.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zebpay.js +1 -1
- package/dist/cjs/src/zonda.js +1 -1
- package/js/ccxt.d.ts +8 -2
- package/js/ccxt.js +12 -2
- package/js/src/abstract/aftermath.js +6 -0
- package/js/src/abstract/alpaca.js +6 -0
- package/js/src/abstract/apex.js +6 -0
- package/js/src/abstract/arkham.js +6 -0
- package/js/src/abstract/ascendex.js +6 -0
- package/js/src/abstract/aster.d.ts +52 -0
- package/js/src/abstract/aster.js +6 -0
- package/js/src/abstract/backpack.js +6 -0
- package/js/src/abstract/bequant.js +6 -0
- package/js/src/abstract/bigone.js +6 -0
- package/js/src/abstract/binance.d.ts +1 -0
- package/js/src/abstract/binance.js +6 -0
- package/js/src/abstract/binancecoinm.d.ts +1 -0
- package/js/src/abstract/binancecoinm.js +6 -0
- package/js/src/abstract/binanceus.d.ts +1 -0
- package/js/src/abstract/binanceus.js +6 -0
- package/js/src/abstract/binanceusdm.d.ts +1 -0
- package/js/src/abstract/binanceusdm.js +6 -0
- package/js/src/abstract/bingx.js +6 -0
- package/js/src/abstract/bit2c.js +6 -0
- package/js/src/abstract/bitbank.js +6 -0
- package/js/src/abstract/bitbns.js +6 -0
- package/js/src/abstract/bitfinex.js +6 -0
- package/js/src/abstract/bitflyer.js +6 -0
- package/js/src/abstract/bitget.js +6 -0
- package/js/src/abstract/bithumb.js +6 -0
- package/js/src/abstract/bitmart.js +6 -0
- package/js/src/abstract/bitmex.js +6 -0
- package/js/src/abstract/bitopro.js +6 -0
- package/js/src/abstract/bitrue.js +6 -0
- package/js/src/abstract/bitso.js +6 -0
- package/js/src/abstract/bitstamp.js +6 -0
- package/js/src/abstract/bitteam.js +6 -0
- package/js/src/abstract/bittrade.js +6 -0
- package/js/src/abstract/bitvavo.js +6 -0
- package/js/src/abstract/blockchaincom.js +6 -0
- package/js/src/abstract/blofin.js +6 -0
- package/js/src/abstract/btcbox.js +6 -0
- package/js/src/abstract/btcmarkets.js +6 -0
- package/js/src/abstract/btcturk.js +6 -0
- package/js/src/abstract/bullish.js +6 -0
- package/js/src/abstract/bybit.js +6 -0
- package/js/src/abstract/bydfi.js +6 -0
- package/js/src/abstract/cex.js +6 -0
- package/js/src/abstract/coinbase.js +6 -0
- package/js/src/abstract/coinbaseadvanced.js +6 -0
- package/js/src/abstract/coinbaseexchange.js +6 -0
- package/js/src/abstract/coinbaseinternational.js +6 -0
- package/js/src/abstract/coincheck.js +6 -0
- package/js/src/abstract/coinex.js +6 -0
- package/js/src/abstract/coinmate.js +6 -0
- package/js/src/abstract/coinmetro.js +6 -0
- package/js/src/abstract/coinone.js +6 -0
- package/js/src/abstract/coinsph.js +6 -0
- package/js/src/abstract/coinspot.js +6 -0
- package/js/src/abstract/cryptocom.js +6 -0
- package/js/src/abstract/cryptomus.js +6 -0
- package/js/src/abstract/deepcoin.js +6 -0
- package/js/src/abstract/delta.js +6 -0
- package/js/src/abstract/deribit.js +6 -0
- package/js/src/abstract/derive.js +6 -0
- package/js/src/abstract/digifinex.js +6 -0
- package/js/src/abstract/dydx.js +6 -0
- package/js/src/abstract/exmo.js +6 -0
- package/js/src/abstract/fmfwio.js +6 -0
- package/js/src/abstract/foxbit.js +6 -0
- package/js/src/abstract/gate.js +6 -0
- package/js/src/abstract/gateio.js +6 -0
- package/js/src/abstract/gemini.js +6 -0
- package/js/src/abstract/grvt.js +6 -0
- package/js/src/abstract/hashkey.js +6 -0
- package/js/src/abstract/hibachi.js +6 -0
- package/js/src/abstract/hitbtc.js +6 -0
- package/js/src/abstract/hollaex.js +6 -0
- package/js/src/abstract/htx.js +6 -0
- package/js/src/abstract/huobi.js +6 -0
- package/js/src/abstract/hyperliquid.js +6 -0
- package/js/src/abstract/independentreserve.js +6 -0
- package/js/src/abstract/indodax.js +6 -0
- package/js/src/abstract/kraken.js +6 -0
- package/js/src/abstract/krakenfutures.js +6 -0
- package/js/src/abstract/kucoin.js +6 -0
- package/js/src/abstract/kucoinfutures.js +6 -0
- package/js/src/abstract/latoken.js +6 -0
- package/js/src/abstract/lbank.js +6 -0
- package/js/src/abstract/lighter.js +6 -0
- package/js/src/abstract/luno.js +6 -0
- package/js/src/abstract/mercado.js +6 -0
- package/js/src/abstract/mexc.d.ts +49 -0
- package/js/src/abstract/mexc.js +6 -0
- package/js/src/abstract/modetrade.js +6 -0
- package/js/src/abstract/myokx.js +6 -0
- package/js/src/abstract/ndax.js +6 -0
- package/js/src/abstract/novadax.js +6 -0
- package/js/src/abstract/okx.js +6 -0
- package/js/src/abstract/okxus.js +6 -0
- package/js/src/abstract/onetrading.js +6 -0
- package/js/src/abstract/oxfun.js +6 -0
- package/js/src/abstract/p2b.js +6 -0
- package/js/src/abstract/pacifica.d.ts +46 -0
- package/js/src/abstract/pacifica.js +11 -0
- package/js/src/abstract/paradex.js +6 -0
- package/js/src/abstract/paymium.js +6 -0
- package/js/src/abstract/phemex.js +6 -0
- package/js/src/abstract/poloniex.js +6 -0
- package/js/src/abstract/tokocrypto.js +6 -0
- package/js/src/abstract/toobit.js +6 -0
- package/js/src/abstract/upbit.js +6 -0
- package/js/src/abstract/wavesexchange.js +6 -0
- package/js/src/abstract/whitebit.js +6 -0
- package/js/src/abstract/woo.js +6 -0
- package/js/src/abstract/woofipro.js +6 -0
- package/js/src/abstract/xt.js +6 -0
- package/js/src/abstract/yobit.js +6 -0
- package/js/src/abstract/zaif.js +6 -0
- package/js/src/abstract/zebpay.js +6 -0
- package/js/src/abstract/zonda.js +6 -0
- package/js/src/aftermath.js +6 -0
- package/js/src/alpaca.js +6 -0
- package/js/src/apex.js +6 -0
- package/js/src/arkham.js +6 -0
- package/js/src/ascendex.js +6 -0
- package/js/src/aster.js +58 -0
- package/js/src/backpack.js +6 -0
- package/js/src/base/Exchange.d.ts +2 -0
- package/js/src/base/Exchange.js +13 -0
- package/js/src/base/Precise.js +6 -0
- package/js/src/base/errorHierarchy.js +6 -0
- package/js/src/base/errors.js +6 -0
- package/js/src/base/functions/crypto.js +6 -0
- package/js/src/base/functions/encode.js +6 -0
- package/js/src/base/functions/generic.js +6 -0
- package/js/src/base/functions/io.js +6 -0
- package/js/src/base/functions/misc.js +6 -0
- package/js/src/base/functions/number.js +6 -0
- package/js/src/base/functions/platform.js +6 -0
- package/js/src/base/functions/rsa.js +6 -0
- package/js/src/base/functions/string.js +6 -0
- package/js/src/base/functions/throttle.js +6 -0
- package/js/src/base/functions/time.js +6 -0
- package/js/src/base/functions/totp.js +6 -0
- package/js/src/base/functions/type.js +6 -0
- package/js/src/base/functions.js +6 -0
- package/js/src/base/types.js +6 -0
- package/js/src/base/ws/Cache.js +6 -0
- package/js/src/base/ws/Client.js +6 -0
- package/js/src/base/ws/Future.js +6 -0
- package/js/src/base/ws/OrderBook.js +6 -0
- package/js/src/base/ws/OrderBookSide.js +6 -0
- package/js/src/base/ws/WsClient.js +6 -0
- package/js/src/base/ws/functions.js +6 -0
- package/js/src/bequant.js +6 -0
- package/js/src/bigone.js +6 -0
- package/js/src/binance.d.ts +0 -1
- package/js/src/binance.js +7 -3
- package/js/src/binancecoinm.js +6 -0
- package/js/src/binanceus.js +6 -0
- package/js/src/binanceusdm.js +6 -0
- package/js/src/bingx.js +6 -0
- package/js/src/bit2c.js +6 -0
- package/js/src/bitbank.js +6 -0
- package/js/src/bitbns.js +6 -0
- package/js/src/bitfinex.js +44 -42
- package/js/src/bitflyer.js +6 -0
- package/js/src/bitget.js +6 -0
- package/js/src/bithumb.js +6 -0
- package/js/src/bitmart.js +6 -0
- package/js/src/bitmex.js +6 -0
- package/js/src/bitopro.js +6 -0
- package/js/src/bitrue.js +6 -0
- package/js/src/bitso.js +6 -0
- package/js/src/bitstamp.js +6 -0
- package/js/src/bitteam.js +6 -0
- package/js/src/bittrade.js +7 -1
- package/js/src/bitvavo.js +6 -0
- package/js/src/blockchaincom.js +6 -0
- package/js/src/blofin.d.ts +2 -1
- package/js/src/blofin.js +21 -2
- package/js/src/btcbox.js +6 -0
- package/js/src/btcmarkets.js +6 -0
- package/js/src/btcturk.js +6 -0
- package/js/src/bullish.js +6 -0
- package/js/src/bybit.js +6 -0
- package/js/src/bydfi.js +6 -0
- package/js/src/cex.js +6 -0
- package/js/src/coinbase.js +6 -0
- package/js/src/coinbaseadvanced.js +6 -0
- package/js/src/coinbaseexchange.js +6 -0
- package/js/src/coinbaseinternational.js +6 -0
- package/js/src/coincheck.js +6 -0
- package/js/src/coinex.js +6 -0
- package/js/src/coinmate.js +6 -0
- package/js/src/coinmetro.js +6 -0
- package/js/src/coinone.js +6 -0
- package/js/src/coinsph.js +10 -0
- package/js/src/coinspot.js +6 -0
- package/js/src/cryptocom.js +6 -0
- package/js/src/cryptomus.js +6 -0
- package/js/src/deepcoin.js +6 -0
- package/js/src/delta.js +6 -0
- package/js/src/deribit.js +6 -0
- package/js/src/derive.js +6 -0
- package/js/src/digifinex.js +6 -0
- package/js/src/dydx.js +6 -0
- package/js/src/exmo.js +6 -0
- package/js/src/fmfwio.js +6 -0
- package/js/src/foxbit.js +6 -0
- package/js/src/gate.js +6 -0
- package/js/src/gateio.js +6 -0
- package/js/src/gemini.js +6 -0
- package/js/src/grvt.js +6 -0
- package/js/src/hashkey.js +6 -0
- package/js/src/hibachi.js +6 -0
- package/js/src/hitbtc.js +6 -0
- package/js/src/hollaex.js +6 -0
- package/js/src/htx.js +6 -0
- package/js/src/huobi.js +6 -0
- package/js/src/hyperliquid.js +6 -0
- package/js/src/independentreserve.js +6 -0
- package/js/src/indodax.js +6 -0
- package/js/src/kraken.js +6 -0
- package/js/src/krakenfutures.js +6 -0
- package/js/src/kucoin.js +6 -0
- package/js/src/kucoinfutures.js +6 -0
- package/js/src/latoken.js +6 -0
- package/js/src/lbank.js +6 -0
- package/js/src/lighter.d.ts +4 -2
- package/js/src/lighter.js +202 -71
- package/js/src/luno.js +6 -0
- package/js/src/mercado.js +6 -0
- package/js/src/mexc.js +55 -0
- package/js/src/modetrade.js +6 -0
- package/js/src/myokx.js +6 -0
- package/js/src/ndax.js +6 -0
- package/js/src/novadax.js +6 -0
- package/js/src/okx.js +12 -4
- package/js/src/okxus.js +6 -0
- package/js/src/onetrading.js +6 -0
- package/js/src/oxfun.js +6 -0
- package/js/src/p2b.js +6 -0
- package/js/src/pacifica.d.ts +531 -0
- package/js/src/pacifica.js +3257 -0
- package/js/src/paradex.js +6 -0
- package/js/src/paymium.js +6 -0
- package/js/src/phemex.js +6 -0
- package/js/src/poloniex.js +6 -0
- package/js/src/pro/aftermath.js +6 -0
- package/js/src/pro/alpaca.js +6 -0
- package/js/src/pro/apex.js +6 -0
- package/js/src/pro/arkham.js +6 -0
- package/js/src/pro/ascendex.js +6 -0
- package/js/src/pro/aster.js +6 -0
- package/js/src/pro/backpack.js +6 -0
- package/js/src/pro/bequant.js +6 -0
- package/js/src/pro/binance.js +18 -1
- package/js/src/pro/binancecoinm.js +6 -0
- package/js/src/pro/binanceus.js +6 -0
- package/js/src/pro/binanceusdm.js +6 -0
- package/js/src/pro/bingx.js +7 -1
- package/js/src/pro/bitfinex.js +6 -0
- package/js/src/pro/bitget.js +6 -0
- package/js/src/pro/bithumb.js +6 -0
- package/js/src/pro/bitmart.js +10 -3
- package/js/src/pro/bitmex.js +6 -0
- package/js/src/pro/bitopro.js +6 -0
- package/js/src/pro/bitrue.js +6 -0
- package/js/src/pro/bitstamp.js +6 -0
- package/js/src/pro/bittrade.js +6 -0
- package/js/src/pro/bitvavo.js +14 -0
- package/js/src/pro/blockchaincom.js +6 -0
- package/js/src/pro/blofin.js +6 -0
- package/js/src/pro/bullish.js +6 -0
- package/js/src/pro/bybit.js +6 -0
- package/js/src/pro/bydfi.js +6 -0
- package/js/src/pro/cex.js +6 -0
- package/js/src/pro/coinbase.js +6 -0
- package/js/src/pro/coinbaseadvanced.js +6 -0
- package/js/src/pro/coinbaseexchange.js +6 -0
- package/js/src/pro/coinbaseinternational.js +6 -0
- package/js/src/pro/coincheck.js +6 -0
- package/js/src/pro/coinex.js +6 -0
- package/js/src/pro/coinone.js +6 -0
- package/js/src/pro/cryptocom.js +6 -0
- package/js/src/pro/deepcoin.js +6 -0
- package/js/src/pro/deribit.js +6 -0
- package/js/src/pro/derive.js +6 -0
- package/js/src/pro/dydx.js +6 -0
- package/js/src/pro/exmo.js +6 -0
- package/js/src/pro/gate.js +9 -0
- package/js/src/pro/gateio.js +6 -0
- package/js/src/pro/gemini.js +6 -0
- package/js/src/pro/grvt.js +6 -0
- package/js/src/pro/hashkey.js +6 -0
- package/js/src/pro/hitbtc.js +6 -0
- package/js/src/pro/hollaex.js +6 -0
- package/js/src/pro/htx.js +6 -0
- package/js/src/pro/huobi.js +6 -0
- package/js/src/pro/hyperliquid.js +6 -0
- package/js/src/pro/independentreserve.js +6 -0
- package/js/src/pro/kraken.js +6 -0
- package/js/src/pro/krakenfutures.js +6 -0
- package/js/src/pro/kucoin.js +6 -0
- package/js/src/pro/kucoinfutures.js +6 -0
- package/js/src/pro/lbank.js +6 -0
- package/js/src/pro/lighter.js +41 -16
- package/js/src/pro/luno.js +6 -0
- package/js/src/pro/mexc.js +6 -0
- package/js/src/pro/modetrade.js +6 -0
- package/js/src/pro/myokx.js +6 -0
- package/js/src/pro/ndax.js +6 -0
- package/js/src/pro/okx.js +6 -0
- package/js/src/pro/okxus.js +6 -0
- package/js/src/pro/onetrading.js +6 -0
- package/js/src/pro/oxfun.js +6 -0
- package/js/src/pro/p2b.js +6 -0
- package/js/src/pro/pacifica.d.ts +267 -0
- package/js/src/pro/pacifica.js +1396 -0
- package/js/src/pro/paradex.js +6 -0
- package/js/src/pro/phemex.js +6 -0
- package/js/src/pro/poloniex.js +6 -0
- package/js/src/pro/toobit.js +6 -0
- package/js/src/pro/upbit.js +6 -0
- package/js/src/pro/whitebit.js +6 -0
- package/js/src/pro/woo.js +6 -0
- package/js/src/pro/woofipro.js +6 -0
- package/js/src/pro/xt.js +6 -0
- package/js/src/protobuf/mexc/compiled.cjs +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/helpers.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +6 -0
- package/js/src/static_dependencies/dydx-v4-client/onboarding.js +6 -0
- package/js/src/static_dependencies/dydx-v4-client/registry.js +6 -0
- package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
- package/js/src/static_dependencies/ethers/address/address.js +6 -0
- package/js/src/static_dependencies/ethers/address/checks.js +6 -0
- package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
- package/js/src/static_dependencies/ethers/address/index.js +6 -0
- package/js/src/static_dependencies/ethers/bytes32.js +6 -0
- package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
- package/js/src/static_dependencies/ethers/coders/address.js +6 -0
- package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
- package/js/src/static_dependencies/ethers/coders/array.js +6 -0
- package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
- package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
- package/js/src/static_dependencies/ethers/coders/null.js +6 -0
- package/js/src/static_dependencies/ethers/coders/number.js +6 -0
- package/js/src/static_dependencies/ethers/coders/string.js +6 -0
- package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
- package/js/src/static_dependencies/ethers/fragments.js +6 -0
- package/js/src/static_dependencies/ethers/hash/index.js +6 -0
- package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
- package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
- package/js/src/static_dependencies/ethers/index.js +6 -0
- package/js/src/static_dependencies/ethers/interface.js +6 -0
- package/js/src/static_dependencies/ethers/typed.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
- package/js/src/static_dependencies/ethers/utils/data.js +6 -0
- package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
- package/js/src/static_dependencies/ethers/utils/events.js +6 -0
- package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
- package/js/src/static_dependencies/ethers/utils/index.js +6 -0
- package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
- package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
- package/js/src/static_dependencies/ethers/utils/units.js +6 -0
- package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
- package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
- package/js/src/static_dependencies/fflake/browser.js +6 -0
- package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
- package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
- package/js/src/static_dependencies/jsencrypt/index.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
- package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
- package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
- package/js/src/static_dependencies/noble-curves/bn.js +6 -0
- package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
- package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
- package/js/src/static_dependencies/noble-curves/index.js +6 -0
- package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
- package/js/src/static_dependencies/noble-curves/p256.js +6 -0
- package/js/src/static_dependencies/noble-curves/p384.js +6 -0
- package/js/src/static_dependencies/noble-curves/p521.js +6 -0
- package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
- package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
- package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
- package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
- package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
- package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
- package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
- package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
- package/js/src/static_dependencies/noble-hashes/index.js +6 -0
- package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
- package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
- package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
- package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
- package/js/src/static_dependencies/node-fetch/body.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
- package/js/src/static_dependencies/node-fetch/headers.js +6 -0
- package/js/src/static_dependencies/node-fetch/index.js +6 -0
- package/js/src/static_dependencies/node-fetch/request.js +6 -0
- package/js/src/static_dependencies/node-fetch/response.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
- package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
- package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
- package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
- package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
- package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
- package/js/src/static_dependencies/qs/formats.js +6 -0
- package/js/src/static_dependencies/qs/index.js +6 -0
- package/js/src/static_dependencies/qs/parse.js +6 -0
- package/js/src/static_dependencies/qs/stringify.js +6 -0
- package/js/src/static_dependencies/qs/utils.js +6 -0
- package/js/src/static_dependencies/scure-base/index.js +6 -0
- package/js/src/static_dependencies/scure-bip32/index.js +6 -0
- package/js/src/static_dependencies/scure-bip39/index.js +6 -0
- package/js/src/static_dependencies/scure-bip39/wordlists/english.js +6 -0
- package/js/src/static_dependencies/scure-starknet/index.js +6 -0
- package/js/src/static_dependencies/starknet/constants.js +6 -0
- package/js/src/static_dependencies/starknet/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
- package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
- package/js/src/static_dependencies/starknet/types/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
- package/js/src/static_dependencies/starknet/utils/address.js +6 -0
- package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
- package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
- package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
- package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
- package/js/src/static_dependencies/starknet/utils/num.js +6 -0
- package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
- package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
- package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
- package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
- package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
- package/js/src/static_dependencies/starknet/utils/url.js +6 -0
- package/js/src/static_dependencies/watchable/src/index.js +6 -0
- package/js/src/static_dependencies/watchable/src/types.js +6 -0
- package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
- package/js/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
- package/js/src/tokocrypto.js +6 -0
- package/js/src/toobit.js +6 -0
- package/js/src/upbit.js +6 -0
- package/js/src/wavesexchange.js +6 -0
- package/js/src/whitebit.js +6 -0
- package/js/src/woo.js +6 -0
- package/js/src/woofipro.js +6 -0
- package/js/src/xt.js +6 -0
- package/js/src/yobit.js +6 -0
- package/js/src/zaif.js +6 -0
- package/js/src/zebpay.js +6 -0
- package/js/src/zonda.js +6 -0
- 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;
|