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