ccxt 4.5.32 → 4.5.34
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 +20 -6
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +4 -4
- package/dist/cjs/src/abstract/{btcalpha.js → alp.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/coincatch.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/defx.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/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/kucoinfutures.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/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/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/probit.js +1 -1
- package/dist/cjs/src/abstract/timex.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/{btcalpha.js → alp.js} +46 -46
- 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 +3 -3
- package/dist/cjs/src/aster.js +18 -24
- package/dist/cjs/src/backpack.js +3 -3
- package/dist/cjs/src/base/Precise.js +0 -6
- package/dist/cjs/src/base/errors.js +0 -6
- 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/misc.js +0 -1
- package/dist/cjs/src/base/functions/number.js +0 -6
- package/dist/cjs/src/base/functions/platform.js +0 -6
- package/dist/cjs/src/base/functions/rsa.js +0 -1
- package/dist/cjs/src/base/functions/string.js +0 -6
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/base/functions/time.js +0 -6
- package/dist/cjs/src/base/functions/totp.js +0 -1
- package/dist/cjs/src/base/functions/type.js +0 -6
- package/dist/cjs/src/base/functions.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +0 -6
- package/dist/cjs/src/base/ws/Client.js +0 -1
- 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 +0 -6
- 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 +9 -5
- 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 +3 -2
- 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 +7 -12
- package/dist/cjs/src/bitflyer.js +1 -1
- package/dist/cjs/src/bitget.js +8 -6
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +2 -2
- package/dist/cjs/src/bitmex.js +2 -2
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +1 -1
- package/dist/cjs/src/bitso.js +2 -2
- package/dist/cjs/src/bitstamp.js +2 -2
- package/dist/cjs/src/bitteam.js +1 -1
- package/dist/cjs/src/bittrade.js +1 -1
- package/dist/cjs/src/blockchaincom.js +1 -1
- package/dist/cjs/src/blofin.js +2 -2
- 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 +59 -30
- package/dist/cjs/src/bydfi.js +1 -1
- package/dist/cjs/src/cex.js +2 -2
- package/dist/cjs/src/coinbase.js +7 -6
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/coinbaseexchange.js +1 -1
- package/dist/cjs/src/coincatch.js +4 -4
- package/dist/cjs/src/coincheck.js +1 -1
- package/dist/cjs/src/coinex.js +3 -3
- package/dist/cjs/src/coinmate.js +1 -1
- package/dist/cjs/src/coinmetro.js +2 -2
- package/dist/cjs/src/coinone.js +1 -1
- package/dist/cjs/src/coinsph.js +0 -1
- package/dist/cjs/src/coinspot.js +1 -1
- package/dist/cjs/src/cryptocom.js +5 -2
- package/dist/cjs/src/cryptomus.js +1 -1
- package/dist/cjs/src/deepcoin.js +2 -2
- package/dist/cjs/src/defx.js +2 -2
- package/dist/cjs/src/delta.js +4 -4
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/derive.js +1 -1
- package/dist/cjs/src/digifinex.js +2 -2
- package/dist/cjs/src/dydx.js +2 -2
- package/dist/cjs/src/exmo.js +3 -3
- package/dist/cjs/src/fmfwio.js +1 -1
- package/dist/cjs/src/foxbit.js +2 -2
- package/dist/cjs/src/gate.js +28 -5
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hashkey.js +2 -2
- package/dist/cjs/src/hibachi.js +2 -2
- package/dist/cjs/src/hitbtc.js +2 -3
- package/dist/cjs/src/hollaex.js +1 -1
- package/dist/cjs/src/htx.js +28 -3
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +6 -5
- package/dist/cjs/src/independentreserve.js +1 -1
- package/dist/cjs/src/indodax.js +1 -1
- package/dist/cjs/src/kraken.js +2 -2
- package/dist/cjs/src/krakenfutures.js +54 -10
- package/dist/cjs/src/kucoin.js +2 -2
- package/dist/cjs/src/kucoinfutures.js +2 -2
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/luno.js +2 -2
- package/dist/cjs/src/mercado.js +1 -1
- package/dist/cjs/src/mexc.js +3 -3
- package/dist/cjs/src/modetrade.js +2 -2
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +2 -2
- package/dist/cjs/src/novadax.js +1 -1
- package/dist/cjs/src/okx.js +5 -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/paradex.js +2 -2
- package/dist/cjs/src/paymium.js +1 -1
- package/dist/cjs/src/phemex.js +1 -1
- package/dist/cjs/src/poloniex.js +3 -3
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/apex.js +6 -5
- package/dist/cjs/src/pro/arkham.js +2 -2
- package/dist/cjs/src/pro/ascendex.js +1 -1
- package/dist/cjs/src/pro/aster.js +907 -35
- package/dist/cjs/src/pro/backpack.js +3 -2
- package/dist/cjs/src/pro/bequant.js +1 -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 +1 -1
- package/dist/cjs/src/pro/bitfinex.js +1 -1
- package/dist/cjs/src/pro/bitget.js +20 -7
- package/dist/cjs/src/pro/bithumb.js +1 -1
- package/dist/cjs/src/pro/bitmart.js +1 -1
- 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 +1 -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/coincatch.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/defx.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 +1 -1
- package/dist/cjs/src/pro/gateio.js +1 -1
- package/dist/cjs/src/pro/gemini.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 +0 -1
- 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 +3 -3
- 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/paradex.js +143 -3
- package/dist/cjs/src/pro/phemex.js +1 -1
- package/dist/cjs/src/pro/poloniex.js +1 -1
- package/dist/cjs/src/pro/probit.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/probit.js +1 -1
- package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
- package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +0 -1
- package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
- package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
- package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
- 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 +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
- 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 +0 -1
- 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 +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
- package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
- package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
- package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
- package/dist/cjs/src/static_dependencies/qs/formats.js +0 -6
- package/dist/cjs/src/static_dependencies/qs/index.js +0 -1
- package/dist/cjs/src/static_dependencies/qs/parse.js +0 -1
- package/dist/cjs/src/static_dependencies/qs/stringify.js +0 -1
- package/dist/cjs/src/static_dependencies/qs/utils.js +0 -6
- package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
- package/dist/cjs/src/static_dependencies/scure-bip32/index.js +19 -1
- package/dist/cjs/src/static_dependencies/scure-bip39/index.js +1 -1
- package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
- 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 +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
- 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 +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
- package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
- package/dist/cjs/src/timex.js +0 -1
- package/dist/cjs/src/tokocrypto.js +1 -1
- package/dist/cjs/src/toobit.js +2 -2
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +4 -4
- package/dist/cjs/src/woo.js +4 -4
- package/dist/cjs/src/woofipro.js +2 -2
- package/dist/cjs/src/xt.js +3 -3
- package/dist/cjs/src/yobit.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zebpay.js +3 -3
- package/dist/cjs/src/zonda.js +2 -2
- package/js/ccxt.d.ts +5 -5
- package/js/ccxt.js +4 -10
- package/js/src/abstract/alp.js +5 -0
- package/js/src/abstract/alpaca.js +0 -6
- package/js/src/abstract/apex.js +0 -6
- package/js/src/abstract/arkham.js +0 -6
- package/js/src/abstract/ascendex.js +0 -6
- package/js/src/abstract/aster.d.ts +6 -8
- package/js/src/abstract/aster.js +0 -6
- package/js/src/abstract/backpack.js +0 -6
- package/js/src/abstract/bequant.js +0 -6
- package/js/src/abstract/bigone.js +0 -6
- package/js/src/abstract/binance.d.ts +4 -0
- package/js/src/abstract/binance.js +0 -6
- package/js/src/abstract/binancecoinm.d.ts +4 -0
- package/js/src/abstract/binancecoinm.js +0 -6
- package/js/src/abstract/binanceus.d.ts +4 -0
- package/js/src/abstract/binanceus.js +0 -6
- package/js/src/abstract/binanceusdm.d.ts +4 -0
- package/js/src/abstract/binanceusdm.js +0 -6
- package/js/src/abstract/bingx.d.ts +1 -0
- package/js/src/abstract/bingx.js +0 -6
- package/js/src/abstract/bit2c.js +0 -6
- package/js/src/abstract/bitbank.js +0 -6
- package/js/src/abstract/bitbns.js +0 -6
- package/js/src/abstract/bitfinex.js +0 -6
- package/js/src/abstract/bitflyer.js +0 -6
- package/js/src/abstract/bitget.js +0 -6
- package/js/src/abstract/bithumb.js +0 -6
- package/js/src/abstract/bitmart.js +0 -6
- package/js/src/abstract/bitmex.js +0 -6
- package/js/src/abstract/bitopro.js +0 -6
- package/js/src/abstract/bitrue.js +0 -6
- package/js/src/abstract/bitso.js +0 -6
- package/js/src/abstract/bitstamp.js +0 -6
- package/js/src/abstract/bitteam.js +0 -6
- package/js/src/abstract/bittrade.js +0 -6
- package/js/src/abstract/bitvavo.js +0 -6
- package/js/src/abstract/blockchaincom.js +0 -6
- package/js/src/abstract/blofin.js +0 -6
- package/js/src/abstract/btcbox.js +0 -6
- package/js/src/abstract/btcmarkets.js +0 -6
- package/js/src/abstract/btcturk.js +0 -6
- package/js/src/abstract/bullish.js +0 -6
- package/js/src/abstract/bybit.d.ts +15 -0
- package/js/src/abstract/bybit.js +0 -6
- package/js/src/abstract/bydfi.js +0 -6
- package/js/src/abstract/cex.js +0 -6
- package/js/src/abstract/coinbase.js +0 -6
- package/js/src/abstract/coinbaseadvanced.js +0 -6
- package/js/src/abstract/coinbaseexchange.js +0 -6
- package/js/src/abstract/coinbaseinternational.js +0 -6
- package/js/src/abstract/coincatch.js +0 -6
- package/js/src/abstract/coincheck.js +0 -6
- package/js/src/abstract/coinex.js +0 -6
- package/js/src/abstract/coinmate.js +0 -6
- package/js/src/abstract/coinmetro.js +0 -6
- package/js/src/abstract/coinone.js +0 -6
- package/js/src/abstract/coinsph.js +0 -6
- package/js/src/abstract/coinspot.js +0 -6
- package/js/src/abstract/cryptocom.d.ts +3 -0
- package/js/src/abstract/cryptocom.js +0 -6
- package/js/src/abstract/cryptomus.js +0 -6
- package/js/src/abstract/deepcoin.js +0 -6
- package/js/src/abstract/defx.js +0 -6
- package/js/src/abstract/delta.js +0 -6
- package/js/src/abstract/deribit.js +0 -6
- package/js/src/abstract/derive.js +0 -6
- package/js/src/abstract/digifinex.js +0 -6
- package/js/src/abstract/dydx.js +0 -6
- package/js/src/abstract/exmo.js +0 -6
- package/js/src/abstract/fmfwio.js +0 -6
- package/js/src/abstract/foxbit.js +0 -6
- package/js/src/abstract/gate.d.ts +13 -0
- package/js/src/abstract/gate.js +0 -6
- package/js/src/abstract/gateio.d.ts +13 -0
- package/js/src/abstract/gateio.js +0 -6
- package/js/src/abstract/gemini.js +0 -6
- package/js/src/abstract/hashkey.js +0 -6
- package/js/src/abstract/hibachi.js +0 -6
- package/js/src/abstract/hitbtc.js +0 -6
- package/js/src/abstract/hollaex.js +0 -6
- package/js/src/abstract/htx.d.ts +25 -0
- package/js/src/abstract/htx.js +0 -6
- package/js/src/abstract/huobi.d.ts +25 -0
- package/js/src/abstract/huobi.js +0 -6
- package/js/src/abstract/hyperliquid.js +0 -6
- package/js/src/abstract/independentreserve.js +0 -6
- package/js/src/abstract/indodax.js +0 -6
- package/js/src/abstract/kraken.js +0 -6
- package/js/src/abstract/krakenfutures.d.ts +1 -0
- package/js/src/abstract/krakenfutures.js +0 -6
- package/js/src/abstract/kucoin.js +0 -6
- package/js/src/abstract/kucoinfutures.js +0 -6
- package/js/src/abstract/latoken.js +0 -6
- package/js/src/abstract/lbank.js +0 -6
- package/js/src/abstract/luno.js +0 -6
- package/js/src/abstract/mercado.js +0 -6
- package/js/src/abstract/mexc.js +0 -6
- package/js/src/abstract/modetrade.js +0 -6
- package/js/src/abstract/myokx.js +0 -6
- package/js/src/abstract/ndax.js +0 -6
- package/js/src/abstract/novadax.js +0 -6
- package/js/src/abstract/okx.js +0 -6
- package/js/src/abstract/okxus.js +0 -6
- package/js/src/abstract/onetrading.js +0 -6
- package/js/src/abstract/oxfun.js +0 -6
- package/js/src/abstract/p2b.js +0 -6
- package/js/src/abstract/paradex.js +0 -6
- package/js/src/abstract/paymium.js +0 -6
- package/js/src/abstract/phemex.js +0 -6
- package/js/src/abstract/poloniex.js +0 -6
- package/js/src/abstract/probit.js +0 -6
- package/js/src/abstract/timex.js +0 -6
- package/js/src/abstract/tokocrypto.js +0 -6
- package/js/src/abstract/toobit.js +0 -6
- package/js/src/abstract/upbit.js +0 -6
- package/js/src/abstract/wavesexchange.js +0 -6
- package/js/src/abstract/whitebit.js +0 -6
- package/js/src/abstract/woo.js +0 -6
- package/js/src/abstract/woofipro.js +0 -6
- package/js/src/abstract/xt.js +0 -6
- package/js/src/abstract/yobit.js +0 -6
- package/js/src/abstract/zaif.js +0 -6
- package/js/src/abstract/zebpay.js +0 -6
- package/js/src/abstract/zonda.js +0 -6
- package/js/src/{btcalpha.d.ts → alp.d.ts} +37 -37
- package/js/src/{btcalpha.js → alp.js} +44 -50
- package/js/src/alpaca.js +0 -6
- package/js/src/apex.js +0 -6
- package/js/src/arkham.js +0 -6
- package/js/src/ascendex.d.ts +2 -2
- package/js/src/ascendex.js +2 -8
- package/js/src/aster.js +17 -29
- package/js/src/backpack.js +2 -8
- package/js/src/base/Exchange.js +0 -6
- package/js/src/base/Precise.js +0 -6
- package/js/src/base/errorHierarchy.js +0 -6
- package/js/src/base/errors.js +0 -6
- package/js/src/base/functions/crypto.js +0 -6
- package/js/src/base/functions/encode.js +0 -6
- package/js/src/base/functions/generic.js +0 -6
- package/js/src/base/functions/misc.js +0 -6
- package/js/src/base/functions/number.js +0 -6
- package/js/src/base/functions/platform.js +0 -6
- package/js/src/base/functions/rsa.js +0 -6
- package/js/src/base/functions/string.js +0 -6
- package/js/src/base/functions/throttle.js +0 -6
- package/js/src/base/functions/time.js +0 -6
- package/js/src/base/functions/totp.js +0 -6
- package/js/src/base/functions/type.js +0 -6
- package/js/src/base/functions.js +0 -6
- package/js/src/base/types.js +0 -6
- package/js/src/base/ws/Cache.js +0 -6
- package/js/src/base/ws/Client.js +0 -6
- package/js/src/base/ws/Future.js +0 -6
- package/js/src/base/ws/OrderBook.js +0 -6
- package/js/src/base/ws/OrderBookSide.js +0 -6
- package/js/src/base/ws/WsClient.js +0 -6
- package/js/src/base/ws/functions.js +0 -6
- package/js/src/bequant.js +0 -6
- package/js/src/bigone.js +0 -6
- package/js/src/binance.d.ts +4 -4
- package/js/src/binance.js +8 -10
- package/js/src/binancecoinm.js +0 -6
- package/js/src/binanceus.js +0 -6
- package/js/src/binanceusdm.js +0 -6
- package/js/src/bingx.d.ts +1 -1
- package/js/src/bingx.js +2 -7
- package/js/src/bit2c.js +0 -6
- package/js/src/bitbank.js +0 -6
- package/js/src/bitbns.js +0 -6
- package/js/src/bitfinex.d.ts +1 -2
- package/js/src/bitfinex.js +6 -17
- package/js/src/bitflyer.js +0 -6
- package/js/src/bitget.d.ts +3 -3
- package/js/src/bitget.js +7 -11
- package/js/src/bithumb.js +0 -6
- package/js/src/bitmart.d.ts +1 -1
- package/js/src/bitmart.js +1 -7
- package/js/src/bitmex.d.ts +1 -1
- package/js/src/bitmex.js +1 -7
- package/js/src/bitopro.js +0 -6
- package/js/src/bitrue.js +0 -6
- package/js/src/bitso.d.ts +1 -1
- package/js/src/bitso.js +1 -7
- package/js/src/bitstamp.d.ts +1 -1
- package/js/src/bitstamp.js +1 -7
- package/js/src/bitteam.js +0 -6
- package/js/src/bittrade.js +0 -6
- package/js/src/bitvavo.js +0 -6
- package/js/src/blockchaincom.js +0 -6
- package/js/src/blofin.d.ts +1 -1
- package/js/src/blofin.js +1 -7
- package/js/src/btcbox.js +0 -6
- package/js/src/btcmarkets.js +0 -6
- package/js/src/btcturk.js +0 -6
- package/js/src/bullish.js +0 -6
- package/js/src/bybit.d.ts +1 -1
- package/js/src/bybit.js +58 -35
- package/js/src/bydfi.js +0 -6
- package/js/src/cex.d.ts +1 -1
- package/js/src/cex.js +1 -7
- package/js/src/coinbase.d.ts +1 -1
- package/js/src/coinbase.js +7 -12
- package/js/src/coinbaseadvanced.js +0 -6
- package/js/src/coinbaseexchange.d.ts +1 -1
- package/js/src/coinbaseexchange.js +1 -7
- package/js/src/coinbaseinternational.js +0 -6
- package/js/src/coincatch.d.ts +3 -3
- package/js/src/coincatch.js +3 -9
- package/js/src/coincheck.js +0 -6
- package/js/src/coinex.d.ts +2 -2
- package/js/src/coinex.js +2 -8
- package/js/src/coinmate.js +0 -6
- package/js/src/coinmetro.d.ts +1 -1
- package/js/src/coinmetro.js +1 -7
- package/js/src/coinone.js +0 -6
- package/js/src/coinsph.js +0 -6
- package/js/src/coinspot.js +0 -6
- package/js/src/cryptocom.d.ts +1 -1
- package/js/src/cryptocom.js +4 -7
- package/js/src/cryptomus.js +0 -6
- package/js/src/deepcoin.d.ts +1 -1
- package/js/src/deepcoin.js +1 -7
- package/js/src/defx.d.ts +1 -1
- package/js/src/defx.js +1 -7
- package/js/src/delta.d.ts +3 -3
- package/js/src/delta.js +3 -9
- package/js/src/deribit.js +0 -6
- package/js/src/derive.js +0 -6
- package/js/src/digifinex.d.ts +1 -1
- package/js/src/digifinex.js +1 -7
- package/js/src/dydx.d.ts +1 -1
- package/js/src/dydx.js +1 -7
- package/js/src/exmo.d.ts +2 -2
- package/js/src/exmo.js +2 -8
- package/js/src/fmfwio.js +0 -6
- package/js/src/foxbit.js +1 -7
- package/js/src/gate.d.ts +3 -3
- package/js/src/gate.js +27 -10
- package/js/src/gateio.js +0 -6
- package/js/src/gemini.js +0 -6
- package/js/src/hashkey.d.ts +1 -1
- package/js/src/hashkey.js +1 -7
- package/js/src/hibachi.d.ts +1 -1
- package/js/src/hibachi.js +1 -7
- package/js/src/hitbtc.d.ts +2 -2
- package/js/src/hitbtc.js +2 -8
- package/js/src/hollaex.js +0 -6
- package/js/src/htx.d.ts +1 -1
- package/js/src/htx.js +27 -8
- package/js/src/huobi.js +0 -6
- package/js/src/hyperliquid.d.ts +3 -3
- package/js/src/hyperliquid.js +5 -10
- package/js/src/independentreserve.js +0 -6
- package/js/src/indodax.js +0 -6
- package/js/src/kraken.d.ts +1 -1
- package/js/src/kraken.js +1 -7
- package/js/src/krakenfutures.d.ts +23 -0
- package/js/src/krakenfutures.js +53 -15
- package/js/src/kucoin.d.ts +1 -1
- package/js/src/kucoin.js +1 -7
- package/js/src/kucoinfutures.d.ts +1 -1
- package/js/src/kucoinfutures.js +1 -7
- package/js/src/latoken.js +0 -6
- package/js/src/lbank.js +0 -6
- package/js/src/luno.d.ts +1 -1
- package/js/src/luno.js +1 -7
- package/js/src/mercado.js +0 -6
- package/js/src/mexc.d.ts +2 -2
- package/js/src/mexc.js +2 -8
- package/js/src/modetrade.d.ts +1 -1
- package/js/src/modetrade.js +1 -7
- package/js/src/myokx.js +0 -6
- package/js/src/ndax.d.ts +1 -1
- package/js/src/ndax.js +1 -7
- package/js/src/novadax.js +0 -6
- package/js/src/okx.d.ts +3 -3
- package/js/src/okx.js +4 -10
- package/js/src/okxus.js +0 -6
- package/js/src/onetrading.js +0 -6
- package/js/src/oxfun.js +0 -6
- package/js/src/p2b.js +0 -6
- package/js/src/paradex.js +1 -7
- package/js/src/paymium.js +0 -6
- package/js/src/phemex.d.ts +1 -1
- package/js/src/phemex.js +1 -7
- package/js/src/poloniex.d.ts +2 -2
- package/js/src/poloniex.js +2 -8
- package/js/src/pro/alpaca.js +0 -6
- package/js/src/pro/apex.js +5 -10
- package/js/src/pro/arkham.js +1 -7
- package/js/src/pro/ascendex.js +0 -6
- package/js/src/pro/aster.d.ts +68 -2
- package/js/src/pro/aster.js +907 -41
- package/js/src/pro/backpack.js +2 -7
- package/js/src/pro/bequant.js +0 -6
- package/js/src/pro/binance.js +0 -6
- package/js/src/pro/binancecoinm.js +0 -6
- package/js/src/pro/binanceus.js +0 -6
- package/js/src/pro/binanceusdm.js +0 -6
- package/js/src/pro/bingx.js +0 -6
- package/js/src/pro/bitfinex.js +0 -6
- package/js/src/pro/bitget.js +19 -12
- package/js/src/pro/bithumb.js +0 -6
- package/js/src/pro/bitmart.js +0 -6
- package/js/src/pro/bitmex.js +0 -6
- package/js/src/pro/bitopro.js +0 -6
- package/js/src/pro/bitrue.js +0 -6
- package/js/src/pro/bitstamp.js +0 -6
- package/js/src/pro/bittrade.js +0 -6
- package/js/src/pro/bitvavo.js +0 -6
- package/js/src/pro/blockchaincom.js +0 -6
- package/js/src/pro/blofin.js +0 -6
- package/js/src/pro/bullish.js +0 -6
- package/js/src/pro/bybit.js +0 -6
- package/js/src/pro/bydfi.js +0 -6
- package/js/src/pro/cex.js +0 -6
- package/js/src/pro/coinbase.js +0 -6
- package/js/src/pro/coinbaseadvanced.js +0 -6
- package/js/src/pro/coinbaseexchange.js +0 -6
- package/js/src/pro/coinbaseinternational.js +0 -6
- package/js/src/pro/coincatch.js +0 -6
- package/js/src/pro/coincheck.js +0 -6
- package/js/src/pro/coinex.js +0 -6
- package/js/src/pro/coinone.js +0 -6
- package/js/src/pro/cryptocom.js +0 -6
- package/js/src/pro/deepcoin.js +0 -6
- package/js/src/pro/defx.js +0 -6
- package/js/src/pro/deribit.js +0 -6
- package/js/src/pro/derive.js +0 -6
- package/js/src/pro/dydx.js +0 -6
- package/js/src/pro/exmo.js +0 -6
- package/js/src/pro/gate.js +0 -6
- package/js/src/pro/gateio.js +0 -6
- package/js/src/pro/gemini.js +0 -6
- package/js/src/pro/hashkey.js +0 -6
- package/js/src/pro/hitbtc.js +0 -6
- package/js/src/pro/hollaex.js +0 -6
- package/js/src/pro/htx.js +0 -6
- package/js/src/pro/huobi.js +0 -6
- package/js/src/pro/hyperliquid.js +0 -6
- package/js/src/pro/independentreserve.js +0 -6
- package/js/src/pro/kraken.js +0 -6
- package/js/src/pro/krakenfutures.js +0 -6
- package/js/src/pro/kucoin.js +0 -6
- package/js/src/pro/kucoinfutures.js +0 -6
- package/js/src/pro/lbank.js +0 -6
- package/js/src/pro/luno.js +0 -6
- package/js/src/pro/mexc.js +0 -6
- package/js/src/pro/modetrade.js +0 -6
- package/js/src/pro/myokx.js +0 -6
- package/js/src/pro/ndax.js +0 -6
- package/js/src/pro/okx.d.ts +1 -1
- package/js/src/pro/okx.js +2 -8
- package/js/src/pro/okxus.js +0 -6
- package/js/src/pro/onetrading.js +0 -6
- package/js/src/pro/oxfun.js +0 -6
- package/js/src/pro/p2b.js +0 -6
- package/js/src/pro/paradex.d.ts +17 -1
- package/js/src/pro/paradex.js +143 -9
- package/js/src/pro/phemex.js +0 -6
- package/js/src/pro/poloniex.js +0 -6
- package/js/src/pro/probit.js +0 -6
- package/js/src/pro/toobit.js +0 -6
- package/js/src/pro/upbit.js +0 -6
- package/js/src/pro/whitebit.js +0 -6
- package/js/src/pro/woo.js +0 -6
- package/js/src/pro/woofipro.js +0 -6
- package/js/src/pro/xt.js +0 -6
- package/js/src/probit.js +0 -6
- package/js/src/protobuf/mexc/compiled.cjs +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/helpers.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +0 -6
- package/js/src/static_dependencies/dydx-v4-client/onboarding.js +0 -6
- package/js/src/static_dependencies/dydx-v4-client/registry.js +0 -6
- package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
- package/js/src/static_dependencies/ethers/address/address.js +0 -6
- package/js/src/static_dependencies/ethers/address/checks.js +0 -6
- package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
- package/js/src/static_dependencies/ethers/address/index.js +0 -6
- package/js/src/static_dependencies/ethers/bytes32.js +0 -6
- package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
- package/js/src/static_dependencies/ethers/coders/address.js +0 -6
- package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
- package/js/src/static_dependencies/ethers/coders/array.js +0 -6
- package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
- package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
- package/js/src/static_dependencies/ethers/coders/null.js +0 -6
- package/js/src/static_dependencies/ethers/coders/number.js +0 -6
- package/js/src/static_dependencies/ethers/coders/string.js +0 -6
- package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
- package/js/src/static_dependencies/ethers/fragments.js +0 -6
- package/js/src/static_dependencies/ethers/hash/index.js +0 -6
- package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
- package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
- package/js/src/static_dependencies/ethers/index.js +0 -6
- package/js/src/static_dependencies/ethers/interface.js +0 -6
- package/js/src/static_dependencies/ethers/typed.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
- package/js/src/static_dependencies/ethers/utils/data.js +0 -6
- package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
- package/js/src/static_dependencies/ethers/utils/events.js +0 -6
- package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
- package/js/src/static_dependencies/ethers/utils/index.js +0 -6
- package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
- package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
- package/js/src/static_dependencies/ethers/utils/units.js +0 -6
- package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
- package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
- package/js/src/static_dependencies/fflake/browser.js +0 -6
- package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
- package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
- package/js/src/static_dependencies/jsencrypt/index.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
- package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
- package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
- package/js/src/static_dependencies/noble-curves/bn.js +0 -6
- package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
- package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
- package/js/src/static_dependencies/noble-curves/index.js +0 -6
- package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
- package/js/src/static_dependencies/noble-curves/p256.js +0 -6
- package/js/src/static_dependencies/noble-curves/p384.js +0 -6
- package/js/src/static_dependencies/noble-curves/p521.js +0 -6
- package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
- package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
- package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
- package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
- package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
- package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
- package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
- package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
- package/js/src/static_dependencies/noble-hashes/index.js +0 -6
- package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
- package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
- package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
- package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
- package/js/src/static_dependencies/node-fetch/body.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
- package/js/src/static_dependencies/node-fetch/headers.js +0 -6
- package/js/src/static_dependencies/node-fetch/index.js +0 -6
- package/js/src/static_dependencies/node-fetch/request.js +0 -6
- package/js/src/static_dependencies/node-fetch/response.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
- package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
- package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
- package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
- package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
- package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
- package/js/src/static_dependencies/qs/formats.js +0 -6
- package/js/src/static_dependencies/qs/index.js +0 -6
- package/js/src/static_dependencies/qs/parse.js +0 -6
- package/js/src/static_dependencies/qs/stringify.js +0 -6
- package/js/src/static_dependencies/qs/utils.js +0 -6
- package/js/src/static_dependencies/scure-base/index.js +0 -6
- package/js/src/static_dependencies/scure-bip32/index.js +0 -6
- package/js/src/static_dependencies/scure-bip39/index.js +0 -6
- package/js/src/static_dependencies/scure-bip39/wordlists/english.js +0 -6
- package/js/src/static_dependencies/scure-starknet/index.js +0 -6
- package/js/src/static_dependencies/starknet/constants.js +0 -6
- package/js/src/static_dependencies/starknet/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
- package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
- package/js/src/static_dependencies/starknet/types/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
- package/js/src/static_dependencies/starknet/utils/address.js +0 -6
- package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
- package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
- package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
- package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
- package/js/src/static_dependencies/starknet/utils/num.js +0 -6
- package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
- package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
- package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
- package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
- package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
- package/js/src/static_dependencies/starknet/utils/url.js +0 -6
- package/js/src/static_dependencies/watchable/src/index.js +0 -6
- package/js/src/static_dependencies/watchable/src/types.js +0 -6
- package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
- package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
- package/js/src/timex.js +0 -6
- package/js/src/tokocrypto.js +0 -6
- package/js/src/toobit.d.ts +1 -1
- package/js/src/toobit.js +1 -7
- package/js/src/upbit.js +0 -6
- package/js/src/wavesexchange.js +0 -6
- package/js/src/whitebit.js +3 -9
- package/js/src/woo.d.ts +3 -3
- package/js/src/woo.js +3 -9
- package/js/src/woofipro.d.ts +1 -1
- package/js/src/woofipro.js +1 -7
- package/js/src/xt.d.ts +2 -2
- package/js/src/xt.js +2 -8
- package/js/src/yobit.js +0 -6
- package/js/src/zaif.js +0 -6
- package/js/src/zebpay.d.ts +2 -2
- package/js/src/zebpay.js +2 -8
- package/js/src/zonda.d.ts +1 -1
- package/js/src/zonda.js +1 -7
- package/package.json +1 -1
- package/js/src/abstract/btcalpha.js +0 -11
- /package/js/src/abstract/{btcalpha.d.ts → alp.d.ts} +0 -0
package/js/src/pro/aster.js
CHANGED
|
@@ -1,31 +1,29 @@
|
|
|
1
|
-
// ----------------------------------------------------------------------------
|
|
2
|
-
|
|
3
|
-
// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
|
4
|
-
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
|
5
|
-
// EDIT THE CORRESPONDENT .ts FILE INSTEAD
|
|
6
|
-
|
|
7
1
|
// ---------------------------------------------------------------------------
|
|
8
2
|
import asterRest from '../aster.js';
|
|
3
|
+
import { Precise } from '../base/Precise.js';
|
|
9
4
|
import { ArgumentsRequired } from '../base/errors.js';
|
|
10
|
-
import { ArrayCache, ArrayCacheByTimestamp } from '../base/ws/Cache.js';
|
|
5
|
+
import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide } from '../base/ws/Cache.js';
|
|
11
6
|
// ---------------------------------------------------------------------------
|
|
12
7
|
export default class aster extends asterRest {
|
|
13
8
|
describe() {
|
|
14
9
|
return this.deepExtend(super.describe(), {
|
|
15
10
|
'has': {
|
|
16
11
|
'ws': true,
|
|
17
|
-
'watchBalance':
|
|
12
|
+
'watchBalance': true,
|
|
18
13
|
'watchBidsAsks': true,
|
|
19
|
-
'watchTicker': true,
|
|
20
|
-
'watchTickers': true,
|
|
21
14
|
'watchMarkPrice': true,
|
|
22
15
|
'watchMarkPrices': true,
|
|
23
16
|
'watchTrades': true,
|
|
24
17
|
'watchTradesForSymbols': true,
|
|
18
|
+
'watchOrders': true,
|
|
25
19
|
'watchOrderBook': true,
|
|
26
20
|
'watchOrderBookForSymbols': true,
|
|
27
21
|
'watchOHLCV': true,
|
|
28
22
|
'watchOHLCVForSymbols': true,
|
|
23
|
+
'watchPositions': true,
|
|
24
|
+
'watchTicker': true,
|
|
25
|
+
'watchTickers': true,
|
|
26
|
+
'watchMyTrades': true,
|
|
29
27
|
'unWatchTicker': true,
|
|
30
28
|
'unWatchTickers': true,
|
|
31
29
|
'unWatchMarkPrice': true,
|
|
@@ -41,12 +39,40 @@ export default class aster extends asterRest {
|
|
|
41
39
|
'urls': {
|
|
42
40
|
'api': {
|
|
43
41
|
'ws': {
|
|
44
|
-
'
|
|
45
|
-
|
|
42
|
+
'public': {
|
|
43
|
+
'spot': 'wss://sstream.asterdex.com/stream',
|
|
44
|
+
'swap': 'wss://fstream.asterdex.com/stream',
|
|
45
|
+
},
|
|
46
|
+
'private': {
|
|
47
|
+
'spot': 'wss://sstream.asterdex.com/ws',
|
|
48
|
+
'swap': 'wss://fstream.asterdex.com/ws',
|
|
49
|
+
},
|
|
46
50
|
},
|
|
47
51
|
},
|
|
48
52
|
},
|
|
49
|
-
'options': {
|
|
53
|
+
'options': {
|
|
54
|
+
'listenKey': {
|
|
55
|
+
'spot': undefined,
|
|
56
|
+
'swap': undefined,
|
|
57
|
+
},
|
|
58
|
+
'lastAuthenticatedTime': {
|
|
59
|
+
'spot': 0,
|
|
60
|
+
'swap': 0,
|
|
61
|
+
},
|
|
62
|
+
'listenKeyRefreshRate': {
|
|
63
|
+
'spot': 3600000,
|
|
64
|
+
'swap': 3600000,
|
|
65
|
+
},
|
|
66
|
+
'watchBalance': {
|
|
67
|
+
'fetchBalanceSnapshot': false,
|
|
68
|
+
'awaitBalanceSnapshot': true, // whether to wait for the balance snapshot before providing updates
|
|
69
|
+
},
|
|
70
|
+
'wallet': 'wb',
|
|
71
|
+
'watchPositions': {
|
|
72
|
+
'fetchPositionsSnapshot': true,
|
|
73
|
+
'awaitPositionsSnapshot': true, // whether to wait for the positions snapshot before providing updates
|
|
74
|
+
},
|
|
75
|
+
},
|
|
50
76
|
'streaming': {},
|
|
51
77
|
'exceptions': {},
|
|
52
78
|
});
|
|
@@ -115,7 +141,7 @@ export default class aster extends asterRest {
|
|
|
115
141
|
if (symbolsLength === 0) {
|
|
116
142
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
117
143
|
}
|
|
118
|
-
const url = this.urls['api']['ws'][type];
|
|
144
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
119
145
|
const subscriptionArgs = [];
|
|
120
146
|
const messageHashes = [];
|
|
121
147
|
const request = {
|
|
@@ -158,7 +184,7 @@ export default class aster extends asterRest {
|
|
|
158
184
|
if (symbolsLength === 0) {
|
|
159
185
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
160
186
|
}
|
|
161
|
-
const url = this.urls['api']['ws'][type];
|
|
187
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
162
188
|
const subscriptionArgs = [];
|
|
163
189
|
const messageHashes = [];
|
|
164
190
|
const request = {
|
|
@@ -226,7 +252,7 @@ export default class aster extends asterRest {
|
|
|
226
252
|
if (symbolsLength === 0) {
|
|
227
253
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
228
254
|
}
|
|
229
|
-
const url = this.urls['api']['ws'][type];
|
|
255
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
230
256
|
const subscriptionArgs = [];
|
|
231
257
|
const messageHashes = [];
|
|
232
258
|
const request = {
|
|
@@ -271,7 +297,7 @@ export default class aster extends asterRest {
|
|
|
271
297
|
if (symbolsLength === 0) {
|
|
272
298
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
273
299
|
}
|
|
274
|
-
const url = this.urls['api']['ws'][type];
|
|
300
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
275
301
|
const subscriptionArgs = [];
|
|
276
302
|
const messageHashes = [];
|
|
277
303
|
const request = {
|
|
@@ -397,7 +423,7 @@ export default class aster extends asterRest {
|
|
|
397
423
|
if (symbolsLength === 0) {
|
|
398
424
|
throw new ArgumentsRequired(this.id + ' watchBidsAsks() requires a non-empty array of symbols');
|
|
399
425
|
}
|
|
400
|
-
const url = this.urls['api']['ws'][type];
|
|
426
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
401
427
|
const subscriptionArgs = [];
|
|
402
428
|
const messageHashes = [];
|
|
403
429
|
const request = {
|
|
@@ -437,7 +463,7 @@ export default class aster extends asterRest {
|
|
|
437
463
|
if (symbolsLength === 0) {
|
|
438
464
|
throw new ArgumentsRequired(this.id + ' unWatchBidsAsks() requires a non-empty array of symbols');
|
|
439
465
|
}
|
|
440
|
-
const url = this.urls['api']['ws'][type];
|
|
466
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
441
467
|
const subscriptionArgs = [];
|
|
442
468
|
const messageHashes = [];
|
|
443
469
|
const request = {
|
|
@@ -548,7 +574,7 @@ export default class aster extends asterRest {
|
|
|
548
574
|
if (symbolsLength === 0) {
|
|
549
575
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
550
576
|
}
|
|
551
|
-
const url = this.urls['api']['ws'][type];
|
|
577
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
552
578
|
const subscriptionArgs = [];
|
|
553
579
|
const messageHashes = [];
|
|
554
580
|
const request = {
|
|
@@ -591,7 +617,7 @@ export default class aster extends asterRest {
|
|
|
591
617
|
if (symbolsLength === 0) {
|
|
592
618
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
593
619
|
}
|
|
594
|
-
const url = this.urls['api']['ws'][type];
|
|
620
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
595
621
|
const subscriptionArgs = [];
|
|
596
622
|
const messageHashes = [];
|
|
597
623
|
const request = {
|
|
@@ -643,30 +669,158 @@ export default class aster extends asterRest {
|
|
|
643
669
|
client.resolve(stored, messageHash);
|
|
644
670
|
}
|
|
645
671
|
parseWsTrade(trade, market = undefined) {
|
|
672
|
+
//
|
|
673
|
+
// public watchTrades
|
|
674
|
+
//
|
|
675
|
+
// {
|
|
676
|
+
// "e": "trade", // event type
|
|
677
|
+
// "E": 1579481530911, // event time
|
|
678
|
+
// "s": "ETHBTC", // symbol
|
|
679
|
+
// "t": 158410082, // trade id
|
|
680
|
+
// "p": "0.01914100", // price
|
|
681
|
+
// "q": "0.00700000", // quantity
|
|
682
|
+
// "b": 586187049, // buyer order id
|
|
683
|
+
// "a": 586186710, // seller order id
|
|
684
|
+
// "T": 1579481530910, // trade time
|
|
685
|
+
// "m": false, // is the buyer the market maker
|
|
686
|
+
// "M": true // binance docs say it should be ignored
|
|
687
|
+
// }
|
|
688
|
+
//
|
|
689
|
+
// {
|
|
690
|
+
// "e": "aggTrade", // Event type
|
|
691
|
+
// "E": 123456789, // Event time
|
|
692
|
+
// "s": "BNBBTC", // Symbol
|
|
693
|
+
// "a": 12345, // Aggregate trade ID
|
|
694
|
+
// "p": "0.001", // Price
|
|
695
|
+
// "q": "100", // Quantity
|
|
696
|
+
// "f": 100, // First trade ID
|
|
697
|
+
// "l": 105, // Last trade ID
|
|
698
|
+
// "T": 123456785, // Trade time
|
|
699
|
+
// "m": true, // Is the buyer the market maker?
|
|
700
|
+
// "M": true // Ignore
|
|
701
|
+
// }
|
|
702
|
+
//
|
|
703
|
+
// private watchMyTrades spot
|
|
704
|
+
//
|
|
705
|
+
// {
|
|
706
|
+
// "e": "executionReport",
|
|
707
|
+
// "E": 1611063861489,
|
|
708
|
+
// "s": "BNBUSDT",
|
|
709
|
+
// "c": "m4M6AD5MF3b1ERe65l4SPq",
|
|
710
|
+
// "S": "BUY",
|
|
711
|
+
// "o": "MARKET",
|
|
712
|
+
// "f": "GTC",
|
|
713
|
+
// "q": "2.00000000",
|
|
714
|
+
// "p": "0.00000000",
|
|
715
|
+
// "P": "0.00000000",
|
|
716
|
+
// "F": "0.00000000",
|
|
717
|
+
// "g": -1,
|
|
718
|
+
// "C": '',
|
|
719
|
+
// "x": "TRADE",
|
|
720
|
+
// "X": "PARTIALLY_FILLED",
|
|
721
|
+
// "r": "NONE",
|
|
722
|
+
// "i": 1296882607,
|
|
723
|
+
// "l": "0.33200000",
|
|
724
|
+
// "z": "0.33200000",
|
|
725
|
+
// "L": "46.86600000",
|
|
726
|
+
// "n": "0.00033200",
|
|
727
|
+
// "N": "BNB",
|
|
728
|
+
// "T": 1611063861488,
|
|
729
|
+
// "t": 109747654,
|
|
730
|
+
// "I": 2696953381,
|
|
731
|
+
// "w": false,
|
|
732
|
+
// "m": false,
|
|
733
|
+
// "M": true,
|
|
734
|
+
// "O": 1611063861488,
|
|
735
|
+
// "Z": "15.55951200",
|
|
736
|
+
// "Y": "15.55951200",
|
|
737
|
+
// "Q": "0.00000000"
|
|
738
|
+
// }
|
|
739
|
+
//
|
|
740
|
+
// private watchMyTrades future/delivery
|
|
741
|
+
//
|
|
742
|
+
// {
|
|
743
|
+
// "s": "BTCUSDT",
|
|
744
|
+
// "c": "pb2jD6ZQHpfzSdUac8VqMK",
|
|
745
|
+
// "S": "SELL",
|
|
746
|
+
// "o": "MARKET",
|
|
747
|
+
// "f": "GTC",
|
|
748
|
+
// "q": "0.001",
|
|
749
|
+
// "p": "0",
|
|
750
|
+
// "ap": "33468.46000",
|
|
751
|
+
// "sp": "0",
|
|
752
|
+
// "x": "TRADE",
|
|
753
|
+
// "X": "FILLED",
|
|
754
|
+
// "i": 13351197194,
|
|
755
|
+
// "l": "0.001",
|
|
756
|
+
// "z": "0.001",
|
|
757
|
+
// "L": "33468.46",
|
|
758
|
+
// "n": "0.00027086",
|
|
759
|
+
// "N": "BNB",
|
|
760
|
+
// "T": 1612095165362,
|
|
761
|
+
// "t": 458032604,
|
|
762
|
+
// "b": "0",
|
|
763
|
+
// "a": "0",
|
|
764
|
+
// "m": false,
|
|
765
|
+
// "R": false,
|
|
766
|
+
// "wt": "CONTRACT_PRICE",
|
|
767
|
+
// "ot": "MARKET",
|
|
768
|
+
// "ps": "BOTH",
|
|
769
|
+
// "cp": false,
|
|
770
|
+
// "rp": "0.00335000",
|
|
771
|
+
// "pP": false,
|
|
772
|
+
// "si": 0,
|
|
773
|
+
// "ss": 0
|
|
774
|
+
// }
|
|
775
|
+
//
|
|
776
|
+
const id = this.safeString2(trade, 't', 'a');
|
|
646
777
|
const timestamp = this.safeInteger(trade, 'T');
|
|
647
|
-
const
|
|
648
|
-
const
|
|
649
|
-
|
|
650
|
-
|
|
778
|
+
const price = this.safeString2(trade, 'L', 'p');
|
|
779
|
+
const amount = this.safeString2(trade, 'q', 'l');
|
|
780
|
+
let cost = this.safeString(trade, 'Y');
|
|
781
|
+
if (cost === undefined) {
|
|
782
|
+
if ((price !== undefined) && (amount !== undefined)) {
|
|
783
|
+
cost = Precise.stringMul(price, amount);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
const marketId = this.safeString(trade, 's');
|
|
787
|
+
const defaultType = (market === undefined) ? this.safeString(this.options, 'defaultType', 'spot') : market['type'];
|
|
788
|
+
const symbol = this.safeSymbol(marketId, market, undefined, defaultType);
|
|
789
|
+
let side = this.safeStringLower(trade, 'S');
|
|
651
790
|
let takerOrMaker = undefined;
|
|
652
|
-
|
|
653
|
-
|
|
791
|
+
const orderId = this.safeString(trade, 'i');
|
|
792
|
+
if ('m' in trade) {
|
|
793
|
+
if (side === undefined) {
|
|
794
|
+
side = trade['m'] ? 'sell' : 'buy'; // this is reversed intentionally
|
|
795
|
+
}
|
|
796
|
+
takerOrMaker = trade['m'] ? 'maker' : 'taker';
|
|
797
|
+
}
|
|
798
|
+
let fee = undefined;
|
|
799
|
+
const feeCost = this.safeString(trade, 'n');
|
|
800
|
+
if (feeCost !== undefined) {
|
|
801
|
+
const feeCurrencyId = this.safeString(trade, 'N');
|
|
802
|
+
const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
|
|
803
|
+
fee = {
|
|
804
|
+
'cost': feeCost,
|
|
805
|
+
'currency': feeCurrencyCode,
|
|
806
|
+
};
|
|
654
807
|
}
|
|
808
|
+
const type = this.safeStringLower(trade, 'o');
|
|
655
809
|
return this.safeTrade({
|
|
656
|
-
'id': this.safeString(trade, 'a'),
|
|
657
810
|
'info': trade,
|
|
658
811
|
'timestamp': timestamp,
|
|
659
812
|
'datetime': this.iso8601(timestamp),
|
|
660
813
|
'symbol': symbol,
|
|
661
|
-
'
|
|
662
|
-
'
|
|
663
|
-
'
|
|
814
|
+
'id': id,
|
|
815
|
+
'order': orderId,
|
|
816
|
+
'type': type,
|
|
664
817
|
'takerOrMaker': takerOrMaker,
|
|
665
|
-
'
|
|
666
|
-
'
|
|
667
|
-
'
|
|
668
|
-
'
|
|
669
|
-
|
|
818
|
+
'side': side,
|
|
819
|
+
'price': price,
|
|
820
|
+
'amount': amount,
|
|
821
|
+
'cost': cost,
|
|
822
|
+
'fee': fee,
|
|
823
|
+
});
|
|
670
824
|
}
|
|
671
825
|
/**
|
|
672
826
|
* @method
|
|
@@ -721,7 +875,7 @@ export default class aster extends asterRest {
|
|
|
721
875
|
if (symbolsLength === 0) {
|
|
722
876
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
723
877
|
}
|
|
724
|
-
const url = this.urls['api']['ws'][type];
|
|
878
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
725
879
|
const subscriptionArgs = [];
|
|
726
880
|
const messageHashes = [];
|
|
727
881
|
const request = {
|
|
@@ -734,7 +888,7 @@ export default class aster extends asterRest {
|
|
|
734
888
|
for (let i = 0; i < symbols.length; i++) {
|
|
735
889
|
const symbol = symbols[i];
|
|
736
890
|
const market = this.market(symbol);
|
|
737
|
-
subscriptionArgs.push(this.safeStringLower(market, 'id') + '@depth' + limit);
|
|
891
|
+
subscriptionArgs.push(this.safeStringLower(market, 'id') + '@depth' + limit.toString());
|
|
738
892
|
messageHashes.push('orderbook:' + market['symbol']);
|
|
739
893
|
}
|
|
740
894
|
const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, params), [type]);
|
|
@@ -763,7 +917,7 @@ export default class aster extends asterRest {
|
|
|
763
917
|
if (symbolsLength === 0) {
|
|
764
918
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a non-empty array of symbols');
|
|
765
919
|
}
|
|
766
|
-
const url = this.urls['api']['ws'][type];
|
|
920
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
767
921
|
const subscriptionArgs = [];
|
|
768
922
|
const messageHashes = [];
|
|
769
923
|
const request = {
|
|
@@ -888,7 +1042,7 @@ export default class aster extends asterRest {
|
|
|
888
1042
|
const marketSymbols = this.marketSymbols(symbols, undefined, false, true, true);
|
|
889
1043
|
const firstMarket = this.market(marketSymbols[0]);
|
|
890
1044
|
const type = this.safeString(firstMarket, 'type', 'swap');
|
|
891
|
-
const url = this.urls['api']['ws'][type];
|
|
1045
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
892
1046
|
const subscriptionArgs = [];
|
|
893
1047
|
const messageHashes = [];
|
|
894
1048
|
const request = {
|
|
@@ -935,7 +1089,7 @@ export default class aster extends asterRest {
|
|
|
935
1089
|
const marketSymbols = this.marketSymbols(symbols, undefined, false, true, true);
|
|
936
1090
|
const firstMarket = this.market(marketSymbols[0]);
|
|
937
1091
|
const type = this.safeString(firstMarket, 'type', 'swap');
|
|
938
|
-
const url = this.urls['api']['ws'][type];
|
|
1092
|
+
const url = this.urls['api']['ws']['public'][type];
|
|
939
1093
|
const subscriptionArgs = [];
|
|
940
1094
|
const messageHashes = [];
|
|
941
1095
|
const request = {
|
|
@@ -1019,6 +1173,704 @@ export default class aster extends asterRest {
|
|
|
1019
1173
|
this.safeNumber(ohlcv, 'v'),
|
|
1020
1174
|
];
|
|
1021
1175
|
}
|
|
1176
|
+
async authenticate(type = 'spot', params = {}) {
|
|
1177
|
+
const time = this.milliseconds();
|
|
1178
|
+
const lastAuthenticatedTimeOptions = this.safeDict(this.options, 'lastAuthenticatedTime', {});
|
|
1179
|
+
const lastAuthenticatedTime = this.safeInteger(lastAuthenticatedTimeOptions, type, 0);
|
|
1180
|
+
const listenKeyRefreshRateOptions = this.safeDict(this.options, 'listenKeyRefreshRate', {});
|
|
1181
|
+
const listenKeyRefreshRate = this.safeInteger(listenKeyRefreshRateOptions, type, 3600000); // 1 hour
|
|
1182
|
+
if (time - lastAuthenticatedTime > listenKeyRefreshRate) {
|
|
1183
|
+
let response = undefined;
|
|
1184
|
+
if (type === 'spot') {
|
|
1185
|
+
response = await this.sapiPrivatePostV1ListenKey(params);
|
|
1186
|
+
}
|
|
1187
|
+
else {
|
|
1188
|
+
response = await this.fapiPrivatePostV1ListenKey(params);
|
|
1189
|
+
}
|
|
1190
|
+
this.options['listenKey'][type] = this.safeString(response, 'listenKey');
|
|
1191
|
+
this.options['lastAuthenticatedTime'][type] = time;
|
|
1192
|
+
params = this.extend({ 'type': type }, params);
|
|
1193
|
+
this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
async keepAliveListenKey(params = {}) {
|
|
1197
|
+
const type = this.safeString(params, 'type', 'spot');
|
|
1198
|
+
const listenKeyOptions = this.safeDict(this.options, 'listenKey', {});
|
|
1199
|
+
const listenKey = this.safeString(listenKeyOptions, type);
|
|
1200
|
+
if (listenKey === undefined) {
|
|
1201
|
+
return;
|
|
1202
|
+
}
|
|
1203
|
+
try {
|
|
1204
|
+
await this.sapiPrivatePutV1ListenKey(); // extend the expiry
|
|
1205
|
+
}
|
|
1206
|
+
catch (error) {
|
|
1207
|
+
const url = this.urls['api']['ws']['private'][type] + '/' + listenKey;
|
|
1208
|
+
const client = this.client(url);
|
|
1209
|
+
const messageHashes = Object.keys(client.futures);
|
|
1210
|
+
for (let i = 0; i < messageHashes.length; i++) {
|
|
1211
|
+
const messageHash = messageHashes[i];
|
|
1212
|
+
client.reject(error, messageHash);
|
|
1213
|
+
}
|
|
1214
|
+
this.options['listenKey'][type] = undefined;
|
|
1215
|
+
this.options['lastAuthenticatedTime'][type] = 0;
|
|
1216
|
+
return;
|
|
1217
|
+
}
|
|
1218
|
+
// whether or not to schedule another listenKey keepAlive request
|
|
1219
|
+
const listenKeyRefreshOptions = this.safeDict(this.options, 'listenKeyRefresh', {});
|
|
1220
|
+
const listenKeyRefreshRate = this.safeInteger(listenKeyRefreshOptions, 'listenKeyRefreshRate', 3600000);
|
|
1221
|
+
this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
|
|
1222
|
+
}
|
|
1223
|
+
getPrivateUrl(type = 'spot') {
|
|
1224
|
+
const listenKeyOptions = this.safeDict(this.options, 'listenKey', {});
|
|
1225
|
+
const listenKey = this.safeString(listenKeyOptions, type);
|
|
1226
|
+
const url = this.urls['api']['ws']['private'][type] + '/' + listenKey;
|
|
1227
|
+
return url;
|
|
1228
|
+
}
|
|
1229
|
+
/**
|
|
1230
|
+
* @method
|
|
1231
|
+
* @name aster#watchBalance
|
|
1232
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1233
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#payload-account_update
|
|
1234
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#event-balance-and-position-update
|
|
1235
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1236
|
+
* @param {string} [params.type] 'spot' or 'swap', default is 'spot'
|
|
1237
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/?id=balance-structure}
|
|
1238
|
+
*/
|
|
1239
|
+
async watchBalance(params = {}) {
|
|
1240
|
+
await this.loadMarkets();
|
|
1241
|
+
let type = undefined;
|
|
1242
|
+
[type, params] = this.handleMarketTypeAndParams('watchBalance', undefined, params, type);
|
|
1243
|
+
await this.authenticate(type, params);
|
|
1244
|
+
const url = this.getPrivateUrl(type);
|
|
1245
|
+
const client = this.client(url);
|
|
1246
|
+
this.setBalanceCache(client, type);
|
|
1247
|
+
const options = this.safeDict(this.options, 'watchBalance');
|
|
1248
|
+
const fetchBalanceSnapshot = this.safeBool(options, 'fetchBalanceSnapshot', false);
|
|
1249
|
+
const awaitBalanceSnapshot = this.safeBool(options, 'awaitBalanceSnapshot', true);
|
|
1250
|
+
if (fetchBalanceSnapshot && awaitBalanceSnapshot) {
|
|
1251
|
+
await client.future(type + ':fetchBalanceSnapshot');
|
|
1252
|
+
}
|
|
1253
|
+
const messageHash = type + ':balance';
|
|
1254
|
+
const message = undefined;
|
|
1255
|
+
return await this.watch(url, messageHash, message, type);
|
|
1256
|
+
}
|
|
1257
|
+
setBalanceCache(client, type) {
|
|
1258
|
+
if ((type in client.subscriptions) && (type in this.balance)) {
|
|
1259
|
+
return;
|
|
1260
|
+
}
|
|
1261
|
+
const options = this.safeValue(this.options, 'watchBalance');
|
|
1262
|
+
const fetchBalanceSnapshot = this.safeBool(options, 'fetchBalanceSnapshot', false);
|
|
1263
|
+
if (fetchBalanceSnapshot) {
|
|
1264
|
+
const messageHash = type + ':fetchBalanceSnapshot';
|
|
1265
|
+
if (!(messageHash in client.futures)) {
|
|
1266
|
+
client.future(messageHash);
|
|
1267
|
+
this.spawn(this.loadBalanceSnapshot, client, messageHash, type);
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
else {
|
|
1271
|
+
this.balance[type] = {};
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
async loadBalanceSnapshot(client, messageHash, type) {
|
|
1275
|
+
const params = {
|
|
1276
|
+
'type': type,
|
|
1277
|
+
};
|
|
1278
|
+
const response = await this.fetchBalance(params);
|
|
1279
|
+
this.balance[type] = this.extend(response, this.safeValue(this.balance, type, {}));
|
|
1280
|
+
// don't remove the future from the .futures cache
|
|
1281
|
+
if (messageHash in client.futures) {
|
|
1282
|
+
const future = client.futures[messageHash];
|
|
1283
|
+
future.resolve();
|
|
1284
|
+
client.resolve(this.balance[type], type + ':balance');
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
handleBalance(client, message) {
|
|
1288
|
+
//
|
|
1289
|
+
// spot balance update
|
|
1290
|
+
// {
|
|
1291
|
+
// "B": [
|
|
1292
|
+
// {
|
|
1293
|
+
// "a": "USDT",
|
|
1294
|
+
// "f": "16.29445191",
|
|
1295
|
+
// "l": "0"
|
|
1296
|
+
// },
|
|
1297
|
+
// {
|
|
1298
|
+
// "a": "ETH",
|
|
1299
|
+
// "f": "0.00199920",
|
|
1300
|
+
// "l": "0"
|
|
1301
|
+
// }
|
|
1302
|
+
// ],
|
|
1303
|
+
// "e": "outboundAccountPosition",
|
|
1304
|
+
// "T": 1768547778317,
|
|
1305
|
+
// "u": 1768547778317,
|
|
1306
|
+
// "E": 1768547778321,
|
|
1307
|
+
// "m": "ORDER"
|
|
1308
|
+
// }
|
|
1309
|
+
//
|
|
1310
|
+
// swap balance and position update
|
|
1311
|
+
// {
|
|
1312
|
+
// "e": "ACCOUNT_UPDATE",
|
|
1313
|
+
// "T": 1768551627708,
|
|
1314
|
+
// "E": 1768551627710,
|
|
1315
|
+
// "a": {
|
|
1316
|
+
// "B": [
|
|
1317
|
+
// {
|
|
1318
|
+
// "a": "USDT",
|
|
1319
|
+
// "wb": "39.41184271",
|
|
1320
|
+
// "cw": "39.41184271",
|
|
1321
|
+
// "bc": "0"
|
|
1322
|
+
// }
|
|
1323
|
+
// ],
|
|
1324
|
+
// "P": [
|
|
1325
|
+
// {
|
|
1326
|
+
// "s": "ETHUSDT",
|
|
1327
|
+
// "pa": "0",
|
|
1328
|
+
// "ep": "0.00000000",
|
|
1329
|
+
// "cr": "-0.59070000",
|
|
1330
|
+
// "up": "0",
|
|
1331
|
+
// "mt": "isolated",
|
|
1332
|
+
// "iw": "0",
|
|
1333
|
+
// "ps": "BOTH",
|
|
1334
|
+
// "ma": "USDT"
|
|
1335
|
+
// }
|
|
1336
|
+
// ],
|
|
1337
|
+
// "m": "ORDER"
|
|
1338
|
+
// }
|
|
1339
|
+
// }
|
|
1340
|
+
//
|
|
1341
|
+
const subscriptions = client.subscriptions;
|
|
1342
|
+
const subscriptionsKeys = Object.keys(subscriptions);
|
|
1343
|
+
const accountType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
|
|
1344
|
+
const messageHash = accountType + ':balance';
|
|
1345
|
+
if (this.balance[accountType] === undefined) {
|
|
1346
|
+
this.balance[accountType] = {};
|
|
1347
|
+
}
|
|
1348
|
+
this.balance[accountType]['info'] = message;
|
|
1349
|
+
message = this.safeDict(message, 'a', message);
|
|
1350
|
+
const B = this.safeList(message, 'B', []);
|
|
1351
|
+
const wallet = this.safeString(this.options, 'wallet', 'wb');
|
|
1352
|
+
for (let i = 0; i < B.length; i++) {
|
|
1353
|
+
const entry = B[i];
|
|
1354
|
+
const currencyId = this.safeString(entry, 'a');
|
|
1355
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
1356
|
+
const account = this.account();
|
|
1357
|
+
account['free'] = this.safeString(entry, 'f');
|
|
1358
|
+
account['used'] = this.safeString(entry, 'l');
|
|
1359
|
+
account['total'] = this.safeString(entry, wallet);
|
|
1360
|
+
this.balance[accountType][code] = account;
|
|
1361
|
+
}
|
|
1362
|
+
const timestamp = this.safeInteger(message, 'E');
|
|
1363
|
+
this.balance[accountType]['timestamp'] = timestamp;
|
|
1364
|
+
this.balance[accountType]['datetime'] = this.iso8601(timestamp);
|
|
1365
|
+
this.balance[accountType] = this.safeBalance(this.balance[accountType]);
|
|
1366
|
+
client.resolve(this.balance[accountType], messageHash);
|
|
1367
|
+
}
|
|
1368
|
+
/**
|
|
1369
|
+
* @method
|
|
1370
|
+
* @name aster#watchPositions
|
|
1371
|
+
* @description watch all open positions
|
|
1372
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#event-balance-and-position-update
|
|
1373
|
+
* @param {string[]|undefined} symbols list of unified market symbols
|
|
1374
|
+
* @param {number} [since] since timestamp
|
|
1375
|
+
* @param {number} [limit] limit
|
|
1376
|
+
* @param {object} params extra parameters specific to the exchange API endpoint
|
|
1377
|
+
* @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
|
|
1378
|
+
*/
|
|
1379
|
+
async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1380
|
+
await this.loadMarkets();
|
|
1381
|
+
const type = 'swap';
|
|
1382
|
+
await this.authenticate(type, params);
|
|
1383
|
+
const url = this.getPrivateUrl(type);
|
|
1384
|
+
const client = this.client(url);
|
|
1385
|
+
this.setPositionsCache(client);
|
|
1386
|
+
const messageHashes = [];
|
|
1387
|
+
const messageHash = 'positions';
|
|
1388
|
+
symbols = this.marketSymbols(symbols, 'swap', true, true);
|
|
1389
|
+
if (symbols === undefined) {
|
|
1390
|
+
messageHashes.push(messageHash);
|
|
1391
|
+
}
|
|
1392
|
+
else {
|
|
1393
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
1394
|
+
const symbol = symbols[i];
|
|
1395
|
+
messageHashes.push(messageHash + '::' + symbol);
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', true);
|
|
1399
|
+
const awaitPositionsSnapshot = this.handleOption('watchPositions', 'awaitPositionsSnapshot', true);
|
|
1400
|
+
const cache = this.positions;
|
|
1401
|
+
if (fetchPositionsSnapshot && awaitPositionsSnapshot && cache === undefined) {
|
|
1402
|
+
const snapshot = await client.future('fetchPositionsSnapshot');
|
|
1403
|
+
return this.filterBySymbolsSinceLimit(snapshot, symbols, since, limit, true);
|
|
1404
|
+
}
|
|
1405
|
+
const newPositions = await this.watchMultiple(url, messageHashes, undefined, [type]);
|
|
1406
|
+
if (this.newUpdates) {
|
|
1407
|
+
return newPositions;
|
|
1408
|
+
}
|
|
1409
|
+
return this.filterBySymbolsSinceLimit(cache, symbols, since, limit, true);
|
|
1410
|
+
}
|
|
1411
|
+
setPositionsCache(client) {
|
|
1412
|
+
if (this.positions !== undefined) {
|
|
1413
|
+
return;
|
|
1414
|
+
}
|
|
1415
|
+
const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', false);
|
|
1416
|
+
if (fetchPositionsSnapshot) {
|
|
1417
|
+
const messageHash = 'fetchPositionsSnapshot';
|
|
1418
|
+
if (!(messageHash in client.futures)) {
|
|
1419
|
+
client.future(messageHash);
|
|
1420
|
+
this.spawn(this.loadPositionsSnapshot, client, messageHash);
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
else {
|
|
1424
|
+
this.positions = new ArrayCacheBySymbolBySide();
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
async loadPositionsSnapshot(client, messageHash) {
|
|
1428
|
+
const positions = await this.fetchPositions();
|
|
1429
|
+
this.positions = new ArrayCacheBySymbolBySide();
|
|
1430
|
+
const cache = this.positions;
|
|
1431
|
+
for (let i = 0; i < positions.length; i++) {
|
|
1432
|
+
const position = positions[i];
|
|
1433
|
+
const contracts = this.safeNumber(position, 'contracts', 0);
|
|
1434
|
+
if (contracts > 0) {
|
|
1435
|
+
cache.append(position);
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
// don't remove the future from the .futures cache
|
|
1439
|
+
if (messageHash in client.futures) {
|
|
1440
|
+
const future = client.futures[messageHash];
|
|
1441
|
+
future.resolve(cache);
|
|
1442
|
+
client.resolve(cache, 'positions');
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
handlePositions(client, message) {
|
|
1446
|
+
//
|
|
1447
|
+
// {
|
|
1448
|
+
// "e": "ACCOUNT_UPDATE",
|
|
1449
|
+
// "T": 1768551627708,
|
|
1450
|
+
// "E": 1768551627710,
|
|
1451
|
+
// "a": {
|
|
1452
|
+
// "B": [
|
|
1453
|
+
// {
|
|
1454
|
+
// "a": "USDT",
|
|
1455
|
+
// "wb": "39.41184271",
|
|
1456
|
+
// "cw": "39.41184271",
|
|
1457
|
+
// "bc": "0"
|
|
1458
|
+
// }
|
|
1459
|
+
// ],
|
|
1460
|
+
// "P": [
|
|
1461
|
+
// {
|
|
1462
|
+
// "s": "ETHUSDT",
|
|
1463
|
+
// "pa": "0",
|
|
1464
|
+
// "ep": "0.00000000",
|
|
1465
|
+
// "cr": "-0.59070000",
|
|
1466
|
+
// "up": "0",
|
|
1467
|
+
// "mt": "isolated",
|
|
1468
|
+
// "iw": "0",
|
|
1469
|
+
// "ps": "BOTH",
|
|
1470
|
+
// "ma": "USDT"
|
|
1471
|
+
// }
|
|
1472
|
+
// ],
|
|
1473
|
+
// "m": "ORDER"
|
|
1474
|
+
// }
|
|
1475
|
+
// }
|
|
1476
|
+
//
|
|
1477
|
+
const messageHash = 'positions';
|
|
1478
|
+
const messageHashes = this.findMessageHashes(client, messageHash);
|
|
1479
|
+
if (!this.isEmpty(messageHashes)) {
|
|
1480
|
+
if (this.positions === undefined) {
|
|
1481
|
+
this.positions = new ArrayCacheBySymbolBySide();
|
|
1482
|
+
}
|
|
1483
|
+
const cache = this.positions;
|
|
1484
|
+
const data = this.safeDict(message, 'a', {});
|
|
1485
|
+
const rawPositions = this.safeList(data, 'P', []);
|
|
1486
|
+
const newPositions = [];
|
|
1487
|
+
for (let i = 0; i < rawPositions.length; i++) {
|
|
1488
|
+
const rawPosition = rawPositions[i];
|
|
1489
|
+
const position = this.parseWsPosition(rawPosition);
|
|
1490
|
+
const timestamp = this.safeInteger(message, 'E');
|
|
1491
|
+
position['timestamp'] = timestamp;
|
|
1492
|
+
position['datetime'] = this.iso8601(timestamp);
|
|
1493
|
+
newPositions.push(position);
|
|
1494
|
+
cache.append(position);
|
|
1495
|
+
const symbol = position['symbol'];
|
|
1496
|
+
const symbolMessageHash = messageHash + '::' + symbol;
|
|
1497
|
+
client.resolve(position, symbolMessageHash);
|
|
1498
|
+
}
|
|
1499
|
+
client.resolve(newPositions, 'positions');
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
parseWsPosition(position, market = undefined) {
|
|
1503
|
+
//
|
|
1504
|
+
// {
|
|
1505
|
+
// "s": "BTCUSDT", // Symbol
|
|
1506
|
+
// "pa": "0", // Position Amount
|
|
1507
|
+
// "ep": "0.00000", // Entry Price
|
|
1508
|
+
// "cr": "200", // (Pre-fee) Accumulated Realized
|
|
1509
|
+
// "up": "0", // Unrealized PnL
|
|
1510
|
+
// "mt": "isolated", // Margin Type
|
|
1511
|
+
// "iw": "0.00000000", // Isolated Wallet (if isolated position)
|
|
1512
|
+
// "ps": "BOTH" // Position Side
|
|
1513
|
+
// }
|
|
1514
|
+
//
|
|
1515
|
+
const marketId = this.safeString(position, 's');
|
|
1516
|
+
const contracts = this.safeString(position, 'pa');
|
|
1517
|
+
const contractsAbs = Precise.stringAbs(this.safeString(position, 'pa'));
|
|
1518
|
+
let positionSide = this.safeStringLower(position, 'ps');
|
|
1519
|
+
let hedged = true;
|
|
1520
|
+
if (positionSide === 'both') {
|
|
1521
|
+
hedged = false;
|
|
1522
|
+
if (!Precise.stringEq(contracts, '0')) {
|
|
1523
|
+
if (Precise.stringLt(contracts, '0')) {
|
|
1524
|
+
positionSide = 'short';
|
|
1525
|
+
}
|
|
1526
|
+
else {
|
|
1527
|
+
positionSide = 'long';
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
return this.safePosition({
|
|
1532
|
+
'info': position,
|
|
1533
|
+
'id': undefined,
|
|
1534
|
+
'symbol': this.safeSymbol(marketId, undefined, undefined, 'swap'),
|
|
1535
|
+
'notional': undefined,
|
|
1536
|
+
'marginMode': this.safeString(position, 'mt'),
|
|
1537
|
+
'liquidationPrice': undefined,
|
|
1538
|
+
'entryPrice': this.safeNumber(position, 'ep'),
|
|
1539
|
+
'unrealizedPnl': this.safeNumber(position, 'up'),
|
|
1540
|
+
'percentage': undefined,
|
|
1541
|
+
'contracts': this.parseNumber(contractsAbs),
|
|
1542
|
+
'contractSize': undefined,
|
|
1543
|
+
'markPrice': undefined,
|
|
1544
|
+
'side': positionSide,
|
|
1545
|
+
'hedged': hedged,
|
|
1546
|
+
'timestamp': undefined,
|
|
1547
|
+
'datetime': undefined,
|
|
1548
|
+
'maintenanceMargin': undefined,
|
|
1549
|
+
'maintenanceMarginPercentage': undefined,
|
|
1550
|
+
'collateral': undefined,
|
|
1551
|
+
'initialMargin': undefined,
|
|
1552
|
+
'initialMarginPercentage': undefined,
|
|
1553
|
+
'leverage': undefined,
|
|
1554
|
+
'marginRatio': undefined,
|
|
1555
|
+
});
|
|
1556
|
+
}
|
|
1557
|
+
/**
|
|
1558
|
+
* @method
|
|
1559
|
+
* @name aster#watchOrders
|
|
1560
|
+
* @description watches information on multiple orders made by the user
|
|
1561
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#payload-order-update
|
|
1562
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#event-order-update
|
|
1563
|
+
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
1564
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1565
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
1566
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1567
|
+
* @param {string} [params.type] 'spot' or 'swap', default is 'spot' if symbol is not provided
|
|
1568
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
|
|
1569
|
+
*/
|
|
1570
|
+
async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1571
|
+
await this.loadMarkets();
|
|
1572
|
+
let market = undefined;
|
|
1573
|
+
if (symbol !== undefined) {
|
|
1574
|
+
market = this.market(symbol);
|
|
1575
|
+
symbol = market['symbol'];
|
|
1576
|
+
}
|
|
1577
|
+
let messageHash = 'orders';
|
|
1578
|
+
let type = undefined;
|
|
1579
|
+
[type, params] = this.handleMarketTypeAndParams('watchOrders', market, params, type);
|
|
1580
|
+
await this.authenticate(type, params);
|
|
1581
|
+
if (market !== undefined) {
|
|
1582
|
+
messageHash += '::' + symbol;
|
|
1583
|
+
}
|
|
1584
|
+
const url = this.getPrivateUrl(type);
|
|
1585
|
+
const client = this.client(url);
|
|
1586
|
+
this.setBalanceCache(client, type);
|
|
1587
|
+
const orders = await this.watchMultiple(url, [messageHash], undefined, [type]);
|
|
1588
|
+
if (this.newUpdates) {
|
|
1589
|
+
limit = orders.getLimit(symbol, limit);
|
|
1590
|
+
}
|
|
1591
|
+
return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* @method
|
|
1595
|
+
* @name aster#watchMyTrades
|
|
1596
|
+
* @description watches information on multiple trades made by the user
|
|
1597
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api.md#payload-order-update
|
|
1598
|
+
* @see https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md#event-order-update
|
|
1599
|
+
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
1600
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1601
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
1602
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1603
|
+
* @param {string} [params.type] 'spot' or 'swap', default is 'spot' if symbol is not provided
|
|
1604
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=trade-structure}
|
|
1605
|
+
*/
|
|
1606
|
+
async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1607
|
+
await this.loadMarkets();
|
|
1608
|
+
let market = undefined;
|
|
1609
|
+
if (symbol !== undefined) {
|
|
1610
|
+
market = this.market(symbol);
|
|
1611
|
+
symbol = market['symbol'];
|
|
1612
|
+
}
|
|
1613
|
+
let messageHash = 'myTrades';
|
|
1614
|
+
let type = undefined;
|
|
1615
|
+
[type, params] = this.handleMarketTypeAndParams('watchOrders', market, params, type);
|
|
1616
|
+
await this.authenticate(type, params);
|
|
1617
|
+
if (market !== undefined) {
|
|
1618
|
+
messageHash += '::' + symbol;
|
|
1619
|
+
}
|
|
1620
|
+
const url = this.getPrivateUrl(type);
|
|
1621
|
+
const client = this.client(url);
|
|
1622
|
+
this.setBalanceCache(client, type);
|
|
1623
|
+
const trades = await this.watchMultiple(url, [messageHash], undefined, [type]);
|
|
1624
|
+
if (this.newUpdates) {
|
|
1625
|
+
limit = trades.getLimit(symbol, limit);
|
|
1626
|
+
}
|
|
1627
|
+
return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
|
|
1628
|
+
}
|
|
1629
|
+
handleOrderUpdate(client, message) {
|
|
1630
|
+
const rawOrder = this.safeDict(message, 'o', message);
|
|
1631
|
+
const e = this.safeString(message, 'e');
|
|
1632
|
+
if ((e === 'ORDER_TRADE_UPDATE') || (e === 'ALGO_UPDATE')) {
|
|
1633
|
+
message = this.safeDict(message, 'o', message);
|
|
1634
|
+
}
|
|
1635
|
+
this.handleOrder(client, rawOrder);
|
|
1636
|
+
this.handleMyTrade(client, message);
|
|
1637
|
+
}
|
|
1638
|
+
handleMyTrade(client, message) {
|
|
1639
|
+
const messageHash = 'myTrades';
|
|
1640
|
+
const executionType = this.safeString(message, 'x');
|
|
1641
|
+
if (executionType === 'TRADE') {
|
|
1642
|
+
const isSwap = client.url.indexOf('fstream') >= 0;
|
|
1643
|
+
const type = isSwap ? 'swap' : 'spot';
|
|
1644
|
+
const fakeMarket = this.safeMarketStructure({ 'type': type });
|
|
1645
|
+
const trade = this.parseWsTrade(message, fakeMarket);
|
|
1646
|
+
const orderId = this.safeString(trade, 'order');
|
|
1647
|
+
let tradeFee = this.safeDict(trade, 'fee', {});
|
|
1648
|
+
tradeFee = this.extend({}, tradeFee);
|
|
1649
|
+
const symbol = this.safeString(trade, 'symbol');
|
|
1650
|
+
if (orderId !== undefined && tradeFee !== undefined && symbol !== undefined) {
|
|
1651
|
+
const cachedOrders = this.orders;
|
|
1652
|
+
if (cachedOrders !== undefined) {
|
|
1653
|
+
const orders = this.safeValue(cachedOrders.hashmap, symbol, {});
|
|
1654
|
+
const order = this.safeValue(orders, orderId);
|
|
1655
|
+
if (order !== undefined) {
|
|
1656
|
+
// accumulate order fees
|
|
1657
|
+
const fees = this.safeValue(order, 'fees');
|
|
1658
|
+
const fee = this.safeValue(order, 'fee');
|
|
1659
|
+
if (!this.isEmpty(fees)) {
|
|
1660
|
+
let insertNewFeeCurrency = true;
|
|
1661
|
+
for (let i = 0; i < fees.length; i++) {
|
|
1662
|
+
const orderFee = fees[i];
|
|
1663
|
+
if (orderFee['currency'] === tradeFee['currency']) {
|
|
1664
|
+
const feeCost = this.sum(tradeFee['cost'], orderFee['cost']);
|
|
1665
|
+
order['fees'][i]['cost'] = parseFloat(this.currencyToPrecision(tradeFee['currency'], feeCost));
|
|
1666
|
+
insertNewFeeCurrency = false;
|
|
1667
|
+
break;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
if (insertNewFeeCurrency) {
|
|
1671
|
+
order['fees'].push(tradeFee);
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
else if (fee !== undefined) {
|
|
1675
|
+
if (fee['currency'] === tradeFee['currency']) {
|
|
1676
|
+
const feeCost = this.sum(fee['cost'], tradeFee['cost']);
|
|
1677
|
+
order['fee']['cost'] = parseFloat(this.currencyToPrecision(tradeFee['currency'], feeCost));
|
|
1678
|
+
}
|
|
1679
|
+
else if (fee['currency'] === undefined) {
|
|
1680
|
+
order['fee'] = tradeFee;
|
|
1681
|
+
}
|
|
1682
|
+
else {
|
|
1683
|
+
order['fees'] = [fee, tradeFee];
|
|
1684
|
+
order['fee'] = undefined;
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
else {
|
|
1688
|
+
order['fee'] = tradeFee;
|
|
1689
|
+
}
|
|
1690
|
+
// save this trade in the order
|
|
1691
|
+
const orderTrades = this.safeList(order, 'trades', []);
|
|
1692
|
+
orderTrades.push(trade);
|
|
1693
|
+
order['trades'] = orderTrades;
|
|
1694
|
+
// don't append twice cause it breaks newUpdates mode
|
|
1695
|
+
// this order already exists in the cache
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
if (this.myTrades === undefined) {
|
|
1700
|
+
const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
|
|
1701
|
+
this.myTrades = new ArrayCacheBySymbolById(limit);
|
|
1702
|
+
}
|
|
1703
|
+
const myTrades = this.myTrades;
|
|
1704
|
+
myTrades.append(trade);
|
|
1705
|
+
client.resolve(this.myTrades, messageHash);
|
|
1706
|
+
const messageHashSymbol = messageHash + ':' + symbol;
|
|
1707
|
+
client.resolve(this.myTrades, messageHashSymbol);
|
|
1708
|
+
}
|
|
1709
|
+
}
|
|
1710
|
+
handleOrder(client, message) {
|
|
1711
|
+
//
|
|
1712
|
+
// spot
|
|
1713
|
+
// {
|
|
1714
|
+
// "e": "executionReport", // Event type
|
|
1715
|
+
// "E": 1499405658658, // Event time
|
|
1716
|
+
// "s": "ETHBTC", // Symbol
|
|
1717
|
+
// "c": "mUvoqJxFIILMdfAW5iGSOW", // Client order ID
|
|
1718
|
+
// "S": "BUY", // Side
|
|
1719
|
+
// "o": "LIMIT", // Order type
|
|
1720
|
+
// "f": "GTC", // Time in force
|
|
1721
|
+
// "q": "1.00000000", // Order quantity
|
|
1722
|
+
// "p": "0.10264410", // Order price
|
|
1723
|
+
// "P": "0.00000000", // Stop price
|
|
1724
|
+
// "F": "0.00000000", // Iceberg quantity
|
|
1725
|
+
// "g": -1, // OrderListId
|
|
1726
|
+
// "C": null, // Original client order ID; This is the ID of the order being canceled
|
|
1727
|
+
// "x": "NEW", // Current execution type
|
|
1728
|
+
// "X": "NEW", // Current order status
|
|
1729
|
+
// "r": "NONE", // Order reject reason; will be an error code.
|
|
1730
|
+
// "i": 4293153, // Order ID
|
|
1731
|
+
// "l": "0.00000000", // Last executed quantity
|
|
1732
|
+
// "z": "0.00000000", // Cumulative filled quantity
|
|
1733
|
+
// "L": "0.00000000", // Last executed price
|
|
1734
|
+
// "n": "0", // Commission amount
|
|
1735
|
+
// "N": null, // Commission asset
|
|
1736
|
+
// "T": 1499405658657, // Transaction time
|
|
1737
|
+
// "t": -1, // Trade ID
|
|
1738
|
+
// "I": 8641984, // Ignore
|
|
1739
|
+
// "w": true, // Is the order on the book?
|
|
1740
|
+
// "m": false, // Is this trade the maker side?
|
|
1741
|
+
// "M": false, // Ignore
|
|
1742
|
+
// "O": 1499405658657, // Order creation time
|
|
1743
|
+
// "Z": "0.00000000", // Cumulative quote asset transacted quantity
|
|
1744
|
+
// "Y": "0.00000000" // Last quote asset transacted quantity (i.e. lastPrice * lastQty),
|
|
1745
|
+
// "Q": "0.00000000" // Quote Order Qty
|
|
1746
|
+
// }
|
|
1747
|
+
//
|
|
1748
|
+
// swap
|
|
1749
|
+
// {
|
|
1750
|
+
// "s":"BTCUSDT", // Symbol
|
|
1751
|
+
// "c":"TEST", // Client Order Id
|
|
1752
|
+
// // special client order id:
|
|
1753
|
+
// // starts with "autoclose-": liquidation order
|
|
1754
|
+
// // "adl_autoclose": ADL auto close order
|
|
1755
|
+
// "S":"SELL", // Side
|
|
1756
|
+
// "o":"TRAILING_STOP_MARKET", // Order Type
|
|
1757
|
+
// "f":"GTC", // Time in Force
|
|
1758
|
+
// "q":"0.001", // Original Quantity
|
|
1759
|
+
// "p":"0", // Original Price
|
|
1760
|
+
// "ap":"0", // Average Price
|
|
1761
|
+
// "sp":"7103.04", // Stop Price. Please ignore with TRAILING_STOP_MARKET order
|
|
1762
|
+
// "x":"NEW", // Execution Type
|
|
1763
|
+
// "X":"NEW", // Order Status
|
|
1764
|
+
// "i":8886774, // Order Id
|
|
1765
|
+
// "l":"0", // Order Last Filled Quantity
|
|
1766
|
+
// "z":"0", // Order Filled Accumulated Quantity
|
|
1767
|
+
// "L":"0", // Last Filled Price
|
|
1768
|
+
// "N":"USDT", // Commission Asset, will not push if no commission
|
|
1769
|
+
// "n":"0", // Commission, will not push if no commission
|
|
1770
|
+
// "T":1568879465651, // Order Trade Time
|
|
1771
|
+
// "t":0, // Trade Id
|
|
1772
|
+
// "b":"0", // Bids Notional
|
|
1773
|
+
// "a":"9.91", // Ask Notional
|
|
1774
|
+
// "m":false, // Is this trade the maker side?
|
|
1775
|
+
// "R":false, // Is this reduce only
|
|
1776
|
+
// "wt":"CONTRACT_PRICE", // Stop Price Working Type
|
|
1777
|
+
// "ot":"TRAILING_STOP_MARKET", // Original Order Type
|
|
1778
|
+
// "ps":"LONG", // Position Side
|
|
1779
|
+
// "cp":false, // If Close-All, pushed with conditional order
|
|
1780
|
+
// "AP":"7476.89", // Activation Price, only puhed with TRAILING_STOP_MARKET order
|
|
1781
|
+
// "cr":"5.0", // Callback Rate, only puhed with TRAILING_STOP_MARKET order
|
|
1782
|
+
// "rp":"0" // Realized Profit of the trade
|
|
1783
|
+
// }
|
|
1784
|
+
//
|
|
1785
|
+
const messageHash = 'orders';
|
|
1786
|
+
const messageHashes = this.findMessageHashes(client, messageHash);
|
|
1787
|
+
if (!this.isEmpty(messageHashes)) {
|
|
1788
|
+
const market = this.getMarketFromOrder(client, message);
|
|
1789
|
+
if (this.orders === undefined) {
|
|
1790
|
+
const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
|
|
1791
|
+
this.orders = new ArrayCacheBySymbolById(limit);
|
|
1792
|
+
}
|
|
1793
|
+
const cache = this.orders;
|
|
1794
|
+
const parsed = this.parseWsOrder(message, market);
|
|
1795
|
+
const symbol = market['symbol'];
|
|
1796
|
+
const symbolMessageHash = messageHash + '::' + symbol;
|
|
1797
|
+
cache.append(parsed);
|
|
1798
|
+
client.resolve(cache, symbolMessageHash);
|
|
1799
|
+
client.resolve(cache, messageHash);
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
parseWsOrder(order, market = undefined) {
|
|
1803
|
+
const executionType = this.safeString(order, 'x');
|
|
1804
|
+
const marketId = this.safeString(order, 's');
|
|
1805
|
+
market = this.safeMarket(marketId, market);
|
|
1806
|
+
let timestamp = this.safeInteger(order, 'O');
|
|
1807
|
+
const T = this.safeInteger(order, 'T');
|
|
1808
|
+
let lastTradeTimestamp = undefined;
|
|
1809
|
+
if (executionType === 'NEW' || executionType === 'AMENDMENT' || executionType === 'CANCELED') {
|
|
1810
|
+
if (timestamp === undefined) {
|
|
1811
|
+
timestamp = T;
|
|
1812
|
+
}
|
|
1813
|
+
}
|
|
1814
|
+
else if (executionType === 'TRADE') {
|
|
1815
|
+
lastTradeTimestamp = T;
|
|
1816
|
+
}
|
|
1817
|
+
const lastUpdateTimestamp = T;
|
|
1818
|
+
let fee = undefined;
|
|
1819
|
+
const feeCost = this.safeString(order, 'n');
|
|
1820
|
+
if ((feeCost !== undefined) && (Precise.stringGt(feeCost, '0'))) {
|
|
1821
|
+
const feeCurrencyId = this.safeString(order, 'N');
|
|
1822
|
+
const feeCurrency = this.safeCurrencyCode(feeCurrencyId);
|
|
1823
|
+
fee = {
|
|
1824
|
+
'cost': feeCost,
|
|
1825
|
+
'currency': feeCurrency,
|
|
1826
|
+
};
|
|
1827
|
+
}
|
|
1828
|
+
const rawStatus = this.safeString(order, 'X');
|
|
1829
|
+
const status = this.parseOrderStatus(rawStatus);
|
|
1830
|
+
let clientOrderId = this.safeString2(order, 'C', 'caid');
|
|
1831
|
+
if ((clientOrderId === undefined) || (clientOrderId.length === 0)) {
|
|
1832
|
+
clientOrderId = this.safeString(order, 'c');
|
|
1833
|
+
}
|
|
1834
|
+
const stopPrice = this.safeStringN(order, ['P', 'sp', 'tp']);
|
|
1835
|
+
let timeInForce = this.safeString(order, 'f');
|
|
1836
|
+
if (timeInForce === 'GTX') {
|
|
1837
|
+
// GTX means "Good Till Crossing" and is an equivalent way of saying Post Only
|
|
1838
|
+
timeInForce = 'PO';
|
|
1839
|
+
}
|
|
1840
|
+
return this.safeOrder({
|
|
1841
|
+
'info': order,
|
|
1842
|
+
'symbol': market['symbol'],
|
|
1843
|
+
'id': this.safeString2(order, 'i', 'aid'),
|
|
1844
|
+
'clientOrderId': clientOrderId,
|
|
1845
|
+
'timestamp': timestamp,
|
|
1846
|
+
'datetime': this.iso8601(timestamp),
|
|
1847
|
+
'lastTradeTimestamp': lastTradeTimestamp,
|
|
1848
|
+
'lastUpdateTimestamp': lastUpdateTimestamp,
|
|
1849
|
+
'type': this.parseOrderType(this.safeStringLower(order, 'o')),
|
|
1850
|
+
'timeInForce': timeInForce,
|
|
1851
|
+
'postOnly': undefined,
|
|
1852
|
+
'reduceOnly': this.safeBool(order, 'R'),
|
|
1853
|
+
'side': this.safeStringLower(order, 'S'),
|
|
1854
|
+
'price': this.safeString(order, 'p'),
|
|
1855
|
+
'stopPrice': stopPrice,
|
|
1856
|
+
'triggerPrice': stopPrice,
|
|
1857
|
+
'amount': this.safeString(order, 'q'),
|
|
1858
|
+
'cost': this.safeString(order, 'Z'),
|
|
1859
|
+
'average': this.safeString(order, 'ap'),
|
|
1860
|
+
'filled': this.safeString(order, 'z'),
|
|
1861
|
+
'remaining': undefined,
|
|
1862
|
+
'status': status,
|
|
1863
|
+
'fee': fee,
|
|
1864
|
+
'trades': undefined,
|
|
1865
|
+
});
|
|
1866
|
+
}
|
|
1867
|
+
getMarketFromOrder(client, order) {
|
|
1868
|
+
const marketId = this.safeString(order, 's');
|
|
1869
|
+
const subscriptions = client.subscriptions;
|
|
1870
|
+
const subscriptionsKeys = Object.keys(subscriptions);
|
|
1871
|
+
const marketType = this.getAccountTypeFromSubscriptions(subscriptionsKeys);
|
|
1872
|
+
return this.safeMarket(marketId, undefined, undefined, marketType);
|
|
1873
|
+
}
|
|
1022
1874
|
handleMessage(client, message) {
|
|
1023
1875
|
const stream = this.safeString(message, 'stream');
|
|
1024
1876
|
if (stream !== undefined) {
|
|
@@ -1041,5 +1893,19 @@ export default class aster extends asterRest {
|
|
|
1041
1893
|
method.call(this, client, message);
|
|
1042
1894
|
}
|
|
1043
1895
|
}
|
|
1896
|
+
else {
|
|
1897
|
+
// private messages
|
|
1898
|
+
const event = this.safeString(message, 'e');
|
|
1899
|
+
if (event === 'outboundAccountPosition') {
|
|
1900
|
+
this.handleBalance(client, message);
|
|
1901
|
+
}
|
|
1902
|
+
else if (event === 'ACCOUNT_UPDATE') {
|
|
1903
|
+
this.handleBalance(client, message);
|
|
1904
|
+
this.handlePositions(client, message);
|
|
1905
|
+
}
|
|
1906
|
+
else if ((event === 'ORDER_TRADE_UPDATE') || (event === 'executionReport')) {
|
|
1907
|
+
this.handleOrderUpdate(client, message);
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1044
1910
|
}
|
|
1045
1911
|
}
|