ccxt 4.4.93 → 4.4.95
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 +3 -3
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.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/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/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 +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/base/Exchange.js +53 -24
- 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 +3 -3
- 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 +1 -1
- 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 +149 -95
- 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 +2 -2
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +1 -1
- package/dist/cjs/src/bitmex.js +1 -1
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +1 -1
- package/dist/cjs/src/bitso.js +1 -1
- package/dist/cjs/src/bitstamp.js +2 -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 +8 -2
- 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 +4 -4
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbase.js +39 -1
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- 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 +35 -1
- package/dist/cjs/src/coinmetro.js +17 -4
- package/dist/cjs/src/coinone.js +35 -1
- package/dist/cjs/src/coinsph.js +29 -1
- package/dist/cjs/src/coinspot.js +1 -1
- package/dist/cjs/src/cryptocom.js +1 -1
- package/dist/cjs/src/cryptomus.js +1 -1
- package/dist/cjs/src/defx.js +1 -1
- package/dist/cjs/src/delta.js +1 -1
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/derive.js +1 -1
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/ellipx.js +1 -1
- package/dist/cjs/src/exmo.js +1 -1
- package/dist/cjs/src/fmfwio.js +1 -1
- package/dist/cjs/src/gate.js +2 -2
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hashkey.js +1 -1
- package/dist/cjs/src/hitbtc.js +0 -1
- package/dist/cjs/src/hollaex.js +1 -1
- package/dist/cjs/src/htx.js +8 -2
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +135 -34
- package/dist/cjs/src/independentreserve.js +1 -1
- package/dist/cjs/src/indodax.js +1 -1
- package/dist/cjs/src/kraken.js +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +1 -1
- package/dist/cjs/src/kucoinfutures.js +1 -1
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/luno.js +1 -1
- package/dist/cjs/src/mercado.js +1 -1
- package/dist/cjs/src/mexc.js +1 -1
- package/dist/cjs/src/modetrade.js +1 -1
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +1 -1
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okcoin.js +1 -1
- package/dist/cjs/src/okx.js +14 -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/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 +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 +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 +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/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 +7 -7
- package/dist/cjs/src/pro/independentreserve.js +1 -1
- package/dist/cjs/src/pro/kraken.js +19 -19
- 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 +11 -11
- 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 +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/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/scure-base/index.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/tradeogre.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/vertex.js +1 -1
- package/dist/cjs/src/wavesexchange.js +16 -3
- package/dist/cjs/src/whitebit.js +1 -1
- package/dist/cjs/src/woo.js +1279 -897
- package/dist/cjs/src/woofipro.js +1 -1
- package/dist/cjs/src/xt.js +1 -1
- package/dist/cjs/src/yobit.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zonda.js +1 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -7
- package/js/src/abstract/alpaca.js +0 -6
- package/js/src/abstract/apex.js +0 -6
- package/js/src/abstract/ascendex.js +0 -6
- package/js/src/abstract/bequant.js +0 -6
- package/js/src/abstract/bigone.js +0 -6
- package/js/src/abstract/binance.js +0 -6
- package/js/src/abstract/binancecoinm.js +0 -6
- package/js/src/abstract/binanceus.js +0 -6
- package/js/src/abstract/binanceusdm.js +0 -6
- package/js/src/abstract/bingx.d.ts +3 -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/btcalpha.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/bybit.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.js +0 -6
- package/js/src/abstract/cryptomus.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/ellipx.js +0 -6
- package/js/src/abstract/exmo.js +0 -6
- package/js/src/abstract/fmfwio.js +0 -6
- package/js/src/abstract/gate.js +0 -6
- 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/hitbtc.js +0 -6
- package/js/src/abstract/hollaex.js +0 -6
- package/js/src/abstract/htx.js +0 -6
- 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.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/oceanex.js +0 -6
- package/js/src/abstract/okcoin.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/tradeogre.js +0 -6
- package/js/src/abstract/upbit.js +0 -6
- package/js/src/abstract/vertex.js +0 -6
- package/js/src/abstract/wavesexchange.js +0 -6
- package/js/src/abstract/whitebit.js +0 -6
- package/js/src/abstract/woo.d.ts +58 -3
- 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/zonda.js +0 -6
- package/js/src/alpaca.js +0 -6
- package/js/src/apex.js +0 -6
- package/js/src/ascendex.js +0 -6
- package/js/src/base/Exchange.js +53 -30
- 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 +2 -8
- 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.js +0 -6
- 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 +6 -6
- package/js/src/bingx.js +148 -100
- 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.js +0 -6
- package/js/src/bitflyer.js +0 -6
- package/js/src/bitget.js +1 -7
- package/js/src/bithumb.js +0 -6
- package/js/src/bitmart.js +0 -6
- package/js/src/bitmex.js +0 -6
- package/js/src/bitopro.js +0 -6
- package/js/src/bitrue.js +0 -6
- package/js/src/bitso.js +0 -6
- package/js/src/bitstamp.js +2 -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 -0
- package/js/src/blofin.js +7 -7
- package/js/src/btcalpha.js +0 -6
- package/js/src/btcbox.js +0 -6
- package/js/src/btcmarkets.js +0 -6
- package/js/src/btcturk.js +0 -6
- package/js/src/bybit.js +3 -9
- package/js/src/cex.js +0 -6
- package/js/src/coinbase.js +40 -8
- package/js/src/coinbaseadvanced.js +0 -6
- package/js/src/coinbaseexchange.js +0 -6
- package/js/src/coinbaseinternational.js +0 -6
- package/js/src/coincatch.js +0 -6
- package/js/src/coincheck.js +0 -6
- package/js/src/coinex.js +0 -6
- package/js/src/coinmate.js +34 -6
- package/js/src/coinmetro.js +16 -9
- package/js/src/coinone.js +34 -6
- package/js/src/coinsph.js +29 -6
- package/js/src/coinspot.js +0 -6
- package/js/src/cryptocom.js +0 -6
- package/js/src/cryptomus.js +0 -6
- package/js/src/defx.js +0 -6
- package/js/src/delta.js +0 -6
- package/js/src/deribit.js +0 -6
- package/js/src/derive.js +0 -6
- package/js/src/digifinex.js +0 -6
- package/js/src/ellipx.js +0 -6
- package/js/src/exmo.js +0 -6
- package/js/src/fmfwio.js +0 -6
- package/js/src/gate.js +1 -7
- package/js/src/gateio.js +0 -6
- package/js/src/gemini.js +0 -6
- package/js/src/hashkey.js +0 -6
- package/js/src/hitbtc.js +0 -6
- package/js/src/hollaex.js +0 -6
- package/js/src/htx.js +7 -7
- package/js/src/huobi.js +0 -6
- package/js/src/hyperliquid.d.ts +31 -0
- package/js/src/hyperliquid.js +134 -39
- package/js/src/independentreserve.js +0 -6
- package/js/src/indodax.js +0 -6
- package/js/src/kraken.js +0 -6
- package/js/src/krakenfutures.js +0 -6
- package/js/src/kucoin.js +0 -6
- package/js/src/kucoinfutures.js +0 -6
- package/js/src/latoken.js +0 -6
- package/js/src/lbank.js +0 -6
- package/js/src/luno.js +0 -6
- package/js/src/mercado.js +0 -6
- package/js/src/mexc.js +0 -6
- package/js/src/modetrade.js +0 -6
- package/js/src/myokx.js +0 -6
- package/js/src/ndax.js +0 -6
- package/js/src/novadax.js +0 -6
- package/js/src/oceanex.js +0 -6
- package/js/src/okcoin.js +0 -6
- package/js/src/okx.js +13 -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.js +0 -6
- package/js/src/poloniex.js +0 -6
- package/js/src/pro/alpaca.js +0 -6
- package/js/src/pro/apex.js +0 -6
- package/js/src/pro/ascendex.js +0 -6
- 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 +0 -6
- 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/bybit.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/defx.js +0 -6
- package/js/src/pro/deribit.js +0 -6
- package/js/src/pro/derive.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 +6 -12
- package/js/src/pro/independentreserve.js +0 -6
- package/js/src/pro/kraken.js +18 -24
- 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 +10 -16
- 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/okcoin.js +0 -6
- package/js/src/pro/okx.js +0 -6
- 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.js +0 -6
- 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/tradeogre.js +0 -6
- package/js/src/pro/upbit.js +0 -6
- package/js/src/pro/vertex.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/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.cjs +0 -6
- package/js/src/static_dependencies/qs/index.cjs +0 -6
- package/js/src/static_dependencies/qs/parse.cjs +0 -6
- package/js/src/static_dependencies/qs/stringify.cjs +0 -6
- package/js/src/static_dependencies/qs/utils.cjs +0 -6
- package/js/src/static_dependencies/scure-base/index.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/tradeogre.js +0 -6
- package/js/src/upbit.js +0 -6
- package/js/src/vertex.js +0 -6
- package/js/src/wavesexchange.js +15 -8
- package/js/src/whitebit.js +0 -6
- package/js/src/woo.d.ts +79 -49
- package/js/src/woo.js +1279 -903
- package/js/src/woofipro.js +0 -6
- package/js/src/xt.js +0 -6
- package/js/src/yobit.js +0 -6
- package/js/src/zaif.js +0 -6
- package/js/src/zonda.js +0 -6
- package/package.json +7 -7
package/dist/cjs/src/woo.js
CHANGED
|
@@ -6,7 +6,7 @@ var Precise = require('./base/Precise.js');
|
|
|
6
6
|
var number = require('./base/functions/number.js');
|
|
7
7
|
var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
|
|
8
8
|
|
|
9
|
-
//
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
11
|
/**
|
|
12
12
|
* @class woo
|
|
@@ -102,7 +102,7 @@ class woo extends woo$1 {
|
|
|
102
102
|
'fetchTickers': false,
|
|
103
103
|
'fetchTime': true,
|
|
104
104
|
'fetchTrades': true,
|
|
105
|
-
'fetchTradingFee':
|
|
105
|
+
'fetchTradingFee': true,
|
|
106
106
|
'fetchTradingFees': true,
|
|
107
107
|
'fetchTransactions': 'emulated',
|
|
108
108
|
'fetchTransfers': true,
|
|
@@ -238,19 +238,56 @@ class woo extends woo$1 {
|
|
|
238
238
|
'v3': {
|
|
239
239
|
'public': {
|
|
240
240
|
'get': {
|
|
241
|
-
'
|
|
241
|
+
'systemInfo': 1,
|
|
242
|
+
'instruments': 1,
|
|
243
|
+
'token': 1,
|
|
244
|
+
'tokenNetwork': 1,
|
|
245
|
+
'tokenInfo': 1,
|
|
246
|
+
'marketTrades': 1,
|
|
247
|
+
'marketTradesHistory': 1,
|
|
248
|
+
'orderbook': 1,
|
|
249
|
+
'kline': 1,
|
|
250
|
+
'klineHistory': 1,
|
|
251
|
+
'futures': 1,
|
|
252
|
+
'fundingRate': 1,
|
|
253
|
+
'fundingRateHistory': 1,
|
|
254
|
+
'insuranceFund': 1, // 10/1s
|
|
242
255
|
},
|
|
243
256
|
},
|
|
244
257
|
'private': {
|
|
245
258
|
'get': {
|
|
259
|
+
'trade/order': 2,
|
|
260
|
+
'trade/orders': 1,
|
|
261
|
+
'trade/algoOrder': 1,
|
|
262
|
+
'trade/algoOrders': 1,
|
|
263
|
+
'trade/transaction': 1,
|
|
264
|
+
'trade/transactionHistory': 5,
|
|
265
|
+
'trade/tradingFee': 5,
|
|
266
|
+
'account/info': 60,
|
|
267
|
+
'account/tokenConfig': 1,
|
|
268
|
+
'account/symbolConfig': 1,
|
|
269
|
+
'account/subAccounts/all': 60,
|
|
270
|
+
'account/referral/summary': 60,
|
|
271
|
+
'account/referral/rewardHistory': 60,
|
|
272
|
+
'account/credentials': 60,
|
|
273
|
+
'asset/balances': 1,
|
|
274
|
+
'asset/token/history': 60,
|
|
275
|
+
'asset/transfer/history': 30,
|
|
276
|
+
'asset/wallet/history': 60,
|
|
277
|
+
'asset/wallet/deposit': 60,
|
|
278
|
+
'asset/staking/yieldHistory': 60,
|
|
279
|
+
'futures/positions': 3.33,
|
|
280
|
+
'futures/leverage': 60,
|
|
281
|
+
'futures/defaultMarginMode': 60,
|
|
282
|
+
'futures/fundingFee/history': 30,
|
|
283
|
+
'spotMargin/interestRate': 60,
|
|
284
|
+
'spotMargin/interestHistory': 60,
|
|
285
|
+
'spotMargin/maxMargin': 60,
|
|
246
286
|
'algo/order/{oid}': 1,
|
|
247
287
|
'algo/orders': 1,
|
|
248
288
|
'balances': 1,
|
|
249
|
-
'accountinfo': 60,
|
|
250
289
|
'positions': 3.33,
|
|
251
290
|
'buypower': 1,
|
|
252
|
-
'referrals': 60,
|
|
253
|
-
'referral_rewards': 60,
|
|
254
291
|
'convert/exchangeInfo': 1,
|
|
255
292
|
'convert/assetInfo': 1,
|
|
256
293
|
'convert/rfq': 60,
|
|
@@ -258,16 +295,34 @@ class woo extends woo$1 {
|
|
|
258
295
|
'convert/trades': 1,
|
|
259
296
|
},
|
|
260
297
|
'post': {
|
|
298
|
+
'trade/order': 2,
|
|
299
|
+
'trade/algoOrder': 5,
|
|
300
|
+
'trade/cancelAllAfter': 1,
|
|
301
|
+
'account/tradingMode': 120,
|
|
302
|
+
'account/listenKey': 20,
|
|
303
|
+
'asset/transfer': 30,
|
|
304
|
+
'asset/wallet/withdraw': 60,
|
|
305
|
+
'spotMargin/leverage': 120,
|
|
306
|
+
'spotMargin/interestRepay': 60,
|
|
261
307
|
'algo/order': 5,
|
|
262
308
|
'convert/rft': 60,
|
|
263
309
|
},
|
|
264
310
|
'put': {
|
|
311
|
+
'trade/order': 2,
|
|
312
|
+
'trade/algoOrder': 2,
|
|
313
|
+
'futures/leverage': 60,
|
|
314
|
+
'futures/positionMode': 120,
|
|
265
315
|
'order/{oid}': 2,
|
|
266
316
|
'order/client/{client_order_id}': 2,
|
|
267
317
|
'algo/order/{oid}': 2,
|
|
268
318
|
'algo/order/client/{client_order_id}': 2,
|
|
269
319
|
},
|
|
270
320
|
'delete': {
|
|
321
|
+
'trade/order': 1,
|
|
322
|
+
'trade/orders': 1,
|
|
323
|
+
'trade/algoOrder': 1,
|
|
324
|
+
'trade/algoOrders': 1,
|
|
325
|
+
'trade/allOrders': 1,
|
|
271
326
|
'algo/order/{order_id}': 1,
|
|
272
327
|
'algo/orders/pending': 1,
|
|
273
328
|
'algo/orders/pending/{symbol}': 1,
|
|
@@ -446,20 +501,21 @@ class woo extends woo$1 {
|
|
|
446
501
|
* @method
|
|
447
502
|
* @name woo#fetchStatus
|
|
448
503
|
* @description the latest known information on the availability of the exchange API
|
|
449
|
-
* @see https://
|
|
504
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/systemInfo
|
|
450
505
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
451
506
|
* @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
|
|
452
507
|
*/
|
|
453
508
|
async fetchStatus(params = {}) {
|
|
454
|
-
const response = await this.
|
|
509
|
+
const response = await this.v3PublicGetSystemInfo(params);
|
|
455
510
|
//
|
|
456
511
|
// {
|
|
457
512
|
// "success": true,
|
|
458
513
|
// "data": {
|
|
459
|
-
// "status":
|
|
460
|
-
// "msg": "System is functioning properly."
|
|
514
|
+
// "status": 0,
|
|
515
|
+
// "msg": "System is functioning properly.",
|
|
516
|
+
// "estimatedEndTime": 1749963600362
|
|
461
517
|
// },
|
|
462
|
-
// "timestamp":
|
|
518
|
+
// "timestamp": 1751442989564
|
|
463
519
|
// }
|
|
464
520
|
//
|
|
465
521
|
const data = this.safeDict(response, 'data', {});
|
|
@@ -485,20 +541,21 @@ class woo extends woo$1 {
|
|
|
485
541
|
* @method
|
|
486
542
|
* @name woo#fetchTime
|
|
487
543
|
* @description fetches the current integer timestamp in milliseconds from the exchange server
|
|
488
|
-
* @see https://
|
|
544
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/systemInfo
|
|
489
545
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
490
546
|
* @returns {int} the current integer timestamp in milliseconds from the exchange server
|
|
491
547
|
*/
|
|
492
548
|
async fetchTime(params = {}) {
|
|
493
|
-
const response = await this.
|
|
549
|
+
const response = await this.v3PublicGetSystemInfo(params);
|
|
494
550
|
//
|
|
495
551
|
// {
|
|
496
552
|
// "success": true,
|
|
497
553
|
// "data": {
|
|
498
|
-
// "status":
|
|
499
|
-
// "msg": "System is functioning properly."
|
|
554
|
+
// "status": 0,
|
|
555
|
+
// "msg": "System is functioning properly.",
|
|
556
|
+
// "estimatedEndTime": 1749963600362
|
|
500
557
|
// },
|
|
501
|
-
// "timestamp":
|
|
558
|
+
// "timestamp": 1751442989564
|
|
502
559
|
// }
|
|
503
560
|
//
|
|
504
561
|
return this.safeInteger(response, 'timestamp');
|
|
@@ -507,7 +564,7 @@ class woo extends woo$1 {
|
|
|
507
564
|
* @method
|
|
508
565
|
* @name woo#fetchMarkets
|
|
509
566
|
* @description retrieves data on all markets for woo
|
|
510
|
-
* @see https://
|
|
567
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/instruments
|
|
511
568
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
512
569
|
* @returns {object[]} an array of objects representing market data
|
|
513
570
|
*/
|
|
@@ -515,30 +572,42 @@ class woo extends woo$1 {
|
|
|
515
572
|
if (this.options['adjustForTimeDifference']) {
|
|
516
573
|
await this.loadTimeDifference();
|
|
517
574
|
}
|
|
518
|
-
const response = await this.
|
|
575
|
+
const response = await this.v3PublicGetInstruments(params);
|
|
519
576
|
//
|
|
520
|
-
//
|
|
521
|
-
//
|
|
522
|
-
// {
|
|
523
|
-
// "
|
|
524
|
-
//
|
|
525
|
-
//
|
|
526
|
-
//
|
|
527
|
-
//
|
|
528
|
-
//
|
|
529
|
-
//
|
|
530
|
-
//
|
|
531
|
-
//
|
|
532
|
-
//
|
|
533
|
-
//
|
|
534
|
-
//
|
|
577
|
+
// {
|
|
578
|
+
// "success": true,
|
|
579
|
+
// "data": {
|
|
580
|
+
// "rows": [
|
|
581
|
+
// {
|
|
582
|
+
// "symbol": "SPOT_AAVE_USDT",
|
|
583
|
+
// "status": "TRADING",
|
|
584
|
+
// "baseAsset": "AAVE",
|
|
585
|
+
// "baseAssetMultiplier": 1,
|
|
586
|
+
// "quoteAsset": "USDT",
|
|
587
|
+
// "quoteMin": "0",
|
|
588
|
+
// "quoteMax": "100000",
|
|
589
|
+
// "quoteTick": "0.01",
|
|
590
|
+
// "baseMin": "0.005",
|
|
591
|
+
// "baseMax": "5000",
|
|
592
|
+
// "baseTick": "0.0001",
|
|
593
|
+
// "minNotional": "1",
|
|
594
|
+
// "bidCapRatio": "1.1",
|
|
595
|
+
// "bidFloorRatio": null,
|
|
596
|
+
// "askCapRatio": null,
|
|
597
|
+
// "askFloorRatio": "0.9",
|
|
598
|
+
// "orderMode": "NORMAL",
|
|
599
|
+
// "impactNotional": null,
|
|
600
|
+
// "isAllowedRpi": false,
|
|
601
|
+
// "tickGranularity": null
|
|
602
|
+
// }
|
|
603
|
+
// ]
|
|
535
604
|
// },
|
|
536
|
-
//
|
|
537
|
-
//
|
|
538
|
-
// }
|
|
605
|
+
// "timestamp": 1751512951338
|
|
606
|
+
// }
|
|
539
607
|
//
|
|
540
|
-
const data = this.
|
|
541
|
-
|
|
608
|
+
const data = this.safeDict(response, 'data', {});
|
|
609
|
+
const rows = this.safeList(data, 'rows', []);
|
|
610
|
+
return this.parseMarkets(rows);
|
|
542
611
|
}
|
|
543
612
|
parseMarket(market) {
|
|
544
613
|
const marketId = this.safeString(market, 'symbol');
|
|
@@ -576,7 +645,7 @@ class woo extends woo$1 {
|
|
|
576
645
|
linear = true;
|
|
577
646
|
inverse = false;
|
|
578
647
|
}
|
|
579
|
-
const active = this.safeString(market, '
|
|
648
|
+
const active = this.safeString(market, 'status') === 'TRADING';
|
|
580
649
|
return {
|
|
581
650
|
'id': marketId,
|
|
582
651
|
'symbol': symbol,
|
|
@@ -602,8 +671,8 @@ class woo extends woo$1 {
|
|
|
602
671
|
'strike': undefined,
|
|
603
672
|
'optionType': undefined,
|
|
604
673
|
'precision': {
|
|
605
|
-
'amount': this.safeNumber(market, '
|
|
606
|
-
'price': this.safeNumber(market, '
|
|
674
|
+
'amount': this.safeNumber(market, 'baseTick'),
|
|
675
|
+
'price': this.safeNumber(market, 'quoteTick'),
|
|
607
676
|
},
|
|
608
677
|
'limits': {
|
|
609
678
|
'leverage': {
|
|
@@ -611,19 +680,19 @@ class woo extends woo$1 {
|
|
|
611
680
|
'max': undefined,
|
|
612
681
|
},
|
|
613
682
|
'amount': {
|
|
614
|
-
'min': this.safeNumber(market, '
|
|
615
|
-
'max': this.safeNumber(market, '
|
|
683
|
+
'min': this.safeNumber(market, 'baseMin'),
|
|
684
|
+
'max': this.safeNumber(market, 'baseMax'),
|
|
616
685
|
},
|
|
617
686
|
'price': {
|
|
618
|
-
'min': this.safeNumber(market, '
|
|
619
|
-
'max': this.safeNumber(market, '
|
|
687
|
+
'min': this.safeNumber(market, 'quoteMin'),
|
|
688
|
+
'max': this.safeNumber(market, 'quoteMax'),
|
|
620
689
|
},
|
|
621
690
|
'cost': {
|
|
622
|
-
'min': this.safeNumber(market, '
|
|
691
|
+
'min': this.safeNumber(market, 'minNotional'),
|
|
623
692
|
'max': undefined,
|
|
624
693
|
},
|
|
625
694
|
},
|
|
626
|
-
'created':
|
|
695
|
+
'created': null,
|
|
627
696
|
'info': market,
|
|
628
697
|
};
|
|
629
698
|
}
|
|
@@ -631,7 +700,7 @@ class woo extends woo$1 {
|
|
|
631
700
|
* @method
|
|
632
701
|
* @name woo#fetchTrades
|
|
633
702
|
* @description get the list of most recent trades for a particular symbol
|
|
634
|
-
* @see https://
|
|
703
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/marketTrades
|
|
635
704
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
636
705
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
637
706
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
@@ -647,38 +716,28 @@ class woo extends woo$1 {
|
|
|
647
716
|
if (limit !== undefined) {
|
|
648
717
|
request['limit'] = limit;
|
|
649
718
|
}
|
|
650
|
-
const response = await this.
|
|
719
|
+
const response = await this.v3PublicGetMarketTrades(this.extend(request, params));
|
|
651
720
|
//
|
|
652
|
-
//
|
|
653
|
-
//
|
|
654
|
-
//
|
|
655
|
-
//
|
|
656
|
-
//
|
|
657
|
-
//
|
|
658
|
-
//
|
|
659
|
-
//
|
|
660
|
-
//
|
|
661
|
-
//
|
|
662
|
-
//
|
|
663
|
-
//
|
|
664
|
-
//
|
|
665
|
-
// "executed_price": 46222.35,
|
|
666
|
-
// "executed_quantity": 0.0012,
|
|
667
|
-
// "executed_timestamp": "1641241162.329"
|
|
668
|
-
// },
|
|
669
|
-
// {
|
|
670
|
-
// "symbol": "SPOT_BTC_USDT",
|
|
671
|
-
// "side": "BUY",
|
|
672
|
-
// "executed_price": 46224.32,
|
|
673
|
-
// "executed_quantity": 0.00039,
|
|
674
|
-
// "executed_timestamp": "1641241162.287"
|
|
721
|
+
// {
|
|
722
|
+
// "success": true,
|
|
723
|
+
// "data": {
|
|
724
|
+
// "rows": [
|
|
725
|
+
// {
|
|
726
|
+
// "symbol": "SPOT_BTC_USDT",
|
|
727
|
+
// "side": "SELL",
|
|
728
|
+
// "source": 0,
|
|
729
|
+
// "executedPrice": "108741.01",
|
|
730
|
+
// "executedQuantity": "0.02477",
|
|
731
|
+
// "executedTimestamp": 1751513940144
|
|
732
|
+
// }
|
|
733
|
+
// ]
|
|
675
734
|
// },
|
|
676
|
-
//
|
|
677
|
-
//
|
|
678
|
-
// }
|
|
735
|
+
// "timestamp": 1751513988543
|
|
736
|
+
// }
|
|
679
737
|
//
|
|
680
|
-
const
|
|
681
|
-
|
|
738
|
+
const data = this.safeDict(response, 'data', {});
|
|
739
|
+
const rows = this.safeList(data, 'rows', []);
|
|
740
|
+
return this.parseTrades(rows, market, since, limit);
|
|
682
741
|
}
|
|
683
742
|
parseTrade(trade, market = undefined) {
|
|
684
743
|
//
|
|
@@ -687,36 +746,47 @@ class woo extends woo$1 {
|
|
|
687
746
|
// {
|
|
688
747
|
// "symbol": "SPOT_BTC_USDT",
|
|
689
748
|
// "side": "SELL",
|
|
690
|
-
// "
|
|
691
|
-
// "
|
|
692
|
-
// "
|
|
749
|
+
// "source": 0,
|
|
750
|
+
// "executedPrice": "108741.01",
|
|
751
|
+
// "executedQuantity": "0.02477",
|
|
752
|
+
// "executedTimestamp": 1751513940144
|
|
693
753
|
// }
|
|
694
754
|
//
|
|
695
755
|
// fetchOrderTrades, fetchOrder
|
|
696
756
|
//
|
|
697
757
|
// {
|
|
698
|
-
// "id":
|
|
699
|
-
// "symbol": "
|
|
700
|
-
// "
|
|
758
|
+
// "id": 1734947821,
|
|
759
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
760
|
+
// "orderId": 60780383217,
|
|
761
|
+
// "executedPrice": 87.86,
|
|
762
|
+
// "executedQuantity": 0.1,
|
|
763
|
+
// "fee": 0.0001,
|
|
764
|
+
// "realizedPnl": null,
|
|
765
|
+
// "feeAsset": "LTC",
|
|
766
|
+
// "orderTag": "default",
|
|
701
767
|
// "side": "BUY",
|
|
702
|
-
// "
|
|
703
|
-
// "
|
|
704
|
-
// "order_tag": "default", <-- this param only in "fetchOrderTrades"
|
|
705
|
-
// "executed_price": "1",
|
|
706
|
-
// "executed_quantity": "12",
|
|
707
|
-
// "fee_asset": "WOO",
|
|
708
|
-
// "is_maker": "1"
|
|
768
|
+
// "executedTimestamp": "1752055173.630",
|
|
769
|
+
// "isMaker": 0
|
|
709
770
|
// }
|
|
710
771
|
//
|
|
711
772
|
const isFromFetchOrder = ('id' in trade);
|
|
712
|
-
const
|
|
773
|
+
const timestampString = this.safeString2(trade, 'executed_timestamp', 'executedTimestamp');
|
|
774
|
+
let timestamp = undefined;
|
|
775
|
+
if (timestampString !== undefined) {
|
|
776
|
+
if (timestampString.indexOf('.') > -1) {
|
|
777
|
+
timestamp = this.safeTimestamp2(trade, 'executed_timestamp', 'executedTimestamp');
|
|
778
|
+
}
|
|
779
|
+
else {
|
|
780
|
+
timestamp = this.safeInteger(trade, 'executedTimestamp');
|
|
781
|
+
}
|
|
782
|
+
}
|
|
713
783
|
const marketId = this.safeString(trade, 'symbol');
|
|
714
784
|
market = this.safeMarket(marketId, market);
|
|
715
785
|
const symbol = market['symbol'];
|
|
716
|
-
const price = this.
|
|
717
|
-
const amount = this.
|
|
718
|
-
const order_id = this.
|
|
719
|
-
const fee = this.parseTokenAndFeeTemp(trade, 'fee_asset', 'fee');
|
|
786
|
+
const price = this.safeString2(trade, 'executed_price', 'executedPrice');
|
|
787
|
+
const amount = this.safeString2(trade, 'executed_quantity', 'executedQuantity');
|
|
788
|
+
const order_id = this.safeString2(trade, 'order_id', 'orderId');
|
|
789
|
+
const fee = this.parseTokenAndFeeTemp(trade, ['fee_asset', 'feeAsset'], ['fee']);
|
|
720
790
|
const feeCost = this.safeString(fee, 'cost');
|
|
721
791
|
if (feeCost !== undefined) {
|
|
722
792
|
fee['cost'] = feeCost;
|
|
@@ -726,7 +796,7 @@ class woo extends woo$1 {
|
|
|
726
796
|
const id = this.safeString(trade, 'id');
|
|
727
797
|
let takerOrMaker = undefined;
|
|
728
798
|
if (isFromFetchOrder) {
|
|
729
|
-
const isMaker = this.
|
|
799
|
+
const isMaker = this.safeString2(trade, 'is_maker', 'isMaker') === '1';
|
|
730
800
|
takerOrMaker = isMaker ? 'maker' : 'taker';
|
|
731
801
|
}
|
|
732
802
|
return this.safeTrade({
|
|
@@ -745,11 +815,11 @@ class woo extends woo$1 {
|
|
|
745
815
|
'info': trade,
|
|
746
816
|
}, market);
|
|
747
817
|
}
|
|
748
|
-
parseTokenAndFeeTemp(item,
|
|
749
|
-
const feeCost = this.
|
|
818
|
+
parseTokenAndFeeTemp(item, feeTokenKeys, feeAmountKeys) {
|
|
819
|
+
const feeCost = this.safeStringN(item, feeAmountKeys);
|
|
750
820
|
let fee = undefined;
|
|
751
821
|
if (feeCost !== undefined) {
|
|
752
|
-
const feeCurrencyId = this.
|
|
822
|
+
const feeCurrencyId = this.safeStringN(item, feeTokenKeys);
|
|
753
823
|
const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
|
|
754
824
|
fee = {
|
|
755
825
|
'cost': feeCost,
|
|
@@ -758,43 +828,90 @@ class woo extends woo$1 {
|
|
|
758
828
|
}
|
|
759
829
|
return fee;
|
|
760
830
|
}
|
|
831
|
+
parseTradingFee(fee, market = undefined) {
|
|
832
|
+
const marketId = this.safeString(fee, 'symbol');
|
|
833
|
+
const symbol = this.safeSymbol(marketId, market);
|
|
834
|
+
return {
|
|
835
|
+
'info': fee,
|
|
836
|
+
'symbol': symbol,
|
|
837
|
+
'maker': this.parseNumber(Precise["default"].stringDiv(this.safeString(fee, 'makerFee'), '100')),
|
|
838
|
+
'taker': this.parseNumber(Precise["default"].stringDiv(this.safeString(fee, 'takerFee'), '100')),
|
|
839
|
+
'percentage': undefined,
|
|
840
|
+
'tierBased': undefined,
|
|
841
|
+
};
|
|
842
|
+
}
|
|
843
|
+
/**
|
|
844
|
+
* @method
|
|
845
|
+
* @name woo#fetchTradingFee
|
|
846
|
+
* @description fetch the trading fees for a market
|
|
847
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_tradingFee
|
|
848
|
+
* @param {string} symbol unified market symbol
|
|
849
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
850
|
+
* @param {boolean} [params.portfolioMargin] set to true if you would like to fetch trading fees in a portfolio margin account
|
|
851
|
+
* @param {string} [params.subType] "linear" or "inverse"
|
|
852
|
+
* @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
|
|
853
|
+
*/
|
|
854
|
+
async fetchTradingFee(symbol, params = {}) {
|
|
855
|
+
await this.loadMarkets();
|
|
856
|
+
const market = this.market(symbol);
|
|
857
|
+
const request = {
|
|
858
|
+
'symbol': market['id'],
|
|
859
|
+
};
|
|
860
|
+
const response = await this.v3PrivateGetTradeTradingFee(this.extend(request, params));
|
|
861
|
+
//
|
|
862
|
+
// {
|
|
863
|
+
// "success": true,
|
|
864
|
+
// "data": {
|
|
865
|
+
// "symbol": "SPOT_BTC_USDT",
|
|
866
|
+
// "takerFee": "10",
|
|
867
|
+
// "makerFee": "8"
|
|
868
|
+
// },
|
|
869
|
+
// "timestamp": 1751858977368
|
|
870
|
+
// }
|
|
871
|
+
//
|
|
872
|
+
const data = this.safeDict(response, 'data', {});
|
|
873
|
+
return this.parseTradingFee(data, market);
|
|
874
|
+
}
|
|
761
875
|
/**
|
|
762
876
|
* @method
|
|
763
877
|
* @name woo#fetchTradingFees
|
|
764
878
|
* @description fetch the trading fees for multiple markets
|
|
765
|
-
* @see https://
|
|
879
|
+
* @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
|
|
766
880
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
767
881
|
* @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
|
|
768
882
|
*/
|
|
769
883
|
async fetchTradingFees(params = {}) {
|
|
770
884
|
await this.loadMarkets();
|
|
771
|
-
const response = await this.
|
|
885
|
+
const response = await this.v3PrivateGetAccountInfo(params);
|
|
772
886
|
//
|
|
773
887
|
// {
|
|
774
888
|
// "success": true,
|
|
775
889
|
// "data": {
|
|
776
|
-
// "applicationId": "
|
|
777
|
-
// "account": "
|
|
778
|
-
// "alias": "
|
|
779
|
-
// "accountMode": "MARGIN",
|
|
780
|
-
// "leverage": 1,
|
|
781
|
-
// "takerFeeRate": 1,
|
|
782
|
-
// "makerFeeRate": 1,
|
|
783
|
-
// "interestRate": 1,
|
|
784
|
-
// "futuresTakerFeeRate": 1,
|
|
785
|
-
// "futuresMakerFeeRate": 1,
|
|
890
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
891
|
+
// "account": "carlos_jose_lima@yahoo.com",
|
|
892
|
+
// "alias": "carlos_jose_lima@yahoo.com",
|
|
786
893
|
// "otpauth": true,
|
|
787
|
-
// "
|
|
788
|
-
// "
|
|
789
|
-
// "
|
|
790
|
-
// "
|
|
791
|
-
// "
|
|
792
|
-
// "
|
|
793
|
-
// "
|
|
794
|
-
// "
|
|
795
|
-
// "
|
|
894
|
+
// "accountMode": "FUTURES",
|
|
895
|
+
// "positionMode": "ONE_WAY",
|
|
896
|
+
// "leverage": 0,
|
|
897
|
+
// "makerFeeRate": 0,
|
|
898
|
+
// "takerFeeRate": 0,
|
|
899
|
+
// "marginRatio": "10",
|
|
900
|
+
// "openMarginRatio": "10",
|
|
901
|
+
// "initialMarginRatio": "10",
|
|
902
|
+
// "maintenanceMarginRatio": "0.03",
|
|
903
|
+
// "totalCollateral": "165.55629469",
|
|
904
|
+
// "freeCollateral": "165.55629469",
|
|
905
|
+
// "totalAccountValue": "167.32418611",
|
|
906
|
+
// "totalTradingValue": "167.32418611",
|
|
907
|
+
// "totalVaultValue": "0",
|
|
908
|
+
// "totalStakingValue": "0",
|
|
909
|
+
// "totalLaunchpadValue": "0",
|
|
910
|
+
// "totalEarnValue": "0",
|
|
911
|
+
// "referrerID": null,
|
|
912
|
+
// "accountType": "Main"
|
|
796
913
|
// },
|
|
797
|
-
// "timestamp":
|
|
914
|
+
// "timestamp": 1752062807915
|
|
798
915
|
// }
|
|
799
916
|
//
|
|
800
917
|
const data = this.safeDict(response, 'data', {});
|
|
@@ -1058,8 +1175,8 @@ class woo extends woo$1 {
|
|
|
1058
1175
|
* @method
|
|
1059
1176
|
* @name woo#createOrder
|
|
1060
1177
|
* @description create a trade order
|
|
1061
|
-
* @see https://
|
|
1062
|
-
* @see https://
|
|
1178
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/post_order
|
|
1179
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/post_algo_order
|
|
1063
1180
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
1064
1181
|
* @param {string} type 'market' or 'limit'
|
|
1065
1182
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -1094,7 +1211,7 @@ class woo extends woo$1 {
|
|
|
1094
1211
|
let marginMode = undefined;
|
|
1095
1212
|
[marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
|
|
1096
1213
|
if (marginMode !== undefined) {
|
|
1097
|
-
request['
|
|
1214
|
+
request['marginMode'] = this.encodeMarginMode(marginMode);
|
|
1098
1215
|
}
|
|
1099
1216
|
const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
|
|
1100
1217
|
const stopLoss = this.safeValue(params, 'stopLoss');
|
|
@@ -1110,33 +1227,29 @@ class woo extends woo$1 {
|
|
|
1110
1227
|
const isMarket = orderType === 'MARKET';
|
|
1111
1228
|
const timeInForce = this.safeStringLower(params, 'timeInForce');
|
|
1112
1229
|
const postOnly = this.isPostOnly(isMarket, undefined, params);
|
|
1113
|
-
const
|
|
1114
|
-
|
|
1115
|
-
const orderQtyKey = isConditional ? 'quantity' : 'order_quantity';
|
|
1116
|
-
const priceKey = isConditional ? 'price' : 'order_price';
|
|
1117
|
-
const typeKey = isConditional ? 'type' : 'order_type';
|
|
1118
|
-
request[typeKey] = orderType; // LIMIT/MARKET/IOC/FOK/POST_ONLY/ASK/BID
|
|
1230
|
+
const clientOrderIdKey = isConditional ? 'clientAlgoOrderId' : 'clientOrderId';
|
|
1231
|
+
request['type'] = orderType; // LIMIT/MARKET/IOC/FOK/POST_ONLY/ASK/BID
|
|
1119
1232
|
if (!isConditional) {
|
|
1120
1233
|
if (postOnly) {
|
|
1121
|
-
request['
|
|
1234
|
+
request['type'] = 'POST_ONLY';
|
|
1122
1235
|
}
|
|
1123
1236
|
else if (timeInForce === 'fok') {
|
|
1124
|
-
request['
|
|
1237
|
+
request['type'] = 'FOK';
|
|
1125
1238
|
}
|
|
1126
1239
|
else if (timeInForce === 'ioc') {
|
|
1127
|
-
request['
|
|
1240
|
+
request['type'] = 'IOC';
|
|
1128
1241
|
}
|
|
1129
1242
|
}
|
|
1130
1243
|
if (reduceOnly) {
|
|
1131
|
-
request[
|
|
1244
|
+
request['reduceOnly'] = reduceOnly;
|
|
1132
1245
|
}
|
|
1133
1246
|
if (!isMarket && price !== undefined) {
|
|
1134
|
-
request[
|
|
1247
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
1135
1248
|
}
|
|
1136
1249
|
if (isMarket && !isConditional) {
|
|
1137
1250
|
// for market buy it requires the amount of quote currency to spend
|
|
1138
|
-
const cost = this.
|
|
1139
|
-
params = this.omit(params, ['cost', 'order_amount']);
|
|
1251
|
+
const cost = this.safeStringN(params, ['cost', 'order_amount', 'orderAmount']);
|
|
1252
|
+
params = this.omit(params, ['cost', 'order_amount', 'orderAmount']);
|
|
1140
1253
|
const isPriceProvided = price !== undefined;
|
|
1141
1254
|
if (market['spot'] && (isPriceProvided || (cost !== undefined))) {
|
|
1142
1255
|
let quoteAmount = undefined;
|
|
@@ -1149,14 +1262,14 @@ class woo extends woo$1 {
|
|
|
1149
1262
|
const costRequest = Precise["default"].stringMul(amountString, priceString);
|
|
1150
1263
|
quoteAmount = this.costToPrecision(symbol, costRequest);
|
|
1151
1264
|
}
|
|
1152
|
-
request['
|
|
1265
|
+
request['amount'] = quoteAmount;
|
|
1153
1266
|
}
|
|
1154
1267
|
else {
|
|
1155
|
-
request['
|
|
1268
|
+
request['quantity'] = this.amountToPrecision(symbol, amount);
|
|
1156
1269
|
}
|
|
1157
1270
|
}
|
|
1158
1271
|
else if (algoType !== 'POSITIONAL_TP_SL') {
|
|
1159
|
-
request[
|
|
1272
|
+
request['quantity'] = this.amountToPrecision(symbol, amount);
|
|
1160
1273
|
}
|
|
1161
1274
|
const clientOrderId = this.safeStringN(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
|
|
1162
1275
|
if (clientOrderId !== undefined) {
|
|
@@ -1219,44 +1332,46 @@ class woo extends woo$1 {
|
|
|
1219
1332
|
params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id', 'postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stopLoss', 'takeProfit', 'trailingPercent', 'trailingAmount', 'trailingTriggerPrice']);
|
|
1220
1333
|
let response = undefined;
|
|
1221
1334
|
if (isConditional) {
|
|
1222
|
-
response = await this.
|
|
1335
|
+
response = await this.v3PrivatePostTradeAlgoOrder(this.extend(request, params));
|
|
1336
|
+
//
|
|
1337
|
+
// {
|
|
1338
|
+
// "success": true,
|
|
1339
|
+
// "data": {
|
|
1340
|
+
// "rows": [
|
|
1341
|
+
// {
|
|
1342
|
+
// "orderId": "1578938",
|
|
1343
|
+
// "clientOrderId": "0",
|
|
1344
|
+
// "algoType": "STOP_LOSS",
|
|
1345
|
+
// "quantity": "0.1"
|
|
1346
|
+
// }
|
|
1347
|
+
// ]
|
|
1348
|
+
// },
|
|
1349
|
+
// "timestamp": "1686149372216"
|
|
1350
|
+
// }
|
|
1351
|
+
//
|
|
1223
1352
|
}
|
|
1224
1353
|
else {
|
|
1225
|
-
response = await this.
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
// "rows": [
|
|
1242
|
-
// {
|
|
1243
|
-
// "orderId": "1578938",
|
|
1244
|
-
// "clientOrderId": "0",
|
|
1245
|
-
// "algoType": "STOP_LOSS",
|
|
1246
|
-
// "quantity": "0.1"
|
|
1247
|
-
// }
|
|
1248
|
-
// ]
|
|
1249
|
-
// },
|
|
1250
|
-
// "timestamp": "1686149372216"
|
|
1251
|
-
// }
|
|
1252
|
-
const data = this.safeDict(response, 'data');
|
|
1253
|
-
if (data !== undefined) {
|
|
1254
|
-
const rows = this.safeList(data, 'rows', []);
|
|
1255
|
-
return this.parseOrder(rows[0], market);
|
|
1354
|
+
response = await this.v3PrivatePostTradeOrder(this.extend(request, params));
|
|
1355
|
+
//
|
|
1356
|
+
// {
|
|
1357
|
+
// "success": true,
|
|
1358
|
+
// "data": {
|
|
1359
|
+
// "orderId": 60667653330,
|
|
1360
|
+
// "clientOrderId": 0,
|
|
1361
|
+
// "type": "LIMIT",
|
|
1362
|
+
// "price": 60,
|
|
1363
|
+
// "quantity": 0.1,
|
|
1364
|
+
// "amount": null,
|
|
1365
|
+
// "bidAskLevel": null
|
|
1366
|
+
// },
|
|
1367
|
+
// "timestamp": 1751871779855
|
|
1368
|
+
// }
|
|
1369
|
+
//
|
|
1256
1370
|
}
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1371
|
+
let data = this.safeDict(response, 'data', {});
|
|
1372
|
+
data = this.safeDict(this.safeList(data, 'rows'), 0, data);
|
|
1373
|
+
data['timestamp'] = this.safeString(response, 'timestamp');
|
|
1374
|
+
return this.parseOrder(data, market);
|
|
1260
1375
|
}
|
|
1261
1376
|
encodeMarginMode(mode) {
|
|
1262
1377
|
const modes = {
|
|
@@ -1365,9 +1480,8 @@ class woo extends woo$1 {
|
|
|
1365
1480
|
/**
|
|
1366
1481
|
* @method
|
|
1367
1482
|
* @name woo#cancelOrder
|
|
1368
|
-
* @see https://
|
|
1369
|
-
* @see https://
|
|
1370
|
-
* @see https://docs.woox.io/#cancel-order-by-client_order_id
|
|
1483
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/cancel_order
|
|
1484
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/cancel_algo_order
|
|
1371
1485
|
* @description cancels an open order
|
|
1372
1486
|
* @param {string} id order id
|
|
1373
1487
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
@@ -1389,42 +1503,52 @@ class woo extends woo$1 {
|
|
|
1389
1503
|
const request = {};
|
|
1390
1504
|
const clientOrderIdUnified = this.safeString2(params, 'clOrdID', 'clientOrderId');
|
|
1391
1505
|
const clientOrderIdExchangeSpecific = this.safeString(params, 'client_order_id', clientOrderIdUnified);
|
|
1506
|
+
params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
|
|
1392
1507
|
const isByClientOrder = clientOrderIdExchangeSpecific !== undefined;
|
|
1393
1508
|
let response = undefined;
|
|
1394
1509
|
if (isTrigger) {
|
|
1395
|
-
|
|
1396
|
-
|
|
1510
|
+
if (isByClientOrder) {
|
|
1511
|
+
request['clientAlgoOrderId'] = clientOrderIdExchangeSpecific;
|
|
1512
|
+
}
|
|
1513
|
+
else {
|
|
1514
|
+
request['algoOrderId'] = id;
|
|
1515
|
+
}
|
|
1516
|
+
response = await this.v3PrivateDeleteTradeAlgoOrder(this.extend(request, params));
|
|
1397
1517
|
}
|
|
1398
1518
|
else {
|
|
1399
1519
|
request['symbol'] = market['id'];
|
|
1400
1520
|
if (isByClientOrder) {
|
|
1401
|
-
request['
|
|
1402
|
-
params = this.omit(params, ['clOrdID', 'clientOrderId', 'client_order_id']);
|
|
1403
|
-
response = await this.v1PrivateDeleteClientOrder(this.extend(request, params));
|
|
1521
|
+
request['clientOrderId'] = clientOrderIdExchangeSpecific;
|
|
1404
1522
|
}
|
|
1405
1523
|
else {
|
|
1406
|
-
request['
|
|
1407
|
-
response = await this.v1PrivateDeleteOrder(this.extend(request, params));
|
|
1524
|
+
request['orderId'] = id;
|
|
1408
1525
|
}
|
|
1526
|
+
response = await this.v3PrivateDeleteTradeOrder(this.extend(request, params));
|
|
1409
1527
|
}
|
|
1410
1528
|
//
|
|
1411
|
-
//
|
|
1529
|
+
// {
|
|
1530
|
+
// "success": true,
|
|
1531
|
+
// "data": {
|
|
1532
|
+
// "status": "CANCEL_SENT"
|
|
1533
|
+
// },
|
|
1534
|
+
// "timestamp": 1751940315838
|
|
1535
|
+
// }
|
|
1412
1536
|
//
|
|
1413
|
-
const
|
|
1537
|
+
const data = this.safeDict(response, 'data', {});
|
|
1538
|
+
data['timestamp'] = this.safeString(response, 'timestamp');
|
|
1414
1539
|
if (isByClientOrder) {
|
|
1415
|
-
|
|
1540
|
+
data['clientOrderId'] = clientOrderIdExchangeSpecific;
|
|
1416
1541
|
}
|
|
1417
1542
|
else {
|
|
1418
|
-
|
|
1543
|
+
data['orderId'] = id;
|
|
1419
1544
|
}
|
|
1420
|
-
return this.
|
|
1545
|
+
return this.parseOrder(data, market);
|
|
1421
1546
|
}
|
|
1422
1547
|
/**
|
|
1423
1548
|
* @method
|
|
1424
1549
|
* @name woo#cancelAllOrders
|
|
1425
|
-
* @see https://
|
|
1426
|
-
* @see https://
|
|
1427
|
-
* @see https://docs.woox.io/#cancel-all-pending-algo-orders
|
|
1550
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/cancel_all_order
|
|
1551
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/cancel_algo_orders
|
|
1428
1552
|
* @description cancel all open orders in a market
|
|
1429
1553
|
* @param {string} symbol unified market symbol
|
|
1430
1554
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -1435,32 +1559,30 @@ class woo extends woo$1 {
|
|
|
1435
1559
|
await this.loadMarkets();
|
|
1436
1560
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
1437
1561
|
params = this.omit(params, ['stop', 'trigger']);
|
|
1438
|
-
|
|
1439
|
-
|
|
1562
|
+
const request = {};
|
|
1563
|
+
if (symbol !== undefined) {
|
|
1564
|
+
const market = this.market(symbol);
|
|
1565
|
+
request['symbol'] = market['id'];
|
|
1440
1566
|
}
|
|
1441
|
-
if (
|
|
1442
|
-
|
|
1567
|
+
if (trigger) {
|
|
1568
|
+
return await this.v3PrivateDeleteTradeAlgoOrders(params);
|
|
1443
1569
|
}
|
|
1444
|
-
const market = this.market(symbol);
|
|
1445
|
-
const request = {
|
|
1446
|
-
'symbol': market['id'],
|
|
1447
|
-
};
|
|
1448
|
-
const response = await this.v1PrivateDeleteOrders(this.extend(request, params));
|
|
1449
1570
|
//
|
|
1450
1571
|
// {
|
|
1451
|
-
// "success":true,
|
|
1452
|
-
// "
|
|
1572
|
+
// "success": true,
|
|
1573
|
+
// "data": {
|
|
1574
|
+
// "status": "CANCEL_ALL_SENT"
|
|
1575
|
+
// },
|
|
1576
|
+
// "timestamp": 1751941988134
|
|
1453
1577
|
// }
|
|
1454
1578
|
//
|
|
1455
|
-
return
|
|
1456
|
-
this.safeOrder(response),
|
|
1457
|
-
];
|
|
1579
|
+
return await this.v3PrivateDeleteTradeOrders(this.extend(request, params));
|
|
1458
1580
|
}
|
|
1459
1581
|
/**
|
|
1460
1582
|
* @method
|
|
1461
1583
|
* @name woo#cancelAllOrdersAfter
|
|
1462
1584
|
* @description dead man's switch, cancel all orders after the given timeout
|
|
1463
|
-
* @see https://
|
|
1585
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/cancel_all_after
|
|
1464
1586
|
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
1465
1587
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1466
1588
|
* @returns {object} the api result
|
|
@@ -1468,27 +1590,25 @@ class woo extends woo$1 {
|
|
|
1468
1590
|
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
1469
1591
|
await this.loadMarkets();
|
|
1470
1592
|
const request = {
|
|
1471
|
-
'
|
|
1593
|
+
'triggerAfter': (timeout > 0) ? Math.min(timeout, 900000) : 0,
|
|
1472
1594
|
};
|
|
1473
|
-
const response = await this.
|
|
1595
|
+
const response = await this.v3PrivatePostTradeCancelAllAfter(this.extend(request, params));
|
|
1474
1596
|
//
|
|
1475
|
-
//
|
|
1476
|
-
//
|
|
1477
|
-
//
|
|
1478
|
-
//
|
|
1479
|
-
//
|
|
1480
|
-
// "timestamp": 1711534302943
|
|
1597
|
+
// {
|
|
1598
|
+
// "success": true,
|
|
1599
|
+
// "timestamp": 123,
|
|
1600
|
+
// "data": {
|
|
1601
|
+
// "expectedTriggerTime": 123
|
|
1481
1602
|
// }
|
|
1603
|
+
// }
|
|
1482
1604
|
//
|
|
1483
|
-
return
|
|
1484
|
-
this.safeOrder(response),
|
|
1485
|
-
];
|
|
1605
|
+
return response;
|
|
1486
1606
|
}
|
|
1487
1607
|
/**
|
|
1488
1608
|
* @method
|
|
1489
1609
|
* @name woo#fetchOrder
|
|
1490
|
-
* @see https://
|
|
1491
|
-
* @see https://
|
|
1610
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_order
|
|
1611
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_order
|
|
1492
1612
|
* @description fetches information on an order made by the user
|
|
1493
1613
|
* @param {string} id the order id
|
|
1494
1614
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
@@ -1498,68 +1618,109 @@ class woo extends woo$1 {
|
|
|
1498
1618
|
*/
|
|
1499
1619
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
1500
1620
|
await this.loadMarkets();
|
|
1501
|
-
|
|
1621
|
+
let market = undefined;
|
|
1622
|
+
if (symbol !== undefined) {
|
|
1623
|
+
market = this.market(symbol);
|
|
1624
|
+
}
|
|
1502
1625
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
1503
1626
|
params = this.omit(params, ['stop', 'trigger']);
|
|
1504
1627
|
const request = {};
|
|
1505
1628
|
const clientOrderId = this.safeString2(params, 'clOrdID', 'clientOrderId');
|
|
1506
1629
|
let response = undefined;
|
|
1507
1630
|
if (trigger) {
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1631
|
+
if (clientOrderId !== undefined) {
|
|
1632
|
+
request['clientAlgoOrderId'] = id;
|
|
1633
|
+
}
|
|
1634
|
+
else {
|
|
1635
|
+
request['algoOrderId'] = id;
|
|
1636
|
+
}
|
|
1637
|
+
response = await this.v3PrivateGetTradeAlgoOrder(this.extend(request, params));
|
|
1638
|
+
//
|
|
1639
|
+
// {
|
|
1640
|
+
// "success": true,
|
|
1641
|
+
// "data": {
|
|
1642
|
+
// "algoOrderId": 10399260,
|
|
1643
|
+
// "clientAlgoOrderId": 0,
|
|
1644
|
+
// "rootAlgoOrderId": 10399260,
|
|
1645
|
+
// "parentAlgoOrderId": 0,
|
|
1646
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1647
|
+
// "algoOrderTag": "default",
|
|
1648
|
+
// "algoType": "TAKE_PROFIT",
|
|
1649
|
+
// "side": "BUY",
|
|
1650
|
+
// "quantity": 0.1,
|
|
1651
|
+
// "isTriggered": false,
|
|
1652
|
+
// "triggerPrice": 65,
|
|
1653
|
+
// "triggerStatus": "USELESS",
|
|
1654
|
+
// "type": "LIMIT",
|
|
1655
|
+
// "rootAlgoStatus": "NEW",
|
|
1656
|
+
// "algoStatus": "NEW",
|
|
1657
|
+
// "triggerPriceType": "MARKET_PRICE",
|
|
1658
|
+
// "price": 60,
|
|
1659
|
+
// "triggerTime": "0",
|
|
1660
|
+
// "totalExecutedQuantity": 0,
|
|
1661
|
+
// "visibleQuantity": 0.1,
|
|
1662
|
+
// "averageExecutedPrice": 0,
|
|
1663
|
+
// "totalFee": 0,
|
|
1664
|
+
// "feeAsset": "",
|
|
1665
|
+
// "totalRebate": 0,
|
|
1666
|
+
// "rebateAsset": "",
|
|
1667
|
+
// "reduceOnly": false,
|
|
1668
|
+
// "createdTime": "1752049747.732",
|
|
1669
|
+
// "updatedTime": "1752049747.732",
|
|
1670
|
+
// "positionSide": "BOTH"
|
|
1671
|
+
// },
|
|
1672
|
+
// "timestamp": 1752049767550
|
|
1673
|
+
// }
|
|
1674
|
+
//
|
|
1514
1675
|
}
|
|
1515
1676
|
else {
|
|
1516
|
-
|
|
1517
|
-
|
|
1677
|
+
if (clientOrderId !== undefined) {
|
|
1678
|
+
request['clientOrderId'] = clientOrderId;
|
|
1679
|
+
}
|
|
1680
|
+
else {
|
|
1681
|
+
request['orderId'] = id;
|
|
1682
|
+
}
|
|
1683
|
+
response = await this.v3PrivateGetTradeOrder(this.extend(request, params));
|
|
1684
|
+
//
|
|
1685
|
+
// {
|
|
1686
|
+
// "success": true,
|
|
1687
|
+
// "data": {
|
|
1688
|
+
// "orderId": 60780315704,
|
|
1689
|
+
// "clientOrderId": 0,
|
|
1690
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1691
|
+
// "orderTag": "default",
|
|
1692
|
+
// "side": "BUY",
|
|
1693
|
+
// "quantity": 0.1,
|
|
1694
|
+
// "amount": null,
|
|
1695
|
+
// "type": "LIMIT",
|
|
1696
|
+
// "status": "NEW",
|
|
1697
|
+
// "price": 60,
|
|
1698
|
+
// "executed": 0,
|
|
1699
|
+
// "visible": 0.1,
|
|
1700
|
+
// "averageExecutedPrice": 0,
|
|
1701
|
+
// "totalFee": 0,
|
|
1702
|
+
// "feeAsset": "LTC",
|
|
1703
|
+
// "totalRebate": 0,
|
|
1704
|
+
// "rebateAsset": "USDT",
|
|
1705
|
+
// "reduceOnly": false,
|
|
1706
|
+
// "createdTime": "1752049062.496",
|
|
1707
|
+
// "realizedPnl": null,
|
|
1708
|
+
// "positionSide": "BOTH",
|
|
1709
|
+
// "bidAskLevel": null
|
|
1710
|
+
// },
|
|
1711
|
+
// "timestamp": 1752049393466
|
|
1712
|
+
// }
|
|
1713
|
+
//
|
|
1518
1714
|
}
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
// "success": true,
|
|
1522
|
-
// "symbol": "SPOT_WOO_USDT",
|
|
1523
|
-
// "status": "FILLED", // FILLED, NEW
|
|
1524
|
-
// "side": "BUY",
|
|
1525
|
-
// "created_time": "1641480933.000",
|
|
1526
|
-
// "order_id": "87541111",
|
|
1527
|
-
// "order_tag": "default",
|
|
1528
|
-
// "price": "1",
|
|
1529
|
-
// "type": "LIMIT",
|
|
1530
|
-
// "quantity": "12",
|
|
1531
|
-
// "amount": null,
|
|
1532
|
-
// "visible": "12",
|
|
1533
|
-
// "executed": "12", // or any partial amount
|
|
1534
|
-
// "total_fee": "0.0024",
|
|
1535
|
-
// "fee_asset": "WOO",
|
|
1536
|
-
// "client_order_id": null,
|
|
1537
|
-
// "average_executed_price": "1",
|
|
1538
|
-
// "Transactions": [
|
|
1539
|
-
// {
|
|
1540
|
-
// "id": "99111647",
|
|
1541
|
-
// "symbol": "SPOT_WOO_USDT",
|
|
1542
|
-
// "fee": "0.0024",
|
|
1543
|
-
// "side": "BUY",
|
|
1544
|
-
// "executed_timestamp": "1641482113.084",
|
|
1545
|
-
// "order_id": "87541111",
|
|
1546
|
-
// "executed_price": "1",
|
|
1547
|
-
// "executed_quantity": "12",
|
|
1548
|
-
// "fee_asset": "WOO",
|
|
1549
|
-
// "is_maker": "1"
|
|
1550
|
-
// }
|
|
1551
|
-
// ]
|
|
1552
|
-
// }
|
|
1553
|
-
//
|
|
1554
|
-
const orders = this.safeDict(response, 'data', response);
|
|
1555
|
-
return this.parseOrder(orders, market);
|
|
1715
|
+
const data = this.safeDict(response, 'data', {});
|
|
1716
|
+
return this.parseOrder(data, market);
|
|
1556
1717
|
}
|
|
1557
1718
|
/**
|
|
1558
1719
|
* @method
|
|
1559
1720
|
* @name woo#fetchOrders
|
|
1560
1721
|
* @description fetches information on multiple orders made by the user
|
|
1561
|
-
* @see https://
|
|
1562
|
-
* @see https://
|
|
1722
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
|
|
1723
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
|
|
1563
1724
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1564
1725
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1565
1726
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
@@ -1567,7 +1728,6 @@ class woo extends woo$1 {
|
|
|
1567
1728
|
* @param {boolean} [params.trigger] whether the order is a trigger/algo order
|
|
1568
1729
|
* @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
|
|
1569
1730
|
* @param {string} [params.side] 'buy' or 'sell'
|
|
1570
|
-
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
1571
1731
|
* @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
|
|
1572
1732
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1573
1733
|
*/
|
|
@@ -1581,80 +1741,124 @@ class woo extends woo$1 {
|
|
|
1581
1741
|
const request = {};
|
|
1582
1742
|
let market = undefined;
|
|
1583
1743
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
1584
|
-
|
|
1585
|
-
params = this.omit(params, ['stop', 'trailing', 'trigger']);
|
|
1744
|
+
params = this.omit(params, ['stop', 'trigger']);
|
|
1586
1745
|
if (symbol !== undefined) {
|
|
1587
1746
|
market = this.market(symbol);
|
|
1588
1747
|
request['symbol'] = market['id'];
|
|
1589
1748
|
}
|
|
1590
1749
|
if (since !== undefined) {
|
|
1591
|
-
|
|
1592
|
-
request['createdTimeStart'] = since;
|
|
1593
|
-
}
|
|
1594
|
-
else {
|
|
1595
|
-
request['start_t'] = since;
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
if (limit !== undefined) {
|
|
1599
|
-
request['size'] = limit;
|
|
1600
|
-
}
|
|
1601
|
-
else {
|
|
1602
|
-
request['size'] = trailing ? 50 : 500;
|
|
1750
|
+
request['startTime'] = since;
|
|
1603
1751
|
}
|
|
1604
|
-
|
|
1605
|
-
|
|
1752
|
+
const until = this.safeInteger(params, 'until'); // unified in milliseconds
|
|
1753
|
+
params = this.omit(params, ['until']);
|
|
1754
|
+
if (until !== undefined) {
|
|
1755
|
+
request['endTime'] = until;
|
|
1606
1756
|
}
|
|
1607
|
-
|
|
1608
|
-
request['
|
|
1757
|
+
if (limit !== undefined) {
|
|
1758
|
+
request['size'] = Math.min(limit, 500);
|
|
1609
1759
|
}
|
|
1610
1760
|
let response = undefined;
|
|
1611
|
-
if (trigger
|
|
1612
|
-
response = await this.
|
|
1761
|
+
if (trigger) {
|
|
1762
|
+
response = await this.v3PrivateGetTradeAlgoOrders(this.extend(request, params));
|
|
1763
|
+
//
|
|
1764
|
+
// {
|
|
1765
|
+
// "success": true,
|
|
1766
|
+
// "data": {
|
|
1767
|
+
// "rows": [
|
|
1768
|
+
// {
|
|
1769
|
+
// "algoOrderId": 10399260,
|
|
1770
|
+
// "clientAlgoOrderId": 0,
|
|
1771
|
+
// "rootAlgoOrderId": 10399260,
|
|
1772
|
+
// "parentAlgoOrderId": 0,
|
|
1773
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1774
|
+
// "algoOrderTag": "default",
|
|
1775
|
+
// "algoType": "TAKE_PROFIT",
|
|
1776
|
+
// "side": "BUY",
|
|
1777
|
+
// "quantity": 0.1,
|
|
1778
|
+
// "isTriggered": false,
|
|
1779
|
+
// "triggerPrice": 65,
|
|
1780
|
+
// "triggerStatus": "USELESS",
|
|
1781
|
+
// "type": "LIMIT",
|
|
1782
|
+
// "rootAlgoStatus": "NEW",
|
|
1783
|
+
// "algoStatus": "NEW",
|
|
1784
|
+
// "triggerPriceType": "MARKET_PRICE",
|
|
1785
|
+
// "price": 60,
|
|
1786
|
+
// "triggerTime": "0",
|
|
1787
|
+
// "totalExecutedQuantity": 0,
|
|
1788
|
+
// "visibleQuantity": 0.1,
|
|
1789
|
+
// "averageExecutedPrice": 0,
|
|
1790
|
+
// "totalFee": 0,
|
|
1791
|
+
// "feeAsset": "",
|
|
1792
|
+
// "totalRebate": 0,
|
|
1793
|
+
// "rebateAsset": "",
|
|
1794
|
+
// "reduceOnly": false,
|
|
1795
|
+
// "createdTime": "1752049747.730",
|
|
1796
|
+
// "updatedTime": "1752049747.730",
|
|
1797
|
+
// "positionSide": "BOTH"
|
|
1798
|
+
// }
|
|
1799
|
+
// ],
|
|
1800
|
+
// "meta": {
|
|
1801
|
+
// "total": 7,
|
|
1802
|
+
// "recordsPerPage": 1,
|
|
1803
|
+
// "currentPage": 1
|
|
1804
|
+
// }
|
|
1805
|
+
// },
|
|
1806
|
+
// "timestamp": 1752053127448
|
|
1807
|
+
// }
|
|
1808
|
+
//
|
|
1613
1809
|
}
|
|
1614
1810
|
else {
|
|
1615
|
-
response = await this.
|
|
1811
|
+
response = await this.v3PrivateGetTradeOrders(this.extend(request, params));
|
|
1812
|
+
//
|
|
1813
|
+
// {
|
|
1814
|
+
// "success": true,
|
|
1815
|
+
// "data": {
|
|
1816
|
+
// "rows": [
|
|
1817
|
+
// {
|
|
1818
|
+
// "orderId": 60780315704,
|
|
1819
|
+
// "clientOrderId": 0,
|
|
1820
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1821
|
+
// "orderTag": "default",
|
|
1822
|
+
// "side": "BUY",
|
|
1823
|
+
// "quantity": 0.1,
|
|
1824
|
+
// "amount": null,
|
|
1825
|
+
// "type": "LIMIT",
|
|
1826
|
+
// "status": "NEW",
|
|
1827
|
+
// "price": 60,
|
|
1828
|
+
// "executed": 0,
|
|
1829
|
+
// "visible": 0.1,
|
|
1830
|
+
// "averageExecutedPrice": 0,
|
|
1831
|
+
// "totalFee": 0,
|
|
1832
|
+
// "feeAsset": "LTC",
|
|
1833
|
+
// "totalRebate": 0,
|
|
1834
|
+
// "rebateAsset": "USDT",
|
|
1835
|
+
// "reduceOnly": false,
|
|
1836
|
+
// "createdTime": "1752049062.496",
|
|
1837
|
+
// "realizedPnl": null,
|
|
1838
|
+
// "positionSide": "BOTH",
|
|
1839
|
+
// "bidAskLevel": null
|
|
1840
|
+
// }
|
|
1841
|
+
// ],
|
|
1842
|
+
// "meta": {
|
|
1843
|
+
// "total": 11,
|
|
1844
|
+
// "recordsPerPage": 1,
|
|
1845
|
+
// "currentPage": 1
|
|
1846
|
+
// }
|
|
1847
|
+
// },
|
|
1848
|
+
// "timestamp": 1752053061236
|
|
1849
|
+
// }
|
|
1850
|
+
//
|
|
1616
1851
|
}
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
// "success":true,
|
|
1620
|
-
// "meta":{
|
|
1621
|
-
// "total":1,
|
|
1622
|
-
// "records_per_page":100,
|
|
1623
|
-
// "current_page":1
|
|
1624
|
-
// },
|
|
1625
|
-
// "rows":[
|
|
1626
|
-
// {
|
|
1627
|
-
// "symbol":"PERP_BTC_USDT",
|
|
1628
|
-
// "status":"FILLED",
|
|
1629
|
-
// "side":"SELL",
|
|
1630
|
-
// "created_time":"1611617776.000",
|
|
1631
|
-
// "updated_time":"1611617776.000",
|
|
1632
|
-
// "order_id":52121167,
|
|
1633
|
-
// "order_tag":"default",
|
|
1634
|
-
// "price":null,
|
|
1635
|
-
// "type":"MARKET",
|
|
1636
|
-
// "quantity":0.002,
|
|
1637
|
-
// "amount":null,
|
|
1638
|
-
// "visible":0,
|
|
1639
|
-
// "executed":0.002,
|
|
1640
|
-
// "total_fee":0.01732885,
|
|
1641
|
-
// "fee_asset":"USDT",
|
|
1642
|
-
// "client_order_id":null,
|
|
1643
|
-
// "average_executed_price":28881.41
|
|
1644
|
-
// }
|
|
1645
|
-
// ]
|
|
1646
|
-
// }
|
|
1647
|
-
//
|
|
1648
|
-
const data = this.safeValue(response, 'data', response);
|
|
1649
|
-
const orders = this.safeList(data, 'rows');
|
|
1852
|
+
const data = this.safeValue(response, 'data', {});
|
|
1853
|
+
const orders = this.safeList(data, 'rows', []);
|
|
1650
1854
|
return this.parseOrders(orders, market, since, limit);
|
|
1651
1855
|
}
|
|
1652
1856
|
/**
|
|
1653
1857
|
* @method
|
|
1654
1858
|
* @name woo#fetchOpenOrders
|
|
1655
1859
|
* @description fetches information on multiple orders made by the user
|
|
1656
|
-
* @see https://
|
|
1657
|
-
* @see https://
|
|
1860
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
|
|
1861
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
|
|
1658
1862
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1659
1863
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1660
1864
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
@@ -1675,8 +1879,8 @@ class woo extends woo$1 {
|
|
|
1675
1879
|
* @method
|
|
1676
1880
|
* @name woo#fetchClosedOrders
|
|
1677
1881
|
* @description fetches information on multiple orders made by the user
|
|
1678
|
-
* @see https://
|
|
1679
|
-
* @see https://
|
|
1882
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_orders
|
|
1883
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_algo_orders
|
|
1680
1884
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1681
1885
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1682
1886
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
@@ -1703,83 +1907,108 @@ class woo extends woo$1 {
|
|
|
1703
1907
|
}
|
|
1704
1908
|
parseOrder(order, market = undefined) {
|
|
1705
1909
|
//
|
|
1706
|
-
//
|
|
1707
|
-
//
|
|
1708
|
-
//
|
|
1709
|
-
//
|
|
1710
|
-
//
|
|
1711
|
-
//
|
|
1712
|
-
//
|
|
1713
|
-
//
|
|
1714
|
-
//
|
|
1715
|
-
//
|
|
1716
|
-
//
|
|
1717
|
-
//
|
|
1718
|
-
//
|
|
1719
|
-
//
|
|
1720
|
-
//
|
|
1721
|
-
//
|
|
1722
|
-
//
|
|
1723
|
-
//
|
|
1724
|
-
//
|
|
1725
|
-
//
|
|
1726
|
-
//
|
|
1727
|
-
//
|
|
1728
|
-
//
|
|
1729
|
-
//
|
|
1730
|
-
//
|
|
1731
|
-
//
|
|
1732
|
-
//
|
|
1733
|
-
//
|
|
1734
|
-
//
|
|
1735
|
-
//
|
|
1736
|
-
//
|
|
1737
|
-
//
|
|
1738
|
-
//
|
|
1739
|
-
//
|
|
1740
|
-
//
|
|
1741
|
-
//
|
|
1742
|
-
//
|
|
1743
|
-
//
|
|
1744
|
-
//
|
|
1745
|
-
//
|
|
1746
|
-
//
|
|
1747
|
-
//
|
|
1748
|
-
//
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1910
|
+
// createOrder
|
|
1911
|
+
// {
|
|
1912
|
+
// "orderId": 60667653330,
|
|
1913
|
+
// "clientOrderId": 0,
|
|
1914
|
+
// "type": "LIMIT",
|
|
1915
|
+
// "price": 60,
|
|
1916
|
+
// "quantity": 0.1,
|
|
1917
|
+
// "amount": null,
|
|
1918
|
+
// "bidAskLevel": null,
|
|
1919
|
+
// "timestamp": 1751871779855
|
|
1920
|
+
// }
|
|
1921
|
+
//
|
|
1922
|
+
// createOrder - algo
|
|
1923
|
+
// {
|
|
1924
|
+
// "orderId": "1578938",
|
|
1925
|
+
// "clientOrderId": "0",
|
|
1926
|
+
// "algoType": "STOP_LOSS",
|
|
1927
|
+
// "quantity": "0.1",
|
|
1928
|
+
// "timestamp": "1686149372216"
|
|
1929
|
+
// }
|
|
1930
|
+
//
|
|
1931
|
+
// fetchOrder
|
|
1932
|
+
// {
|
|
1933
|
+
// "orderId": 60780315704,
|
|
1934
|
+
// "clientOrderId": 0,
|
|
1935
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1936
|
+
// "orderTag": "default",
|
|
1937
|
+
// "side": "BUY",
|
|
1938
|
+
// "quantity": 0.1,
|
|
1939
|
+
// "amount": null,
|
|
1940
|
+
// "type": "LIMIT",
|
|
1941
|
+
// "status": "NEW",
|
|
1942
|
+
// "price": 60,
|
|
1943
|
+
// "executed": 0,
|
|
1944
|
+
// "visible": 0.1,
|
|
1945
|
+
// "averageExecutedPrice": 0,
|
|
1946
|
+
// "totalFee": 0,
|
|
1947
|
+
// "feeAsset": "LTC",
|
|
1948
|
+
// "totalRebate": 0,
|
|
1949
|
+
// "rebateAsset": "USDT",
|
|
1950
|
+
// "reduceOnly": false,
|
|
1951
|
+
// "createdTime": "1752049062.496",
|
|
1952
|
+
// "realizedPnl": null,
|
|
1953
|
+
// "positionSide": "BOTH",
|
|
1954
|
+
// "bidAskLevel": null
|
|
1955
|
+
// }
|
|
1956
|
+
//
|
|
1957
|
+
// fetchOrder - algo
|
|
1958
|
+
// {
|
|
1959
|
+
// "algoOrderId": 10399260,
|
|
1960
|
+
// "clientAlgoOrderId": 0,
|
|
1961
|
+
// "rootAlgoOrderId": 10399260,
|
|
1962
|
+
// "parentAlgoOrderId": 0,
|
|
1963
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
1964
|
+
// "algoOrderTag": "default",
|
|
1965
|
+
// "algoType": "TAKE_PROFIT",
|
|
1966
|
+
// "side": "BUY",
|
|
1967
|
+
// "quantity": 0.1,
|
|
1968
|
+
// "isTriggered": false,
|
|
1969
|
+
// "triggerPrice": 65,
|
|
1970
|
+
// "triggerStatus": "USELESS",
|
|
1971
|
+
// "type": "LIMIT",
|
|
1972
|
+
// "rootAlgoStatus": "NEW",
|
|
1973
|
+
// "algoStatus": "NEW",
|
|
1974
|
+
// "triggerPriceType": "MARKET_PRICE",
|
|
1975
|
+
// "price": 60,
|
|
1976
|
+
// "triggerTime": "0",
|
|
1977
|
+
// "totalExecutedQuantity": 0,
|
|
1978
|
+
// "visibleQuantity": 0.1,
|
|
1979
|
+
// "averageExecutedPrice": 0,
|
|
1980
|
+
// "totalFee": 0,
|
|
1981
|
+
// "feeAsset": "",
|
|
1982
|
+
// "totalRebate": 0,
|
|
1983
|
+
// "rebateAsset": "",
|
|
1984
|
+
// "reduceOnly": false,
|
|
1985
|
+
// "createdTime": "1752049747.732",
|
|
1986
|
+
// "updatedTime": "1752049747.732",
|
|
1987
|
+
// "positionSide": "BOTH"
|
|
1988
|
+
// }
|
|
1989
|
+
//
|
|
1990
|
+
let timestamp = this.safeTimestamp(order, 'createdTime');
|
|
1991
|
+
if (timestamp === undefined) {
|
|
1992
|
+
timestamp = this.safeInteger(order, 'timestamp');
|
|
1993
|
+
}
|
|
1994
|
+
const orderId = this.safeString2(order, 'orderId', 'algoOrderId');
|
|
1995
|
+
const clientOrderId = this.omitZero(this.safeString2(order, 'clientOrderId', 'clientAlgoOrderId')); // Somehow, this always returns 0 for limit order
|
|
1752
1996
|
const marketId = this.safeString(order, 'symbol');
|
|
1753
1997
|
market = this.safeMarket(marketId, market);
|
|
1754
1998
|
const symbol = market['symbol'];
|
|
1755
|
-
const price = this.
|
|
1756
|
-
const amount = this.
|
|
1757
|
-
const cost = this.
|
|
1758
|
-
const orderType = this.
|
|
1999
|
+
const price = this.safeString(order, 'price');
|
|
2000
|
+
const amount = this.safeString(order, 'quantity'); // This is base amount
|
|
2001
|
+
const cost = this.safeString(order, 'amount'); // This is quote amount
|
|
2002
|
+
const orderType = this.safeStringLower(order, 'type');
|
|
1759
2003
|
const status = this.safeValue2(order, 'status', 'algoStatus');
|
|
1760
2004
|
const side = this.safeStringLower(order, 'side');
|
|
1761
2005
|
const filled = this.omitZero(this.safeValue2(order, 'executed', 'totalExecutedQuantity'));
|
|
1762
|
-
const average = this.omitZero(this.
|
|
2006
|
+
const average = this.omitZero(this.safeString(order, 'averageExecutedPrice'));
|
|
1763
2007
|
// const remaining = Precise.stringSub (cost, filled);
|
|
1764
|
-
const fee = this.
|
|
1765
|
-
const feeCurrency = this.
|
|
1766
|
-
const transactions = this.safeValue(order, 'Transactions');
|
|
2008
|
+
const fee = this.safeNumber(order, 'totalFee');
|
|
2009
|
+
const feeCurrency = this.safeString(order, 'feeAsset');
|
|
1767
2010
|
const triggerPrice = this.safeNumber(order, 'triggerPrice');
|
|
1768
|
-
|
|
1769
|
-
let stopLossPrice = undefined;
|
|
1770
|
-
const childOrders = this.safeValue(order, 'childOrders');
|
|
1771
|
-
if (childOrders !== undefined) {
|
|
1772
|
-
const first = this.safeValue(childOrders, 0);
|
|
1773
|
-
const innerChildOrders = this.safeValue(first, 'childOrders', []);
|
|
1774
|
-
const innerChildOrdersLength = innerChildOrders.length;
|
|
1775
|
-
if (innerChildOrdersLength > 0) {
|
|
1776
|
-
const takeProfitOrder = this.safeValue(innerChildOrders, 0);
|
|
1777
|
-
const stopLossOrder = this.safeValue(innerChildOrders, 1);
|
|
1778
|
-
takeProfitPrice = this.safeNumber(takeProfitOrder, 'triggerPrice');
|
|
1779
|
-
stopLossPrice = this.safeNumber(stopLossOrder, 'triggerPrice');
|
|
1780
|
-
}
|
|
1781
|
-
}
|
|
1782
|
-
const lastUpdateTimestamp = this.safeTimestamp2(order, 'updatedTime', 'updated_time');
|
|
2011
|
+
const lastUpdateTimestamp = this.safeTimestamp(order, 'updatedTime');
|
|
1783
2012
|
return this.safeOrder({
|
|
1784
2013
|
'id': orderId,
|
|
1785
2014
|
'clientOrderId': clientOrderId,
|
|
@@ -1792,18 +2021,18 @@ class woo extends woo$1 {
|
|
|
1792
2021
|
'type': orderType,
|
|
1793
2022
|
'timeInForce': this.parseTimeInForce(orderType),
|
|
1794
2023
|
'postOnly': undefined,
|
|
1795
|
-
'reduceOnly': this.safeBool(order, '
|
|
2024
|
+
'reduceOnly': this.safeBool(order, 'reduceOnly'),
|
|
1796
2025
|
'side': side,
|
|
1797
2026
|
'price': price,
|
|
1798
2027
|
'triggerPrice': triggerPrice,
|
|
1799
|
-
'takeProfitPrice':
|
|
1800
|
-
'stopLossPrice':
|
|
2028
|
+
'takeProfitPrice': undefined,
|
|
2029
|
+
'stopLossPrice': undefined,
|
|
1801
2030
|
'average': average,
|
|
1802
2031
|
'amount': amount,
|
|
1803
2032
|
'filled': filled,
|
|
1804
2033
|
'remaining': undefined,
|
|
1805
2034
|
'cost': cost,
|
|
1806
|
-
'trades':
|
|
2035
|
+
'trades': undefined,
|
|
1807
2036
|
'fee': {
|
|
1808
2037
|
'cost': fee,
|
|
1809
2038
|
'currency': feeCurrency,
|
|
@@ -1832,7 +2061,7 @@ class woo extends woo$1 {
|
|
|
1832
2061
|
* @method
|
|
1833
2062
|
* @name woo#fetchOrderBook
|
|
1834
2063
|
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
1835
|
-
* @see https://
|
|
2064
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/orderbook
|
|
1836
2065
|
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
1837
2066
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
1838
2067
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -1845,40 +2074,45 @@ class woo extends woo$1 {
|
|
|
1845
2074
|
'symbol': market['id'],
|
|
1846
2075
|
};
|
|
1847
2076
|
if (limit !== undefined) {
|
|
1848
|
-
|
|
1849
|
-
request['max_level'] = limit;
|
|
2077
|
+
request['maxLevel'] = limit;
|
|
1850
2078
|
}
|
|
1851
|
-
const response = await this.
|
|
2079
|
+
const response = await this.v3PublicGetOrderbook(this.extend(request, params));
|
|
1852
2080
|
//
|
|
1853
|
-
// {
|
|
1854
|
-
// "success": true,
|
|
1855
|
-
// "timestamp": "1641562961192",
|
|
1856
|
-
// "asks": [
|
|
1857
|
-
// { price: '0.921', quantity: "76.01" },
|
|
1858
|
-
// { price: '0.933', quantity: "477.10" },
|
|
1859
|
-
// ...
|
|
1860
|
-
// ],
|
|
1861
|
-
// "bids": [
|
|
1862
|
-
// { price: '0.940', quantity: "13502.47" },
|
|
1863
|
-
// { price: '0.932', quantity: "43.91" },
|
|
1864
|
-
// ...
|
|
1865
|
-
// ]
|
|
1866
2081
|
// }
|
|
1867
|
-
//
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
2082
|
+
// {
|
|
2083
|
+
// "success": true,
|
|
2084
|
+
// "timestamp": 1751620923344,
|
|
2085
|
+
// "data": {
|
|
2086
|
+
// "asks": [
|
|
2087
|
+
// {
|
|
2088
|
+
// "price": "108924.86",
|
|
2089
|
+
// "quantity": "0.032126"
|
|
2090
|
+
// }
|
|
2091
|
+
// ],
|
|
2092
|
+
// "bids": [
|
|
2093
|
+
// {
|
|
2094
|
+
// "price": "108924.85",
|
|
2095
|
+
// "quantity": "1.714147"
|
|
2096
|
+
// }
|
|
2097
|
+
// ]
|
|
2098
|
+
// }
|
|
2099
|
+
// }
|
|
2100
|
+
//
|
|
2101
|
+
const data = this.safeDict(response, 'data', {});
|
|
2102
|
+
const timestamp = this.safeInteger(response, 'timestamp');
|
|
2103
|
+
return this.parseOrderBook(data, symbol, timestamp, 'bids', 'asks', 'price', 'quantity');
|
|
2104
|
+
}
|
|
2105
|
+
/**
|
|
2106
|
+
* @method
|
|
1873
2107
|
* @name woo#fetchOHLCV
|
|
1874
|
-
* @see https://
|
|
1875
|
-
* @see https://docs.woox.io/#kline-historical-data-public
|
|
2108
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/klineHistory
|
|
1876
2109
|
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
1877
2110
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
1878
2111
|
* @param {string} timeframe the length of time each candle represents
|
|
1879
2112
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
1880
2113
|
* @param {int} [limit] max=1000, max=100 when since is defined and is less than (now - (999 * (timeframe in ms)))
|
|
1881
2114
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2115
|
+
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
1882
2116
|
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
1883
2117
|
*/
|
|
1884
2118
|
async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
@@ -1888,75 +2122,47 @@ class woo extends woo$1 {
|
|
|
1888
2122
|
'symbol': market['id'],
|
|
1889
2123
|
'type': this.safeString(this.timeframes, timeframe, timeframe),
|
|
1890
2124
|
};
|
|
1891
|
-
|
|
1892
|
-
if ((limit !== undefined) && (since !== undefined)) {
|
|
1893
|
-
const oneThousandCandles = this.parseTimeframe(timeframe) * 1000 * 999; // 999 because there will be delay between this and the request, causing the latest candle to be excluded sometimes
|
|
1894
|
-
const startWithLimit = this.milliseconds() - oneThousandCandles;
|
|
1895
|
-
useHistEndpoint = since < startWithLimit;
|
|
1896
|
-
}
|
|
1897
|
-
if (useHistEndpoint) {
|
|
1898
|
-
request['start_time'] = since;
|
|
1899
|
-
}
|
|
1900
|
-
else if (limit !== undefined) { // the hist endpoint does not accept limit
|
|
2125
|
+
if (limit !== undefined) {
|
|
1901
2126
|
request['limit'] = Math.min(limit, 1000);
|
|
1902
2127
|
}
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
response = await this.v1PublicGetKline(this.extend(request, params));
|
|
1906
|
-
//
|
|
1907
|
-
// {
|
|
1908
|
-
// "success": true,
|
|
1909
|
-
// "rows": [
|
|
1910
|
-
// {
|
|
1911
|
-
// "open": "0.94238",
|
|
1912
|
-
// "close": "0.94271",
|
|
1913
|
-
// "low": "0.94238",
|
|
1914
|
-
// "high": "0.94296",
|
|
1915
|
-
// "volume": "73.55",
|
|
1916
|
-
// "amount": "69.32040520",
|
|
1917
|
-
// "symbol": "SPOT_WOO_USDT",
|
|
1918
|
-
// "type": "1m",
|
|
1919
|
-
// "start_timestamp": "1641584700000",
|
|
1920
|
-
// "end_timestamp": "1641584760000"
|
|
1921
|
-
// },
|
|
1922
|
-
// ...
|
|
1923
|
-
// ]
|
|
1924
|
-
// }
|
|
1925
|
-
//
|
|
2128
|
+
if (since !== undefined) {
|
|
2129
|
+
request['after'] = since;
|
|
1926
2130
|
}
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
// {
|
|
1932
|
-
// "success": true,
|
|
1933
|
-
// "data": {
|
|
1934
|
-
// "rows": [
|
|
1935
|
-
// {
|
|
1936
|
-
// "symbol": "SPOT_BTC_USDT",
|
|
1937
|
-
// "open": 44181.40000000,
|
|
1938
|
-
// "close": 44174.29000000,
|
|
1939
|
-
// "high": 44193.44000000,
|
|
1940
|
-
// "low": 44148.34000000,
|
|
1941
|
-
// "volume": 110.11930100,
|
|
1942
|
-
// "amount": 4863796.24318878,
|
|
1943
|
-
// "type": "1m",
|
|
1944
|
-
// "start_timestamp": 1704153600000,
|
|
1945
|
-
// "end_timestamp": 1704153660000
|
|
1946
|
-
// },
|
|
1947
|
-
// ...
|
|
1948
|
-
// ]
|
|
1949
|
-
// }
|
|
1950
|
-
// }
|
|
1951
|
-
//
|
|
2131
|
+
const until = this.safeInteger(params, 'until');
|
|
2132
|
+
params = this.omit(params, 'until');
|
|
2133
|
+
if (until !== undefined) {
|
|
2134
|
+
request['before'] = until;
|
|
1952
2135
|
}
|
|
1953
|
-
const
|
|
2136
|
+
const response = await this.v3PublicGetKlineHistory(this.extend(request, params));
|
|
2137
|
+
//
|
|
2138
|
+
// {
|
|
2139
|
+
// "success": true,
|
|
2140
|
+
// "data": {
|
|
2141
|
+
// "rows": [
|
|
2142
|
+
// {
|
|
2143
|
+
// "symbol": "SPOT_BTC_USDT",
|
|
2144
|
+
// "open": "108994.16",
|
|
2145
|
+
// "close": "108994.16",
|
|
2146
|
+
// "high": "108994.16",
|
|
2147
|
+
// "low": "108994.16",
|
|
2148
|
+
// "volume": "0",
|
|
2149
|
+
// "amount": "0",
|
|
2150
|
+
// "type": "1m",
|
|
2151
|
+
// "startTimestamp": 1751622120000,
|
|
2152
|
+
// "endTimestamp": 1751622180000
|
|
2153
|
+
// }
|
|
2154
|
+
// ]
|
|
2155
|
+
// },
|
|
2156
|
+
// "timestamp": 1751622205410
|
|
2157
|
+
// }
|
|
2158
|
+
//
|
|
2159
|
+
const data = this.safeDict(response, 'data', {});
|
|
2160
|
+
const rows = this.safeList(data, 'rows', []);
|
|
1954
2161
|
return this.parseOHLCVs(rows, market, timeframe, since, limit);
|
|
1955
2162
|
}
|
|
1956
2163
|
parseOHLCV(ohlcv, market = undefined) {
|
|
1957
|
-
// example response in fetchOHLCV
|
|
1958
2164
|
return [
|
|
1959
|
-
this.safeInteger(ohlcv, '
|
|
2165
|
+
this.safeInteger(ohlcv, 'startTimestamp'),
|
|
1960
2166
|
this.safeNumber(ohlcv, 'open'),
|
|
1961
2167
|
this.safeNumber(ohlcv, 'high'),
|
|
1962
2168
|
this.safeNumber(ohlcv, 'low'),
|
|
@@ -2011,7 +2217,7 @@ class woo extends woo$1 {
|
|
|
2011
2217
|
* @method
|
|
2012
2218
|
* @name woo#fetchMyTrades
|
|
2013
2219
|
* @description fetch all trades made by the user
|
|
2014
|
-
* @see https://
|
|
2220
|
+
* @see https://developer.woox.io/api-reference/endpoint/trading/get_transactions
|
|
2015
2221
|
* @param {string} symbol unified market symbol
|
|
2016
2222
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
2017
2223
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
@@ -2026,93 +2232,159 @@ class woo extends woo$1 {
|
|
|
2026
2232
|
if (paginate) {
|
|
2027
2233
|
return await this.fetchPaginatedCallIncremental('fetchMyTrades', symbol, since, limit, params, 'page', 500);
|
|
2028
2234
|
}
|
|
2029
|
-
|
|
2235
|
+
const request = {};
|
|
2030
2236
|
let market = undefined;
|
|
2031
2237
|
if (symbol !== undefined) {
|
|
2032
2238
|
market = this.market(symbol);
|
|
2033
2239
|
request['symbol'] = market['id'];
|
|
2034
2240
|
}
|
|
2035
2241
|
if (since !== undefined) {
|
|
2036
|
-
request['
|
|
2242
|
+
request['startTime'] = since;
|
|
2037
2243
|
}
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2244
|
+
const until = this.safeInteger(params, 'until'); // unified in milliseconds
|
|
2245
|
+
params = this.omit(params, ['until']);
|
|
2246
|
+
if (until !== undefined) {
|
|
2247
|
+
request['endTime'] = until;
|
|
2041
2248
|
}
|
|
2042
|
-
|
|
2043
|
-
request['
|
|
2249
|
+
if (limit !== undefined) {
|
|
2250
|
+
request['limit'] = limit;
|
|
2044
2251
|
}
|
|
2045
|
-
const response = await this.
|
|
2046
|
-
//
|
|
2047
|
-
//
|
|
2048
|
-
//
|
|
2049
|
-
// "
|
|
2050
|
-
//
|
|
2051
|
-
//
|
|
2052
|
-
//
|
|
2053
|
-
//
|
|
2054
|
-
//
|
|
2055
|
-
//
|
|
2056
|
-
//
|
|
2057
|
-
//
|
|
2058
|
-
//
|
|
2059
|
-
//
|
|
2060
|
-
//
|
|
2061
|
-
//
|
|
2062
|
-
//
|
|
2063
|
-
//
|
|
2064
|
-
//
|
|
2252
|
+
const response = await this.v3PrivateGetTradeTransactionHistory(this.extend(request, params));
|
|
2253
|
+
//
|
|
2254
|
+
// {
|
|
2255
|
+
// "success": true,
|
|
2256
|
+
// "data": {
|
|
2257
|
+
// "rows": [
|
|
2258
|
+
// {
|
|
2259
|
+
// "id": 1734947821,
|
|
2260
|
+
// "symbol": "SPOT_LTC_USDT",
|
|
2261
|
+
// "orderId": 60780383217,
|
|
2262
|
+
// "executedPrice": 87.86,
|
|
2263
|
+
// "executedQuantity": 0.1,
|
|
2264
|
+
// "fee": 0.0001,
|
|
2265
|
+
// "realizedPnl": null,
|
|
2266
|
+
// "feeAsset": "LTC",
|
|
2267
|
+
// "orderTag": "default",
|
|
2268
|
+
// "side": "BUY",
|
|
2269
|
+
// "executedTimestamp": "1752055173.630",
|
|
2270
|
+
// "isMaker": 0
|
|
2271
|
+
// }
|
|
2272
|
+
// ],
|
|
2273
|
+
// "meta": {
|
|
2274
|
+
// "total": 1,
|
|
2275
|
+
// "recordsPerPage": 100,
|
|
2276
|
+
// "currentPage": 1
|
|
2277
|
+
// }
|
|
2065
2278
|
// },
|
|
2066
|
-
//
|
|
2067
|
-
//
|
|
2068
|
-
//
|
|
2069
|
-
const
|
|
2279
|
+
// "timestamp": 1752055545121
|
|
2280
|
+
// }
|
|
2281
|
+
//
|
|
2282
|
+
const data = this.safeDict(response, 'data', {});
|
|
2283
|
+
const trades = this.safeList(data, 'rows', []);
|
|
2070
2284
|
return this.parseTrades(trades, market, since, limit, params);
|
|
2071
2285
|
}
|
|
2072
2286
|
/**
|
|
2073
2287
|
* @method
|
|
2074
2288
|
* @name woo#fetchAccounts
|
|
2075
2289
|
* @description fetch all the accounts associated with a profile
|
|
2076
|
-
* @see https://
|
|
2290
|
+
* @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
|
|
2291
|
+
* @see https://developer.woox.io/api-reference/endpoint/account/sub_accounts
|
|
2077
2292
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2078
2293
|
* @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
|
|
2079
2294
|
*/
|
|
2080
2295
|
async fetchAccounts(params = {}) {
|
|
2081
|
-
const
|
|
2296
|
+
const mainAccountPromise = this.v3PrivateGetAccountInfo(params);
|
|
2082
2297
|
//
|
|
2083
2298
|
// {
|
|
2084
|
-
// "
|
|
2085
|
-
//
|
|
2086
|
-
//
|
|
2087
|
-
//
|
|
2088
|
-
//
|
|
2089
|
-
//
|
|
2090
|
-
//
|
|
2091
|
-
//
|
|
2092
|
-
//
|
|
2093
|
-
//
|
|
2094
|
-
//
|
|
2095
|
-
//
|
|
2299
|
+
// "success": true,
|
|
2300
|
+
// "data": {
|
|
2301
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
2302
|
+
// "account": "carlos_jose_lima@yahoo.com",
|
|
2303
|
+
// "alias": "carlos_jose_lima@yahoo.com",
|
|
2304
|
+
// "otpauth": true,
|
|
2305
|
+
// "accountMode": "FUTURES",
|
|
2306
|
+
// "positionMode": "ONE_WAY",
|
|
2307
|
+
// "leverage": 0,
|
|
2308
|
+
// "marginRatio": "10",
|
|
2309
|
+
// "openMarginRatio": "10",
|
|
2310
|
+
// "initialMarginRatio": "10",
|
|
2311
|
+
// "maintenanceMarginRatio": "0.03",
|
|
2312
|
+
// "totalCollateral": "165.55629469",
|
|
2313
|
+
// "freeCollateral": "165.55629469",
|
|
2314
|
+
// "totalAccountValue": "167.32418611",
|
|
2315
|
+
// "totalTradingValue": "167.32418611",
|
|
2316
|
+
// "totalVaultValue": "0",
|
|
2317
|
+
// "totalStakingValue": "0",
|
|
2318
|
+
// "totalLaunchpadValue": "0",
|
|
2319
|
+
// "totalEarnValue": "0",
|
|
2320
|
+
// "referrerID": null,
|
|
2321
|
+
// "accountType": "Main"
|
|
2322
|
+
// },
|
|
2323
|
+
// "timestamp": 1752062807915
|
|
2324
|
+
// }
|
|
2325
|
+
//
|
|
2326
|
+
const subAccountPromise = this.v3PrivateGetAccountSubAccountsAll(params);
|
|
2327
|
+
//
|
|
2328
|
+
// {
|
|
2329
|
+
// "success": true,
|
|
2330
|
+
// "data": {
|
|
2331
|
+
// "rows": [
|
|
2332
|
+
// {
|
|
2333
|
+
// "applicationId": "6b43de5c-0955-4887-9862-d84e4689f9fe",
|
|
2334
|
+
// "name": "sub_account_2",
|
|
2335
|
+
// "createdTime": "1606897264.994"
|
|
2336
|
+
// },
|
|
2337
|
+
// ]
|
|
2338
|
+
// },
|
|
2339
|
+
// "timestamp": 1721295317627
|
|
2096
2340
|
// }
|
|
2097
2341
|
//
|
|
2098
|
-
const
|
|
2342
|
+
const [mainAccountResponse, subAccountResponse] = await Promise.all([mainAccountPromise, subAccountPromise]);
|
|
2343
|
+
const mainData = this.safeDict(mainAccountResponse, 'data', {});
|
|
2344
|
+
const mainRows = [mainData];
|
|
2345
|
+
const subData = this.safeDict(subAccountResponse, 'data', {});
|
|
2346
|
+
const subRows = this.safeList(subData, 'rows', []);
|
|
2347
|
+
const rows = this.arrayConcat(mainRows, subRows);
|
|
2099
2348
|
return this.parseAccounts(rows, params);
|
|
2100
2349
|
}
|
|
2101
2350
|
parseAccount(account) {
|
|
2102
2351
|
//
|
|
2103
2352
|
// {
|
|
2104
|
-
// "
|
|
2105
|
-
// "account": "
|
|
2106
|
-
// "
|
|
2353
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
2354
|
+
// "account": "carlos_jose_lima@yahoo.com",
|
|
2355
|
+
// "alias": "carlos_jose_lima@yahoo.com",
|
|
2356
|
+
// "otpauth": true,
|
|
2357
|
+
// "accountMode": "FUTURES",
|
|
2358
|
+
// "positionMode": "ONE_WAY",
|
|
2359
|
+
// "leverage": 0,
|
|
2360
|
+
// "marginRatio": "10",
|
|
2361
|
+
// "openMarginRatio": "10",
|
|
2362
|
+
// "initialMarginRatio": "10",
|
|
2363
|
+
// "maintenanceMarginRatio": "0.03",
|
|
2364
|
+
// "totalCollateral": "165.55629469",
|
|
2365
|
+
// "freeCollateral": "165.55629469",
|
|
2366
|
+
// "totalAccountValue": "167.32418611",
|
|
2367
|
+
// "totalTradingValue": "167.32418611",
|
|
2368
|
+
// "totalVaultValue": "0",
|
|
2369
|
+
// "totalStakingValue": "0",
|
|
2370
|
+
// "totalLaunchpadValue": "0",
|
|
2371
|
+
// "totalEarnValue": "0",
|
|
2372
|
+
// "referrerID": null,
|
|
2373
|
+
// "accountType": "Main"
|
|
2374
|
+
// }
|
|
2375
|
+
//
|
|
2376
|
+
// {
|
|
2377
|
+
// "applicationId": "6b43de5c-0955-4887-9862-d84e4689f9fe",
|
|
2378
|
+
// "name": "sub_account_2",
|
|
2379
|
+
// "createdTime": "1606897264.994"
|
|
2107
2380
|
// }
|
|
2108
2381
|
//
|
|
2109
|
-
const accountId = this.safeString(account, 'account');
|
|
2110
2382
|
return {
|
|
2111
2383
|
'info': account,
|
|
2112
|
-
'id': this.safeString(account, '
|
|
2113
|
-
'name':
|
|
2384
|
+
'id': this.safeString(account, 'applicationId'),
|
|
2385
|
+
'name': this.safeStringN(account, ['name', 'account', 'alias']),
|
|
2114
2386
|
'code': undefined,
|
|
2115
|
-
'type':
|
|
2387
|
+
'type': this.safeStringLower(account, 'accountType', 'subaccount'),
|
|
2116
2388
|
};
|
|
2117
2389
|
}
|
|
2118
2390
|
/**
|
|
@@ -2171,7 +2443,7 @@ class woo extends woo$1 {
|
|
|
2171
2443
|
* @method
|
|
2172
2444
|
* @name woo#fetchDepositAddress
|
|
2173
2445
|
* @description fetch the deposit address for a currency associated with this account
|
|
2174
|
-
* @see https://
|
|
2446
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_deposit
|
|
2175
2447
|
* @param {string} code unified currency code
|
|
2176
2448
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2177
2449
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
@@ -2180,18 +2452,25 @@ class woo extends woo$1 {
|
|
|
2180
2452
|
// this method is TODO because of networks unification
|
|
2181
2453
|
await this.loadMarkets();
|
|
2182
2454
|
const currency = this.currency(code);
|
|
2183
|
-
let
|
|
2184
|
-
[
|
|
2455
|
+
let networkCode = undefined;
|
|
2456
|
+
[networkCode, params] = this.handleNetworkCodeAndParams(params);
|
|
2185
2457
|
const request = {
|
|
2186
|
-
'token':
|
|
2458
|
+
'token': currency['id'],
|
|
2459
|
+
'network': this.networkCodeToId(networkCode),
|
|
2187
2460
|
};
|
|
2188
|
-
const response = await this.
|
|
2189
|
-
//
|
|
2190
|
-
//
|
|
2191
|
-
//
|
|
2192
|
-
//
|
|
2193
|
-
//
|
|
2194
|
-
|
|
2461
|
+
const response = await this.v3PrivateGetAssetWalletDeposit(this.extend(request, params));
|
|
2462
|
+
//
|
|
2463
|
+
// {
|
|
2464
|
+
// "success": true,
|
|
2465
|
+
// "data": {
|
|
2466
|
+
// "address": "0x31d64B3230f8baDD91dE1710A65DF536aF8f7cDa",
|
|
2467
|
+
// "extra": ""
|
|
2468
|
+
// },
|
|
2469
|
+
// "timestamp": 1721300689532
|
|
2470
|
+
// }
|
|
2471
|
+
//
|
|
2472
|
+
const data = this.safeDict(response, 'data', {});
|
|
2473
|
+
return this.parseDepositAddress(data, currency);
|
|
2195
2474
|
}
|
|
2196
2475
|
getDedicatedNetworkId(currency, params) {
|
|
2197
2476
|
let networkCode = undefined;
|
|
@@ -2222,61 +2501,68 @@ class woo extends woo$1 {
|
|
|
2222
2501
|
let currency = undefined;
|
|
2223
2502
|
if (code !== undefined) {
|
|
2224
2503
|
currency = this.currency(code);
|
|
2225
|
-
request['
|
|
2504
|
+
request['token'] = currency['id'];
|
|
2505
|
+
}
|
|
2506
|
+
let networkCode = undefined;
|
|
2507
|
+
[networkCode, params] = this.handleNetworkCodeAndParams(params);
|
|
2508
|
+
if (networkCode !== undefined) {
|
|
2509
|
+
request['network'] = this.networkCodeToId(networkCode);
|
|
2226
2510
|
}
|
|
2227
2511
|
if (since !== undefined) {
|
|
2228
|
-
request['
|
|
2512
|
+
request['startTime'] = since;
|
|
2229
2513
|
}
|
|
2230
2514
|
if (limit !== undefined) {
|
|
2231
|
-
request['
|
|
2515
|
+
request['size'] = Math.min(limit, 1000);
|
|
2232
2516
|
}
|
|
2233
2517
|
const transactionType = this.safeString(params, 'type');
|
|
2234
2518
|
params = this.omit(params, 'type');
|
|
2235
2519
|
if (transactionType !== undefined) {
|
|
2236
2520
|
request['type'] = transactionType;
|
|
2237
2521
|
}
|
|
2238
|
-
const response = await this.
|
|
2239
|
-
//
|
|
2240
|
-
//
|
|
2241
|
-
//
|
|
2242
|
-
// "
|
|
2243
|
-
//
|
|
2244
|
-
//
|
|
2245
|
-
//
|
|
2246
|
-
//
|
|
2247
|
-
//
|
|
2248
|
-
//
|
|
2249
|
-
//
|
|
2250
|
-
//
|
|
2251
|
-
//
|
|
2252
|
-
//
|
|
2253
|
-
//
|
|
2254
|
-
//
|
|
2255
|
-
//
|
|
2256
|
-
//
|
|
2257
|
-
//
|
|
2258
|
-
//
|
|
2259
|
-
//
|
|
2260
|
-
//
|
|
2261
|
-
//
|
|
2262
|
-
//
|
|
2263
|
-
//
|
|
2264
|
-
//
|
|
2265
|
-
//
|
|
2266
|
-
//
|
|
2267
|
-
//
|
|
2268
|
-
//
|
|
2269
|
-
//
|
|
2270
|
-
//
|
|
2271
|
-
//
|
|
2272
|
-
//
|
|
2273
|
-
|
|
2522
|
+
const response = await this.v3PrivateGetAssetWalletHistory(this.extend(request, params));
|
|
2523
|
+
//
|
|
2524
|
+
// {
|
|
2525
|
+
// "success": true,
|
|
2526
|
+
// "data": {
|
|
2527
|
+
// "rows": [
|
|
2528
|
+
// {
|
|
2529
|
+
// "createdTime": "1734964440.523",
|
|
2530
|
+
// "updatedTime": "1734964614.081",
|
|
2531
|
+
// "id": "24122314340000585",
|
|
2532
|
+
// "externalId": "241223143600621",
|
|
2533
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
2534
|
+
// "token": "ARB_USDCNATIVE",
|
|
2535
|
+
// "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
|
|
2536
|
+
// "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
|
|
2537
|
+
// "extra": "",
|
|
2538
|
+
// "type": "BALANCE",
|
|
2539
|
+
// "tokenSide": "WITHDRAW",
|
|
2540
|
+
// "amount": "10.00000000",
|
|
2541
|
+
// "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
|
|
2542
|
+
// "feeToken": "USDC",
|
|
2543
|
+
// "feeAmount": "2",
|
|
2544
|
+
// "status": "COMPLETED",
|
|
2545
|
+
// "confirmingThreshold": null,
|
|
2546
|
+
// "confirmedNumber": null
|
|
2547
|
+
// }
|
|
2548
|
+
// ],
|
|
2549
|
+
// "meta": {
|
|
2550
|
+
// "total": 1,
|
|
2551
|
+
// "records_per_page": 25,
|
|
2552
|
+
// "current_page": 1
|
|
2553
|
+
// }
|
|
2554
|
+
// },
|
|
2555
|
+
// "timestamp": 1752485344719
|
|
2556
|
+
// }
|
|
2557
|
+
//
|
|
2558
|
+
const data = this.safeDict(response, 'data', {});
|
|
2559
|
+
return [currency, this.safeList(data, 'rows', [])];
|
|
2274
2560
|
}
|
|
2275
2561
|
/**
|
|
2276
2562
|
* @method
|
|
2277
2563
|
* @name woo#fetchLedger
|
|
2278
2564
|
* @description fetch the history of changes, actions done by the user or operations that altered balance of the user
|
|
2279
|
-
* @see https://
|
|
2565
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
|
|
2280
2566
|
* @param {string} [code] unified currency code, default is undefined
|
|
2281
2567
|
* @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
|
|
2282
2568
|
* @param {int} [limit] max number of ledger entries to return, default is undefined
|
|
@@ -2290,22 +2576,43 @@ class woo extends woo$1 {
|
|
|
2290
2576
|
return this.parseLedger(rows, currency, since, limit, params);
|
|
2291
2577
|
}
|
|
2292
2578
|
parseLedgerEntry(item, currency = undefined) {
|
|
2579
|
+
//
|
|
2580
|
+
// {
|
|
2581
|
+
// "createdTime": "1734964440.523",
|
|
2582
|
+
// "updatedTime": "1734964614.081",
|
|
2583
|
+
// "id": "24122314340000585",
|
|
2584
|
+
// "externalId": "241223143600621",
|
|
2585
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
2586
|
+
// "token": "ARB_USDCNATIVE",
|
|
2587
|
+
// "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
|
|
2588
|
+
// "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
|
|
2589
|
+
// "extra": "",
|
|
2590
|
+
// "type": "BALANCE",
|
|
2591
|
+
// "tokenSide": "WITHDRAW",
|
|
2592
|
+
// "amount": "10.00000000",
|
|
2593
|
+
// "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
|
|
2594
|
+
// "feeToken": "USDC",
|
|
2595
|
+
// "feeAmount": "2",
|
|
2596
|
+
// "status": "COMPLETED",
|
|
2597
|
+
// "confirmingThreshold": null,
|
|
2598
|
+
// "confirmedNumber": null
|
|
2599
|
+
// }
|
|
2600
|
+
//
|
|
2293
2601
|
const networkizedCode = this.safeString(item, 'token');
|
|
2294
|
-
const
|
|
2295
|
-
const code = currencyDefined['code'];
|
|
2602
|
+
const code = this.safeCurrencyCode(networkizedCode, currency);
|
|
2296
2603
|
currency = this.safeCurrency(code, currency);
|
|
2297
2604
|
const amount = this.safeNumber(item, 'amount');
|
|
2298
|
-
const side = this.safeString(item, '
|
|
2605
|
+
const side = this.safeString(item, 'tokenSide');
|
|
2299
2606
|
const direction = (side === 'DEPOSIT') ? 'in' : 'out';
|
|
2300
|
-
const timestamp = this.safeTimestamp(item, '
|
|
2301
|
-
const fee = this.parseTokenAndFeeTemp(item, '
|
|
2607
|
+
const timestamp = this.safeTimestamp(item, 'createdTime');
|
|
2608
|
+
const fee = this.parseTokenAndFeeTemp(item, ['feeToken'], ['feeAmount']);
|
|
2302
2609
|
return this.safeLedgerEntry({
|
|
2303
2610
|
'info': item,
|
|
2304
2611
|
'id': this.safeString(item, 'id'),
|
|
2305
2612
|
'currency': code,
|
|
2306
2613
|
'account': this.safeString(item, 'account'),
|
|
2307
2614
|
'referenceAccount': undefined,
|
|
2308
|
-
'referenceId': this.safeString(item, '
|
|
2615
|
+
'referenceId': this.safeString(item, 'txId'),
|
|
2309
2616
|
'status': this.parseTransactionStatus(this.safeString(item, 'status')),
|
|
2310
2617
|
'amount': amount,
|
|
2311
2618
|
'before': undefined,
|
|
@@ -2344,7 +2651,7 @@ class woo extends woo$1 {
|
|
|
2344
2651
|
* @method
|
|
2345
2652
|
* @name woo#fetchDeposits
|
|
2346
2653
|
* @description fetch all deposits made to an account
|
|
2347
|
-
* @see https://
|
|
2654
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
|
|
2348
2655
|
* @param {string} code unified currency code
|
|
2349
2656
|
* @param {int} [since] the earliest time in ms to fetch deposits for
|
|
2350
2657
|
* @param {int} [limit] the maximum number of deposits structures to retrieve
|
|
@@ -2353,7 +2660,7 @@ class woo extends woo$1 {
|
|
|
2353
2660
|
*/
|
|
2354
2661
|
async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
2355
2662
|
const request = {
|
|
2356
|
-
'
|
|
2663
|
+
'tokenSide': 'DEPOSIT',
|
|
2357
2664
|
};
|
|
2358
2665
|
return await this.fetchDepositsWithdrawals(code, since, limit, this.extend(request, params));
|
|
2359
2666
|
}
|
|
@@ -2361,7 +2668,7 @@ class woo extends woo$1 {
|
|
|
2361
2668
|
* @method
|
|
2362
2669
|
* @name woo#fetchWithdrawals
|
|
2363
2670
|
* @description fetch all withdrawals made from an account
|
|
2364
|
-
* @see https://
|
|
2671
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
|
|
2365
2672
|
* @param {string} code unified currency code
|
|
2366
2673
|
* @param {int} [since] the earliest time in ms to fetch withdrawals for
|
|
2367
2674
|
* @param {int} [limit] the maximum number of withdrawals structures to retrieve
|
|
@@ -2370,7 +2677,7 @@ class woo extends woo$1 {
|
|
|
2370
2677
|
*/
|
|
2371
2678
|
async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
2372
2679
|
const request = {
|
|
2373
|
-
'
|
|
2680
|
+
'tokenSide': 'WITHDRAW',
|
|
2374
2681
|
};
|
|
2375
2682
|
return await this.fetchDepositsWithdrawals(code, since, limit, this.extend(request, params));
|
|
2376
2683
|
}
|
|
@@ -2378,7 +2685,7 @@ class woo extends woo$1 {
|
|
|
2378
2685
|
* @method
|
|
2379
2686
|
* @name woo#fetchDepositsWithdrawals
|
|
2380
2687
|
* @description fetch history of deposits and withdrawals
|
|
2381
|
-
* @see https://
|
|
2688
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_wallet_history
|
|
2382
2689
|
* @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
|
|
2383
2690
|
* @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
|
|
2384
2691
|
* @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
|
|
@@ -2392,36 +2699,46 @@ class woo extends woo$1 {
|
|
|
2392
2699
|
const currencyRows = await this.getAssetHistoryRows(code, since, limit, this.extend(request, params));
|
|
2393
2700
|
const currency = this.safeValue(currencyRows, 0);
|
|
2394
2701
|
const rows = this.safeList(currencyRows, 1);
|
|
2702
|
+
return this.parseTransactions(rows, currency, since, limit, params);
|
|
2703
|
+
}
|
|
2704
|
+
parseTransaction(transaction, currency = undefined) {
|
|
2395
2705
|
//
|
|
2396
2706
|
// {
|
|
2397
|
-
// "
|
|
2398
|
-
// "
|
|
2399
|
-
//
|
|
2400
|
-
//
|
|
2401
|
-
//
|
|
2402
|
-
//
|
|
2403
|
-
// "
|
|
2707
|
+
// "createdTime": "1734964440.523",
|
|
2708
|
+
// "updatedTime": "1734964614.081",
|
|
2709
|
+
// "id": "24122314340000585",
|
|
2710
|
+
// "externalId": "241223143600621",
|
|
2711
|
+
// "applicationId": "251bf5c4-f3c8-4544-bb8b-80001007c3c0",
|
|
2712
|
+
// "token": "ARB_USDCNATIVE",
|
|
2713
|
+
// "targetAddress": "0x4d6802d2736daa85e6242ef0dc0f00aa0e68f635",
|
|
2714
|
+
// "sourceAddress": "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4",
|
|
2715
|
+
// "extra": "",
|
|
2716
|
+
// "type": "BALANCE",
|
|
2717
|
+
// "tokenSide": "WITHDRAW",
|
|
2718
|
+
// "amount": "10.00000000",
|
|
2719
|
+
// "txId": "0x891ade0a47fd55466bb9d06702bea4edcb75ed9367d9afbc47b93a84f496d2e6",
|
|
2720
|
+
// "feeToken": "USDC",
|
|
2721
|
+
// "feeAmount": "2",
|
|
2722
|
+
// "status": "COMPLETED",
|
|
2723
|
+
// "confirmingThreshold": null,
|
|
2724
|
+
// "confirmedNumber": null
|
|
2404
2725
|
// }
|
|
2405
2726
|
//
|
|
2406
|
-
return this.parseTransactions(rows, currency, since, limit, params);
|
|
2407
|
-
}
|
|
2408
|
-
parseTransaction(transaction, currency = undefined) {
|
|
2409
|
-
// example in fetchLedger
|
|
2410
2727
|
const networkizedCode = this.safeString(transaction, 'token');
|
|
2411
2728
|
const currencyDefined = this.getCurrencyFromChaincode(networkizedCode, currency);
|
|
2412
2729
|
const code = currencyDefined['code'];
|
|
2413
|
-
let movementDirection = this.
|
|
2730
|
+
let movementDirection = this.safeStringLower2(transaction, 'token_side', 'tokenSide');
|
|
2414
2731
|
if (movementDirection === 'withdraw') {
|
|
2415
2732
|
movementDirection = 'withdrawal';
|
|
2416
2733
|
}
|
|
2417
|
-
const fee = this.parseTokenAndFeeTemp(transaction, 'fee_token', 'fee_amount');
|
|
2418
|
-
const addressTo = this.
|
|
2419
|
-
const addressFrom = this.
|
|
2420
|
-
const timestamp = this.
|
|
2734
|
+
const fee = this.parseTokenAndFeeTemp(transaction, ['fee_token', 'feeToken'], ['fee_amount', 'feeAmount']);
|
|
2735
|
+
const addressTo = this.safeString2(transaction, 'target_address', 'targetAddress');
|
|
2736
|
+
const addressFrom = this.safeString2(transaction, 'source_address', 'sourceAddress');
|
|
2737
|
+
const timestamp = this.safeTimestamp2(transaction, 'created_time', 'createdTime');
|
|
2421
2738
|
return {
|
|
2422
2739
|
'info': transaction,
|
|
2423
|
-
'id': this.
|
|
2424
|
-
'txid': this.
|
|
2740
|
+
'id': this.safeStringN(transaction, ['id', 'withdraw_id', 'withdrawId']),
|
|
2741
|
+
'txid': this.safeString2(transaction, 'tx_id', 'txId'),
|
|
2425
2742
|
'timestamp': timestamp,
|
|
2426
2743
|
'datetime': this.iso8601(timestamp),
|
|
2427
2744
|
'address': undefined,
|
|
@@ -2434,7 +2751,7 @@ class woo extends woo$1 {
|
|
|
2434
2751
|
'amount': this.safeNumber(transaction, 'amount'),
|
|
2435
2752
|
'currency': code,
|
|
2436
2753
|
'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
|
|
2437
|
-
'updated': this.
|
|
2754
|
+
'updated': this.safeTimestamp2(transaction, 'updated_time', 'updatedTime'),
|
|
2438
2755
|
'comment': undefined,
|
|
2439
2756
|
'internal': undefined,
|
|
2440
2757
|
'fee': fee,
|
|
@@ -2493,7 +2810,7 @@ class woo extends woo$1 {
|
|
|
2493
2810
|
* @method
|
|
2494
2811
|
* @name woo#fetchTransfers
|
|
2495
2812
|
* @description fetch a history of internal transfers made on an account
|
|
2496
|
-
* @see https://
|
|
2813
|
+
* @see https://developer.woox.io/api-reference/endpoint/assets/get_transfer_history
|
|
2497
2814
|
* @param {string} code unified currency code of the currency transferred
|
|
2498
2815
|
* @param {int} [since] the earliest time in ms to fetch transfers for
|
|
2499
2816
|
* @param {int} [limit] the maximum number of transfers structures to retrieve
|
|
@@ -2503,44 +2820,56 @@ class woo extends woo$1 {
|
|
|
2503
2820
|
*/
|
|
2504
2821
|
async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
2505
2822
|
const request = {};
|
|
2823
|
+
let currency = undefined;
|
|
2824
|
+
if (code !== undefined) {
|
|
2825
|
+
currency = this.currency(code);
|
|
2826
|
+
}
|
|
2506
2827
|
if (limit !== undefined) {
|
|
2507
2828
|
request['size'] = limit;
|
|
2508
2829
|
}
|
|
2509
2830
|
if (since !== undefined) {
|
|
2510
|
-
request['
|
|
2831
|
+
request['startTime'] = since;
|
|
2511
2832
|
}
|
|
2512
2833
|
const until = this.safeInteger(params, 'until'); // unified in milliseconds
|
|
2513
2834
|
params = this.omit(params, ['until']);
|
|
2514
2835
|
if (until !== undefined) {
|
|
2515
|
-
request['
|
|
2836
|
+
request['endTime'] = until;
|
|
2516
2837
|
}
|
|
2517
|
-
const response = await this.
|
|
2838
|
+
const response = await this.v3PrivateGetAssetTransferHistory(this.extend(request, params));
|
|
2518
2839
|
//
|
|
2519
2840
|
// {
|
|
2520
|
-
// "
|
|
2521
|
-
//
|
|
2522
|
-
//
|
|
2523
|
-
//
|
|
2524
|
-
//
|
|
2525
|
-
//
|
|
2526
|
-
//
|
|
2527
|
-
//
|
|
2528
|
-
//
|
|
2529
|
-
//
|
|
2530
|
-
//
|
|
2531
|
-
//
|
|
2841
|
+
// "success": true,
|
|
2842
|
+
// "data": {
|
|
2843
|
+
// "rows": [
|
|
2844
|
+
// {
|
|
2845
|
+
// "id": 225,
|
|
2846
|
+
// "token": "USDT",
|
|
2847
|
+
// "amount": "1000000",
|
|
2848
|
+
// "status": "COMPLETED",
|
|
2849
|
+
// "from": {
|
|
2850
|
+
// "applicationId": "046b5c5c-5b44-4d27-9593-ddc32c0a08ae",
|
|
2851
|
+
// "accountName": "Main"
|
|
2852
|
+
// },
|
|
2853
|
+
// "to": {
|
|
2854
|
+
// "applicationId": "082ae5ae-e26a-4fb1-be5b-03e5b4867663",
|
|
2855
|
+
// "accountName": "sub001"
|
|
2856
|
+
// },
|
|
2857
|
+
// "createdTime": "1642660941.534",
|
|
2858
|
+
// "updatedTime": "1642660941.950"
|
|
2859
|
+
// }
|
|
2860
|
+
// ],
|
|
2861
|
+
// "meta": {
|
|
2862
|
+
// "total": 46,
|
|
2863
|
+
// "recordsPerPage": 1,
|
|
2864
|
+
// "currentPage": 1
|
|
2532
2865
|
// }
|
|
2533
|
-
// ],
|
|
2534
|
-
// "meta": {
|
|
2535
|
-
// "total": 50,
|
|
2536
|
-
// "records_per_page": 25,
|
|
2537
|
-
// "current_page": 1
|
|
2538
2866
|
// },
|
|
2539
|
-
// "
|
|
2867
|
+
// "timestamp": 1721295317627
|
|
2540
2868
|
// }
|
|
2541
2869
|
//
|
|
2542
|
-
const data = this.
|
|
2543
|
-
|
|
2870
|
+
const data = this.safeDict(response, 'data', {});
|
|
2871
|
+
const rows = this.safeList(data, 'rows', []);
|
|
2872
|
+
return this.parseTransfers(rows, currency, since, limit, params);
|
|
2544
2873
|
}
|
|
2545
2874
|
parseTransfer(transfer, currency = undefined) {
|
|
2546
2875
|
//
|
|
@@ -2557,6 +2886,22 @@ class woo extends woo$1 {
|
|
|
2557
2886
|
// "created_time": "1709022325.427",
|
|
2558
2887
|
// "updated_time": "1709022325.542"
|
|
2559
2888
|
// }
|
|
2889
|
+
// {
|
|
2890
|
+
// "id": 225,
|
|
2891
|
+
// "token": "USDT",
|
|
2892
|
+
// "amount": "1000000",
|
|
2893
|
+
// "status": "COMPLETED",
|
|
2894
|
+
// "from": {
|
|
2895
|
+
// "applicationId": "046b5c5c-5b44-4d27-9593-ddc32c0a08ae",
|
|
2896
|
+
// "accountName": "Main"
|
|
2897
|
+
// },
|
|
2898
|
+
// "to": {
|
|
2899
|
+
// "applicationId": "082ae5ae-e26a-4fb1-be5b-03e5b4867663",
|
|
2900
|
+
// "accountName": "sub001"
|
|
2901
|
+
// },
|
|
2902
|
+
// "createdTime": "1642660941.534",
|
|
2903
|
+
// "updatedTime": "1642660941.950"
|
|
2904
|
+
// }
|
|
2560
2905
|
//
|
|
2561
2906
|
// transfer
|
|
2562
2907
|
// {
|
|
@@ -2564,23 +2909,23 @@ class woo extends woo$1 {
|
|
|
2564
2909
|
// "id": 200
|
|
2565
2910
|
// }
|
|
2566
2911
|
//
|
|
2567
|
-
const
|
|
2568
|
-
const
|
|
2569
|
-
const code = currencyDefined['code'];
|
|
2570
|
-
const timestamp = this.safeTimestamp(transfer, 'created_time');
|
|
2912
|
+
const code = this.safeCurrencyCode(this.safeString(transfer, 'token'), currency);
|
|
2913
|
+
const timestamp = this.safeTimestamp(transfer, 'createdTime');
|
|
2571
2914
|
const success = this.safeBool(transfer, 'success');
|
|
2572
2915
|
let status = undefined;
|
|
2573
2916
|
if (success !== undefined) {
|
|
2574
2917
|
status = success ? 'ok' : 'failed';
|
|
2575
2918
|
}
|
|
2919
|
+
const fromAccount = this.safeDict(transfer, 'from', {});
|
|
2920
|
+
const toAccount = this.safeDict(transfer, 'to', {});
|
|
2576
2921
|
return {
|
|
2577
2922
|
'id': this.safeString(transfer, 'id'),
|
|
2578
2923
|
'timestamp': timestamp,
|
|
2579
2924
|
'datetime': this.iso8601(timestamp),
|
|
2580
2925
|
'currency': code,
|
|
2581
2926
|
'amount': this.safeNumber(transfer, 'amount'),
|
|
2582
|
-
'fromAccount': this.safeString(
|
|
2583
|
-
'toAccount': this.safeString(
|
|
2927
|
+
'fromAccount': this.safeString(fromAccount, 'applicationId'),
|
|
2928
|
+
'toAccount': this.safeString(toAccount, 'applicationId'),
|
|
2584
2929
|
'status': this.parseTransferStatus(this.safeString(transfer, 'status', status)),
|
|
2585
2930
|
'info': transfer,
|
|
2586
2931
|
};
|
|
@@ -2707,7 +3052,7 @@ class woo extends woo$1 {
|
|
|
2707
3052
|
}
|
|
2708
3053
|
else {
|
|
2709
3054
|
this.checkRequiredCredentials();
|
|
2710
|
-
if (method === 'POST' && (path === '
|
|
3055
|
+
if (method === 'POST' && (path === 'trade/algoOrder' || path === 'trade/order')) {
|
|
2711
3056
|
const isSandboxMode = this.safeBool(this.options, 'sandboxMode', false);
|
|
2712
3057
|
if (!isSandboxMode) {
|
|
2713
3058
|
const applicationId = 'bc830de7-50f3-460b-9ee0-f430f83f9dad';
|
|
@@ -2731,9 +3076,10 @@ class woo extends woo$1 {
|
|
|
2731
3076
|
};
|
|
2732
3077
|
if (version === 'v3') {
|
|
2733
3078
|
auth = ts + method + '/' + version + '/' + pathWithParams;
|
|
2734
|
-
if (method === 'POST' || method === 'PUT'
|
|
3079
|
+
if (method === 'POST' || method === 'PUT') {
|
|
2735
3080
|
body = this.json(params);
|
|
2736
3081
|
auth += body;
|
|
3082
|
+
headers['content-type'] = 'application/json';
|
|
2737
3083
|
}
|
|
2738
3084
|
else {
|
|
2739
3085
|
if (Object.keys(params).length) {
|
|
@@ -2742,7 +3088,6 @@ class woo extends woo$1 {
|
|
|
2742
3088
|
auth += '?' + query;
|
|
2743
3089
|
}
|
|
2744
3090
|
}
|
|
2745
|
-
headers['content-type'] = 'application/json';
|
|
2746
3091
|
}
|
|
2747
3092
|
else {
|
|
2748
3093
|
auth = this.urlencode(params);
|
|
@@ -2781,25 +3126,26 @@ class woo extends woo$1 {
|
|
|
2781
3126
|
parseIncome(income, market = undefined) {
|
|
2782
3127
|
//
|
|
2783
3128
|
// {
|
|
2784
|
-
// "id":
|
|
2785
|
-
// "symbol":"PERP_BTC_USDT",
|
|
2786
|
-
// "
|
|
2787
|
-
// "
|
|
2788
|
-
// "
|
|
2789
|
-
// "
|
|
2790
|
-
// "
|
|
2791
|
-
// "
|
|
2792
|
-
// "
|
|
3129
|
+
// "id": 1286360,
|
|
3130
|
+
// "symbol": "PERP_BTC_USDT",
|
|
3131
|
+
// "fundingRate": -0.00001445,
|
|
3132
|
+
// "markPrice": "26930.60000000",
|
|
3133
|
+
// "fundingFee": "9.56021744",
|
|
3134
|
+
// "fundingIntervalHours": 8,
|
|
3135
|
+
// "paymentType": "Pay",
|
|
3136
|
+
// "status": "COMPLETED",
|
|
3137
|
+
// "createdTime": 1696060873259,
|
|
3138
|
+
// "updatedTime": 1696060873286
|
|
2793
3139
|
// }
|
|
2794
3140
|
//
|
|
2795
3141
|
const marketId = this.safeString(income, 'symbol');
|
|
2796
3142
|
const symbol = this.safeSymbol(marketId, market);
|
|
2797
|
-
let amount = this.safeString(income, '
|
|
3143
|
+
let amount = this.safeString(income, 'fundingFee');
|
|
2798
3144
|
const code = this.safeCurrencyCode('USD');
|
|
2799
3145
|
const id = this.safeString(income, 'id');
|
|
2800
|
-
const timestamp = this.
|
|
2801
|
-
const rate = this.safeNumber(income, '
|
|
2802
|
-
const paymentType = this.safeString(income, '
|
|
3146
|
+
const timestamp = this.safeInteger(income, 'updatedTime');
|
|
3147
|
+
const rate = this.safeNumber(income, 'fundingRate');
|
|
3148
|
+
const paymentType = this.safeString(income, 'paymentType');
|
|
2803
3149
|
amount = (paymentType === 'Pay') ? Precise["default"].stringNeg(amount) : amount;
|
|
2804
3150
|
return {
|
|
2805
3151
|
'info': income,
|
|
@@ -2816,7 +3162,7 @@ class woo extends woo$1 {
|
|
|
2816
3162
|
* @method
|
|
2817
3163
|
* @name woo#fetchFundingHistory
|
|
2818
3164
|
* @description fetch the history of funding payments paid and received on this account
|
|
2819
|
-
* @see https://
|
|
3165
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/get_fundingFee_history
|
|
2820
3166
|
* @param {string} [symbol] unified market symbol
|
|
2821
3167
|
* @param {int} [since] the earliest time in ms to fetch funding history for
|
|
2822
3168
|
* @param {int} [limit] the maximum number of funding history structures to retrieve
|
|
@@ -2829,7 +3175,7 @@ class woo extends woo$1 {
|
|
|
2829
3175
|
let paginate = false;
|
|
2830
3176
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchFundingHistory', 'paginate');
|
|
2831
3177
|
if (paginate) {
|
|
2832
|
-
return await this.
|
|
3178
|
+
return await this.fetchPaginatedCallIncremental('fetchFundingHistory', symbol, since, limit, params, 'page', 500);
|
|
2833
3179
|
}
|
|
2834
3180
|
const request = {};
|
|
2835
3181
|
let market = undefined;
|
|
@@ -2838,70 +3184,67 @@ class woo extends woo$1 {
|
|
|
2838
3184
|
request['symbol'] = market['id'];
|
|
2839
3185
|
}
|
|
2840
3186
|
if (since !== undefined) {
|
|
2841
|
-
request['
|
|
3187
|
+
request['startTime'] = since;
|
|
2842
3188
|
}
|
|
2843
|
-
|
|
2844
|
-
|
|
3189
|
+
const until = this.safeInteger(params, 'until'); // unified in milliseconds
|
|
3190
|
+
params = this.omit(params, ['until']);
|
|
3191
|
+
if (until !== undefined) {
|
|
3192
|
+
request['endTime'] = until;
|
|
2845
3193
|
}
|
|
2846
|
-
|
|
2847
|
-
request['size'] =
|
|
3194
|
+
if (limit !== undefined) {
|
|
3195
|
+
request['size'] = Math.min(limit, 500);
|
|
2848
3196
|
}
|
|
2849
|
-
const response = await this.
|
|
3197
|
+
const response = await this.v3PrivateGetFuturesFundingFeeHistory(this.extend(request, params));
|
|
2850
3198
|
//
|
|
2851
3199
|
// {
|
|
2852
|
-
// "
|
|
2853
|
-
//
|
|
2854
|
-
//
|
|
2855
|
-
// "
|
|
2856
|
-
// "
|
|
2857
|
-
// "
|
|
2858
|
-
//
|
|
2859
|
-
//
|
|
2860
|
-
//
|
|
2861
|
-
//
|
|
2862
|
-
//
|
|
2863
|
-
//
|
|
2864
|
-
//
|
|
2865
|
-
//
|
|
2866
|
-
//
|
|
2867
|
-
//
|
|
2868
|
-
//
|
|
3200
|
+
// "success": true,
|
|
3201
|
+
// "data": {
|
|
3202
|
+
// "meta": {
|
|
3203
|
+
// "total": 670,
|
|
3204
|
+
// "recordsPerPage": 25,
|
|
3205
|
+
// "currentPage": 1
|
|
3206
|
+
// },
|
|
3207
|
+
// "rows": [
|
|
3208
|
+
// {
|
|
3209
|
+
// "id": 1286360,
|
|
3210
|
+
// "symbol": "PERP_BTC_USDT",
|
|
3211
|
+
// "fundingRate": -0.00001445,
|
|
3212
|
+
// "markPrice": "26930.60000000",
|
|
3213
|
+
// "fundingFee": "9.56021744",
|
|
3214
|
+
// "fundingIntervalHours": 8,
|
|
3215
|
+
// "paymentType": "Pay",
|
|
3216
|
+
// "status": "COMPLETED",
|
|
3217
|
+
// "createdTime": 1696060873259,
|
|
3218
|
+
// "updatedTime": 1696060873286
|
|
3219
|
+
// }
|
|
3220
|
+
// ]
|
|
2869
3221
|
// },
|
|
2870
|
-
// "
|
|
3222
|
+
// "timestamp": 1721351502594
|
|
2871
3223
|
// }
|
|
2872
3224
|
//
|
|
2873
|
-
const
|
|
2874
|
-
const
|
|
2875
|
-
|
|
2876
|
-
const resultLength = result.length;
|
|
2877
|
-
if (resultLength > 0) {
|
|
2878
|
-
const lastItem = result[resultLength - 1];
|
|
2879
|
-
lastItem['page'] = cursor;
|
|
2880
|
-
result[resultLength - 1] = lastItem;
|
|
2881
|
-
}
|
|
2882
|
-
return this.parseIncomes(result, market, since, limit);
|
|
3225
|
+
const data = this.safeDict(response, 'data', {});
|
|
3226
|
+
const rows = this.safeList(data, 'rows', []);
|
|
3227
|
+
return this.parseIncomes(rows, market, since, limit);
|
|
2883
3228
|
}
|
|
2884
3229
|
parseFundingRate(fundingRate, market = undefined) {
|
|
2885
3230
|
//
|
|
2886
3231
|
// {
|
|
2887
|
-
// "success": true,
|
|
2888
|
-
// "timestamp": 1727427915529,
|
|
2889
3232
|
// "symbol": "PERP_BTC_USDT",
|
|
2890
|
-
// "
|
|
2891
|
-
// "
|
|
2892
|
-
// "
|
|
2893
|
-
// "
|
|
2894
|
-
// "
|
|
2895
|
-
// "
|
|
2896
|
-
// "
|
|
3233
|
+
// "estFundingRate": "-0.00000441",
|
|
3234
|
+
// "estFundingRateTimestamp": 1751623979022,
|
|
3235
|
+
// "lastFundingRate": "-0.00004953",
|
|
3236
|
+
// "lastFundingRateTimestamp": 1751616000000,
|
|
3237
|
+
// "nextFundingTime": 1751644800000,
|
|
3238
|
+
// "lastFundingIntervalHours": 8,
|
|
3239
|
+
// "estFundingIntervalHours": 8
|
|
2897
3240
|
// }
|
|
2898
3241
|
//
|
|
2899
3242
|
const symbol = this.safeString(fundingRate, 'symbol');
|
|
2900
3243
|
market = this.market(symbol);
|
|
2901
|
-
const nextFundingTimestamp = this.safeInteger(fundingRate, '
|
|
2902
|
-
const estFundingRateTimestamp = this.safeInteger(fundingRate, '
|
|
2903
|
-
const lastFundingRateTimestamp = this.safeInteger(fundingRate, '
|
|
2904
|
-
const intervalString = this.safeString(fundingRate, '
|
|
3244
|
+
const nextFundingTimestamp = this.safeInteger(fundingRate, 'nextFundingTime');
|
|
3245
|
+
const estFundingRateTimestamp = this.safeInteger(fundingRate, 'estFundingRateTimestamp');
|
|
3246
|
+
const lastFundingRateTimestamp = this.safeInteger(fundingRate, 'lastFundingRateTimestamp');
|
|
3247
|
+
const intervalString = this.safeString(fundingRate, 'estFundingIntervalHours');
|
|
2905
3248
|
return {
|
|
2906
3249
|
'info': fundingRate,
|
|
2907
3250
|
'symbol': market['symbol'],
|
|
@@ -2911,13 +3254,13 @@ class woo extends woo$1 {
|
|
|
2911
3254
|
'estimatedSettlePrice': undefined,
|
|
2912
3255
|
'timestamp': estFundingRateTimestamp,
|
|
2913
3256
|
'datetime': this.iso8601(estFundingRateTimestamp),
|
|
2914
|
-
'fundingRate': this.safeNumber(fundingRate, '
|
|
3257
|
+
'fundingRate': this.safeNumber(fundingRate, 'estFundingRate'),
|
|
2915
3258
|
'fundingTimestamp': nextFundingTimestamp,
|
|
2916
3259
|
'fundingDatetime': this.iso8601(nextFundingTimestamp),
|
|
2917
3260
|
'nextFundingRate': undefined,
|
|
2918
3261
|
'nextFundingTimestamp': undefined,
|
|
2919
3262
|
'nextFundingDatetime': undefined,
|
|
2920
|
-
'previousFundingRate': this.safeNumber(fundingRate, '
|
|
3263
|
+
'previousFundingRate': this.safeNumber(fundingRate, 'lastFundingRate'),
|
|
2921
3264
|
'previousFundingTimestamp': lastFundingRateTimestamp,
|
|
2922
3265
|
'previousFundingDatetime': this.iso8601(lastFundingRateTimestamp),
|
|
2923
3266
|
'interval': intervalString + 'h',
|
|
@@ -2927,7 +3270,7 @@ class woo extends woo$1 {
|
|
|
2927
3270
|
* @method
|
|
2928
3271
|
* @name woo#fetchFundingInterval
|
|
2929
3272
|
* @description fetch the current funding rate interval
|
|
2930
|
-
* @see https://
|
|
3273
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
|
|
2931
3274
|
* @param {string} symbol unified market symbol
|
|
2932
3275
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2933
3276
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
@@ -2939,7 +3282,7 @@ class woo extends woo$1 {
|
|
|
2939
3282
|
* @method
|
|
2940
3283
|
* @name woo#fetchFundingRate
|
|
2941
3284
|
* @description fetch the current funding rate
|
|
2942
|
-
* @see https://
|
|
3285
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
|
|
2943
3286
|
* @param {string} symbol unified market symbol
|
|
2944
3287
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2945
3288
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
@@ -2950,28 +3293,37 @@ class woo extends woo$1 {
|
|
|
2950
3293
|
const request = {
|
|
2951
3294
|
'symbol': market['id'],
|
|
2952
3295
|
};
|
|
2953
|
-
const response = await this.
|
|
3296
|
+
const response = await this.v3PublicGetFundingRate(this.extend(request, params));
|
|
2954
3297
|
//
|
|
2955
3298
|
// {
|
|
2956
3299
|
// "success": true,
|
|
2957
|
-
// "
|
|
2958
|
-
//
|
|
2959
|
-
//
|
|
2960
|
-
//
|
|
2961
|
-
//
|
|
2962
|
-
//
|
|
2963
|
-
//
|
|
2964
|
-
//
|
|
2965
|
-
//
|
|
3300
|
+
// "data": {
|
|
3301
|
+
// "rows": [
|
|
3302
|
+
// {
|
|
3303
|
+
// "symbol": "PERP_BTC_USDT",
|
|
3304
|
+
// "estFundingRate": "-0.00000441",
|
|
3305
|
+
// "estFundingRateTimestamp": 1751623979022,
|
|
3306
|
+
// "lastFundingRate": "-0.00004953",
|
|
3307
|
+
// "lastFundingRateTimestamp": 1751616000000,
|
|
3308
|
+
// "nextFundingTime": 1751644800000,
|
|
3309
|
+
// "lastFundingIntervalHours": 8,
|
|
3310
|
+
// "estFundingIntervalHours": 8
|
|
3311
|
+
// }
|
|
3312
|
+
// ]
|
|
3313
|
+
// },
|
|
3314
|
+
// "timestamp": 1751624037798
|
|
2966
3315
|
// }
|
|
2967
3316
|
//
|
|
2968
|
-
|
|
3317
|
+
const data = this.safeDict(response, 'data', {});
|
|
3318
|
+
const rows = this.safeList(data, 'rows', []);
|
|
3319
|
+
const first = this.safeDict(rows, 0, {});
|
|
3320
|
+
return this.parseFundingRate(first, market);
|
|
2969
3321
|
}
|
|
2970
3322
|
/**
|
|
2971
3323
|
* @method
|
|
2972
3324
|
* @name woo#fetchFundingRates
|
|
2973
3325
|
* @description fetch the funding rate for multiple markets
|
|
2974
|
-
* @see https://
|
|
3326
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRate
|
|
2975
3327
|
* @param {string[]|undefined} symbols list of unified market symbols
|
|
2976
3328
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2977
3329
|
* @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
|
|
@@ -2979,31 +3331,36 @@ class woo extends woo$1 {
|
|
|
2979
3331
|
async fetchFundingRates(symbols = undefined, params = {}) {
|
|
2980
3332
|
await this.loadMarkets();
|
|
2981
3333
|
symbols = this.marketSymbols(symbols);
|
|
2982
|
-
const response = await this.
|
|
3334
|
+
const response = await this.v3PublicGetFundingRate(params);
|
|
2983
3335
|
//
|
|
2984
3336
|
// {
|
|
2985
|
-
// "success":true,
|
|
2986
|
-
// "
|
|
2987
|
-
//
|
|
2988
|
-
//
|
|
2989
|
-
//
|
|
2990
|
-
//
|
|
2991
|
-
//
|
|
2992
|
-
//
|
|
2993
|
-
//
|
|
2994
|
-
//
|
|
2995
|
-
//
|
|
2996
|
-
//
|
|
3337
|
+
// "success": true,
|
|
3338
|
+
// "data": {
|
|
3339
|
+
// "rows": [
|
|
3340
|
+
// {
|
|
3341
|
+
// "symbol": "PERP_BTC_USDT",
|
|
3342
|
+
// "estFundingRate": "-0.00000441",
|
|
3343
|
+
// "estFundingRateTimestamp": 1751623979022,
|
|
3344
|
+
// "lastFundingRate": "-0.00004953",
|
|
3345
|
+
// "lastFundingRateTimestamp": 1751616000000,
|
|
3346
|
+
// "nextFundingTime": 1751644800000,
|
|
3347
|
+
// "lastFundingIntervalHours": 8,
|
|
3348
|
+
// "estFundingIntervalHours": 8
|
|
3349
|
+
// }
|
|
3350
|
+
// ]
|
|
3351
|
+
// },
|
|
3352
|
+
// "timestamp": 1751624037798
|
|
2997
3353
|
// }
|
|
2998
3354
|
//
|
|
2999
|
-
const
|
|
3355
|
+
const data = this.safeDict(response, 'data', {});
|
|
3356
|
+
const rows = this.safeList(data, 'rows', []);
|
|
3000
3357
|
return this.parseFundingRates(rows, symbols);
|
|
3001
3358
|
}
|
|
3002
3359
|
/**
|
|
3003
3360
|
* @method
|
|
3004
3361
|
* @name woo#fetchFundingRateHistory
|
|
3005
3362
|
* @description fetches historical funding rate prices
|
|
3006
|
-
* @see https://
|
|
3363
|
+
* @see https://developer.woox.io/api-reference/endpoint/public_data/fundingRateHistory
|
|
3007
3364
|
* @param {string} symbol unified symbol of the market to fetch the funding rate history for
|
|
3008
3365
|
* @param {int} [since] timestamp in ms of the earliest funding rate to fetch
|
|
3009
3366
|
* @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
|
|
@@ -3019,46 +3376,52 @@ class woo extends woo$1 {
|
|
|
3019
3376
|
if (paginate) {
|
|
3020
3377
|
return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'page', 25);
|
|
3021
3378
|
}
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
const market = this.market(symbol);
|
|
3025
|
-
symbol = market['symbol'];
|
|
3026
|
-
request['symbol'] = market['id'];
|
|
3379
|
+
if (symbol === undefined) {
|
|
3380
|
+
throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
|
|
3027
3381
|
}
|
|
3382
|
+
const market = this.market(symbol);
|
|
3383
|
+
symbol = market['symbol'];
|
|
3384
|
+
let request = {
|
|
3385
|
+
'symbol': market['id'],
|
|
3386
|
+
};
|
|
3028
3387
|
if (since !== undefined) {
|
|
3029
|
-
request['
|
|
3388
|
+
request['startTime'] = since;
|
|
3030
3389
|
}
|
|
3031
|
-
[request, params] = this.handleUntilOption('
|
|
3032
|
-
const response = await this.
|
|
3390
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
3391
|
+
const response = await this.v3PublicGetFundingRateHistory(this.extend(request, params));
|
|
3033
3392
|
//
|
|
3034
3393
|
// {
|
|
3035
|
-
// "success":true,
|
|
3036
|
-
// "
|
|
3037
|
-
// "
|
|
3038
|
-
//
|
|
3039
|
-
//
|
|
3040
|
-
//
|
|
3041
|
-
//
|
|
3042
|
-
//
|
|
3043
|
-
//
|
|
3044
|
-
//
|
|
3045
|
-
//
|
|
3046
|
-
//
|
|
3394
|
+
// "success": true,
|
|
3395
|
+
// "data": {
|
|
3396
|
+
// "rows": [
|
|
3397
|
+
// {
|
|
3398
|
+
// "symbol": "PERP_BTC_USDT",
|
|
3399
|
+
// "fundingRate": "-0.00004953",
|
|
3400
|
+
// "fundingRateTimestamp": 1751616000000,
|
|
3401
|
+
// "nextFundingTime": 1751644800000,
|
|
3402
|
+
// "markPrice": "108708"
|
|
3403
|
+
// }
|
|
3404
|
+
// ],
|
|
3405
|
+
// "meta": {
|
|
3406
|
+
// "total": 11690,
|
|
3407
|
+
// "recordsPerPage": 25,
|
|
3408
|
+
// "currentPage": 1
|
|
3047
3409
|
// }
|
|
3048
|
-
//
|
|
3049
|
-
// "timestamp":
|
|
3410
|
+
// },
|
|
3411
|
+
// "timestamp": 1751632390031
|
|
3050
3412
|
// }
|
|
3051
3413
|
//
|
|
3052
|
-
const
|
|
3414
|
+
const data = this.safeDict(response, 'data', {});
|
|
3415
|
+
const rows = this.safeList(data, 'rows', []);
|
|
3053
3416
|
const rates = [];
|
|
3054
|
-
for (let i = 0; i <
|
|
3055
|
-
const entry =
|
|
3417
|
+
for (let i = 0; i < rows.length; i++) {
|
|
3418
|
+
const entry = rows[i];
|
|
3056
3419
|
const marketId = this.safeString(entry, 'symbol');
|
|
3057
|
-
const timestamp = this.safeInteger(entry, '
|
|
3420
|
+
const timestamp = this.safeInteger(entry, 'fundingRateTimestamp');
|
|
3058
3421
|
rates.push({
|
|
3059
3422
|
'info': entry,
|
|
3060
3423
|
'symbol': this.safeSymbol(marketId),
|
|
3061
|
-
'fundingRate': this.safeNumber(entry, '
|
|
3424
|
+
'fundingRate': this.safeNumber(entry, 'fundingRate'),
|
|
3062
3425
|
'timestamp': timestamp,
|
|
3063
3426
|
'datetime': this.iso8601(timestamp),
|
|
3064
3427
|
});
|
|
@@ -3070,7 +3433,7 @@ class woo extends woo$1 {
|
|
|
3070
3433
|
* @method
|
|
3071
3434
|
* @name woo#setPositionMode
|
|
3072
3435
|
* @description set hedged to true or false for a market
|
|
3073
|
-
* @see https://
|
|
3436
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/position_mode
|
|
3074
3437
|
* @param {bool} hedged set to true to use HEDGE_MODE, false for ONE_WAY
|
|
3075
3438
|
* @param {string} symbol not used by woo setPositionMode
|
|
3076
3439
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -3085,14 +3448,13 @@ class woo extends woo$1 {
|
|
|
3085
3448
|
hedgeMode = 'ONE_WAY';
|
|
3086
3449
|
}
|
|
3087
3450
|
const request = {
|
|
3088
|
-
'
|
|
3451
|
+
'positionMode': hedgeMode,
|
|
3089
3452
|
};
|
|
3090
|
-
const response = await this.
|
|
3453
|
+
const response = await this.v3PrivatePutFuturesPositionMode(this.extend(request, params));
|
|
3091
3454
|
//
|
|
3092
3455
|
// {
|
|
3093
3456
|
// "success": true,
|
|
3094
|
-
// "
|
|
3095
|
-
// "timestamp": "1709195608551"
|
|
3457
|
+
// "timestamp": 1752550492845
|
|
3096
3458
|
// }
|
|
3097
3459
|
//
|
|
3098
3460
|
return response;
|
|
@@ -3101,11 +3463,12 @@ class woo extends woo$1 {
|
|
|
3101
3463
|
* @method
|
|
3102
3464
|
* @name woo#fetchLeverage
|
|
3103
3465
|
* @description fetch the set leverage for a market
|
|
3104
|
-
* @see https://
|
|
3466
|
+
* @see https://developer.woox.io/api-reference/endpoint/account/get_account_info
|
|
3467
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/get_leverage
|
|
3105
3468
|
* @param {string} symbol unified market symbol
|
|
3106
3469
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3107
3470
|
* @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
|
|
3108
|
-
* @param {string} [params.
|
|
3471
|
+
* @param {string} [params.positionMode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
|
|
3109
3472
|
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
3110
3473
|
*/
|
|
3111
3474
|
async fetchLeverage(symbol, params = {}) {
|
|
@@ -3113,7 +3476,7 @@ class woo extends woo$1 {
|
|
|
3113
3476
|
const market = this.market(symbol);
|
|
3114
3477
|
let response = undefined;
|
|
3115
3478
|
if (market['spot']) {
|
|
3116
|
-
response = await this.
|
|
3479
|
+
response = await this.v3PrivateGetAccountInfo(params);
|
|
3117
3480
|
//
|
|
3118
3481
|
// {
|
|
3119
3482
|
// "success": true,
|
|
@@ -3121,25 +3484,26 @@ class woo extends woo$1 {
|
|
|
3121
3484
|
// "applicationId": "dsa",
|
|
3122
3485
|
// "account": "dsa",
|
|
3123
3486
|
// "alias": "haha",
|
|
3124
|
-
// "accountMode": "MARGIN",
|
|
3125
|
-
// "leverage": 1,
|
|
3126
|
-
// "takerFeeRate": 1,
|
|
3127
|
-
// "makerFeeRate": 1,
|
|
3128
|
-
// "interestRate": 1,
|
|
3129
|
-
// "futuresTakerFeeRate": 1,
|
|
3130
|
-
// "futuresMakerFeeRate": 1,
|
|
3131
3487
|
// "otpauth": true,
|
|
3132
|
-
// "
|
|
3133
|
-
// "
|
|
3134
|
-
// "
|
|
3135
|
-
// "
|
|
3136
|
-
// "
|
|
3137
|
-
// "
|
|
3138
|
-
// "
|
|
3139
|
-
// "
|
|
3140
|
-
// "
|
|
3488
|
+
// "accountMode": "FUTURES",
|
|
3489
|
+
// "positionMode": "ONE_WAY",
|
|
3490
|
+
// "leverage": 0,
|
|
3491
|
+
// "marginRatio": "10",
|
|
3492
|
+
// "openMarginRatio": "10",
|
|
3493
|
+
// "initialMarginRatio": "10",
|
|
3494
|
+
// "maintenanceMarginRatio": "0.03",
|
|
3495
|
+
// "totalCollateral": "165.6115334",
|
|
3496
|
+
// "freeCollateral": "165.6115334",
|
|
3497
|
+
// "totalAccountValue": "167.52723093",
|
|
3498
|
+
// "totalTradingValue": "167.52723093",
|
|
3499
|
+
// "totalVaultValue": "0",
|
|
3500
|
+
// "totalStakingValue": "0",
|
|
3501
|
+
// "totalLaunchpadValue": "0",
|
|
3502
|
+
// "totalEarnValue": "0",
|
|
3503
|
+
// "referrerID": null,
|
|
3504
|
+
// "accountType": "Main"
|
|
3141
3505
|
// },
|
|
3142
|
-
// "timestamp":
|
|
3506
|
+
// "timestamp": 1752645129054
|
|
3143
3507
|
// }
|
|
3144
3508
|
//
|
|
3145
3509
|
}
|
|
@@ -3149,8 +3513,8 @@ class woo extends woo$1 {
|
|
|
3149
3513
|
};
|
|
3150
3514
|
let marginMode = undefined;
|
|
3151
3515
|
[marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
|
|
3152
|
-
request['
|
|
3153
|
-
response = await this.
|
|
3516
|
+
request['marginMode'] = this.encodeMarginMode(marginMode);
|
|
3517
|
+
response = await this.v3PrivateGetFuturesLeverage(this.extend(request, params));
|
|
3154
3518
|
//
|
|
3155
3519
|
// HEDGE_MODE
|
|
3156
3520
|
// {
|
|
@@ -3158,15 +3522,15 @@ class woo extends woo$1 {
|
|
|
3158
3522
|
// "data":
|
|
3159
3523
|
// {
|
|
3160
3524
|
// "symbol": "PERP_ETH_USDT",
|
|
3161
|
-
// "
|
|
3162
|
-
// "
|
|
3525
|
+
// "marginMode": "CROSS",
|
|
3526
|
+
// "positionMode": "HEDGE_MODE",
|
|
3163
3527
|
// "details": [
|
|
3164
3528
|
// {
|
|
3165
|
-
// "
|
|
3529
|
+
// "positionSide": "LONG",
|
|
3166
3530
|
// "leverage": 10
|
|
3167
3531
|
// },
|
|
3168
3532
|
// {
|
|
3169
|
-
// "
|
|
3533
|
+
// "positionSide": "SHORT",
|
|
3170
3534
|
// "leverage": 10
|
|
3171
3535
|
// }
|
|
3172
3536
|
// ]
|
|
@@ -3179,11 +3543,11 @@ class woo extends woo$1 {
|
|
|
3179
3543
|
// "success": true,
|
|
3180
3544
|
// "data": {
|
|
3181
3545
|
// "symbol": "PERP_ETH_USDT",
|
|
3182
|
-
// "
|
|
3183
|
-
// "
|
|
3546
|
+
// "marginMode": "ISOLATED",
|
|
3547
|
+
// "positionMode": "ONE_WAY",
|
|
3184
3548
|
// "details": [
|
|
3185
3549
|
// {
|
|
3186
|
-
// "
|
|
3550
|
+
// "positionSide": "BOTH",
|
|
3187
3551
|
// "leverage": 10
|
|
3188
3552
|
// }
|
|
3189
3553
|
// ]
|
|
@@ -3201,15 +3565,18 @@ class woo extends woo$1 {
|
|
|
3201
3565
|
parseLeverage(leverage, market = undefined) {
|
|
3202
3566
|
const marketId = this.safeString(leverage, 'symbol');
|
|
3203
3567
|
market = this.safeMarket(marketId, market);
|
|
3204
|
-
const marginMode = this.safeStringLower(leverage, '
|
|
3205
|
-
|
|
3568
|
+
const marginMode = this.safeStringLower(leverage, 'marginMode');
|
|
3569
|
+
let spotLeverage = this.safeInteger(leverage, 'leverage');
|
|
3570
|
+
if (spotLeverage === 0) {
|
|
3571
|
+
spotLeverage = null;
|
|
3572
|
+
}
|
|
3206
3573
|
let longLeverage = spotLeverage;
|
|
3207
3574
|
let shortLeverage = spotLeverage;
|
|
3208
3575
|
const details = this.safeList(leverage, 'details', []);
|
|
3209
3576
|
for (let i = 0; i < details.length; i++) {
|
|
3210
3577
|
const position = this.safeDict(details, i, {});
|
|
3211
3578
|
const positionLeverage = this.safeInteger(position, 'leverage');
|
|
3212
|
-
const side = this.safeString(position, '
|
|
3579
|
+
const side = this.safeString(position, 'positionSide');
|
|
3213
3580
|
if (side === 'BOTH') {
|
|
3214
3581
|
longLeverage = positionLeverage;
|
|
3215
3582
|
shortLeverage = positionLeverage;
|
|
@@ -3233,13 +3600,13 @@ class woo extends woo$1 {
|
|
|
3233
3600
|
* @method
|
|
3234
3601
|
* @name woo#setLeverage
|
|
3235
3602
|
* @description set the level of leverage for a market
|
|
3236
|
-
* @see https://
|
|
3237
|
-
* @see https://
|
|
3603
|
+
* @see https://developer.woox.io/api-reference/endpoint/spot_margin/set_leverage
|
|
3604
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/set_leverage
|
|
3238
3605
|
* @param {float} leverage the rate of leverage (1, 2, 3, 4 or 5 for spot markets, 1, 2, 3, 4, 5, 10, 15, 20 for swap markets)
|
|
3239
3606
|
* @param {string} [symbol] unified market symbol (is mandatory for swap markets)
|
|
3240
3607
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3241
3608
|
* @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
|
|
3242
|
-
* @param {string} [params.
|
|
3609
|
+
* @param {string} [params.positionMode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
|
|
3243
3610
|
* @returns {object} response from the exchange
|
|
3244
3611
|
*/
|
|
3245
3612
|
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
@@ -3252,14 +3619,14 @@ class woo extends woo$1 {
|
|
|
3252
3619
|
market = this.market(symbol);
|
|
3253
3620
|
}
|
|
3254
3621
|
if ((symbol === undefined) || market['spot']) {
|
|
3255
|
-
return await this.
|
|
3622
|
+
return await this.v3PrivatePostSpotMarginLeverage(this.extend(request, params));
|
|
3256
3623
|
}
|
|
3257
3624
|
else if (market['swap']) {
|
|
3258
3625
|
request['symbol'] = market['id'];
|
|
3259
3626
|
let marginMode = undefined;
|
|
3260
3627
|
[marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
|
|
3261
|
-
request['
|
|
3262
|
-
return await this.
|
|
3628
|
+
request['marginMode'] = this.encodeMarginMode(marginMode);
|
|
3629
|
+
return await this.v3PrivatePutFuturesLeverage(this.extend(request, params));
|
|
3263
3630
|
}
|
|
3264
3631
|
else {
|
|
3265
3632
|
throw new errors.NotSupported(this.id + ' fetchLeverage() is not supported for ' + market['type'] + ' markets');
|
|
@@ -3304,93 +3671,99 @@ class woo extends woo$1 {
|
|
|
3304
3671
|
};
|
|
3305
3672
|
return await this.v1PrivatePostClientIsolatedMargin(this.extend(request, params));
|
|
3306
3673
|
}
|
|
3674
|
+
/**
|
|
3675
|
+
* @method
|
|
3676
|
+
* @name woo#fetchPosition
|
|
3677
|
+
* @description fetch data on an open position
|
|
3678
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/get_positions
|
|
3679
|
+
* @param {string} symbol unified market symbol of the market the position is held in
|
|
3680
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3681
|
+
* @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
3682
|
+
*/
|
|
3307
3683
|
async fetchPosition(symbol, params = {}) {
|
|
3308
3684
|
await this.loadMarkets();
|
|
3309
3685
|
const market = this.market(symbol);
|
|
3310
3686
|
const request = {
|
|
3311
3687
|
'symbol': market['id'],
|
|
3312
3688
|
};
|
|
3313
|
-
const response = await this.
|
|
3689
|
+
const response = await this.v3PrivateGetFuturesPositions(this.extend(request, params));
|
|
3314
3690
|
//
|
|
3315
3691
|
// {
|
|
3316
|
-
// "symbol": "PERP_ETH_USDT",
|
|
3317
|
-
// "position_side": "BOTH",
|
|
3318
|
-
// "leverage": 10,
|
|
3319
|
-
// "margin_mode": "CROSS",
|
|
3320
|
-
// "average_open_price": 3139.9,
|
|
3321
|
-
// "isolated_margin_amount": 0.0,
|
|
3322
|
-
// "isolated_margin_token": "",
|
|
3323
|
-
// "opening_time": "1720627963.094",
|
|
3324
|
-
// "mark_price": 3155.19169891,
|
|
3325
|
-
// "pending_short_qty": 0.0,
|
|
3326
|
-
// "pending_long_qty": 0.0,
|
|
3327
|
-
// "holding": -0.7,
|
|
3328
|
-
// "pnl_24_h": 0.0,
|
|
3329
|
-
// "est_liq_price": 9107.40055552,
|
|
3330
|
-
// "settle_price": 3151.0319904,
|
|
3331
3692
|
// "success": true,
|
|
3332
|
-
// "
|
|
3333
|
-
//
|
|
3334
|
-
//
|
|
3335
|
-
//
|
|
3693
|
+
// "data": {
|
|
3694
|
+
// "positions": [
|
|
3695
|
+
// {
|
|
3696
|
+
// "symbol": "PERP_LTC_USDT",
|
|
3697
|
+
// "holding": "0.1",
|
|
3698
|
+
// "pendingLongQty": "0",
|
|
3699
|
+
// "pendingShortQty": "0",
|
|
3700
|
+
// "settlePrice": "96.87",
|
|
3701
|
+
// "averageOpenPrice": "96.87",
|
|
3702
|
+
// "pnl24H": "0",
|
|
3703
|
+
// "fee24H": "0.0048435",
|
|
3704
|
+
// "markPrice": "96.83793449",
|
|
3705
|
+
// "estLiqPrice": "0",
|
|
3706
|
+
// "timestamp": 1752500555823,
|
|
3707
|
+
// "adlQuantile": 2,
|
|
3708
|
+
// "positionSide": "BOTH",
|
|
3709
|
+
// "marginMode": "CROSS",
|
|
3710
|
+
// "isolatedMarginToken": "",
|
|
3711
|
+
// "isolatedMarginAmount": "0",
|
|
3712
|
+
// "isolatedFrozenLong": "0",
|
|
3713
|
+
// "isolatedFrozenShort": "0",
|
|
3714
|
+
// "leverage": 10
|
|
3715
|
+
// }
|
|
3716
|
+
// ]
|
|
3717
|
+
// },
|
|
3718
|
+
// "timestamp": 1752500579848
|
|
3336
3719
|
// }
|
|
3337
3720
|
//
|
|
3338
|
-
|
|
3721
|
+
const result = this.safeDict(response, 'data', {});
|
|
3722
|
+
const positions = this.safeList(result, 'positions', []);
|
|
3723
|
+
const first = this.safeDict(positions, 0, {});
|
|
3724
|
+
return this.parsePosition(first, market);
|
|
3339
3725
|
}
|
|
3726
|
+
/**
|
|
3727
|
+
* @method
|
|
3728
|
+
* @name woo#fetchPositions
|
|
3729
|
+
* @description fetch all open positions
|
|
3730
|
+
* @see https://developer.woox.io/api-reference/endpoint/futures/get_positions
|
|
3731
|
+
* @param {string[]} [symbols] list of unified market symbols
|
|
3732
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3733
|
+
* @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
3734
|
+
*/
|
|
3340
3735
|
async fetchPositions(symbols = undefined, params = {}) {
|
|
3341
3736
|
await this.loadMarkets();
|
|
3342
|
-
const response = await this.
|
|
3737
|
+
const response = await this.v3PrivateGetFuturesPositions(params);
|
|
3343
3738
|
//
|
|
3344
3739
|
// {
|
|
3345
3740
|
// "success": true,
|
|
3346
|
-
// "data":
|
|
3347
|
-
// {
|
|
3741
|
+
// "data": {
|
|
3348
3742
|
// "positions": [
|
|
3349
3743
|
// {
|
|
3350
|
-
// "symbol": "
|
|
3351
|
-
// "holding":
|
|
3352
|
-
// "pendingLongQty": 0
|
|
3353
|
-
// "pendingShortQty": 0
|
|
3354
|
-
// "settlePrice":
|
|
3355
|
-
// "averageOpenPrice":
|
|
3356
|
-
// "pnl24H": 0
|
|
3357
|
-
// "fee24H":
|
|
3358
|
-
// "markPrice":
|
|
3359
|
-
// "estLiqPrice":
|
|
3360
|
-
// "timestamp":
|
|
3361
|
-
// "adlQuantile":
|
|
3362
|
-
// "positionSide": "BOTH",
|
|
3363
|
-
// "marginMode": "ISOLATED",
|
|
3364
|
-
// "isolatedMarginToken": "USDT",
|
|
3365
|
-
// "isolatedMarginAmount": 314.62426,
|
|
3366
|
-
// "isolatedFrozenLong": 0.0,
|
|
3367
|
-
// "isolatedFrozenShort": 0.0,
|
|
3368
|
-
// "leverage": 10
|
|
3369
|
-
// },
|
|
3370
|
-
// {
|
|
3371
|
-
// "symbol": "PERP_SOL_USDT",
|
|
3372
|
-
// "holding": -1.0,
|
|
3373
|
-
// "pendingLongQty": 0.0,
|
|
3374
|
-
// "pendingShortQty": 0.0,
|
|
3375
|
-
// "settlePrice": 141.89933923,
|
|
3376
|
-
// "averageOpenPrice": 171.38,
|
|
3377
|
-
// "pnl24H": 0.0,
|
|
3378
|
-
// "fee24H": 0.0,
|
|
3379
|
-
// "markPrice": 141.65155427,
|
|
3380
|
-
// "estLiqPrice": 4242.73548551,
|
|
3381
|
-
// "timestamp": 1720616702.68,
|
|
3382
|
-
// "adlQuantile": 5,
|
|
3744
|
+
// "symbol": "PERP_LTC_USDT",
|
|
3745
|
+
// "holding": "0.1",
|
|
3746
|
+
// "pendingLongQty": "0",
|
|
3747
|
+
// "pendingShortQty": "0",
|
|
3748
|
+
// "settlePrice": "96.87",
|
|
3749
|
+
// "averageOpenPrice": "96.87",
|
|
3750
|
+
// "pnl24H": "0",
|
|
3751
|
+
// "fee24H": "0.0048435",
|
|
3752
|
+
// "markPrice": "96.83793449",
|
|
3753
|
+
// "estLiqPrice": "0",
|
|
3754
|
+
// "timestamp": 1752500555823,
|
|
3755
|
+
// "adlQuantile": 2,
|
|
3383
3756
|
// "positionSide": "BOTH",
|
|
3384
3757
|
// "marginMode": "CROSS",
|
|
3385
3758
|
// "isolatedMarginToken": "",
|
|
3386
|
-
// "isolatedMarginAmount": 0
|
|
3387
|
-
// "isolatedFrozenLong": 0
|
|
3388
|
-
// "isolatedFrozenShort": 0
|
|
3759
|
+
// "isolatedMarginAmount": "0",
|
|
3760
|
+
// "isolatedFrozenLong": "0",
|
|
3761
|
+
// "isolatedFrozenShort": "0",
|
|
3389
3762
|
// "leverage": 10
|
|
3390
3763
|
// }
|
|
3391
3764
|
// ]
|
|
3392
3765
|
// },
|
|
3393
|
-
// "timestamp":
|
|
3766
|
+
// "timestamp": 1752500579848
|
|
3394
3767
|
// }
|
|
3395
3768
|
//
|
|
3396
3769
|
const result = this.safeDict(response, 'data', {});
|
|
@@ -3425,24 +3798,24 @@ class woo extends woo$1 {
|
|
|
3425
3798
|
//
|
|
3426
3799
|
// v3PrivateGetPositions
|
|
3427
3800
|
// {
|
|
3428
|
-
// "symbol": "
|
|
3429
|
-
// "holding":
|
|
3430
|
-
// "pendingLongQty": 0
|
|
3431
|
-
// "pendingShortQty": 0
|
|
3432
|
-
// "settlePrice":
|
|
3433
|
-
// "averageOpenPrice":
|
|
3434
|
-
// "pnl24H": 0
|
|
3435
|
-
// "fee24H":
|
|
3436
|
-
// "markPrice":
|
|
3437
|
-
// "estLiqPrice":
|
|
3438
|
-
// "timestamp":
|
|
3439
|
-
// "adlQuantile":
|
|
3801
|
+
// "symbol": "PERP_LTC_USDT",
|
|
3802
|
+
// "holding": "0.1",
|
|
3803
|
+
// "pendingLongQty": "0",
|
|
3804
|
+
// "pendingShortQty": "0",
|
|
3805
|
+
// "settlePrice": "96.87",
|
|
3806
|
+
// "averageOpenPrice": "96.87",
|
|
3807
|
+
// "pnl24H": "0",
|
|
3808
|
+
// "fee24H": "0.0048435",
|
|
3809
|
+
// "markPrice": "96.83793449",
|
|
3810
|
+
// "estLiqPrice": "0",
|
|
3811
|
+
// "timestamp": 1752500555823,
|
|
3812
|
+
// "adlQuantile": 2,
|
|
3440
3813
|
// "positionSide": "BOTH",
|
|
3441
|
-
// "marginMode": "
|
|
3442
|
-
// "isolatedMarginToken": "
|
|
3443
|
-
// "isolatedMarginAmount":
|
|
3444
|
-
// "isolatedFrozenLong": 0
|
|
3445
|
-
// "isolatedFrozenShort": 0
|
|
3814
|
+
// "marginMode": "CROSS",
|
|
3815
|
+
// "isolatedMarginToken": "",
|
|
3816
|
+
// "isolatedMarginAmount": "0",
|
|
3817
|
+
// "isolatedFrozenLong": "0",
|
|
3818
|
+
// "isolatedFrozenShort": "0",
|
|
3446
3819
|
// "leverage": 10
|
|
3447
3820
|
// }
|
|
3448
3821
|
//
|
|
@@ -3458,7 +3831,16 @@ class woo extends woo$1 {
|
|
|
3458
3831
|
}
|
|
3459
3832
|
const contractSize = this.safeString(market, 'contractSize');
|
|
3460
3833
|
const markPrice = this.safeString2(position, 'markPrice', 'mark_price');
|
|
3461
|
-
const
|
|
3834
|
+
const timestampString = this.safeString(position, 'timestamp');
|
|
3835
|
+
let timestamp = undefined;
|
|
3836
|
+
if (timestampString !== undefined) {
|
|
3837
|
+
if (timestampString.indexOf('.') > -1) {
|
|
3838
|
+
timestamp = this.safeTimestamp(position, 'timestamp');
|
|
3839
|
+
}
|
|
3840
|
+
else {
|
|
3841
|
+
timestamp = this.safeInteger(position, 'timestamp');
|
|
3842
|
+
}
|
|
3843
|
+
}
|
|
3462
3844
|
const entryPrice = this.safeString2(position, 'averageOpenPrice', 'average_open_price');
|
|
3463
3845
|
const priceDifference = Precise["default"].stringSub(markPrice, entryPrice);
|
|
3464
3846
|
const unrealisedPnl = Precise["default"].stringMul(priceDifference, size);
|