ccxt 4.4.95 → 4.4.97
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 +18 -18
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/alpaca.js +1 -1
- package/dist/cjs/src/abstract/apex.js +1 -1
- package/dist/cjs/src/abstract/ascendex.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/btcalpha.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/bybit.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/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/ellipx.js +1 -1
- package/dist/cjs/src/abstract/exmo.js +1 -1
- package/dist/cjs/src/abstract/foxbit.js +9 -0
- 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/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/oceanex.js +1 -1
- package/dist/cjs/src/abstract/okcoin.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/tradeogre.js +1 -1
- package/dist/cjs/src/abstract/upbit.js +1 -1
- package/dist/cjs/src/abstract/vertex.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/zonda.js +1 -1
- package/dist/cjs/src/alpaca.js +1 -1
- package/dist/cjs/src/apex.js +3 -3
- package/dist/cjs/src/ascendex.js +4 -4
- package/dist/cjs/src/base/Exchange.js +69 -17
- package/dist/cjs/src/base/Precise.js +6 -0
- package/dist/cjs/src/base/errors.js +6 -0
- package/dist/cjs/src/base/functions/crypto.js +1 -1
- package/dist/cjs/src/base/functions/encode.js +1 -1
- package/dist/cjs/src/base/functions/misc.js +1 -0
- package/dist/cjs/src/base/functions/number.js +36 -9
- package/dist/cjs/src/base/functions/platform.js +6 -0
- package/dist/cjs/src/base/functions/rsa.js +1 -0
- package/dist/cjs/src/base/functions/string.js +6 -0
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/base/functions/time.js +6 -0
- package/dist/cjs/src/base/functions/totp.js +1 -0
- package/dist/cjs/src/base/functions/type.js +6 -0
- package/dist/cjs/src/base/functions.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +6 -0
- package/dist/cjs/src/base/ws/Client.js +1 -0
- package/dist/cjs/src/base/ws/Future.js +1 -1
- package/dist/cjs/src/base/ws/OrderBook.js +1 -1
- package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
- package/dist/cjs/src/base/ws/WsClient.js +1 -1
- package/dist/cjs/src/bequant.js +1 -1
- package/dist/cjs/src/bigone.js +1 -1
- package/dist/cjs/src/binance.js +96 -35
- package/dist/cjs/src/binancecoinm.js +6 -2
- package/dist/cjs/src/binanceus.js +4 -2
- package/dist/cjs/src/binanceusdm.js +4 -2
- package/dist/cjs/src/bingx.js +2 -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 +1 -1
- package/dist/cjs/src/bitflyer.js +1 -1
- package/dist/cjs/src/bitget.js +32 -144
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +3 -3
- package/dist/cjs/src/bitmex.js +1 -1
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +16 -9
- package/dist/cjs/src/bitso.js +1 -1
- package/dist/cjs/src/bitstamp.js +1 -1
- package/dist/cjs/src/bitteam.js +1 -1
- package/dist/cjs/src/bittrade.js +1 -1
- package/dist/cjs/src/blockchaincom.js +1 -1
- package/dist/cjs/src/blofin.js +1 -1
- package/dist/cjs/src/btcalpha.js +1 -1
- 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/bybit.js +17 -6
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/coinbaseexchange.js +4 -2
- package/dist/cjs/src/coincatch.js +1 -1
- package/dist/cjs/src/coincheck.js +1 -1
- package/dist/cjs/src/coinex.js +1 -1
- package/dist/cjs/src/coinmate.js +1 -1
- package/dist/cjs/src/coinmetro.js +1 -1
- package/dist/cjs/src/coinone.js +1 -1
- package/dist/cjs/src/coinsph.js +1 -0
- package/dist/cjs/src/coinspot.js +37 -2
- package/dist/cjs/src/cryptocom.js +79 -3
- package/dist/cjs/src/cryptomus.js +42 -2
- package/dist/cjs/src/defx.js +2 -2
- package/dist/cjs/src/delta.js +1 -1
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/derive.js +2 -2
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/ellipx.js +41 -1
- package/dist/cjs/src/exmo.js +2 -2
- package/dist/cjs/src/fmfwio.js +1 -1
- package/dist/cjs/src/foxbit.js +2016 -0
- package/dist/cjs/src/gate.js +2 -3
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hashkey.js +40 -1
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/hollaex.js +1 -1
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +45 -30
- package/dist/cjs/src/independentreserve.js +36 -1
- package/dist/cjs/src/indodax.js +35 -1
- package/dist/cjs/src/kraken.js +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +4 -3
- package/dist/cjs/src/kucoinfutures.js +4 -3
- package/dist/cjs/src/latoken.js +43 -1
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/luno.js +37 -1
- package/dist/cjs/src/mercado.js +35 -1
- package/dist/cjs/src/mexc.js +32 -39
- package/dist/cjs/src/modetrade.js +4 -4
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +1 -1
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okcoin.js +2 -2
- package/dist/cjs/src/okx.js +13 -4
- package/dist/cjs/src/okxus.js +1 -1
- package/dist/cjs/src/onetrading.js +2 -2
- package/dist/cjs/src/oxfun.js +3 -2
- package/dist/cjs/src/p2b.js +1 -1
- package/dist/cjs/src/paradex.js +3 -3
- package/dist/cjs/src/paymium.js +1 -1
- package/dist/cjs/src/phemex.js +36 -31
- package/dist/cjs/src/poloniex.js +1 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/apex.js +1 -1
- package/dist/cjs/src/pro/ascendex.js +1 -1
- package/dist/cjs/src/pro/bequant.js +1 -1
- package/dist/cjs/src/pro/binancecoinm.js +4 -2
- package/dist/cjs/src/pro/binanceus.js +4 -2
- package/dist/cjs/src/pro/binanceusdm.js +4 -2
- 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 +1 -1
- 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/bybit.js +34 -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/defx.js +1 -1
- package/dist/cjs/src/pro/deribit.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 +1 -0
- 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/okcoin.js +1 -1
- package/dist/cjs/src/pro/okx.js +1 -1
- package/dist/cjs/src/pro/okxus.js +1 -1
- package/dist/cjs/src/pro/onetrading.js +1 -1
- package/dist/cjs/src/pro/oxfun.js +1 -1
- package/dist/cjs/src/pro/p2b.js +1 -1
- package/dist/cjs/src/pro/paradex.js +1 -1
- package/dist/cjs/src/pro/phemex.js +1 -1
- package/dist/cjs/src/pro/poloniex.js +1 -1
- package/dist/cjs/src/pro/probit.js +1 -1
- package/dist/cjs/src/pro/tradeogre.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/static_dependencies/ethers/abi-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
- package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
- package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
- package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
- package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
- package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
- package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +6 -0
- package/dist/cjs/src/timex.js +1 -0
- package/dist/cjs/src/tokocrypto.js +1 -1
- package/dist/cjs/src/tradeogre.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/vertex.js +4 -3
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +1 -1
- package/dist/cjs/src/woo.js +9 -4
- package/dist/cjs/src/woofipro.js +3 -3
- package/dist/cjs/src/xt.js +1 -1
- package/dist/cjs/src/yobit.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zonda.js +1 -1
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -2
- package/js/src/abstract/binance.d.ts +3 -0
- package/js/src/abstract/binancecoinm.d.ts +3 -0
- package/js/src/abstract/binanceus.d.ts +3 -0
- package/js/src/abstract/binanceusdm.d.ts +3 -0
- package/js/src/abstract/foxbit.d.ts +29 -0
- package/js/src/abstract/foxbit.js +5 -0
- package/js/src/abstract/phemex.d.ts +1 -0
- package/js/src/apex.d.ts +2 -2
- package/js/src/apex.js +2 -2
- package/js/src/ascendex.d.ts +1 -1
- package/js/src/ascendex.js +3 -3
- package/js/src/base/Exchange.d.ts +20 -11
- package/js/src/base/Exchange.js +69 -17
- package/js/src/base/functions/number.js +30 -9
- package/js/src/binance.d.ts +1 -0
- package/js/src/binance.js +95 -34
- package/js/src/binancecoinm.js +5 -1
- package/js/src/binanceus.js +3 -1
- package/js/src/binanceusdm.js +3 -1
- package/js/src/bingx.js +1 -1
- package/js/src/bitget.js +31 -143
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +2 -2
- package/js/src/bitrue.js +15 -8
- package/js/src/bittrade.d.ts +1 -1
- package/js/src/blofin.d.ts +1 -1
- package/js/src/bybit.d.ts +1 -1
- package/js/src/bybit.js +16 -5
- package/js/src/coinbaseexchange.d.ts +3 -3
- package/js/src/coinbaseexchange.js +4 -2
- package/js/src/coinbaseinternational.d.ts +2 -2
- package/js/src/coinspot.d.ts +1 -1
- package/js/src/coinspot.js +36 -1
- package/js/src/cryptocom.d.ts +13 -2
- package/js/src/cryptocom.js +78 -2
- package/js/src/cryptomus.d.ts +1 -1
- package/js/src/cryptomus.js +41 -1
- package/js/src/defx.d.ts +2 -2
- package/js/src/defx.js +1 -1
- package/js/src/derive.d.ts +2 -2
- package/js/src/derive.js +1 -1
- package/js/src/digifinex.d.ts +1 -1
- package/js/src/ellipx.js +40 -0
- package/js/src/exmo.js +1 -1
- package/js/src/foxbit.d.ts +352 -0
- package/js/src/foxbit.js +2010 -0
- package/js/src/gate.js +1 -2
- package/js/src/hashkey.js +39 -0
- package/js/src/htx.d.ts +2 -2
- package/js/src/hyperliquid.d.ts +2 -2
- package/js/src/hyperliquid.js +44 -29
- package/js/src/independentreserve.js +35 -0
- package/js/src/indodax.js +34 -0
- package/js/src/krakenfutures.d.ts +1 -1
- package/js/src/kucoin.d.ts +1 -1
- package/js/src/kucoin.js +3 -2
- package/js/src/kucoinfutures.d.ts +3 -3
- package/js/src/kucoinfutures.js +3 -2
- package/js/src/latoken.js +42 -0
- package/js/src/luno.js +36 -0
- package/js/src/mercado.js +34 -0
- package/js/src/mexc.d.ts +1 -2
- package/js/src/mexc.js +31 -38
- package/js/src/modetrade.d.ts +2 -4
- package/js/src/modetrade.js +3 -3
- package/js/src/ndax.d.ts +1 -1
- package/js/src/okcoin.d.ts +1 -1
- package/js/src/okcoin.js +1 -1
- package/js/src/okx.d.ts +1 -1
- package/js/src/okx.js +12 -3
- package/js/src/onetrading.d.ts +1 -1
- package/js/src/onetrading.js +1 -1
- package/js/src/oxfun.d.ts +1 -1
- package/js/src/oxfun.js +2 -1
- package/js/src/paradex.d.ts +1 -1
- package/js/src/paradex.js +2 -2
- package/js/src/phemex.js +36 -31
- package/js/src/pro/binancecoinm.js +3 -1
- package/js/src/pro/binanceus.js +3 -1
- package/js/src/pro/binanceusdm.js +3 -1
- package/js/src/pro/bybit.d.ts +11 -1
- package/js/src/pro/bybit.js +33 -0
- package/js/src/static_dependencies/fflake/browser.d.ts +5 -5
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +1 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
- package/js/src/timex.d.ts +1 -1
- package/js/src/vertex.d.ts +2 -2
- package/js/src/vertex.js +3 -2
- package/js/src/woo.d.ts +1 -1
- package/js/src/woo.js +8 -3
- package/js/src/woofipro.d.ts +2 -4
- package/js/src/woofipro.js +2 -2
- package/package.json +1 -2
package/js/src/base/Exchange.js
CHANGED
|
@@ -44,6 +44,7 @@ export default class Exchange {
|
|
|
44
44
|
'chrome100': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36',
|
|
45
45
|
};
|
|
46
46
|
this.headers = {};
|
|
47
|
+
this.returnResponseHeaders = false;
|
|
47
48
|
this.origin = '*'; // CORS origin
|
|
48
49
|
this.MAX_VALUE = Number.MAX_VALUE;
|
|
49
50
|
//
|
|
@@ -702,6 +703,9 @@ export default class Exchange {
|
|
|
702
703
|
if (!skipFurtherErrorHandling) {
|
|
703
704
|
this.handleHttpStatusCode(response.status, response.statusText, url, method, responseBody);
|
|
704
705
|
}
|
|
706
|
+
if (json && !Array.isArray(json) && this.returnResponseHeaders) {
|
|
707
|
+
json['responseHeaders'] = responseHeaders;
|
|
708
|
+
}
|
|
705
709
|
return json || responseBody;
|
|
706
710
|
});
|
|
707
711
|
}
|
|
@@ -1556,6 +1560,17 @@ export default class Exchange {
|
|
|
1556
1560
|
'watchLiquidations': undefined,
|
|
1557
1561
|
'watchLiquidationsForSymbols': undefined,
|
|
1558
1562
|
'watchMyLiquidations': undefined,
|
|
1563
|
+
'unWatchOrders': undefined,
|
|
1564
|
+
'unWatchTrades': undefined,
|
|
1565
|
+
'unWatchTradesForSymbols': undefined,
|
|
1566
|
+
'unWatchOHLCVForSymbols': undefined,
|
|
1567
|
+
'unWatchOrderBookForSymbols': undefined,
|
|
1568
|
+
'unWatchPositions': undefined,
|
|
1569
|
+
'unWatchOrderBook': undefined,
|
|
1570
|
+
'unWatchTickers': undefined,
|
|
1571
|
+
'unWatchMyTrades': undefined,
|
|
1572
|
+
'unWatchTicker': undefined,
|
|
1573
|
+
'unWatchOHLCV': undefined,
|
|
1559
1574
|
'watchMyLiquidationsForSymbols': undefined,
|
|
1560
1575
|
'withdraw': undefined,
|
|
1561
1576
|
'ws': undefined,
|
|
@@ -2117,6 +2132,9 @@ export default class Exchange {
|
|
|
2117
2132
|
async unWatchOrderBookForSymbols(symbols, params = {}) {
|
|
2118
2133
|
throw new NotSupported(this.id + ' unWatchOrderBookForSymbols() is not supported yet');
|
|
2119
2134
|
}
|
|
2135
|
+
async unWatchPositions(symbols = undefined, params = {}) {
|
|
2136
|
+
throw new NotSupported(this.id + ' unWatchPositions() is not supported yet');
|
|
2137
|
+
}
|
|
2120
2138
|
async fetchDepositAddresses(codes = undefined, params = {}) {
|
|
2121
2139
|
throw new NotSupported(this.id + ' fetchDepositAddresses() is not supported yet');
|
|
2122
2140
|
}
|
|
@@ -3233,19 +3251,7 @@ export default class Exchange {
|
|
|
3233
3251
|
const symbol = (market !== undefined) ? market['symbol'] : undefined;
|
|
3234
3252
|
return this.filterBySymbolSinceLimit(results, symbol, since, limit);
|
|
3235
3253
|
}
|
|
3236
|
-
|
|
3237
|
-
/**
|
|
3238
|
-
* @method
|
|
3239
|
-
* @description calculates the presumptive fee that would be charged for an order
|
|
3240
|
-
* @param {string} symbol unified market symbol
|
|
3241
|
-
* @param {string} type 'market' or 'limit'
|
|
3242
|
-
* @param {string} side 'buy' or 'sell'
|
|
3243
|
-
* @param {float} amount how much you want to trade, in units of the base currency on most exchanges, or number of contracts
|
|
3244
|
-
* @param {float} price the price for the order to be filled at, in units of the quote currency
|
|
3245
|
-
* @param {string} takerOrMaker 'taker' or 'maker'
|
|
3246
|
-
* @param {object} params
|
|
3247
|
-
* @returns {object} contains the rate, the percentage multiplied to the order amount to obtain the fee amount, and cost, the total value of the fee in units of the quote currency, for the order
|
|
3248
|
-
*/
|
|
3254
|
+
calculateFeeWithRate(symbol, type, side, amount, price, takerOrMaker = 'taker', feeRate = undefined, params = {}) {
|
|
3249
3255
|
if (type === 'market' && takerOrMaker === 'maker') {
|
|
3250
3256
|
throw new ArgumentsRequired(this.id + ' calculateFee() - you have provided incompatible arguments - "market" type order can not be "maker". Change either the "type" or the "takerOrMaker" argument to calculate the fee.');
|
|
3251
3257
|
}
|
|
@@ -3282,7 +3288,7 @@ export default class Exchange {
|
|
|
3282
3288
|
if (type === 'market') {
|
|
3283
3289
|
takerOrMaker = 'taker';
|
|
3284
3290
|
}
|
|
3285
|
-
const rate = this.safeString(market, takerOrMaker);
|
|
3291
|
+
const rate = (feeRate !== undefined) ? this.numberToString(feeRate) : this.safeString(market, takerOrMaker);
|
|
3286
3292
|
cost = Precise.stringMul(cost, rate);
|
|
3287
3293
|
return {
|
|
3288
3294
|
'type': takerOrMaker,
|
|
@@ -3291,6 +3297,21 @@ export default class Exchange {
|
|
|
3291
3297
|
'cost': this.parseNumber(cost),
|
|
3292
3298
|
};
|
|
3293
3299
|
}
|
|
3300
|
+
calculateFee(symbol, type, side, amount, price, takerOrMaker = 'taker', params = {}) {
|
|
3301
|
+
/**
|
|
3302
|
+
* @method
|
|
3303
|
+
* @description calculates the presumptive fee that would be charged for an order
|
|
3304
|
+
* @param {string} symbol unified market symbol
|
|
3305
|
+
* @param {string} type 'market' or 'limit'
|
|
3306
|
+
* @param {string} side 'buy' or 'sell'
|
|
3307
|
+
* @param {float} amount how much you want to trade, in units of the base currency on most exchanges, or number of contracts
|
|
3308
|
+
* @param {float} price the price for the order to be filled at, in units of the quote currency
|
|
3309
|
+
* @param {string} takerOrMaker 'taker' or 'maker'
|
|
3310
|
+
* @param {object} params
|
|
3311
|
+
* @returns {object} contains the rate, the percentage multiplied to the order amount to obtain the fee amount, and cost, the total value of the fee in units of the quote currency, for the order
|
|
3312
|
+
*/
|
|
3313
|
+
return this.calculateFeeWithRate(symbol, type, side, amount, price, takerOrMaker, undefined, params);
|
|
3314
|
+
}
|
|
3294
3315
|
safeLiquidation(liquidation, market = undefined) {
|
|
3295
3316
|
const contracts = this.safeString(liquidation, 'contracts');
|
|
3296
3317
|
const contractSize = this.safeString(market, 'contractSize');
|
|
@@ -3335,6 +3356,26 @@ export default class Exchange {
|
|
|
3335
3356
|
trade['cost'] = this.parseNumber(cost);
|
|
3336
3357
|
return trade;
|
|
3337
3358
|
}
|
|
3359
|
+
createCcxtTradeId(timestamp = undefined, side = undefined, amount = undefined, price = undefined, takerOrMaker = undefined) {
|
|
3360
|
+
// this approach is being used by multiple exchanges (mexc, woo, coinsbit, dydx, ...)
|
|
3361
|
+
let id = undefined;
|
|
3362
|
+
if (timestamp !== undefined) {
|
|
3363
|
+
id = this.numberToString(timestamp);
|
|
3364
|
+
if (side !== undefined) {
|
|
3365
|
+
id += '-' + side;
|
|
3366
|
+
}
|
|
3367
|
+
if (amount !== undefined) {
|
|
3368
|
+
id += '-' + this.numberToString(amount);
|
|
3369
|
+
}
|
|
3370
|
+
if (price !== undefined) {
|
|
3371
|
+
id += '-' + this.numberToString(price);
|
|
3372
|
+
}
|
|
3373
|
+
if (takerOrMaker !== undefined) {
|
|
3374
|
+
id += '-' + takerOrMaker;
|
|
3375
|
+
}
|
|
3376
|
+
}
|
|
3377
|
+
return id;
|
|
3378
|
+
}
|
|
3338
3379
|
parsedFeeAndFees(container) {
|
|
3339
3380
|
let fee = this.safeDict(container, 'fee');
|
|
3340
3381
|
let fees = this.safeList(container, 'fees');
|
|
@@ -5492,10 +5533,10 @@ export default class Exchange {
|
|
|
5492
5533
|
*/
|
|
5493
5534
|
throw new NotSupported(this.id + ' fetchDepositsWithdrawals() is not supported yet');
|
|
5494
5535
|
}
|
|
5495
|
-
async fetchDeposits(
|
|
5536
|
+
async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
5496
5537
|
throw new NotSupported(this.id + ' fetchDeposits() is not supported yet');
|
|
5497
5538
|
}
|
|
5498
|
-
async fetchWithdrawals(
|
|
5539
|
+
async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
5499
5540
|
throw new NotSupported(this.id + ' fetchWithdrawals() is not supported yet');
|
|
5500
5541
|
}
|
|
5501
5542
|
async fetchDepositsWs(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -6579,7 +6620,7 @@ export default class Exchange {
|
|
|
6579
6620
|
let calls = 0;
|
|
6580
6621
|
let result = [];
|
|
6581
6622
|
let errors = 0;
|
|
6582
|
-
const until = this.
|
|
6623
|
+
const until = this.safeIntegerN(params, ['until', 'untill', 'till']); // do not omit it from params here
|
|
6583
6624
|
[maxEntriesPerRequest, params] = this.handleMaxEntriesPerRequestAndParams(method, maxEntriesPerRequest, params);
|
|
6584
6625
|
if ((paginationDirection === 'forward')) {
|
|
6585
6626
|
if (since === undefined) {
|
|
@@ -7273,6 +7314,17 @@ export default class Exchange {
|
|
|
7273
7314
|
else if (topic === 'orders' && (this.orders !== undefined)) {
|
|
7274
7315
|
this.orders = undefined;
|
|
7275
7316
|
}
|
|
7317
|
+
else if (topic === 'positions' && (this.positions !== undefined)) {
|
|
7318
|
+
this.positions = undefined;
|
|
7319
|
+
const clients = Object.values(this.clients);
|
|
7320
|
+
for (let i = 0; i < clients.length; i++) {
|
|
7321
|
+
const client = clients[i];
|
|
7322
|
+
const futures = this.safeDict(client, 'futures');
|
|
7323
|
+
if ((futures !== undefined) && ('fetchPositionsSnapshot' in futures)) {
|
|
7324
|
+
delete futures['fetchPositionsSnapshot'];
|
|
7325
|
+
}
|
|
7326
|
+
}
|
|
7327
|
+
}
|
|
7276
7328
|
else if (topic === 'ticker' && (this.tickers !== undefined)) {
|
|
7277
7329
|
const tickerSymbols = Object.keys(this.tickers);
|
|
7278
7330
|
for (let i = 0; i < tickerSymbols.length; i++) {
|
|
@@ -30,6 +30,8 @@ const precisionConstants = {
|
|
|
30
30
|
NO_PADDING,
|
|
31
31
|
PAD_WITH_ZERO,
|
|
32
32
|
};
|
|
33
|
+
const assert = (x, y) => { if (!x)
|
|
34
|
+
throw new Error(y || 'assertion failed'); };
|
|
33
35
|
/* ------------------------------------------------------------------------ */
|
|
34
36
|
// See https://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript for discussion
|
|
35
37
|
function numberToString(x) {
|
|
@@ -95,14 +97,21 @@ const decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
|
|
|
95
97
|
return _decimalToPrecision(x, roundingMode, numPrecisionDigits, countingMode, paddingMode);
|
|
96
98
|
};
|
|
97
99
|
const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode = DECIMAL_PLACES, paddingMode = NO_PADDING) => {
|
|
100
|
+
assert(numPrecisionDigits !== undefined, 'numPrecisionDigits should not be undefined');
|
|
101
|
+
if (typeof numPrecisionDigits === 'string') {
|
|
102
|
+
numPrecisionDigits = parseFloat(numPrecisionDigits);
|
|
103
|
+
}
|
|
104
|
+
assert(Number.isFinite(numPrecisionDigits), 'numPrecisionDigits has an invalid number');
|
|
98
105
|
if (countingMode === TICK_SIZE) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
throw new Error('TICK_SIZE cant be used with negative or zero numPrecisionDigits');
|
|
104
|
-
}
|
|
106
|
+
assert(numPrecisionDigits > 0, 'negative or zero numPrecisionDigits can not be used with TICK_SIZE precisionMode');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
assert(Number.isInteger(numPrecisionDigits), 'numPrecisionDigits must be an integer with DECIMAL_PLACES or SIGNIFICANT_DIGITS precisionMode');
|
|
105
110
|
}
|
|
111
|
+
assert((roundingMode === ROUND) || (roundingMode === TRUNCATE), 'invalid roundingMode provided');
|
|
112
|
+
assert(countingMode === DECIMAL_PLACES || countingMode === SIGNIFICANT_DIGITS || countingMode === TICK_SIZE, 'invalid countingMode provided');
|
|
113
|
+
assert(paddingMode === NO_PADDING || paddingMode === PAD_WITH_ZERO, 'invalid paddingMode provided');
|
|
114
|
+
// end of checks
|
|
106
115
|
if (numPrecisionDigits < 0) {
|
|
107
116
|
const toNearest = Math.pow(10, -numPrecisionDigits);
|
|
108
117
|
if (roundingMode === ROUND) {
|
|
@@ -116,6 +125,21 @@ const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
|
|
|
116
125
|
if (countingMode === TICK_SIZE) {
|
|
117
126
|
const precisionDigitsString = _decimalToPrecision(numPrecisionDigits, ROUND, 22, DECIMAL_PLACES, NO_PADDING);
|
|
118
127
|
const newNumPrecisionDigits = precisionFromString(precisionDigitsString);
|
|
128
|
+
if (roundingMode === TRUNCATE) {
|
|
129
|
+
// First, truncate the string to avoid floating-point precision issues
|
|
130
|
+
const xStr = numberToString(x);
|
|
131
|
+
const truncatedX = truncate_to_string(xStr, Math.max(0, newNumPrecisionDigits));
|
|
132
|
+
const xNum = Number(truncatedX);
|
|
133
|
+
const scale = Math.pow(10, newNumPrecisionDigits);
|
|
134
|
+
const xScaled = Math.round(xNum * scale);
|
|
135
|
+
const tickScaled = Math.round(numPrecisionDigits * scale);
|
|
136
|
+
const ticks = Math.trunc(xScaled / tickScaled);
|
|
137
|
+
x = (ticks * tickScaled) / scale;
|
|
138
|
+
if (paddingMode === NO_PADDING) {
|
|
139
|
+
return String(Number(x.toFixed(newNumPrecisionDigits)));
|
|
140
|
+
}
|
|
141
|
+
return _decimalToPrecision(x, ROUND, newNumPrecisionDigits, DECIMAL_PLACES, paddingMode);
|
|
142
|
+
}
|
|
119
143
|
let missing = x % numPrecisionDigits;
|
|
120
144
|
// See: https://github.com/ccxt/ccxt/pull/6486
|
|
121
145
|
missing = Number(_decimalToPrecision(missing, ROUND, 8, DECIMAL_PLACES, NO_PADDING));
|
|
@@ -139,9 +163,6 @@ const _decimalToPrecision = (x, roundingMode, numPrecisionDigits, countingMode =
|
|
|
139
163
|
}
|
|
140
164
|
}
|
|
141
165
|
}
|
|
142
|
-
else if (roundingMode === TRUNCATE) {
|
|
143
|
-
x = x - missing;
|
|
144
|
-
}
|
|
145
166
|
}
|
|
146
167
|
return _decimalToPrecision(x, ROUND, newNumPrecisionDigits, DECIMAL_PLACES, paddingMode);
|
|
147
168
|
}
|
package/js/src/binance.d.ts
CHANGED
|
@@ -169,6 +169,7 @@ export default class binance extends Exchange {
|
|
|
169
169
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
170
170
|
*/
|
|
171
171
|
fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
|
|
172
|
+
parseTickersForRolling(response: any, symbols: any): any;
|
|
172
173
|
/**
|
|
173
174
|
* @method
|
|
174
175
|
* @name binance#fetchMarkPrice
|
package/js/src/binance.js
CHANGED
|
@@ -479,6 +479,7 @@ export default class binance extends Exchange {
|
|
|
479
479
|
'portfolio/balance': 2,
|
|
480
480
|
'portfolio/negative-balance-exchange-record': 2,
|
|
481
481
|
'portfolio/pmloan-history': 5,
|
|
482
|
+
'portfolio/earn-asset-balance': 150,
|
|
482
483
|
// staking
|
|
483
484
|
'staking/productList': 0.1,
|
|
484
485
|
'staking/position': 0.1,
|
|
@@ -637,6 +638,7 @@ export default class binance extends Exchange {
|
|
|
637
638
|
'portfolio/repay-futures-negative-balance': 150,
|
|
638
639
|
'portfolio/mint': 20,
|
|
639
640
|
'portfolio/redeem': 20,
|
|
641
|
+
'portfolio/earn-asset-transfer': 150,
|
|
640
642
|
'lending/auto-invest/plan/add': 0.1,
|
|
641
643
|
'lending/auto-invest/plan/edit': 0.1,
|
|
642
644
|
'lending/auto-invest/plan/edit-status': 0.1,
|
|
@@ -825,6 +827,7 @@ export default class binance extends Exchange {
|
|
|
825
827
|
'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 },
|
|
826
828
|
'lvtKlines': 1,
|
|
827
829
|
'convert/exchangeInfo': 4,
|
|
830
|
+
'insuranceBalance': 1,
|
|
828
831
|
},
|
|
829
832
|
},
|
|
830
833
|
'fapiData': {
|
|
@@ -1262,12 +1265,14 @@ export default class binance extends Exchange {
|
|
|
1262
1265
|
'options': {
|
|
1263
1266
|
'sandboxMode': false,
|
|
1264
1267
|
'fetchMargins': true,
|
|
1265
|
-
'fetchMarkets':
|
|
1266
|
-
'
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1268
|
+
'fetchMarkets': {
|
|
1269
|
+
'types': [
|
|
1270
|
+
'spot',
|
|
1271
|
+
'linear',
|
|
1272
|
+
'inverse', // allows CORS in browsers
|
|
1273
|
+
// 'option', // does not allow CORS, enable outside of the browser only
|
|
1274
|
+
],
|
|
1275
|
+
},
|
|
1271
1276
|
'loadAllOptions': false,
|
|
1272
1277
|
'fetchCurrencies': true,
|
|
1273
1278
|
// 'fetchTradesMethod': 'publicGetAggTrades', // publicGetTrades, publicGetHistoricalTrades, eapiPublicGetTrades
|
|
@@ -3034,7 +3039,16 @@ export default class binance extends Exchange {
|
|
|
3034
3039
|
*/
|
|
3035
3040
|
async fetchMarkets(params = {}) {
|
|
3036
3041
|
const promisesRaw = [];
|
|
3037
|
-
|
|
3042
|
+
let rawFetchMarkets = undefined;
|
|
3043
|
+
const defaultTypes = ['spot', 'linear', 'inverse'];
|
|
3044
|
+
const fetchMarketsOptions = this.safeDict(this.options, 'fetchMarkets');
|
|
3045
|
+
if (fetchMarketsOptions !== undefined) {
|
|
3046
|
+
rawFetchMarkets = this.safeList(fetchMarketsOptions, 'types', defaultTypes);
|
|
3047
|
+
}
|
|
3048
|
+
else {
|
|
3049
|
+
// for backward-compatibility
|
|
3050
|
+
rawFetchMarkets = this.safeList(this.options, 'fetchMarkets', defaultTypes);
|
|
3051
|
+
}
|
|
3038
3052
|
// handle loadAllOptions option
|
|
3039
3053
|
const loadAllOptions = this.safeBool(this.options, 'loadAllOptions', false);
|
|
3040
3054
|
if (loadAllOptions) {
|
|
@@ -4004,29 +4018,52 @@ export default class binance extends Exchange {
|
|
|
4004
4018
|
// "time": 1597370495002
|
|
4005
4019
|
// }
|
|
4006
4020
|
//
|
|
4007
|
-
//
|
|
4008
|
-
//
|
|
4009
|
-
//
|
|
4010
|
-
//
|
|
4011
|
-
//
|
|
4012
|
-
//
|
|
4013
|
-
//
|
|
4014
|
-
//
|
|
4015
|
-
//
|
|
4016
|
-
//
|
|
4017
|
-
//
|
|
4018
|
-
//
|
|
4019
|
-
//
|
|
4020
|
-
//
|
|
4021
|
-
//
|
|
4022
|
-
//
|
|
4023
|
-
//
|
|
4024
|
-
//
|
|
4025
|
-
//
|
|
4026
|
-
//
|
|
4027
|
-
//
|
|
4028
|
-
//
|
|
4029
|
-
//
|
|
4021
|
+
// spot - ticker
|
|
4022
|
+
//
|
|
4023
|
+
// {
|
|
4024
|
+
// "symbol": "BTCUSDT",
|
|
4025
|
+
// "priceChange": "-188.18000000",
|
|
4026
|
+
// "priceChangePercent": "-0.159",
|
|
4027
|
+
// "weightedAvgPrice": "118356.64734074",
|
|
4028
|
+
// "lastPrice": "118449.03000000",
|
|
4029
|
+
// "prevClosePrice": "118637.22000000", // field absent in rolling ticker
|
|
4030
|
+
// "lastQty": "0.00731000", // field absent in rolling ticker
|
|
4031
|
+
// "bidPrice": "118449.02000000", // field absent in rolling ticker
|
|
4032
|
+
// "bidQty": "7.15931000", // field absent in rolling ticker
|
|
4033
|
+
// "askPrice": "118449.03000000", // field absent in rolling ticker
|
|
4034
|
+
// "askQty": "0.09592000", // field absent in rolling ticker
|
|
4035
|
+
// "openPrice": "118637.21000000",
|
|
4036
|
+
// "highPrice": "119273.36000000",
|
|
4037
|
+
// "lowPrice": "117427.50000000",
|
|
4038
|
+
// "volume": "14741.41491000",
|
|
4039
|
+
// "quoteVolume": "1744744445.80640740",
|
|
4040
|
+
// "openTime": "1753701474013",
|
|
4041
|
+
// "closeTime": "1753787874013",
|
|
4042
|
+
// "firstId": "5116031635",
|
|
4043
|
+
// "lastId": "5117964946",
|
|
4044
|
+
// "count": "1933312"
|
|
4045
|
+
// }
|
|
4046
|
+
//
|
|
4047
|
+
// usdm tickers
|
|
4048
|
+
//
|
|
4049
|
+
// {
|
|
4050
|
+
// "symbol": "SUSDT",
|
|
4051
|
+
// "priceChange": "-0.0229000",
|
|
4052
|
+
// "priceChangePercent": "-6.777",
|
|
4053
|
+
// "weightedAvgPrice": "0.3210035",
|
|
4054
|
+
// "lastPrice": "0.3150000",
|
|
4055
|
+
// "lastQty": "16",
|
|
4056
|
+
// "openPrice": "0.3379000",
|
|
4057
|
+
// "highPrice": "0.3411000",
|
|
4058
|
+
// "lowPrice": "0.3071000",
|
|
4059
|
+
// "volume": "120588225",
|
|
4060
|
+
// "quoteVolume": "38709237.2289000",
|
|
4061
|
+
// "openTime": "1753701720000",
|
|
4062
|
+
// "closeTime": "1753788172414",
|
|
4063
|
+
// "firstId": "72234973",
|
|
4064
|
+
// "lastId": "72423677",
|
|
4065
|
+
// "count": "188700"
|
|
4066
|
+
// }
|
|
4030
4067
|
//
|
|
4031
4068
|
// coinm
|
|
4032
4069
|
//
|
|
@@ -4399,11 +4436,24 @@ export default class binance extends Exchange {
|
|
|
4399
4436
|
response = await this.dapiPublicGetTicker24hr(params);
|
|
4400
4437
|
}
|
|
4401
4438
|
else if (type === 'spot') {
|
|
4402
|
-
const
|
|
4403
|
-
|
|
4404
|
-
|
|
4439
|
+
const rolling = this.safeBool(params, 'rolling', false);
|
|
4440
|
+
params = this.omit(params, 'rolling');
|
|
4441
|
+
if (rolling) {
|
|
4442
|
+
symbols = this.marketSymbols(symbols);
|
|
4443
|
+
const request = {
|
|
4444
|
+
'symbols': this.json(this.marketIds(symbols)),
|
|
4445
|
+
};
|
|
4446
|
+
response = await this.publicGetTicker(this.extend(request, params));
|
|
4447
|
+
// parseTicker is not able to handle marketType for spot-rolling ticker fields, so we need custom parsing
|
|
4448
|
+
return this.parseTickersForRolling(response, symbols);
|
|
4449
|
+
}
|
|
4450
|
+
else {
|
|
4451
|
+
const request = {};
|
|
4452
|
+
if (symbols !== undefined) {
|
|
4453
|
+
request['symbols'] = this.json(this.marketIds(symbols));
|
|
4454
|
+
}
|
|
4455
|
+
response = await this.publicGetTicker24hr(this.extend(request, params));
|
|
4405
4456
|
}
|
|
4406
|
-
response = await this.publicGetTicker24hr(this.extend(request, params));
|
|
4407
4457
|
}
|
|
4408
4458
|
else if (type === 'option') {
|
|
4409
4459
|
response = await this.eapiPublicGetTicker(params);
|
|
@@ -4413,6 +4463,17 @@ export default class binance extends Exchange {
|
|
|
4413
4463
|
}
|
|
4414
4464
|
return this.parseTickers(response, symbols);
|
|
4415
4465
|
}
|
|
4466
|
+
parseTickersForRolling(response, symbols) {
|
|
4467
|
+
const results = [];
|
|
4468
|
+
for (let i = 0; i < response.length; i++) {
|
|
4469
|
+
const marketId = this.safeString(response[i], 'symbol');
|
|
4470
|
+
const tickerMarket = this.safeMarket(marketId, undefined, undefined, 'spot');
|
|
4471
|
+
const parsedTicker = this.parseTicker(response[i]);
|
|
4472
|
+
parsedTicker['symbol'] = tickerMarket['symbol'];
|
|
4473
|
+
results.push(parsedTicker);
|
|
4474
|
+
}
|
|
4475
|
+
return this.filterByArray(results, 'symbol', symbols);
|
|
4476
|
+
}
|
|
4416
4477
|
/**
|
|
4417
4478
|
* @method
|
|
4418
4479
|
* @name binance#fetchMarkPrice
|
package/js/src/binancecoinm.js
CHANGED
|
@@ -24,7 +24,11 @@ export default class binancecoinm extends binance {
|
|
|
24
24
|
'createStopMarketOrder': true,
|
|
25
25
|
},
|
|
26
26
|
'options': {
|
|
27
|
-
'fetchMarkets':
|
|
27
|
+
'fetchMarkets': {
|
|
28
|
+
'types': [
|
|
29
|
+
'inverse',
|
|
30
|
+
],
|
|
31
|
+
},
|
|
28
32
|
'defaultSubType': 'inverse',
|
|
29
33
|
'leverageBrackets': undefined,
|
|
30
34
|
},
|
package/js/src/binanceus.js
CHANGED
package/js/src/binanceusdm.js
CHANGED
|
@@ -25,7 +25,9 @@ export default class binanceusdm extends binance {
|
|
|
25
25
|
'createStopMarketOrder': true,
|
|
26
26
|
},
|
|
27
27
|
'options': {
|
|
28
|
-
'fetchMarkets':
|
|
28
|
+
'fetchMarkets': {
|
|
29
|
+
'types': ['linear'],
|
|
30
|
+
},
|
|
29
31
|
'defaultSubType': 'linear',
|
|
30
32
|
// https://www.binance.com/en/support/faq/360033162192
|
|
31
33
|
// tier amount, maintenance margin, initial margin,
|
package/js/src/bingx.js
CHANGED
|
@@ -5298,7 +5298,7 @@ export default class bingx extends Exchange {
|
|
|
5298
5298
|
const id = this.safeString(transaction, 'id', dataId);
|
|
5299
5299
|
const address = this.safeString(transaction, 'address');
|
|
5300
5300
|
const tag = this.safeString(transaction, 'addressTag');
|
|
5301
|
-
let timestamp = this.
|
|
5301
|
+
let timestamp = this.safeInteger2(transaction, 'insertTime', 'timestamp');
|
|
5302
5302
|
let datetime = this.iso8601(timestamp);
|
|
5303
5303
|
if (timestamp === undefined) {
|
|
5304
5304
|
datetime = this.safeString(transaction, 'applyTime');
|