ccxt-ir 4.10.0 → 4.12.0
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 +4 -4
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +10 -1
- package/dist/cjs/src/abstract/bidarz.js +11 -0
- package/dist/cjs/src/bidarz.js +337 -0
- package/dist/cjs/src/bit24.js +4 -3
- package/dist/cjs/src/changefa.js +342 -0
- package/dist/cjs/src/ourbit.js +445 -0
- package/js/ccxt.d.ts +11 -2
- package/js/ccxt.js +8 -2
- package/js/src/abstract/bidarz.d.ts +9 -0
- package/js/src/abstract/bidarz.js +11 -0
- package/js/src/abstract/changefa.d.ts +8 -0
- package/js/src/abstract/changefa.js +11 -0
- package/js/src/abstract/ourbit.d.ts +10 -0
- package/js/src/abstract/ourbit.js +11 -0
- package/js/src/bidarz.d.ts +22 -0
- package/js/src/bidarz.js +336 -0
- package/js/src/bit24.js +4 -3
- package/js/src/changefa.d.ts +20 -0
- package/js/src/changefa.js +341 -0
- package/js/src/ourbit.d.ts +21 -0
- package/js/src/ourbit.js +444 -0
- package/js/src/src/abantether.d.ts +21 -0
- package/js/src/src/abantether.js +353 -0
- package/js/src/src/abstract/abantether.d.ts +8 -0
- package/js/src/src/abstract/abantether.js +11 -0
- package/js/src/src/abstract/afratether.d.ts +9 -0
- package/js/src/src/abstract/afratether.js +11 -0
- package/js/src/src/abstract/alpaca.d.ts +77 -0
- package/js/src/src/abstract/alpaca.js +11 -0
- package/js/src/src/abstract/apex.d.ts +34 -0
- package/js/src/src/abstract/apex.js +11 -0
- package/js/src/src/abstract/arzinja.d.ts +8 -0
- package/js/src/src/abstract/arzinja.js +11 -0
- package/js/src/src/abstract/arzplus.d.ts +11 -0
- package/js/src/src/abstract/arzplus.js +11 -0
- package/js/src/src/abstract/ascendex.d.ts +80 -0
- package/js/src/src/abstract/ascendex.js +11 -0
- package/js/src/src/abstract/asretether.d.ts +8 -0
- package/js/src/src/abstract/asretether.js +11 -0
- package/js/src/src/abstract/bidarz.d.ts +9 -0
- package/js/src/src/abstract/bidarz.js +11 -0
- package/js/src/src/abstract/bigone.d.ts +48 -0
- package/js/src/src/abstract/bigone.js +11 -0
- package/js/src/src/abstract/binance.d.ts +773 -0
- package/js/src/src/abstract/binance.js +11 -0
- package/js/src/src/abstract/bingx.d.ts +165 -0
- package/js/src/src/abstract/bingx.js +11 -0
- package/js/src/src/abstract/bit24.d.ts +9 -0
- package/js/src/src/abstract/bit24.js +11 -0
- package/js/src/src/abstract/bit2c.d.ts +30 -0
- package/js/src/src/abstract/bit2c.js +11 -0
- package/js/src/src/abstract/bitbank.d.ts +35 -0
- package/js/src/src/abstract/bitbank.js +11 -0
- package/js/src/src/abstract/bitbarg.d.ts +8 -0
- package/js/src/src/abstract/bitbarg.js +11 -0
- package/js/src/src/abstract/bitbns.d.ts +43 -0
- package/js/src/src/abstract/bitbns.js +11 -0
- package/js/src/src/abstract/bitfinex.d.ts +143 -0
- package/js/src/src/abstract/bitfinex.js +11 -0
- package/js/src/src/abstract/bitflyer.d.ts +42 -0
- package/js/src/src/abstract/bitflyer.js +11 -0
- package/js/src/src/abstract/bitget.d.ts +578 -0
- package/js/src/src/abstract/bitget.js +11 -0
- package/js/src/src/abstract/bithumb.d.ts +35 -0
- package/js/src/src/abstract/bithumb.js +11 -0
- package/js/src/src/abstract/bitimen.d.ts +10 -0
- package/js/src/src/abstract/bitimen.js +11 -0
- package/js/src/src/abstract/bitir.d.ts +10 -0
- package/js/src/src/abstract/bitir.js +11 -0
- package/js/src/src/abstract/bitmart.d.ts +120 -0
- package/js/src/src/abstract/bitmart.js +11 -0
- package/js/src/src/abstract/bitmex.d.ts +100 -0
- package/js/src/src/abstract/bitmex.js +11 -0
- package/js/src/src/abstract/bitopro.d.ts +33 -0
- package/js/src/src/abstract/bitopro.js +11 -0
- package/js/src/src/abstract/bitpin.d.ts +11 -0
- package/js/src/src/abstract/bitpin.js +11 -0
- package/js/src/src/abstract/bitrue.d.ts +75 -0
- package/js/src/src/abstract/bitrue.js +11 -0
- package/js/src/src/abstract/bitso.d.ts +46 -0
- package/js/src/src/abstract/bitso.js +11 -0
- package/js/src/src/abstract/bitstamp.d.ts +262 -0
- package/js/src/src/abstract/bitstamp.js +11 -0
- package/js/src/src/abstract/bitteam.d.ts +32 -0
- package/js/src/src/abstract/bitteam.js +11 -0
- package/js/src/src/abstract/bittrade.d.ts +117 -0
- package/js/src/src/abstract/bittrade.js +11 -0
- package/js/src/src/abstract/bitunix.d.ts +9 -0
- package/js/src/src/abstract/bitunix.js +11 -0
- package/js/src/src/abstract/bitvavo.d.ts +30 -0
- package/js/src/src/abstract/bitvavo.js +11 -0
- package/js/src/src/abstract/blockchaincom.d.ts +31 -0
- package/js/src/src/abstract/blockchaincom.js +11 -0
- package/js/src/src/abstract/blofin.d.ts +70 -0
- package/js/src/src/abstract/blofin.js +11 -0
- package/js/src/src/abstract/btcalpha.d.ts +21 -0
- package/js/src/src/abstract/btcalpha.js +11 -0
- package/js/src/src/abstract/btcbox.d.ts +18 -0
- package/js/src/src/abstract/btcbox.js +11 -0
- package/js/src/src/abstract/btcmarkets.d.ts +42 -0
- package/js/src/src/abstract/btcmarkets.js +11 -0
- package/js/src/src/abstract/btcturk.d.ts +23 -0
- package/js/src/src/abstract/btcturk.js +11 -0
- package/js/src/src/abstract/bybit.d.ts +316 -0
- package/js/src/src/abstract/bybit.js +11 -0
- package/js/src/src/abstract/bydfi.d.ts +11 -0
- package/js/src/src/abstract/bydfi.js +11 -0
- package/js/src/src/abstract/cafearz.d.ts +8 -0
- package/js/src/src/abstract/cafearz.js +11 -0
- package/js/src/src/abstract/cex.d.ts +35 -0
- package/js/src/src/abstract/cex.js +11 -0
- package/js/src/src/abstract/coinbase.d.ts +97 -0
- package/js/src/src/abstract/coinbase.js +11 -0
- package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
- package/js/src/src/abstract/coinbaseexchange.js +11 -0
- package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
- package/js/src/src/abstract/coinbaseinternational.js +11 -0
- package/js/src/src/abstract/coincatch.d.ts +97 -0
- package/js/src/src/abstract/coincatch.js +11 -0
- package/js/src/src/abstract/coincheck.d.ts +36 -0
- package/js/src/src/abstract/coincheck.js +11 -0
- package/js/src/src/abstract/coinex.d.ts +240 -0
- package/js/src/src/abstract/coinex.js +11 -0
- package/js/src/src/abstract/coinmate.d.ts +65 -0
- package/js/src/src/abstract/coinmate.js +11 -0
- package/js/src/src/abstract/coinmetro.d.ts +37 -0
- package/js/src/src/abstract/coinmetro.js +11 -0
- package/js/src/src/abstract/coinone.d.ts +70 -0
- package/js/src/src/abstract/coinone.js +11 -0
- package/js/src/src/abstract/coinsph.d.ts +57 -0
- package/js/src/src/abstract/coinsph.js +11 -0
- package/js/src/src/abstract/coinspot.d.ts +31 -0
- package/js/src/src/abstract/coinspot.js +11 -0
- package/js/src/src/abstract/cryptocom.d.ts +126 -0
- package/js/src/src/abstract/cryptocom.js +11 -0
- package/js/src/src/abstract/cryptomus.d.ts +23 -0
- package/js/src/src/abstract/cryptomus.js +11 -0
- package/js/src/src/abstract/defx.d.ts +72 -0
- package/js/src/src/abstract/defx.js +11 -0
- package/js/src/src/abstract/delta.d.ts +53 -0
- package/js/src/src/abstract/delta.js +11 -0
- package/js/src/src/abstract/deribit.d.ts +129 -0
- package/js/src/src/abstract/deribit.js +11 -0
- package/js/src/src/abstract/derive.d.ts +120 -0
- package/js/src/src/abstract/derive.js +11 -0
- package/js/src/src/abstract/digifinex.d.ts +95 -0
- package/js/src/src/abstract/digifinex.js +11 -0
- package/js/src/src/abstract/ellipx.d.ts +28 -0
- package/js/src/src/abstract/ellipx.js +11 -0
- package/js/src/src/abstract/eterex.d.ts +8 -0
- package/js/src/src/abstract/eterex.js +11 -0
- package/js/src/src/abstract/excoino.d.ts +10 -0
- package/js/src/src/abstract/excoino.js +11 -0
- package/js/src/src/abstract/exir.d.ts +11 -0
- package/js/src/src/abstract/exir.js +11 -0
- package/js/src/src/abstract/exmo.d.ts +58 -0
- package/js/src/src/abstract/exmo.js +11 -0
- package/js/src/src/abstract/exnovin.d.ts +9 -0
- package/js/src/src/abstract/exnovin.js +11 -0
- package/js/src/src/abstract/farhadexchange.d.ts +8 -0
- package/js/src/src/abstract/farhadexchange.js +11 -0
- package/js/src/src/abstract/foxbit.d.ts +29 -0
- package/js/src/src/abstract/foxbit.js +11 -0
- package/js/src/src/abstract/gate.d.ts +287 -0
- package/js/src/src/abstract/gate.js +11 -0
- package/js/src/src/abstract/gemini.d.ts +62 -0
- package/js/src/src/abstract/gemini.js +11 -0
- package/js/src/src/abstract/hamtapay.d.ts +9 -0
- package/js/src/src/abstract/hamtapay.js +11 -0
- package/js/src/src/abstract/hashkey.d.ts +70 -0
- package/js/src/src/abstract/hashkey.js +11 -0
- package/js/src/src/abstract/hibachi.d.ts +29 -0
- package/js/src/src/abstract/hibachi.js +11 -0
- package/js/src/src/abstract/hitbtc.d.ts +118 -0
- package/js/src/src/abstract/hitbtc.js +11 -0
- package/js/src/src/abstract/hitobit.d.ts +11 -0
- package/js/src/src/abstract/hitobit.js +11 -0
- package/js/src/src/abstract/hollaex.d.ts +36 -0
- package/js/src/src/abstract/hollaex.js +11 -0
- package/js/src/src/abstract/htx.d.ts +551 -0
- package/js/src/src/abstract/htx.js +11 -0
- package/js/src/src/abstract/hyperliquid.d.ts +9 -0
- package/js/src/src/abstract/hyperliquid.js +11 -0
- package/js/src/src/abstract/independentreserve.d.ts +46 -0
- package/js/src/src/abstract/independentreserve.js +11 -0
- package/js/src/src/abstract/indodax.d.ts +29 -0
- package/js/src/src/abstract/indodax.js +11 -0
- package/js/src/src/abstract/iranexchange.d.ts +9 -0
- package/js/src/src/abstract/iranexchange.js +11 -0
- package/js/src/src/abstract/jibitex.d.ts +10 -0
- package/js/src/src/abstract/jibitex.js +11 -0
- package/js/src/src/abstract/kcex.d.ts +10 -0
- package/js/src/src/abstract/kcex.js +11 -0
- package/js/src/src/abstract/kifpoolme.d.ts +9 -0
- package/js/src/src/abstract/kifpoolme.js +11 -0
- package/js/src/src/abstract/kraken.d.ts +61 -0
- package/js/src/src/abstract/kraken.js +11 -0
- package/js/src/src/abstract/krakenfutures.d.ts +45 -0
- package/js/src/src/abstract/krakenfutures.js +11 -0
- package/js/src/src/abstract/kucoin.d.ts +227 -0
- package/js/src/src/abstract/kucoin.js +11 -0
- package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
- package/js/src/src/abstract/kucoinfutures.js +11 -0
- package/js/src/src/abstract/latoken.d.ts +59 -0
- package/js/src/src/abstract/latoken.js +11 -0
- package/js/src/src/abstract/lbank.d.ts +65 -0
- package/js/src/src/abstract/lbank.js +11 -0
- package/js/src/src/abstract/luno.d.ts +41 -0
- package/js/src/src/abstract/luno.js +11 -0
- package/js/src/src/abstract/mazdax.d.ts +11 -0
- package/js/src/src/abstract/mazdax.js +11 -0
- package/js/src/src/abstract/mercado.d.ts +28 -0
- package/js/src/src/abstract/mercado.js +11 -0
- package/js/src/src/abstract/mexc.d.ts +183 -0
- package/js/src/src/abstract/mexc.js +11 -0
- package/js/src/src/abstract/modetrade.d.ts +122 -0
- package/js/src/src/abstract/modetrade.js +11 -0
- package/js/src/src/abstract/ndax.d.ts +100 -0
- package/js/src/src/abstract/ndax.js +11 -0
- package/js/src/src/abstract/nobitex.d.ts +10 -0
- package/js/src/src/abstract/nobitex.js +11 -0
- package/js/src/src/abstract/novadax.d.ts +32 -0
- package/js/src/src/abstract/novadax.js +11 -0
- package/js/src/src/abstract/oceanex.d.ts +30 -0
- package/js/src/src/abstract/oceanex.js +11 -0
- package/js/src/src/abstract/okcoin.d.ts +77 -0
- package/js/src/src/abstract/okcoin.js +11 -0
- package/js/src/src/abstract/okexchange.d.ts +11 -0
- package/js/src/src/abstract/okexchange.js +11 -0
- package/js/src/src/abstract/okx.d.ts +352 -0
- package/js/src/src/abstract/okx.js +11 -0
- package/js/src/src/abstract/ompfinex.d.ts +10 -0
- package/js/src/src/abstract/ompfinex.js +11 -0
- package/js/src/src/abstract/onetrading.d.ts +26 -0
- package/js/src/src/abstract/onetrading.js +11 -0
- package/js/src/src/abstract/oxfun.d.ts +37 -0
- package/js/src/src/abstract/oxfun.js +11 -0
- package/js/src/src/abstract/p2b.d.ts +25 -0
- package/js/src/src/abstract/p2b.js +11 -0
- package/js/src/src/abstract/paradex.d.ts +66 -0
- package/js/src/src/abstract/paradex.js +11 -0
- package/js/src/src/abstract/paymium.d.ts +31 -0
- package/js/src/src/abstract/paymium.js +11 -0
- package/js/src/src/abstract/phemex.d.ts +120 -0
- package/js/src/src/abstract/phemex.js +11 -0
- package/js/src/src/abstract/pingi.d.ts +9 -0
- package/js/src/src/abstract/pingi.js +11 -0
- package/js/src/src/abstract/poloniex.d.ts +108 -0
- package/js/src/src/abstract/poloniex.js +11 -0
- package/js/src/src/abstract/pooleno.d.ts +8 -0
- package/js/src/src/abstract/pooleno.js +11 -0
- package/js/src/src/abstract/probit.d.ts +26 -0
- package/js/src/src/abstract/probit.js +11 -0
- package/js/src/src/abstract/raastin.d.ts +11 -0
- package/js/src/src/abstract/raastin.js +11 -0
- package/js/src/src/abstract/ramzinex.d.ts +10 -0
- package/js/src/src/abstract/ramzinex.js +11 -0
- package/js/src/src/abstract/sarmayex.d.ts +8 -0
- package/js/src/src/abstract/sarmayex.js +11 -0
- package/js/src/src/abstract/sarrafex.d.ts +10 -0
- package/js/src/src/abstract/sarrafex.js +11 -0
- package/js/src/src/abstract/tabdeal.d.ts +10 -0
- package/js/src/src/abstract/tabdeal.js +11 -0
- package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
- package/js/src/src/abstract/tehran_exchange.js +11 -0
- package/js/src/src/abstract/tetherland.d.ts +8 -0
- package/js/src/src/abstract/tetherland.js +11 -0
- package/js/src/src/abstract/timex.d.ts +65 -0
- package/js/src/src/abstract/timex.js +11 -0
- package/js/src/src/abstract/tokocrypto.d.ts +40 -0
- package/js/src/src/abstract/tokocrypto.js +11 -0
- package/js/src/src/abstract/toobit.d.ts +10 -0
- package/js/src/src/abstract/toobit.js +11 -0
- package/js/src/src/abstract/tradeogre.d.ts +21 -0
- package/js/src/src/abstract/tradeogre.js +11 -0
- package/js/src/src/abstract/twox.d.ts +8 -0
- package/js/src/src/abstract/twox.js +11 -0
- package/js/src/src/abstract/ubitex.d.ts +10 -0
- package/js/src/src/abstract/ubitex.js +11 -0
- package/js/src/src/abstract/upbit.d.ts +58 -0
- package/js/src/src/abstract/upbit.js +11 -0
- package/js/src/src/abstract/vertex.d.ts +22 -0
- package/js/src/src/abstract/vertex.js +11 -0
- package/js/src/src/abstract/wallex.d.ts +11 -0
- package/js/src/src/abstract/wallex.js +11 -0
- package/js/src/src/abstract/wavesexchange.d.ts +157 -0
- package/js/src/src/abstract/wavesexchange.js +11 -0
- package/js/src/src/abstract/whitebit.d.ts +117 -0
- package/js/src/src/abstract/whitebit.js +11 -0
- package/js/src/src/abstract/woo.d.ts +144 -0
- package/js/src/src/abstract/woo.js +11 -0
- package/js/src/src/abstract/woofipro.d.ts +122 -0
- package/js/src/src/abstract/woofipro.js +11 -0
- package/js/src/src/abstract/xt.d.ts +160 -0
- package/js/src/src/abstract/xt.js +11 -0
- package/js/src/src/abstract/yobit.d.ts +19 -0
- package/js/src/src/abstract/yobit.js +11 -0
- package/js/src/src/abstract/zaif.d.ts +41 -0
- package/js/src/src/abstract/zaif.js +11 -0
- package/js/src/src/abstract/zonda.d.ts +56 -0
- package/js/src/src/abstract/zonda.js +11 -0
- package/js/src/src/afratether.d.ts +21 -0
- package/js/src/src/afratether.js +356 -0
- package/js/src/src/alpaca.d.ts +332 -0
- package/js/src/src/alpaca.js +1908 -0
- package/js/src/src/apex.d.ts +333 -0
- package/js/src/src/apex.js +1942 -0
- package/js/src/src/arzinja.d.ts +21 -0
- package/js/src/src/arzinja.js +298 -0
- package/js/src/src/arzplus.d.ts +26 -0
- package/js/src/src/arzplus.js +581 -0
- package/js/src/src/ascendex.d.ts +424 -0
- package/js/src/src/ascendex.js +3699 -0
- package/js/src/src/asretether.d.ts +21 -0
- package/js/src/src/asretether.js +324 -0
- package/js/src/src/base/Exchange.d.ts +926 -0
- package/js/src/src/base/Exchange.js +7399 -0
- package/js/src/src/base/Precise.d.ts +42 -0
- package/js/src/src/base/Precise.js +275 -0
- package/js/src/src/base/errors.d.ts +168 -0
- package/js/src/src/base/errors.js +255 -0
- package/js/src/src/base/functions/crypto.d.ts +16 -0
- package/js/src/src/base/functions/crypto.js +131 -0
- package/js/src/src/base/functions/encode.d.ts +4 -0
- package/js/src/src/base/functions/encode.js +32 -0
- package/js/src/src/base/functions/generic.d.ts +29 -0
- package/js/src/src/base/functions/generic.js +203 -0
- package/js/src/src/base/functions/misc.d.ts +9 -0
- package/js/src/src/base/functions/misc.js +101 -0
- package/js/src/src/base/functions/number.d.ts +27 -0
- package/js/src/src/base/functions/number.js +313 -0
- package/js/src/src/base/functions/platform.d.ts +7 -0
- package/js/src/src/base/functions/platform.js +27 -0
- package/js/src/src/base/functions/rsa.d.ts +5 -0
- package/js/src/src/base/functions/rsa.js +49 -0
- package/js/src/src/base/functions/string.d.ts +7 -0
- package/js/src/src/base/functions/string.js +44 -0
- package/js/src/src/base/functions/throttle.d.ts +6 -0
- package/js/src/src/base/functions/throttle.js +67 -0
- package/js/src/src/base/functions/time.d.ts +21 -0
- package/js/src/src/base/functions/time.js +171 -0
- package/js/src/src/base/functions/totp.d.ts +3 -0
- package/js/src/src/base/functions/totp.js +25 -0
- package/js/src/src/base/functions/type.d.ts +37 -0
- package/js/src/src/base/functions/type.js +179 -0
- package/js/src/src/base/functions.d.ts +10 -0
- package/js/src/src/base/functions.js +18 -0
- package/js/src/src/base/types.d.ts +586 -0
- package/js/src/src/base/types.js +7 -0
- package/js/src/src/base/ws/Cache.d.ts +27 -0
- package/js/src/src/base/ws/Cache.js +260 -0
- package/js/src/src/base/ws/Client.d.ts +53 -0
- package/js/src/src/base/ws/Client.js +307 -0
- package/js/src/src/base/ws/Future.d.ts +8 -0
- package/js/src/src/base/ws/Future.js +35 -0
- package/js/src/src/base/ws/OrderBook.d.ts +25 -0
- package/js/src/src/base/ws/OrderBook.js +130 -0
- package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
- package/js/src/src/base/ws/OrderBookSide.js +286 -0
- package/js/src/src/base/ws/WsClient.d.ts +11 -0
- package/js/src/src/base/ws/WsClient.js +69 -0
- package/js/src/src/bequant.d.ts +4 -0
- package/js/src/src/bequant.js +35 -0
- package/js/src/src/bidarz.d.ts +16 -0
- package/js/src/src/bidarz.js +327 -0
- package/js/src/src/bigone.d.ts +296 -0
- package/js/src/src/bigone.js +2340 -0
- package/js/src/src/binance.d.ts +1667 -0
- package/js/src/src/binance.js +14400 -0
- package/js/src/src/binancecoinm.d.ts +6 -0
- package/js/src/src/binancecoinm.js +51 -0
- package/js/src/src/binanceus.d.ts +4 -0
- package/js/src/src/binanceus.js +225 -0
- package/js/src/src/binanceusdm.d.ts +6 -0
- package/js/src/src/binanceusdm.js +63 -0
- package/js/src/src/bingx.d.ts +778 -0
- package/js/src/src/bingx.js +6705 -0
- package/js/src/src/bit24.d.ts +24 -0
- package/js/src/src/bit24.js +520 -0
- package/js/src/src/bit2c.d.ts +146 -0
- package/js/src/src/bit2c.js +1029 -0
- package/js/src/src/bitbank.d.ts +181 -0
- package/js/src/src/bitbank.js +1146 -0
- package/js/src/src/bitbarg.d.ts +21 -0
- package/js/src/src/bitbarg.js +312 -0
- package/js/src/src/bitbns.d.ts +184 -0
- package/js/src/src/bitbns.js +1288 -0
- package/js/src/src/bitfinex.d.ts +516 -0
- package/js/src/src/bitfinex.js +3951 -0
- package/js/src/src/bitflyer.d.ts +229 -0
- package/js/src/src/bitflyer.js +1209 -0
- package/js/src/src/bitget.d.ts +1109 -0
- package/js/src/src/bitget.js +11033 -0
- package/js/src/src/bithumb.d.ts +165 -0
- package/js/src/src/bithumb.js +1257 -0
- package/js/src/src/bitimen.d.ts +23 -0
- package/js/src/src/bitimen.js +424 -0
- package/js/src/src/bitir.d.ts +23 -0
- package/js/src/src/bitir.js +521 -0
- package/js/src/src/bitmart.d.ts +736 -0
- package/js/src/src/bitmart.js +5639 -0
- package/js/src/src/bitmex.d.ts +395 -0
- package/js/src/src/bitmex.js +3088 -0
- package/js/src/src/bitopro.d.ts +295 -0
- package/js/src/src/bitopro.js +1892 -0
- package/js/src/src/bitpin.d.ts +23 -0
- package/js/src/src/bitpin.js +487 -0
- package/js/src/src/bitrue.d.ts +384 -0
- package/js/src/src/bitrue.js +3382 -0
- package/js/src/src/bitso.d.ts +270 -0
- package/js/src/src/bitso.js +1881 -0
- package/js/src/src/bitstamp.d.ts +355 -0
- package/js/src/src/bitstamp.js +2445 -0
- package/js/src/src/bitteam.d.ts +229 -0
- package/js/src/src/bitteam.js +2420 -0
- package/js/src/src/bittrade.d.ts +298 -0
- package/js/src/src/bittrade.js +2050 -0
- package/js/src/src/bitunix.d.ts +21 -0
- package/js/src/src/bitunix.js +326 -0
- package/js/src/src/bitvavo.d.ts +311 -0
- package/js/src/src/bitvavo.js +2204 -0
- package/js/src/src/blockchaincom.d.ts +256 -0
- package/js/src/src/blockchaincom.js +1259 -0
- package/js/src/src/blofin.d.ts +439 -0
- package/js/src/src/blofin.js +2576 -0
- package/js/src/src/btcalpha.d.ts +209 -0
- package/js/src/src/btcalpha.js +1056 -0
- package/js/src/src/btcbox.d.ts +144 -0
- package/js/src/src/btcbox.js +834 -0
- package/js/src/src/btcmarkets.d.ts +253 -0
- package/js/src/src/btcmarkets.js +1418 -0
- package/js/src/src/btcturk.d.ts +161 -0
- package/js/src/src/btcturk.js +1058 -0
- package/js/src/src/bybit.d.ts +1097 -0
- package/js/src/src/bybit.js +9382 -0
- package/js/src/src/bydfi.d.ts +23 -0
- package/js/src/src/bydfi.js +434 -0
- package/js/src/src/cafearz.d.ts +21 -0
- package/js/src/src/cafearz.js +346 -0
- package/js/src/src/cex.d.ts +286 -0
- package/js/src/src/cex.js +1799 -0
- package/js/src/src/coinbase.d.ts +623 -0
- package/js/src/src/coinbase.js +5220 -0
- package/js/src/src/coinbaseadvanced.d.ts +4 -0
- package/js/src/src/coinbaseadvanced.js +18 -0
- package/js/src/src/coinbaseexchange.d.ts +334 -0
- package/js/src/src/coinbaseexchange.js +2127 -0
- package/js/src/src/coinbaseinternational.d.ts +443 -0
- package/js/src/src/coinbaseinternational.js +2336 -0
- package/js/src/src/coincatch.d.ts +786 -0
- package/js/src/src/coincatch.js +5492 -0
- package/js/src/src/coincheck.d.ts +147 -0
- package/js/src/src/coincheck.js +962 -0
- package/js/src/src/coinex.d.ts +719 -0
- package/js/src/src/coinex.js +6166 -0
- package/js/src/src/coinmate.d.ts +202 -0
- package/js/src/src/coinmate.js +1215 -0
- package/js/src/src/coinmetro.d.ts +244 -0
- package/js/src/src/coinmetro.js +2024 -0
- package/js/src/src/coinone.d.ts +158 -0
- package/js/src/src/coinone.js +1278 -0
- package/js/src/src/coinsph.d.ts +310 -0
- package/js/src/src/coinsph.js +2203 -0
- package/js/src/src/coinspot.d.ts +108 -0
- package/js/src/src/coinspot.js +653 -0
- package/js/src/src/cryptocom.d.ts +463 -0
- package/js/src/src/cryptocom.js +3549 -0
- package/js/src/src/cryptomus.d.ts +158 -0
- package/js/src/src/cryptomus.js +1169 -0
- package/js/src/src/defx.d.ts +348 -0
- package/js/src/src/defx.js +2139 -0
- package/js/src/src/delta.d.ts +407 -0
- package/js/src/src/delta.js +3654 -0
- package/js/src/src/deribit.d.ts +516 -0
- package/js/src/src/deribit.js +3790 -0
- package/js/src/src/derive.d.ts +324 -0
- package/js/src/src/derive.js +2655 -0
- package/js/src/src/digifinex.d.ts +544 -0
- package/js/src/src/digifinex.js +4453 -0
- package/js/src/src/ellipx.d.ts +237 -0
- package/js/src/src/ellipx.js +2071 -0
- package/js/src/src/eterex.d.ts +21 -0
- package/js/src/src/eterex.js +299 -0
- package/js/src/src/excoino.d.ts +23 -0
- package/js/src/src/excoino.js +426 -0
- package/js/src/src/exir.d.ts +23 -0
- package/js/src/src/exir.js +403 -0
- package/js/src/src/exmo.d.ts +426 -0
- package/js/src/src/exmo.js +2825 -0
- package/js/src/src/exnovin.d.ts +22 -0
- package/js/src/src/exnovin.js +378 -0
- package/js/src/src/farhadexchange.d.ts +21 -0
- package/js/src/src/farhadexchange.js +280 -0
- package/js/src/src/fmfwio.d.ts +4 -0
- package/js/src/src/fmfwio.js +35 -0
- package/js/src/src/foxbit.d.ts +352 -0
- package/js/src/src/foxbit.js +2016 -0
- package/js/src/src/gate.d.ts +1071 -0
- package/js/src/src/gate.js +8282 -0
- package/js/src/src/gateio.d.ts +4 -0
- package/js/src/src/gateio.js +17 -0
- package/js/src/src/gemini.d.ts +257 -0
- package/js/src/src/gemini.js +2006 -0
- package/js/src/src/hamtapay.d.ts +21 -0
- package/js/src/src/hamtapay.js +303 -0
- package/js/src/src/hashkey.d.ts +628 -0
- package/js/src/src/hashkey.js +4363 -0
- package/js/src/src/hibachi.d.ts +346 -0
- package/js/src/src/hibachi.js +2137 -0
- package/js/src/src/hitbtc.d.ts +558 -0
- package/js/src/src/hitbtc.js +3847 -0
- package/js/src/src/hitobit.d.ts +23 -0
- package/js/src/src/hitobit.js +412 -0
- package/js/src/src/hollaex.d.ts +305 -0
- package/js/src/src/hollaex.js +2046 -0
- package/js/src/src/htx.d.ts +961 -0
- package/js/src/src/htx.js +9668 -0
- package/js/src/src/huobi.d.ts +4 -0
- package/js/src/src/huobi.js +17 -0
- package/js/src/src/hyperliquid.d.ts +651 -0
- package/js/src/src/hyperliquid.js +3937 -0
- package/js/src/src/independentreserve.d.ts +169 -0
- package/js/src/src/independentreserve.js +1115 -0
- package/js/src/src/indodax.d.ts +217 -0
- package/js/src/src/indodax.js +1454 -0
- package/js/src/src/iranexchange.d.ts +21 -0
- package/js/src/src/iranexchange.js +399 -0
- package/js/src/src/jibitex.d.ts +23 -0
- package/js/src/src/jibitex.js +416 -0
- package/js/src/src/kcex.d.ts +21 -0
- package/js/src/src/kcex.js +335 -0
- package/js/src/src/kifpoolme.d.ts +23 -0
- package/js/src/src/kifpoolme.js +410 -0
- package/js/src/src/kraken.d.ts +484 -0
- package/js/src/src/kraken.js +3518 -0
- package/js/src/src/krakenfutures.d.ts +362 -0
- package/js/src/src/krakenfutures.js +2885 -0
- package/js/src/src/kucoin.d.ts +759 -0
- package/js/src/src/kucoin.js +5153 -0
- package/js/src/src/kucoinfutures.d.ts +521 -0
- package/js/src/src/kucoinfutures.js +3381 -0
- package/js/src/src/latoken.d.ts +274 -0
- package/js/src/src/latoken.js +1824 -0
- package/js/src/src/lbank.d.ts +350 -0
- package/js/src/src/lbank.js +3146 -0
- package/js/src/src/luno.d.ts +252 -0
- package/js/src/src/luno.js +1479 -0
- package/js/src/src/mazdax.d.ts +23 -0
- package/js/src/src/mazdax.js +534 -0
- package/js/src/src/mercado.d.ts +160 -0
- package/js/src/src/mercado.js +1011 -0
- package/js/src/src/mexc.d.ts +768 -0
- package/js/src/src/mexc.js +6102 -0
- package/js/src/src/modetrade.d.ts +496 -0
- package/js/src/src/modetrade.js +2936 -0
- package/js/src/src/myokx.d.ts +4 -0
- package/js/src/src/myokx.js +54 -0
- package/js/src/src/ndax.d.ts +285 -0
- package/js/src/src/ndax.js +2598 -0
- package/js/src/src/nobitex.d.ts +23 -0
- package/js/src/src/nobitex.js +454 -0
- package/js/src/src/novadax.d.ts +279 -0
- package/js/src/src/novadax.js +1676 -0
- package/js/src/src/oceanex.d.ts +231 -0
- package/js/src/src/oceanex.js +1123 -0
- package/js/src/src/okcoin.d.ts +346 -0
- package/js/src/src/okcoin.js +3211 -0
- package/js/src/src/okexchange.d.ts +23 -0
- package/js/src/src/okexchange.js +373 -0
- package/js/src/src/okx.d.ts +1125 -0
- package/js/src/src/okx.js +9009 -0
- package/js/src/src/okxus.d.ts +4 -0
- package/js/src/src/okxus.js +54 -0
- package/js/src/src/ompfinex.d.ts +23 -0
- package/js/src/src/ompfinex.js +510 -0
- package/js/src/src/onetrading.d.ts +228 -0
- package/js/src/src/onetrading.js +1769 -0
- package/js/src/src/oxfun.d.ts +442 -0
- package/js/src/src/oxfun.js +2920 -0
- package/js/src/src/p2b.d.ts +189 -0
- package/js/src/src/p2b.js +1344 -0
- package/js/src/src/paradex.d.ts +389 -0
- package/js/src/src/paradex.js +2607 -0
- package/js/src/src/paymium.d.ts +133 -0
- package/js/src/src/paymium.js +644 -0
- package/js/src/src/phemex.d.ts +497 -0
- package/js/src/src/phemex.js +5333 -0
- package/js/src/src/pingi.d.ts +22 -0
- package/js/src/src/pingi.js +446 -0
- package/js/src/src/poloniex.d.ts +441 -0
- package/js/src/src/poloniex.js +3681 -0
- package/js/src/src/pooleno.d.ts +21 -0
- package/js/src/src/pooleno.js +347 -0
- package/js/src/src/pro/alpaca.d.ts +95 -0
- package/js/src/src/pro/alpaca.js +724 -0
- package/js/src/src/pro/apex.d.ts +160 -0
- package/js/src/src/pro/apex.js +1044 -0
- package/js/src/src/pro/ascendex.d.ts +99 -0
- package/js/src/src/pro/ascendex.js +1012 -0
- package/js/src/src/pro/bequant.d.ts +4 -0
- package/js/src/src/pro/bequant.js +42 -0
- package/js/src/src/pro/binance.d.ts +796 -0
- package/js/src/src/pro/binance.js +4373 -0
- package/js/src/src/pro/binancecoinm.d.ts +4 -0
- package/js/src/src/pro/binancecoinm.js +32 -0
- package/js/src/src/pro/binanceus.d.ts +4 -0
- package/js/src/src/pro/binanceus.js +52 -0
- package/js/src/src/pro/binanceusdm.d.ts +4 -0
- package/js/src/src/pro/binanceusdm.js +37 -0
- package/js/src/src/pro/bingx.d.ts +151 -0
- package/js/src/src/pro/bingx.js +1568 -0
- package/js/src/src/pro/bitfinex.d.ts +99 -0
- package/js/src/src/pro/bitfinex.js +1165 -0
- package/js/src/src/pro/bitget.d.ts +257 -0
- package/js/src/src/pro/bitget.js +2327 -0
- package/js/src/src/pro/bithumb.d.ts +59 -0
- package/js/src/src/pro/bithumb.js +395 -0
- package/js/src/src/pro/bitmart.d.ts +168 -0
- package/js/src/src/pro/bitmart.js +1686 -0
- package/js/src/src/pro/bitmex.d.ts +170 -0
- package/js/src/src/pro/bitmex.js +1760 -0
- package/js/src/src/pro/bitopro.d.ts +69 -0
- package/js/src/src/pro/bitopro.js +477 -0
- package/js/src/src/pro/bitrue.d.ts +40 -0
- package/js/src/src/pro/bitrue.js +461 -0
- package/js/src/src/pro/bitstamp.d.ts +53 -0
- package/js/src/src/pro/bitstamp.js +587 -0
- package/js/src/src/pro/bittrade.d.ts +66 -0
- package/js/src/src/pro/bittrade.js +606 -0
- package/js/src/src/pro/bitvavo.d.ts +321 -0
- package/js/src/src/pro/bitvavo.js +1451 -0
- package/js/src/src/pro/blockchaincom.d.ts +89 -0
- package/js/src/src/pro/blockchaincom.js +777 -0
- package/js/src/src/pro/blofin.d.ts +174 -0
- package/js/src/src/pro/blofin.js +743 -0
- package/js/src/src/pro/bybit.d.ts +397 -0
- package/js/src/src/pro/bybit.js +2519 -0
- package/js/src/src/pro/cex.d.ts +220 -0
- package/js/src/src/pro/cex.js +1535 -0
- package/js/src/src/pro/coinbase.d.ts +119 -0
- package/js/src/src/pro/coinbase.js +736 -0
- package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
- package/js/src/src/pro/coinbaseadvanced.js +18 -0
- package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
- package/js/src/src/pro/coinbaseexchange.js +969 -0
- package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
- package/js/src/src/pro/coinbaseinternational.js +804 -0
- package/js/src/src/pro/coincatch.d.ts +207 -0
- package/js/src/src/pro/coincatch.js +1562 -0
- package/js/src/src/pro/coincheck.d.ts +33 -0
- package/js/src/src/pro/coincheck.js +210 -0
- package/js/src/src/pro/coinex.d.ts +147 -0
- package/js/src/src/pro/coinex.js +1426 -0
- package/js/src/src/pro/coinone.d.ts +51 -0
- package/js/src/src/pro/coinone.js +413 -0
- package/js/src/src/pro/cryptocom.d.ts +300 -0
- package/js/src/src/pro/cryptocom.js +1414 -0
- package/js/src/src/pro/defx.d.ts +236 -0
- package/js/src/src/pro/defx.js +865 -0
- package/js/src/src/pro/deribit.d.ts +163 -0
- package/js/src/src/pro/deribit.js +1066 -0
- package/js/src/src/pro/derive.d.ts +100 -0
- package/js/src/src/pro/derive.js +753 -0
- package/js/src/src/pro/exmo.d.ts +97 -0
- package/js/src/src/pro/exmo.js +903 -0
- package/js/src/src/pro/gate.d.ts +360 -0
- package/js/src/src/pro/gate.js +2119 -0
- package/js/src/src/pro/gateio.d.ts +4 -0
- package/js/src/src/pro/gateio.js +17 -0
- package/js/src/src/pro/gemini.d.ts +106 -0
- package/js/src/src/pro/gemini.js +932 -0
- package/js/src/src/pro/hashkey.d.ts +121 -0
- package/js/src/src/pro/hashkey.js +843 -0
- package/js/src/src/pro/hitbtc.d.ts +235 -0
- package/js/src/src/pro/hitbtc.js +1400 -0
- package/js/src/src/pro/hollaex.d.ts +77 -0
- package/js/src/src/pro/hollaex.js +604 -0
- package/js/src/src/pro/htx.d.ts +141 -0
- package/js/src/src/pro/htx.js +2415 -0
- package/js/src/src/pro/huobi.d.ts +4 -0
- package/js/src/src/pro/huobi.js +17 -0
- package/js/src/src/pro/hyperliquid.d.ts +218 -0
- package/js/src/src/pro/hyperliquid.js +1126 -0
- package/js/src/src/pro/independentreserve.d.ts +36 -0
- package/js/src/src/pro/independentreserve.js +287 -0
- package/js/src/src/pro/kraken.d.ts +233 -0
- package/js/src/src/pro/kraken.js +1785 -0
- package/js/src/src/pro/krakenfutures.d.ts +178 -0
- package/js/src/src/pro/krakenfutures.js +1592 -0
- package/js/src/src/pro/kucoin.d.ts +221 -0
- package/js/src/src/pro/kucoin.js +1430 -0
- package/js/src/src/pro/kucoinfutures.d.ts +205 -0
- package/js/src/src/pro/kucoinfutures.js +1295 -0
- package/js/src/src/pro/lbank.d.ts +134 -0
- package/js/src/src/pro/lbank.js +950 -0
- package/js/src/src/pro/luno.d.ts +44 -0
- package/js/src/src/pro/luno.js +322 -0
- package/js/src/src/pro/mexc.d.ts +210 -0
- package/js/src/src/pro/mexc.js +2009 -0
- package/js/src/src/pro/modetrade.d.ts +155 -0
- package/js/src/src/pro/modetrade.js +1335 -0
- package/js/src/src/pro/myokx.d.ts +4 -0
- package/js/src/src/pro/myokx.js +39 -0
- package/js/src/src/pro/ndax.d.ts +60 -0
- package/js/src/src/pro/ndax.js +545 -0
- package/js/src/src/pro/okcoin.d.ts +91 -0
- package/js/src/src/pro/okcoin.js +763 -0
- package/js/src/src/pro/okx.d.ts +408 -0
- package/js/src/src/pro/okx.js +2479 -0
- package/js/src/src/pro/okxus.d.ts +4 -0
- package/js/src/src/pro/okxus.js +39 -0
- package/js/src/src/pro/onetrading.d.ts +107 -0
- package/js/src/src/pro/onetrading.js +1343 -0
- package/js/src/src/pro/oxfun.d.ts +234 -0
- package/js/src/src/pro/oxfun.js +1112 -0
- package/js/src/src/pro/p2b.d.ts +104 -0
- package/js/src/src/pro/p2b.js +506 -0
- package/js/src/src/pro/paradex.d.ts +54 -0
- package/js/src/src/pro/paradex.js +370 -0
- package/js/src/src/pro/phemex.d.ts +129 -0
- package/js/src/src/pro/phemex.js +1569 -0
- package/js/src/src/pro/poloniex.d.ts +214 -0
- package/js/src/src/pro/poloniex.js +1318 -0
- package/js/src/src/pro/probit.d.ts +91 -0
- package/js/src/src/pro/probit.js +593 -0
- package/js/src/src/pro/tradeogre.d.ts +49 -0
- package/js/src/src/pro/tradeogre.js +284 -0
- package/js/src/src/pro/upbit.d.ts +124 -0
- package/js/src/src/pro/upbit.js +689 -0
- package/js/src/src/pro/vertex.d.ts +104 -0
- package/js/src/src/pro/vertex.js +999 -0
- package/js/src/src/pro/whitebit.d.ts +123 -0
- package/js/src/src/pro/whitebit.js +971 -0
- package/js/src/src/pro/woo.d.ts +161 -0
- package/js/src/src/pro/woo.js +1351 -0
- package/js/src/src/pro/woofipro.d.ts +155 -0
- package/js/src/src/pro/woofipro.js +1335 -0
- package/js/src/src/pro/xt.d.ts +165 -0
- package/js/src/src/pro/xt.js +1230 -0
- package/js/src/src/probit.d.ts +283 -0
- package/js/src/src/probit.js +1935 -0
- package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
- package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
- package/js/src/src/raastin.d.ts +24 -0
- package/js/src/src/raastin.js +494 -0
- package/js/src/src/ramzinex.d.ts +23 -0
- package/js/src/src/ramzinex.js +510 -0
- package/js/src/src/sarmayex.d.ts +21 -0
- package/js/src/src/sarmayex.js +376 -0
- package/js/src/src/sarrafex.d.ts +23 -0
- package/js/src/src/sarrafex.js +501 -0
- package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
- package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
- package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
- package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
- package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
- package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
- package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
- package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
- package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
- package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
- package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
- package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
- package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
- package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
- package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
- package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
- package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
- package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
- package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
- package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
- package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
- package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
- package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
- package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
- package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
- package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
- package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
- package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
- package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
- package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
- package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
- package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
- package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
- package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
- package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
- package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
- package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
- package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
- package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
- package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
- package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
- package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
- package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
- package/js/src/src/static_dependencies/ethers/index.js +22 -0
- package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
- package/js/src/src/static_dependencies/ethers/interface.js +990 -0
- package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
- package/js/src/src/static_dependencies/ethers/typed.js +608 -0
- package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
- package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
- package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
- package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
- package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
- package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
- package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
- package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
- package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
- package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
- package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
- package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
- package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
- package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
- package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
- package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
- package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
- package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
- package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
- package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
- package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
- package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
- package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
- package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
- package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
- package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
- package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
- package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
- package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
- package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
- package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
- package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
- package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
- package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
- package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
- package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
- package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
- package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
- package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
- package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
- package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
- package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
- package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
- package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
- package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
- package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
- package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
- package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
- package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
- package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
- package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
- package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
- package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
- package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
- package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
- package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
- package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
- package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
- package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
- package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
- package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
- package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
- package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
- package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
- package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
- package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
- package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
- package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
- package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
- package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
- package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
- package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
- package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
- package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
- package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
- package/js/src/src/static_dependencies/qs/index.cjs +15 -0
- package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
- package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
- package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
- package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
- package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
- package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
- package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
- package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
- package/js/src/src/static_dependencies/scure-base/index.js +420 -0
- package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
- package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
- package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
- package/js/src/src/static_dependencies/starknet/constants.js +67 -0
- package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
- package/js/src/src/static_dependencies/starknet/index.js +9 -0
- package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
- package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
- package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
- package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
- package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
- package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
- package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
- package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
- package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
- package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
- package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
- package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
- package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
- package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
- package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
- package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
- package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
- package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
- package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
- package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
- package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
- package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
- package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
- package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
- package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
- package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
- package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
- package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
- package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
- package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
- package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
- package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
- package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
- package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
- package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
- package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
- package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
- package/js/src/src/tabdeal.d.ts +23 -0
- package/js/src/src/tabdeal.js +387 -0
- package/js/src/src/tehran_exchange.d.ts +21 -0
- package/js/src/src/tehran_exchange.js +333 -0
- package/js/src/src/tetherland.d.ts +21 -0
- package/js/src/src/tetherland.js +367 -0
- package/js/src/src/timex.d.ts +247 -0
- package/js/src/src/timex.js +1792 -0
- package/js/src/src/tokocrypto.d.ts +261 -0
- package/js/src/src/tokocrypto.js +2641 -0
- package/js/src/src/toobit.d.ts +22 -0
- package/js/src/src/toobit.js +445 -0
- package/js/src/src/tradeogre.d.ts +149 -0
- package/js/src/src/tradeogre.js +878 -0
- package/js/src/src/twox.d.ts +21 -0
- package/js/src/src/twox.js +371 -0
- package/js/src/src/ubitex.d.ts +23 -0
- package/js/src/src/ubitex.js +433 -0
- package/js/src/src/upbit.d.ts +377 -0
- package/js/src/src/upbit.js +2340 -0
- package/js/src/src/vertex.d.ts +346 -0
- package/js/src/src/vertex.js +3146 -0
- package/js/src/src/wallex.d.ts +23 -0
- package/js/src/src/wallex.js +467 -0
- package/js/src/src/wavesexchange.d.ts +244 -0
- package/js/src/src/wavesexchange.js +2747 -0
- package/js/src/src/whitebit.d.ts +571 -0
- package/js/src/src/whitebit.js +3437 -0
- package/js/src/src/woo.d.ts +727 -0
- package/js/src/src/woo.js +4183 -0
- package/js/src/src/woofipro.d.ts +497 -0
- package/js/src/src/woofipro.js +2941 -0
- package/js/src/src/xt.d.ts +568 -0
- package/js/src/src/xt.js +5184 -0
- package/js/src/src/yobit.d.ts +197 -0
- package/js/src/src/yobit.js +1453 -0
- package/js/src/src/zaif.d.ts +136 -0
- package/js/src/src/zaif.js +821 -0
- package/js/src/src/zonda.d.ts +214 -0
- package/js/src/src/zonda.js +1984 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
- package/js/test.js +9 -17
- package/package.json +1 -1
|
@@ -0,0 +1,1451 @@
|
|
|
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
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
import bitvavoRest from '../bitvavo.js';
|
|
9
|
+
import { AuthenticationError, ArgumentsRequired, ExchangeError } from '../base/errors.js';
|
|
10
|
+
import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById } from '../base/ws/Cache.js';
|
|
11
|
+
import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
export default class bitvavo extends bitvavoRest {
|
|
14
|
+
describe() {
|
|
15
|
+
return this.deepExtend(super.describe(), {
|
|
16
|
+
'has': {
|
|
17
|
+
'ws': true,
|
|
18
|
+
'cancelOrdersWs': false,
|
|
19
|
+
'fetchTradesWs': false,
|
|
20
|
+
'watchOrderBook': true,
|
|
21
|
+
'watchTrades': true,
|
|
22
|
+
'watchTicker': true,
|
|
23
|
+
'watchTickers': true,
|
|
24
|
+
'watchBidsAsks': true,
|
|
25
|
+
'watchOHLCV': true,
|
|
26
|
+
'watchOrders': true,
|
|
27
|
+
'watchMyTrades': true,
|
|
28
|
+
'cancelAllOrdersWs': true,
|
|
29
|
+
'cancelOrderWs': true,
|
|
30
|
+
'createOrderWs': true,
|
|
31
|
+
'createStopLimitOrderWs': true,
|
|
32
|
+
'createStopMarketOrderWs': true,
|
|
33
|
+
'createStopOrderWs': true,
|
|
34
|
+
'editOrderWs': true,
|
|
35
|
+
'fetchBalanceWs': true,
|
|
36
|
+
'fetchCurrenciesWS': true,
|
|
37
|
+
'fetchDepositAddressWs': true,
|
|
38
|
+
'fetchDepositsWs': true,
|
|
39
|
+
'fetchDepositWithdrawFeesWs': true,
|
|
40
|
+
'fetchMyTradesWs': true,
|
|
41
|
+
'fetchOHLCVWs': true,
|
|
42
|
+
'fetchOpenOrdersWs': true,
|
|
43
|
+
'fetchOrderWs': true,
|
|
44
|
+
'fetchOrderBookWs': true,
|
|
45
|
+
'fetchOrdersWs': true,
|
|
46
|
+
'fetchTickerWs': true,
|
|
47
|
+
'fetchTickersWs': true,
|
|
48
|
+
'fetchTimeWs': true,
|
|
49
|
+
'fetchTradingFeesWs': true,
|
|
50
|
+
'fetchWithdrawalsWs': true,
|
|
51
|
+
'withdrawWs': true,
|
|
52
|
+
},
|
|
53
|
+
'urls': {
|
|
54
|
+
'api': {
|
|
55
|
+
'ws': 'wss://ws.bitvavo.com/v2',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
'options': {
|
|
59
|
+
'supressMultipleWsRequestsError': false,
|
|
60
|
+
'tradesLimit': 1000,
|
|
61
|
+
'ordersLimit': 1000,
|
|
62
|
+
'OHLCVLimit': 1000,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async watchPublic(name, symbol, params = {}) {
|
|
67
|
+
await this.loadMarkets();
|
|
68
|
+
const market = this.market(symbol);
|
|
69
|
+
const messageHash = name + '@' + market['id'];
|
|
70
|
+
const url = this.urls['api']['ws'];
|
|
71
|
+
const request = {
|
|
72
|
+
'action': 'subscribe',
|
|
73
|
+
'channels': [
|
|
74
|
+
{
|
|
75
|
+
'name': name,
|
|
76
|
+
'markets': [
|
|
77
|
+
market['id'],
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
const message = this.extend(request, params);
|
|
83
|
+
return await this.watch(url, messageHash, message, messageHash);
|
|
84
|
+
}
|
|
85
|
+
async watchPublicMultiple(methodName, channelName, symbols, params = {}) {
|
|
86
|
+
await this.loadMarkets();
|
|
87
|
+
symbols = this.marketSymbols(symbols);
|
|
88
|
+
const messageHashes = [methodName];
|
|
89
|
+
const args = [];
|
|
90
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
91
|
+
const market = this.market(symbols[i]);
|
|
92
|
+
args.push(market['id']);
|
|
93
|
+
}
|
|
94
|
+
const url = this.urls['api']['ws'];
|
|
95
|
+
const request = {
|
|
96
|
+
'action': 'subscribe',
|
|
97
|
+
'channels': [
|
|
98
|
+
{
|
|
99
|
+
'name': channelName,
|
|
100
|
+
'markets': args,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
const message = this.extend(request, params);
|
|
105
|
+
return await this.watchMultiple(url, messageHashes, message, messageHashes);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* @method
|
|
109
|
+
* @name bitvavo#watchTicker
|
|
110
|
+
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
111
|
+
* @see https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
|
|
112
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
113
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
114
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
115
|
+
*/
|
|
116
|
+
async watchTicker(symbol, params = {}) {
|
|
117
|
+
return await this.watchPublic('ticker24h', symbol, params);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @method
|
|
121
|
+
* @name bitvavo#watchTickers
|
|
122
|
+
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
123
|
+
* @see https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
|
|
124
|
+
* @param {string[]} [symbols] unified symbol of the market to fetch the ticker for
|
|
125
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
126
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
127
|
+
*/
|
|
128
|
+
async watchTickers(symbols = undefined, params = {}) {
|
|
129
|
+
await this.loadMarkets();
|
|
130
|
+
symbols = this.marketSymbols(symbols, undefined, false);
|
|
131
|
+
const channel = 'ticker24h';
|
|
132
|
+
const tickers = await this.watchPublicMultiple(channel, channel, symbols, params);
|
|
133
|
+
return this.filterByArray(tickers, 'symbol', symbols);
|
|
134
|
+
}
|
|
135
|
+
handleTicker(client, message) {
|
|
136
|
+
//
|
|
137
|
+
// {
|
|
138
|
+
// "event": "ticker24h",
|
|
139
|
+
// "data": [
|
|
140
|
+
// {
|
|
141
|
+
// "market": "ETH-EUR",
|
|
142
|
+
// "open": "193.5",
|
|
143
|
+
// "high": "202.72",
|
|
144
|
+
// "low": "192.46",
|
|
145
|
+
// "last": "199.01",
|
|
146
|
+
// "volume": "3587.05020246",
|
|
147
|
+
// "volumeQuote": "708030.17",
|
|
148
|
+
// "bid": "199.56",
|
|
149
|
+
// "bidSize": "4.14730802",
|
|
150
|
+
// "ask": "199.57",
|
|
151
|
+
// "askSize": "6.13642074",
|
|
152
|
+
// "timestamp": 1590770885217
|
|
153
|
+
// }
|
|
154
|
+
// ]
|
|
155
|
+
// }
|
|
156
|
+
//
|
|
157
|
+
this.handleBidAsk(client, message);
|
|
158
|
+
const event = this.safeString(message, 'event');
|
|
159
|
+
const tickers = this.safeValue(message, 'data', []);
|
|
160
|
+
const result = [];
|
|
161
|
+
for (let i = 0; i < tickers.length; i++) {
|
|
162
|
+
const data = tickers[i];
|
|
163
|
+
const marketId = this.safeString(data, 'market');
|
|
164
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
165
|
+
const messageHash = event + '@' + marketId;
|
|
166
|
+
const ticker = this.parseTicker(data, market);
|
|
167
|
+
const symbol = ticker['symbol'];
|
|
168
|
+
this.tickers[symbol] = ticker;
|
|
169
|
+
result.push(ticker);
|
|
170
|
+
client.resolve(ticker, messageHash);
|
|
171
|
+
}
|
|
172
|
+
client.resolve(result, event);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* @method
|
|
176
|
+
* @name bitvavo#watchBidsAsks
|
|
177
|
+
* @description watches best bid & ask for symbols
|
|
178
|
+
* @see https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
|
|
179
|
+
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
180
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
181
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
182
|
+
*/
|
|
183
|
+
async watchBidsAsks(symbols = undefined, params = {}) {
|
|
184
|
+
await this.loadMarkets();
|
|
185
|
+
symbols = this.marketSymbols(symbols, undefined, false);
|
|
186
|
+
const channel = 'ticker24h';
|
|
187
|
+
const tickers = await this.watchPublicMultiple('bidask', channel, symbols, params);
|
|
188
|
+
return this.filterByArray(tickers, 'symbol', symbols);
|
|
189
|
+
}
|
|
190
|
+
handleBidAsk(client, message) {
|
|
191
|
+
const event = 'bidask';
|
|
192
|
+
const tickers = this.safeValue(message, 'data', []);
|
|
193
|
+
const result = [];
|
|
194
|
+
for (let i = 0; i < tickers.length; i++) {
|
|
195
|
+
const data = tickers[i];
|
|
196
|
+
const ticker = this.parseWsBidAsk(data);
|
|
197
|
+
const symbol = ticker['symbol'];
|
|
198
|
+
this.bidsasks[symbol] = ticker;
|
|
199
|
+
result.push(ticker);
|
|
200
|
+
const messageHash = event + ':' + symbol;
|
|
201
|
+
client.resolve(ticker, messageHash);
|
|
202
|
+
}
|
|
203
|
+
client.resolve(result, event);
|
|
204
|
+
}
|
|
205
|
+
parseWsBidAsk(ticker, market = undefined) {
|
|
206
|
+
const marketId = this.safeString(ticker, 'market');
|
|
207
|
+
market = this.safeMarket(marketId, undefined, '-');
|
|
208
|
+
const symbol = this.safeString(market, 'symbol');
|
|
209
|
+
const timestamp = this.safeInteger(ticker, 'timestamp');
|
|
210
|
+
return this.safeTicker({
|
|
211
|
+
'symbol': symbol,
|
|
212
|
+
'timestamp': timestamp,
|
|
213
|
+
'datetime': this.iso8601(timestamp),
|
|
214
|
+
'ask': this.safeNumber(ticker, 'ask'),
|
|
215
|
+
'askVolume': this.safeNumber(ticker, 'askSize'),
|
|
216
|
+
'bid': this.safeNumber(ticker, 'bid'),
|
|
217
|
+
'bidVolume': this.safeNumber(ticker, 'bidSize'),
|
|
218
|
+
'info': ticker,
|
|
219
|
+
}, market);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* @method
|
|
223
|
+
* @name bitvavo#watchTrades
|
|
224
|
+
* @description get the list of most recent trades for a particular symbol
|
|
225
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
226
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
227
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
228
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
229
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
230
|
+
*/
|
|
231
|
+
async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
232
|
+
await this.loadMarkets();
|
|
233
|
+
symbol = this.symbol(symbol);
|
|
234
|
+
const trades = await this.watchPublic('trades', symbol, params);
|
|
235
|
+
if (this.newUpdates) {
|
|
236
|
+
limit = trades.getLimit(symbol, limit);
|
|
237
|
+
}
|
|
238
|
+
return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
|
|
239
|
+
}
|
|
240
|
+
handleTrade(client, message) {
|
|
241
|
+
//
|
|
242
|
+
// {
|
|
243
|
+
// "event": "trade",
|
|
244
|
+
// "timestamp": 1590779594547,
|
|
245
|
+
// "market": "ETH-EUR",
|
|
246
|
+
// "id": "450c3298-f082-4461-9e2c-a0262cc7cc2e",
|
|
247
|
+
// "amount": "0.05026233",
|
|
248
|
+
// "price": "198.46",
|
|
249
|
+
// "side": "buy"
|
|
250
|
+
// }
|
|
251
|
+
//
|
|
252
|
+
const marketId = this.safeString(message, 'market');
|
|
253
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
254
|
+
const symbol = market['symbol'];
|
|
255
|
+
const name = 'trades';
|
|
256
|
+
const messageHash = name + '@' + marketId;
|
|
257
|
+
const trade = this.parseTrade(message, market);
|
|
258
|
+
let tradesArray = this.safeValue(this.trades, symbol);
|
|
259
|
+
if (tradesArray === undefined) {
|
|
260
|
+
const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
|
|
261
|
+
tradesArray = new ArrayCache(limit);
|
|
262
|
+
}
|
|
263
|
+
tradesArray.append(trade);
|
|
264
|
+
this.trades[symbol] = tradesArray;
|
|
265
|
+
client.resolve(tradesArray, messageHash);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* @method
|
|
269
|
+
* @name bitvavo#watchOHLCV
|
|
270
|
+
* @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
271
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
272
|
+
* @param {string} timeframe the length of time each candle represents
|
|
273
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
274
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
275
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
276
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
277
|
+
*/
|
|
278
|
+
async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
279
|
+
await this.loadMarkets();
|
|
280
|
+
const market = this.market(symbol);
|
|
281
|
+
symbol = market['symbol'];
|
|
282
|
+
const name = 'candles';
|
|
283
|
+
const marketId = market['id'];
|
|
284
|
+
const interval = this.safeString(this.timeframes, timeframe, timeframe);
|
|
285
|
+
const messageHash = name + '@' + marketId + '_' + interval;
|
|
286
|
+
const url = this.urls['api']['ws'];
|
|
287
|
+
const request = {
|
|
288
|
+
'action': 'subscribe',
|
|
289
|
+
'channels': [
|
|
290
|
+
{
|
|
291
|
+
'name': 'candles',
|
|
292
|
+
'interval': [interval],
|
|
293
|
+
'markets': [marketId],
|
|
294
|
+
},
|
|
295
|
+
],
|
|
296
|
+
};
|
|
297
|
+
const message = this.extend(request, params);
|
|
298
|
+
const ohlcv = await this.watch(url, messageHash, message, messageHash);
|
|
299
|
+
if (this.newUpdates) {
|
|
300
|
+
limit = ohlcv.getLimit(symbol, limit);
|
|
301
|
+
}
|
|
302
|
+
return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
|
|
303
|
+
}
|
|
304
|
+
handleFetchOHLCV(client, message) {
|
|
305
|
+
//
|
|
306
|
+
// {
|
|
307
|
+
// action: 'getCandles',
|
|
308
|
+
// response: [
|
|
309
|
+
// [1690325820000, '26453', '26453', '26436', '26447', '0.01626246'],
|
|
310
|
+
// [1690325760000, '26454', '26454', '26453', '26453', '0.00037707']
|
|
311
|
+
// ]
|
|
312
|
+
// }
|
|
313
|
+
//
|
|
314
|
+
const response = this.safeValue(message, 'response');
|
|
315
|
+
const ohlcv = this.parseOHLCVs(response, undefined, undefined, undefined);
|
|
316
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
317
|
+
client.resolve(ohlcv, messageHash);
|
|
318
|
+
}
|
|
319
|
+
handleOHLCV(client, message) {
|
|
320
|
+
//
|
|
321
|
+
// {
|
|
322
|
+
// "event": "candle",
|
|
323
|
+
// "market": "BTC-EUR",
|
|
324
|
+
// "interval": "1m",
|
|
325
|
+
// "candle": [
|
|
326
|
+
// [
|
|
327
|
+
// 1590797160000,
|
|
328
|
+
// "8480.9",
|
|
329
|
+
// "8480.9",
|
|
330
|
+
// "8480.9",
|
|
331
|
+
// "8480.9",
|
|
332
|
+
// "0.01038628"
|
|
333
|
+
// ]
|
|
334
|
+
// ]
|
|
335
|
+
// }
|
|
336
|
+
//
|
|
337
|
+
const name = 'candles';
|
|
338
|
+
const marketId = this.safeString(message, 'market');
|
|
339
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
340
|
+
const symbol = market['symbol'];
|
|
341
|
+
const interval = this.safeString(message, 'interval');
|
|
342
|
+
// use a reverse lookup in a static map instead
|
|
343
|
+
const timeframe = this.findTimeframe(interval);
|
|
344
|
+
const messageHash = name + '@' + marketId + '_' + interval;
|
|
345
|
+
const candles = this.safeValue(message, 'candle');
|
|
346
|
+
this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
|
|
347
|
+
let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
|
|
348
|
+
if (stored === undefined) {
|
|
349
|
+
const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
|
|
350
|
+
stored = new ArrayCacheByTimestamp(limit);
|
|
351
|
+
this.ohlcvs[symbol][timeframe] = stored;
|
|
352
|
+
}
|
|
353
|
+
for (let i = 0; i < candles.length; i++) {
|
|
354
|
+
const candle = candles[i];
|
|
355
|
+
const parsed = this.parseOHLCV(candle, market);
|
|
356
|
+
stored.append(parsed);
|
|
357
|
+
}
|
|
358
|
+
client.resolve(stored, messageHash);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* @method
|
|
362
|
+
* @name bitvavo#watchOrderBook
|
|
363
|
+
* @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
364
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
365
|
+
* @param {int} [limit] the maximum amount of order book entries to return
|
|
366
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
367
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
368
|
+
*/
|
|
369
|
+
async watchOrderBook(symbol, limit = undefined, params = {}) {
|
|
370
|
+
await this.loadMarkets();
|
|
371
|
+
const market = this.market(symbol);
|
|
372
|
+
symbol = market['symbol'];
|
|
373
|
+
const name = 'book';
|
|
374
|
+
const messageHash = name + '@' + market['id'];
|
|
375
|
+
const url = this.urls['api']['ws'];
|
|
376
|
+
const request = {
|
|
377
|
+
'action': 'subscribe',
|
|
378
|
+
'channels': [
|
|
379
|
+
{
|
|
380
|
+
'name': name,
|
|
381
|
+
'markets': [
|
|
382
|
+
market['id'],
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
};
|
|
387
|
+
const subscription = {
|
|
388
|
+
'messageHash': messageHash,
|
|
389
|
+
'name': name,
|
|
390
|
+
'symbol': symbol,
|
|
391
|
+
'marketId': market['id'],
|
|
392
|
+
'method': this.handleOrderBookSubscription,
|
|
393
|
+
'limit': limit,
|
|
394
|
+
'params': params,
|
|
395
|
+
};
|
|
396
|
+
const message = this.extend(request, params);
|
|
397
|
+
const orderbook = await this.watch(url, messageHash, message, messageHash, subscription);
|
|
398
|
+
return orderbook.limit();
|
|
399
|
+
}
|
|
400
|
+
handleDelta(bookside, delta) {
|
|
401
|
+
const price = this.safeFloat(delta, 0);
|
|
402
|
+
const amount = this.safeFloat(delta, 1);
|
|
403
|
+
bookside.store(price, amount);
|
|
404
|
+
}
|
|
405
|
+
handleDeltas(bookside, deltas) {
|
|
406
|
+
for (let i = 0; i < deltas.length; i++) {
|
|
407
|
+
this.handleDelta(bookside, deltas[i]);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
handleOrderBookMessage(client, message, orderbook) {
|
|
411
|
+
//
|
|
412
|
+
// {
|
|
413
|
+
// "event": "book",
|
|
414
|
+
// "market": "BTC-EUR",
|
|
415
|
+
// "nonce": 36947383,
|
|
416
|
+
// "bids": [
|
|
417
|
+
// [ "8477.8", "0" ]
|
|
418
|
+
// ],
|
|
419
|
+
// "asks": [
|
|
420
|
+
// [ "8550.9", "0" ]
|
|
421
|
+
// ]
|
|
422
|
+
// }
|
|
423
|
+
//
|
|
424
|
+
const nonce = this.safeInteger(message, 'nonce');
|
|
425
|
+
if (nonce > orderbook['nonce']) {
|
|
426
|
+
this.handleDeltas(orderbook['asks'], this.safeValue(message, 'asks', []));
|
|
427
|
+
this.handleDeltas(orderbook['bids'], this.safeValue(message, 'bids', []));
|
|
428
|
+
orderbook['nonce'] = nonce;
|
|
429
|
+
}
|
|
430
|
+
return orderbook;
|
|
431
|
+
}
|
|
432
|
+
handleOrderBook(client, message) {
|
|
433
|
+
//
|
|
434
|
+
// {
|
|
435
|
+
// "event": "book",
|
|
436
|
+
// "market": "BTC-EUR",
|
|
437
|
+
// "nonce": 36729561,
|
|
438
|
+
// "bids": [
|
|
439
|
+
// [ "8513.3", "0" ],
|
|
440
|
+
// [ '8518.8', "0.64236203" ],
|
|
441
|
+
// [ '8513.6', "0.32435481" ],
|
|
442
|
+
// ],
|
|
443
|
+
// "asks": []
|
|
444
|
+
// }
|
|
445
|
+
//
|
|
446
|
+
const event = this.safeString(message, 'event');
|
|
447
|
+
const marketId = this.safeString(message, 'market');
|
|
448
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
449
|
+
const symbol = market['symbol'];
|
|
450
|
+
const messageHash = event + '@' + market['id'];
|
|
451
|
+
const orderbook = this.safeValue(this.orderbooks, symbol);
|
|
452
|
+
if (orderbook === undefined) {
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
if (orderbook['nonce'] === undefined) {
|
|
456
|
+
const subscription = this.safeValue(client.subscriptions, messageHash, {});
|
|
457
|
+
const watchingOrderBookSnapshot = this.safeValue(subscription, 'watchingOrderBookSnapshot');
|
|
458
|
+
if (watchingOrderBookSnapshot === undefined) {
|
|
459
|
+
subscription['watchingOrderBookSnapshot'] = true;
|
|
460
|
+
client.subscriptions[messageHash] = subscription;
|
|
461
|
+
const options = this.safeValue(this.options, 'watchOrderBookSnapshot', {});
|
|
462
|
+
const delay = this.safeInteger(options, 'delay', this.rateLimit);
|
|
463
|
+
// fetch the snapshot in a separate async call after a warmup delay
|
|
464
|
+
this.delay(delay, this.watchOrderBookSnapshot, client, message, subscription);
|
|
465
|
+
}
|
|
466
|
+
orderbook.cache.push(message);
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
this.handleOrderBookMessage(client, message, orderbook);
|
|
470
|
+
client.resolve(orderbook, messageHash);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
async watchOrderBookSnapshot(client, message, subscription) {
|
|
474
|
+
const params = this.safeValue(subscription, 'params');
|
|
475
|
+
const marketId = this.safeString(subscription, 'marketId');
|
|
476
|
+
const name = 'getBook';
|
|
477
|
+
const messageHash = name + '@' + marketId;
|
|
478
|
+
const url = this.urls['api']['ws'];
|
|
479
|
+
const request = {
|
|
480
|
+
'action': name,
|
|
481
|
+
'market': marketId,
|
|
482
|
+
};
|
|
483
|
+
const orderbook = await this.watch(url, messageHash, this.extend(request, params), messageHash, subscription);
|
|
484
|
+
return orderbook.limit();
|
|
485
|
+
}
|
|
486
|
+
handleOrderBookSnapshot(client, message) {
|
|
487
|
+
//
|
|
488
|
+
// {
|
|
489
|
+
// "action": "getBook",
|
|
490
|
+
// "response": {
|
|
491
|
+
// "market": "BTC-EUR",
|
|
492
|
+
// "nonce": 36946120,
|
|
493
|
+
// "bids": [
|
|
494
|
+
// [ '8494.9', "0.24399521" ],
|
|
495
|
+
// [ '8494.8', "0.34884085" ],
|
|
496
|
+
// [ '8493.9', "0.14535128" ],
|
|
497
|
+
// ],
|
|
498
|
+
// "asks": [
|
|
499
|
+
// [ "8495", "0.46982463" ],
|
|
500
|
+
// [ '8495.1', "0.12178267" ],
|
|
501
|
+
// [ '8496.2', "0.21924143" ],
|
|
502
|
+
// ]
|
|
503
|
+
// }
|
|
504
|
+
// }
|
|
505
|
+
//
|
|
506
|
+
const response = this.safeValue(message, 'response');
|
|
507
|
+
if (response === undefined) {
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
const marketId = this.safeString(response, 'market');
|
|
511
|
+
const symbol = this.safeSymbol(marketId, undefined, '-');
|
|
512
|
+
const name = 'book';
|
|
513
|
+
const messageHash = name + '@' + marketId;
|
|
514
|
+
const orderbook = this.orderbooks[symbol];
|
|
515
|
+
const snapshot = this.parseOrderBook(response, symbol);
|
|
516
|
+
snapshot['nonce'] = this.safeInteger(response, 'nonce');
|
|
517
|
+
orderbook.reset(snapshot);
|
|
518
|
+
// unroll the accumulated deltas
|
|
519
|
+
const messages = orderbook.cache;
|
|
520
|
+
for (let i = 0; i < messages.length; i++) {
|
|
521
|
+
const messageItem = messages[i];
|
|
522
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
523
|
+
}
|
|
524
|
+
this.orderbooks[symbol] = orderbook;
|
|
525
|
+
client.resolve(orderbook, messageHash);
|
|
526
|
+
}
|
|
527
|
+
handleOrderBookSubscription(client, message, subscription) {
|
|
528
|
+
const symbol = this.safeString(subscription, 'symbol');
|
|
529
|
+
const limit = this.safeInteger(subscription, 'limit');
|
|
530
|
+
if (symbol in this.orderbooks) {
|
|
531
|
+
delete this.orderbooks[symbol];
|
|
532
|
+
}
|
|
533
|
+
this.orderbooks[symbol] = this.orderBook({}, limit);
|
|
534
|
+
}
|
|
535
|
+
handleOrderBookSubscriptions(client, message, marketIds) {
|
|
536
|
+
const name = 'book';
|
|
537
|
+
for (let i = 0; i < marketIds.length; i++) {
|
|
538
|
+
const marketId = this.safeString(marketIds, i);
|
|
539
|
+
const symbol = this.safeSymbol(marketId, undefined, '-');
|
|
540
|
+
const messageHash = name + '@' + marketId;
|
|
541
|
+
if (!(symbol in this.orderbooks)) {
|
|
542
|
+
const subscription = this.safeValue(client.subscriptions, messageHash);
|
|
543
|
+
const method = this.safeValue(subscription, 'method');
|
|
544
|
+
if (method !== undefined) {
|
|
545
|
+
method.call(this, client, message, subscription);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* @method
|
|
552
|
+
* @name bitvavo#watchOrders
|
|
553
|
+
* @description watches information on multiple orders made by the user
|
|
554
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
555
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
556
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
557
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
558
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
559
|
+
*/
|
|
560
|
+
async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
561
|
+
if (symbol === undefined) {
|
|
562
|
+
throw new ArgumentsRequired(this.id + ' watchOrders() requires a symbol argument');
|
|
563
|
+
}
|
|
564
|
+
await this.loadMarkets();
|
|
565
|
+
await this.authenticate();
|
|
566
|
+
const market = this.market(symbol);
|
|
567
|
+
symbol = market['symbol'];
|
|
568
|
+
const marketId = market['id'];
|
|
569
|
+
const url = this.urls['api']['ws'];
|
|
570
|
+
const name = 'account';
|
|
571
|
+
const messageHash = 'order:' + symbol;
|
|
572
|
+
const request = {
|
|
573
|
+
'action': 'subscribe',
|
|
574
|
+
'channels': [
|
|
575
|
+
{
|
|
576
|
+
'name': name,
|
|
577
|
+
'markets': [marketId],
|
|
578
|
+
},
|
|
579
|
+
],
|
|
580
|
+
};
|
|
581
|
+
const orders = await this.watch(url, messageHash, request, messageHash);
|
|
582
|
+
if (this.newUpdates) {
|
|
583
|
+
limit = orders.getLimit(symbol, limit);
|
|
584
|
+
}
|
|
585
|
+
return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* @method
|
|
589
|
+
* @name bitvavo#watchMyTrades
|
|
590
|
+
* @description watches information on multiple trades made by the user
|
|
591
|
+
* @param {string} symbol unified market symbol of the market trades were made in
|
|
592
|
+
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
593
|
+
* @param {int} [limit] the maximum number of trade structures to retrieve
|
|
594
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
595
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
596
|
+
*/
|
|
597
|
+
async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
598
|
+
if (symbol === undefined) {
|
|
599
|
+
throw new ArgumentsRequired(this.id + ' watchMyTrades() requires a symbol argument');
|
|
600
|
+
}
|
|
601
|
+
await this.loadMarkets();
|
|
602
|
+
await this.authenticate();
|
|
603
|
+
const market = this.market(symbol);
|
|
604
|
+
symbol = market['symbol'];
|
|
605
|
+
const marketId = market['id'];
|
|
606
|
+
const url = this.urls['api']['ws'];
|
|
607
|
+
const name = 'account';
|
|
608
|
+
const messageHash = 'myTrades:' + symbol;
|
|
609
|
+
const request = {
|
|
610
|
+
'action': 'subscribe',
|
|
611
|
+
'channels': [
|
|
612
|
+
{
|
|
613
|
+
'name': name,
|
|
614
|
+
'markets': [marketId],
|
|
615
|
+
},
|
|
616
|
+
],
|
|
617
|
+
};
|
|
618
|
+
const trades = await this.watch(url, messageHash, request, messageHash);
|
|
619
|
+
if (this.newUpdates) {
|
|
620
|
+
limit = trades.getLimit(symbol, limit);
|
|
621
|
+
}
|
|
622
|
+
return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* @method
|
|
626
|
+
* @name bitvavo#createOrderWs
|
|
627
|
+
* @description create a trade order
|
|
628
|
+
* @see https://docs.bitvavo.com/#tag/Orders/paths/~1order/post
|
|
629
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
630
|
+
* @param {string} type 'market' or 'limit'
|
|
631
|
+
* @param {string} side 'buy' or 'sell'
|
|
632
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
633
|
+
* @param {float} price the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
634
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
635
|
+
* @param {string} [params.timeInForce] "GTC", "IOC", or "PO"
|
|
636
|
+
* @param {float} [params.stopPrice] The price at which a trigger order is triggered at
|
|
637
|
+
* @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
|
|
638
|
+
* @param {bool} [params.postOnly] If true, the order will only be posted to the order book and not executed immediately
|
|
639
|
+
* @param {float} [params.stopLossPrice] The price at which a stop loss order is triggered at
|
|
640
|
+
* @param {float} [params.takeProfitPrice] The price at which a take profit order is triggered at
|
|
641
|
+
* @param {string} [params.triggerType] "price"
|
|
642
|
+
* @param {string} [params.triggerReference] "lastTrade", "bestBid", "bestAsk", "midPrice" Only for stop orders: Use this to determine which parameter will trigger the order
|
|
643
|
+
* @param {string} [params.selfTradePrevention] "decrementAndCancel", "cancelOldest", "cancelNewest", "cancelBoth"
|
|
644
|
+
* @param {bool} [params.disableMarketProtection] don't cancel if the next fill price is 10% worse than the best fill price
|
|
645
|
+
* @param {bool} [params.responseRequired] Set this to 'false' when only an acknowledgement of success or failure is required, this is faster.
|
|
646
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
647
|
+
*/
|
|
648
|
+
async createOrderWs(symbol, type, side, amount, price = undefined, params = {}) {
|
|
649
|
+
await this.loadMarkets();
|
|
650
|
+
await this.authenticate();
|
|
651
|
+
const request = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
652
|
+
return await this.watchRequest('privateCreateOrder', request);
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* @method
|
|
656
|
+
* @name bitvavo#editOrderWs
|
|
657
|
+
* @description edit a trade order
|
|
658
|
+
* @see https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
|
|
659
|
+
* @param {string} id cancel order id
|
|
660
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
661
|
+
* @param {string} type 'market' or 'limit'
|
|
662
|
+
* @param {string} side 'buy' or 'sell'
|
|
663
|
+
* @param {float} [amount] how much of currency you want to trade in units of base currency
|
|
664
|
+
* @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
|
665
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
666
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
667
|
+
*/
|
|
668
|
+
async editOrderWs(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
669
|
+
await this.loadMarkets();
|
|
670
|
+
await this.authenticate();
|
|
671
|
+
const request = this.editOrderRequest(id, symbol, type, side, amount, price, params);
|
|
672
|
+
return await this.watchRequest('privateUpdateOrder', request);
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* @method
|
|
676
|
+
* @name bitvavo#cancelOrderWs
|
|
677
|
+
* @see https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
|
|
678
|
+
* @description cancels an open order
|
|
679
|
+
* @param {string} id order id
|
|
680
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
681
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
682
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
683
|
+
*/
|
|
684
|
+
async cancelOrderWs(id, symbol = undefined, params = {}) {
|
|
685
|
+
await this.loadMarkets();
|
|
686
|
+
await this.authenticate();
|
|
687
|
+
const request = this.cancelOrderRequest(id, symbol, params);
|
|
688
|
+
return await this.watchRequest('privateCancelOrder', request);
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* @method
|
|
692
|
+
* @name bitvavo#cancelAllOrdersWs
|
|
693
|
+
* @see https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
|
|
694
|
+
* @description cancel all open orders
|
|
695
|
+
* @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
|
|
696
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
697
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
698
|
+
*/
|
|
699
|
+
async cancelAllOrdersWs(symbol = undefined, params = {}) {
|
|
700
|
+
await this.loadMarkets();
|
|
701
|
+
await this.authenticate();
|
|
702
|
+
const request = {};
|
|
703
|
+
let market = undefined;
|
|
704
|
+
if (symbol !== undefined) {
|
|
705
|
+
market = this.market(symbol);
|
|
706
|
+
request['market'] = market['id'];
|
|
707
|
+
}
|
|
708
|
+
return await this.watchRequest('privateCancelOrders', this.extend(request, params));
|
|
709
|
+
}
|
|
710
|
+
handleMultipleOrders(client, message) {
|
|
711
|
+
//
|
|
712
|
+
// {
|
|
713
|
+
// action: 'privateCancelOrders',
|
|
714
|
+
// response: [{
|
|
715
|
+
// orderId: 'd71df826-1130-478a-8741-d219128675b0'
|
|
716
|
+
// }]
|
|
717
|
+
// }
|
|
718
|
+
//
|
|
719
|
+
// const action = this.safeString (message, 'action');
|
|
720
|
+
const response = this.safeList(message, 'response');
|
|
721
|
+
// const firstRawOrder = this.safeValue (response, 0, {});
|
|
722
|
+
// const marketId = this.safeString (firstRawOrder, 'market');
|
|
723
|
+
const orders = this.parseOrders(response);
|
|
724
|
+
// let messageHash = this.buildMessageHash (action, { 'market': marketId });
|
|
725
|
+
// client.resolve (orders, messageHash);
|
|
726
|
+
// messageHash = this.buildMessageHash (action, message);
|
|
727
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
728
|
+
client.resolve(orders, messageHash);
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* @method
|
|
732
|
+
* @name bitvavo#fetchOrderWs
|
|
733
|
+
* @see https://docs.bitvavo.com/#tag/General/paths/~1assets/get
|
|
734
|
+
* @description fetches information on an order made by the user
|
|
735
|
+
* @param {string} id the order id
|
|
736
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
737
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
738
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
739
|
+
*/
|
|
740
|
+
async fetchOrderWs(id, symbol = undefined, params = {}) {
|
|
741
|
+
if (symbol === undefined) {
|
|
742
|
+
throw new ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
|
|
743
|
+
}
|
|
744
|
+
await this.loadMarkets();
|
|
745
|
+
await this.authenticate();
|
|
746
|
+
const market = this.market(symbol);
|
|
747
|
+
const request = {
|
|
748
|
+
'orderId': id,
|
|
749
|
+
'market': market['id'],
|
|
750
|
+
};
|
|
751
|
+
return await this.watchRequest('privateGetOrder', this.extend(request, params));
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* @method
|
|
755
|
+
* @name bitvavo#fetchOrdersWs
|
|
756
|
+
* @see https://docs.bitvavo.com/#tag/Orders/paths/~1orders/get
|
|
757
|
+
* @description fetches information on multiple orders made by the user
|
|
758
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
759
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
760
|
+
* @param {int} [limit] the maximum number of orde structures to retrieve
|
|
761
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
762
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
763
|
+
*/
|
|
764
|
+
async fetchOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
765
|
+
if (symbol === undefined) {
|
|
766
|
+
throw new ArgumentsRequired(this.id + ' fetchOrdersWs() requires a symbol argument');
|
|
767
|
+
}
|
|
768
|
+
await this.loadMarkets();
|
|
769
|
+
await this.authenticate();
|
|
770
|
+
const request = this.fetchOrdersRequest(symbol, since, limit, params);
|
|
771
|
+
const orders = await this.watchRequest('privateGetOrders', request);
|
|
772
|
+
return this.filterBySymbolSinceLimit(orders, symbol, since, limit);
|
|
773
|
+
}
|
|
774
|
+
requestId() {
|
|
775
|
+
const ts = this.milliseconds().toString();
|
|
776
|
+
const randomNumber = this.randNumber(4);
|
|
777
|
+
const randomPart = randomNumber.toString();
|
|
778
|
+
return parseInt(ts + randomPart);
|
|
779
|
+
}
|
|
780
|
+
async watchRequest(action, request) {
|
|
781
|
+
const messageHash = this.requestId();
|
|
782
|
+
const messageHashStr = messageHash.toString();
|
|
783
|
+
request['action'] = action;
|
|
784
|
+
request['requestId'] = messageHash;
|
|
785
|
+
const url = this.urls['api']['ws'];
|
|
786
|
+
return await this.watch(url, messageHashStr, request, messageHashStr);
|
|
787
|
+
}
|
|
788
|
+
/**
|
|
789
|
+
* @method
|
|
790
|
+
* @name bitvavo#fetchOpenOrdersWs
|
|
791
|
+
* @description fetch all unfilled currently open orders
|
|
792
|
+
* @param {string} symbol unified market symbol
|
|
793
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
794
|
+
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
795
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
796
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
797
|
+
*/
|
|
798
|
+
async fetchOpenOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
799
|
+
await this.loadMarkets();
|
|
800
|
+
await this.authenticate();
|
|
801
|
+
const request = {
|
|
802
|
+
// 'market': market['id'], // rate limit 25 without a market, 1 with market specified
|
|
803
|
+
};
|
|
804
|
+
let market = undefined;
|
|
805
|
+
if (symbol !== undefined) {
|
|
806
|
+
market = this.market(symbol);
|
|
807
|
+
request['market'] = market['id'];
|
|
808
|
+
}
|
|
809
|
+
const orders = await this.watchRequest('privateGetOrdersOpen', this.extend(request, params));
|
|
810
|
+
return this.filterBySymbolSinceLimit(orders, symbol, since, limit);
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* @method
|
|
814
|
+
* @name bitvavo#fetchMyTradesWs
|
|
815
|
+
* @see https://docs.bitvavo.com/#tag/Trades
|
|
816
|
+
* @description fetch all trades made by the user
|
|
817
|
+
* @param {string} symbol unified market symbol
|
|
818
|
+
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
819
|
+
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
820
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
821
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
822
|
+
*/
|
|
823
|
+
async fetchMyTradesWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
824
|
+
if (symbol === undefined) {
|
|
825
|
+
throw new ArgumentsRequired(this.id + ' fetchMyTradesWs() requires a symbol argument');
|
|
826
|
+
}
|
|
827
|
+
await this.loadMarkets();
|
|
828
|
+
await this.authenticate();
|
|
829
|
+
const request = this.fetchMyTradesRequest(symbol, since, limit, params);
|
|
830
|
+
const myTrades = await this.watchRequest('privateGetTrades', request);
|
|
831
|
+
return this.filterBySymbolSinceLimit(myTrades, symbol, since, limit);
|
|
832
|
+
}
|
|
833
|
+
handleMyTrades(client, message) {
|
|
834
|
+
//
|
|
835
|
+
// {
|
|
836
|
+
// action: 'privateGetTrades',
|
|
837
|
+
// response: [
|
|
838
|
+
// {
|
|
839
|
+
// "id": "108c3633-0276-4480-a902-17a01829deae",
|
|
840
|
+
// "orderId": "1d671998-3d44-4df4-965f-0d48bd129a1b",
|
|
841
|
+
// "timestamp": 1542967486256,
|
|
842
|
+
// "market": "BTC-EUR",
|
|
843
|
+
// "side": "buy",
|
|
844
|
+
// "amount": "0.005",
|
|
845
|
+
// "price": "5000.1",
|
|
846
|
+
// "taker": true,
|
|
847
|
+
// "fee": "0.03",
|
|
848
|
+
// "feeCurrency": "EUR",
|
|
849
|
+
// "settled": true
|
|
850
|
+
// }
|
|
851
|
+
// ]
|
|
852
|
+
// }
|
|
853
|
+
//
|
|
854
|
+
//
|
|
855
|
+
// const action = this.safeString (message, 'action');
|
|
856
|
+
const response = this.safeList(message, 'response');
|
|
857
|
+
// const marketId = this.safeString (firstRawTrade, 'market');
|
|
858
|
+
const trades = this.parseTrades(response, undefined, undefined, undefined);
|
|
859
|
+
// const messageHash = this.buildMessageHash (action, { 'market': marketId });
|
|
860
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
861
|
+
client.resolve(trades, messageHash);
|
|
862
|
+
}
|
|
863
|
+
/**
|
|
864
|
+
* @method
|
|
865
|
+
* @name bitvavo#withdrawWs
|
|
866
|
+
* @description make a withdrawal
|
|
867
|
+
* @param {string} code unified currency code
|
|
868
|
+
* @param {float} amount the amount to withdraw
|
|
869
|
+
* @param {string} address the address to withdraw to
|
|
870
|
+
* @param {string} tag
|
|
871
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
872
|
+
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
873
|
+
*/
|
|
874
|
+
async withdrawWs(code, amount, address, tag = undefined, params = {}) {
|
|
875
|
+
[tag, params] = this.handleWithdrawTagAndParams(tag, params);
|
|
876
|
+
this.checkAddress(address);
|
|
877
|
+
await this.loadMarkets();
|
|
878
|
+
await this.authenticate();
|
|
879
|
+
const request = this.withdrawRequest(code, amount, address, tag, params);
|
|
880
|
+
return await this.watchRequest('privateWithdrawAssets', request);
|
|
881
|
+
}
|
|
882
|
+
handleWithdraw(client, message) {
|
|
883
|
+
//
|
|
884
|
+
// {
|
|
885
|
+
// action: 'privateWithdrawAssets',
|
|
886
|
+
// response: {
|
|
887
|
+
// "success": true,
|
|
888
|
+
// "symbol": "BTC",
|
|
889
|
+
// "amount": "1.5"
|
|
890
|
+
// }
|
|
891
|
+
// }
|
|
892
|
+
//
|
|
893
|
+
// const action = this.safeString (message, 'action');
|
|
894
|
+
// const messageHash = this.buildMessageHash (action, message);
|
|
895
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
896
|
+
const response = this.safeValue(message, 'response');
|
|
897
|
+
const withdraw = this.parseTransaction(response);
|
|
898
|
+
client.resolve(withdraw, messageHash);
|
|
899
|
+
}
|
|
900
|
+
/**
|
|
901
|
+
* @method
|
|
902
|
+
* @name bitvavo#fetchWithdrawalsWs
|
|
903
|
+
* @see https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
|
|
904
|
+
* @description fetch all withdrawals made from an account
|
|
905
|
+
* @param {string} code unified currency code
|
|
906
|
+
* @param {int} [since] the earliest time in ms to fetch withdrawals for
|
|
907
|
+
* @param {int} [limit] the maximum number of withdrawals structures to retrieve
|
|
908
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
909
|
+
* @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
910
|
+
*/
|
|
911
|
+
async fetchWithdrawalsWs(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
912
|
+
await this.loadMarkets();
|
|
913
|
+
await this.authenticate();
|
|
914
|
+
const request = this.fetchWithdrawalsRequest(code, since, limit, params);
|
|
915
|
+
const withdraws = await this.watchRequest('privateGetWithdrawalHistory', request);
|
|
916
|
+
return this.filterByCurrencySinceLimit(withdraws, code, since, limit);
|
|
917
|
+
}
|
|
918
|
+
handleWithdraws(client, message) {
|
|
919
|
+
//
|
|
920
|
+
// {
|
|
921
|
+
// action: 'privateGetWithdrawalHistory',
|
|
922
|
+
// response: [{
|
|
923
|
+
// timestamp: 1689792085000,
|
|
924
|
+
// symbol: 'BTC',
|
|
925
|
+
// amount: '0.0009',
|
|
926
|
+
// fee: '0',
|
|
927
|
+
// status: 'completed',
|
|
928
|
+
// txId: '7dbadc658d7d59c129de1332c55ee8e08d0ab74432faae03b417b9809c819d1f'
|
|
929
|
+
// },
|
|
930
|
+
// ...
|
|
931
|
+
// ]
|
|
932
|
+
// }
|
|
933
|
+
//
|
|
934
|
+
// const action = this.safeString (message, 'action');
|
|
935
|
+
// const messageHash = this.buildMessageHash (action, message);
|
|
936
|
+
const response = this.safeList(message, 'response');
|
|
937
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
938
|
+
const withdrawals = this.parseTransactions(response, undefined, undefined, undefined, { 'type': 'withdrawal' });
|
|
939
|
+
client.resolve(withdrawals, messageHash);
|
|
940
|
+
}
|
|
941
|
+
/**
|
|
942
|
+
* @method
|
|
943
|
+
* @name bitvavo#fetchOHLCVWs
|
|
944
|
+
* @see https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
|
|
945
|
+
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
946
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
947
|
+
* @param {string} timeframe the length of time each candle represents
|
|
948
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
949
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
950
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
951
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
952
|
+
*/
|
|
953
|
+
async fetchOHLCVWs(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
954
|
+
await this.loadMarkets();
|
|
955
|
+
const request = this.fetchOHLCVRequest(symbol, timeframe, since, limit, params);
|
|
956
|
+
const action = 'getCandles';
|
|
957
|
+
const ohlcv = await this.watchRequest(action, request);
|
|
958
|
+
return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* @method
|
|
962
|
+
* @name bitvavo#fetchDepositsWs
|
|
963
|
+
* @see https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
|
|
964
|
+
* @description fetch all deposits made to an account
|
|
965
|
+
* @param {string} code unified currency code
|
|
966
|
+
* @param {int} [since] the earliest time in ms to fetch deposits for
|
|
967
|
+
* @param {int} [limit] the maximum number of deposits structures to retrieve
|
|
968
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
969
|
+
* @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
970
|
+
*/
|
|
971
|
+
async fetchDepositsWs(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
972
|
+
await this.loadMarkets();
|
|
973
|
+
await this.authenticate();
|
|
974
|
+
const request = this.fetchDepositsRequest(code, since, limit, params);
|
|
975
|
+
const deposits = await this.watchRequest('privateGetDepositHistory', request);
|
|
976
|
+
return this.filterByCurrencySinceLimit(deposits, code, since, limit);
|
|
977
|
+
}
|
|
978
|
+
handleDeposits(client, message) {
|
|
979
|
+
//
|
|
980
|
+
// {
|
|
981
|
+
// action: 'privateGetDepositHistory',
|
|
982
|
+
// response: [{
|
|
983
|
+
// timestamp: 1689792085000,
|
|
984
|
+
// symbol: 'BTC',
|
|
985
|
+
// amount: '0.0009',
|
|
986
|
+
// fee: '0',
|
|
987
|
+
// status: 'completed',
|
|
988
|
+
// txId: '7dbadc658d7d59c129de1332c55ee8e08d0ab74432faae03b417b9809c819d1f'
|
|
989
|
+
// },
|
|
990
|
+
// ...
|
|
991
|
+
// ]
|
|
992
|
+
// }
|
|
993
|
+
//
|
|
994
|
+
const response = this.safeValue(message, 'response');
|
|
995
|
+
const deposits = this.parseTransactions(response, undefined, undefined, undefined, { 'type': 'deposit' });
|
|
996
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
997
|
+
client.resolve(deposits, messageHash);
|
|
998
|
+
}
|
|
999
|
+
/**
|
|
1000
|
+
* @method
|
|
1001
|
+
* @name bitvavo#fetchTradingFeesWs
|
|
1002
|
+
* @see https://docs.bitvavo.com/#tag/Account/paths/~1account/get
|
|
1003
|
+
* @description fetch the trading fees for multiple markets
|
|
1004
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
1005
|
+
* @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
|
|
1006
|
+
*/
|
|
1007
|
+
async fetchTradingFeesWs(params = {}) {
|
|
1008
|
+
await this.loadMarkets();
|
|
1009
|
+
await this.authenticate();
|
|
1010
|
+
return await this.watchRequest('privateGetAccount', params);
|
|
1011
|
+
}
|
|
1012
|
+
/**
|
|
1013
|
+
* @method
|
|
1014
|
+
* @name bitvavo#fetchMarketsWs
|
|
1015
|
+
* @see https://docs.bitvavo.com/#tag/General/paths/~1markets/get
|
|
1016
|
+
* @description retrieves data on all markets for bitvavo
|
|
1017
|
+
* @param {object} [params] extra parameters specific to the exchange api endpoint
|
|
1018
|
+
* @returns {object[]} an array of objects representing market data
|
|
1019
|
+
*/
|
|
1020
|
+
async fetchMarketsWs(params = {}) {
|
|
1021
|
+
return await this.watchRequest('getMarkets', params);
|
|
1022
|
+
}
|
|
1023
|
+
/**
|
|
1024
|
+
* @method
|
|
1025
|
+
* @name bitvavo#fetchCurrenciesWs
|
|
1026
|
+
* @see https://docs.bitvavo.com/#tag/General/paths/~1assets/get
|
|
1027
|
+
* @description fetches all available currencies on an exchange
|
|
1028
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
1029
|
+
* @returns {object} an associative dictionary of currencies
|
|
1030
|
+
*/
|
|
1031
|
+
async fetchCurrenciesWs(params = {}) {
|
|
1032
|
+
await this.loadMarkets();
|
|
1033
|
+
return await this.watchRequest('getAssets', params);
|
|
1034
|
+
}
|
|
1035
|
+
handleFetchCurrencies(client, message) {
|
|
1036
|
+
//
|
|
1037
|
+
// {
|
|
1038
|
+
// action: 'getAssets',
|
|
1039
|
+
// response: [{
|
|
1040
|
+
// symbol: '1INCH',
|
|
1041
|
+
// name: '1inch',
|
|
1042
|
+
// decimals: 8,
|
|
1043
|
+
// depositFee: '0',
|
|
1044
|
+
// depositConfirmations: 64,
|
|
1045
|
+
// depositStatus: 'OK',
|
|
1046
|
+
// withdrawalFee: '13',
|
|
1047
|
+
// withdrawalMinAmount: '13',
|
|
1048
|
+
// withdrawalStatus: 'OK',
|
|
1049
|
+
// networks: [Array],
|
|
1050
|
+
// message: ''
|
|
1051
|
+
// },
|
|
1052
|
+
// ...
|
|
1053
|
+
// ]
|
|
1054
|
+
// }
|
|
1055
|
+
//
|
|
1056
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
1057
|
+
const response = this.safeValue(message, 'response');
|
|
1058
|
+
const currencies = this.parseCurrencies(response);
|
|
1059
|
+
client.resolve(currencies, messageHash);
|
|
1060
|
+
}
|
|
1061
|
+
handleTradingFees(client, message) {
|
|
1062
|
+
//
|
|
1063
|
+
// {
|
|
1064
|
+
// action: 'privateGetAccount',
|
|
1065
|
+
// response: {
|
|
1066
|
+
// fees: {
|
|
1067
|
+
// taker: '0.0025',
|
|
1068
|
+
// maker: '0.0015',
|
|
1069
|
+
// volume: '1693.74'
|
|
1070
|
+
// }
|
|
1071
|
+
// }
|
|
1072
|
+
// }
|
|
1073
|
+
//
|
|
1074
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
1075
|
+
const response = this.safeValue(message, 'response');
|
|
1076
|
+
const fees = this.parseTradingFees(response);
|
|
1077
|
+
client.resolve(fees, messageHash);
|
|
1078
|
+
}
|
|
1079
|
+
/**
|
|
1080
|
+
* @method
|
|
1081
|
+
* @name bitvavo#fetchBalanceWs
|
|
1082
|
+
* @see https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
|
|
1083
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1084
|
+
* @param {object} [params] extra parameters specific to the bitvavo api endpoint
|
|
1085
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/en/latest/manual.html?#balance-structure}
|
|
1086
|
+
*/
|
|
1087
|
+
async fetchBalanceWs(params = {}) {
|
|
1088
|
+
await this.loadMarkets();
|
|
1089
|
+
await this.authenticate();
|
|
1090
|
+
return await this.watchRequest('privateGetBalance', params);
|
|
1091
|
+
}
|
|
1092
|
+
handleFetchBalance(client, message) {
|
|
1093
|
+
//
|
|
1094
|
+
// {
|
|
1095
|
+
// action: 'privateGetBalance',
|
|
1096
|
+
// response: [{
|
|
1097
|
+
// symbol: 'ADA',
|
|
1098
|
+
// available: '0',
|
|
1099
|
+
// inOrder: '0'
|
|
1100
|
+
// },
|
|
1101
|
+
// ...
|
|
1102
|
+
// ]
|
|
1103
|
+
// }
|
|
1104
|
+
//
|
|
1105
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
1106
|
+
const response = this.safeValue(message, 'response', []);
|
|
1107
|
+
const balance = this.parseBalance(response);
|
|
1108
|
+
client.resolve(balance, messageHash);
|
|
1109
|
+
}
|
|
1110
|
+
handleSingleOrder(client, message) {
|
|
1111
|
+
//
|
|
1112
|
+
// {
|
|
1113
|
+
// action: 'privateCreateOrder',
|
|
1114
|
+
// response: {
|
|
1115
|
+
// orderId: 'd71df826-1130-478a-8741-d219128675b0',
|
|
1116
|
+
// market: 'BTC-EUR',
|
|
1117
|
+
// created: 1689792749748,
|
|
1118
|
+
// updated: 1689792749748,
|
|
1119
|
+
// status: 'new',
|
|
1120
|
+
// side: 'sell',
|
|
1121
|
+
// orderType: 'limit',
|
|
1122
|
+
// amount: '0.0002',
|
|
1123
|
+
// amountRemaining: '0.0002',
|
|
1124
|
+
// price: '37000',
|
|
1125
|
+
// onHold: '0.0002',
|
|
1126
|
+
// onHoldCurrency: 'BTC',
|
|
1127
|
+
// filledAmount: '0',
|
|
1128
|
+
// filledAmountQuote: '0',
|
|
1129
|
+
// feePaid: '0',
|
|
1130
|
+
// feeCurrency: 'EUR',
|
|
1131
|
+
// fills: [],
|
|
1132
|
+
// selfTradePrevention: 'decrementAndCancel',
|
|
1133
|
+
// visible: true,
|
|
1134
|
+
// timeInForce: 'GTC',
|
|
1135
|
+
// postOnly: false
|
|
1136
|
+
// }
|
|
1137
|
+
// }
|
|
1138
|
+
//
|
|
1139
|
+
const response = this.safeValue(message, 'response', {});
|
|
1140
|
+
const order = this.parseOrder(response);
|
|
1141
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
1142
|
+
client.resolve(order, messageHash);
|
|
1143
|
+
}
|
|
1144
|
+
handleMarkets(client, message) {
|
|
1145
|
+
//
|
|
1146
|
+
// {
|
|
1147
|
+
// action: 'getMarkets',
|
|
1148
|
+
// response: [{
|
|
1149
|
+
// market: '1INCH-EUR',
|
|
1150
|
+
// status: 'trading',
|
|
1151
|
+
// base: '1INCH',
|
|
1152
|
+
// quote: 'EUR',
|
|
1153
|
+
// pricePrecision: 5,
|
|
1154
|
+
// minOrderInBaseAsset: '2',
|
|
1155
|
+
// minOrderInQuoteAsset: '5',
|
|
1156
|
+
// maxOrderInBaseAsset: '1000000000',
|
|
1157
|
+
// maxOrderInQuoteAsset: '1000000000',
|
|
1158
|
+
// orderTypes: [Array]
|
|
1159
|
+
// },
|
|
1160
|
+
// ...
|
|
1161
|
+
// ]
|
|
1162
|
+
// }
|
|
1163
|
+
//
|
|
1164
|
+
const response = this.safeValue(message, 'response', {});
|
|
1165
|
+
const markets = this.parseMarkets(response);
|
|
1166
|
+
const messageHash = this.safeString(message, 'requestId');
|
|
1167
|
+
client.resolve(markets, messageHash);
|
|
1168
|
+
}
|
|
1169
|
+
buildMessageHash(action, params = {}) {
|
|
1170
|
+
const methods = {
|
|
1171
|
+
'privateCreateOrder': this.actionAndMarketMessageHash,
|
|
1172
|
+
'privateUpdateOrder': this.actionAndOrderIdMessageHash,
|
|
1173
|
+
'privateCancelOrder': this.actionAndOrderIdMessageHash,
|
|
1174
|
+
'privateGetOrder': this.actionAndOrderIdMessageHash,
|
|
1175
|
+
'privateGetTrades': this.actionAndMarketMessageHash,
|
|
1176
|
+
};
|
|
1177
|
+
const method = this.safeValue(methods, action);
|
|
1178
|
+
let messageHash = action;
|
|
1179
|
+
if (method !== undefined) {
|
|
1180
|
+
messageHash = method.call(this, action, params);
|
|
1181
|
+
}
|
|
1182
|
+
return messageHash;
|
|
1183
|
+
}
|
|
1184
|
+
actionAndMarketMessageHash(action, params = {}) {
|
|
1185
|
+
const symbol = this.safeString(params, 'market', '');
|
|
1186
|
+
return action + symbol;
|
|
1187
|
+
}
|
|
1188
|
+
actionAndOrderIdMessageHash(action, params = {}) {
|
|
1189
|
+
const orderId = this.safeString(params, 'orderId');
|
|
1190
|
+
if (orderId === undefined) {
|
|
1191
|
+
throw new ExchangeError(this.id + ' privateUpdateOrderMessageHash requires a orderId parameter');
|
|
1192
|
+
}
|
|
1193
|
+
return action + orderId;
|
|
1194
|
+
}
|
|
1195
|
+
handleOrder(client, message) {
|
|
1196
|
+
//
|
|
1197
|
+
// {
|
|
1198
|
+
// "event": "order",
|
|
1199
|
+
// "orderId": "f0e5180f-9497-4d05-9dc2-7056e8a2de9b",
|
|
1200
|
+
// "market": "ETH-EUR",
|
|
1201
|
+
// "created": 1590948500319,
|
|
1202
|
+
// "updated": 1590948500319,
|
|
1203
|
+
// "status": "new",
|
|
1204
|
+
// "side": "sell",
|
|
1205
|
+
// "orderType": "limit",
|
|
1206
|
+
// "amount": "0.1",
|
|
1207
|
+
// "amountRemaining": "0.1",
|
|
1208
|
+
// "price": "300",
|
|
1209
|
+
// "onHold": "0.1",
|
|
1210
|
+
// "onHoldCurrency": "ETH",
|
|
1211
|
+
// "selfTradePrevention": "decrementAndCancel",
|
|
1212
|
+
// "visible": true,
|
|
1213
|
+
// "timeInForce": "GTC",
|
|
1214
|
+
// "postOnly": false
|
|
1215
|
+
// }
|
|
1216
|
+
//
|
|
1217
|
+
const marketId = this.safeString(message, 'market');
|
|
1218
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
1219
|
+
const symbol = market['symbol'];
|
|
1220
|
+
const messageHash = 'order:' + symbol;
|
|
1221
|
+
const order = this.parseOrder(message, market);
|
|
1222
|
+
if (this.orders === undefined) {
|
|
1223
|
+
const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
|
|
1224
|
+
this.orders = new ArrayCacheBySymbolById(limit);
|
|
1225
|
+
}
|
|
1226
|
+
const orders = this.orders;
|
|
1227
|
+
orders.append(order);
|
|
1228
|
+
client.resolve(this.orders, messageHash);
|
|
1229
|
+
}
|
|
1230
|
+
handleMyTrade(client, message) {
|
|
1231
|
+
//
|
|
1232
|
+
// {
|
|
1233
|
+
// "event": "fill",
|
|
1234
|
+
// "timestamp": 1590964470132,
|
|
1235
|
+
// "market": "ETH-EUR",
|
|
1236
|
+
// "orderId": "85d082e1-eda4-4209-9580-248281a29a9a",
|
|
1237
|
+
// "fillId": "861d2da5-aa93-475c-8d9a-dce431bd4211",
|
|
1238
|
+
// "side": "sell",
|
|
1239
|
+
// "amount": "0.1",
|
|
1240
|
+
// "price": "211.46",
|
|
1241
|
+
// "taker": true,
|
|
1242
|
+
// "fee": "0.056",
|
|
1243
|
+
// "feeCurrency": "EUR"
|
|
1244
|
+
// }
|
|
1245
|
+
//
|
|
1246
|
+
const marketId = this.safeString(message, 'market');
|
|
1247
|
+
const market = this.safeMarket(marketId, undefined, '-');
|
|
1248
|
+
const symbol = market['symbol'];
|
|
1249
|
+
const messageHash = 'myTrades:' + symbol;
|
|
1250
|
+
const trade = this.parseTrade(message, market);
|
|
1251
|
+
if (this.myTrades === undefined) {
|
|
1252
|
+
const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
|
|
1253
|
+
this.myTrades = new ArrayCache(limit);
|
|
1254
|
+
}
|
|
1255
|
+
const tradesArray = this.myTrades;
|
|
1256
|
+
tradesArray.append(trade);
|
|
1257
|
+
client.resolve(tradesArray, messageHash);
|
|
1258
|
+
}
|
|
1259
|
+
handleSubscriptionStatus(client, message) {
|
|
1260
|
+
//
|
|
1261
|
+
// {
|
|
1262
|
+
// "event": "subscribed",
|
|
1263
|
+
// "subscriptions": {
|
|
1264
|
+
// "book": [ "BTC-EUR" ]
|
|
1265
|
+
// }
|
|
1266
|
+
// }
|
|
1267
|
+
//
|
|
1268
|
+
const subscriptions = this.safeValue(message, 'subscriptions', {});
|
|
1269
|
+
const methods = {
|
|
1270
|
+
'book': this.handleOrderBookSubscriptions,
|
|
1271
|
+
};
|
|
1272
|
+
const names = Object.keys(subscriptions);
|
|
1273
|
+
for (let i = 0; i < names.length; i++) {
|
|
1274
|
+
const name = names[i];
|
|
1275
|
+
const method = this.safeValue(methods, name);
|
|
1276
|
+
if (method !== undefined) {
|
|
1277
|
+
const subscription = this.safeValue(subscriptions, name);
|
|
1278
|
+
method.call(this, client, message, subscription);
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
return message;
|
|
1282
|
+
}
|
|
1283
|
+
async authenticate(params = {}) {
|
|
1284
|
+
const url = this.urls['api']['ws'];
|
|
1285
|
+
const client = this.client(url);
|
|
1286
|
+
const messageHash = 'authenticated';
|
|
1287
|
+
let future = this.safeValue(client.subscriptions, messageHash);
|
|
1288
|
+
if (future === undefined) {
|
|
1289
|
+
const timestamp = this.milliseconds();
|
|
1290
|
+
const stringTimestamp = timestamp.toString();
|
|
1291
|
+
const auth = stringTimestamp + 'GET/' + this.version + '/websocket';
|
|
1292
|
+
const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256);
|
|
1293
|
+
const action = 'authenticate';
|
|
1294
|
+
const request = {
|
|
1295
|
+
'action': action,
|
|
1296
|
+
'key': this.apiKey,
|
|
1297
|
+
'signature': signature,
|
|
1298
|
+
'timestamp': timestamp,
|
|
1299
|
+
};
|
|
1300
|
+
const message = this.extend(request, params);
|
|
1301
|
+
future = await this.watch(url, messageHash, message, messageHash);
|
|
1302
|
+
client.subscriptions[messageHash] = future;
|
|
1303
|
+
}
|
|
1304
|
+
return future;
|
|
1305
|
+
}
|
|
1306
|
+
handleAuthenticationMessage(client, message) {
|
|
1307
|
+
//
|
|
1308
|
+
// {
|
|
1309
|
+
// "event": "authenticate",
|
|
1310
|
+
// "authenticated": true
|
|
1311
|
+
// }
|
|
1312
|
+
//
|
|
1313
|
+
const messageHash = 'authenticated';
|
|
1314
|
+
const authenticated = this.safeBool(message, 'authenticated', false);
|
|
1315
|
+
if (authenticated) {
|
|
1316
|
+
// we resolve the future here permanently so authentication only happens once
|
|
1317
|
+
client.resolve(message, messageHash);
|
|
1318
|
+
}
|
|
1319
|
+
else {
|
|
1320
|
+
const error = new AuthenticationError(this.json(message));
|
|
1321
|
+
client.reject(error, messageHash);
|
|
1322
|
+
// allows further authentication attempts
|
|
1323
|
+
if (messageHash in client.subscriptions) {
|
|
1324
|
+
delete client.subscriptions[messageHash];
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
}
|
|
1328
|
+
handleErrorMessage(client, message) {
|
|
1329
|
+
//
|
|
1330
|
+
// {
|
|
1331
|
+
// action: 'privateCreateOrder',
|
|
1332
|
+
// market: 'BTC-EUR',
|
|
1333
|
+
// errorCode: 217,
|
|
1334
|
+
// error: 'Minimum order size in quote currency is 5 EUR or 0.001 BTC.'
|
|
1335
|
+
// }
|
|
1336
|
+
// {
|
|
1337
|
+
// action: 'privateCreateOrder',
|
|
1338
|
+
// requestId: '17317539426571916',
|
|
1339
|
+
// market: 'USDT-EUR',
|
|
1340
|
+
// errorCode: 216,
|
|
1341
|
+
// error: 'You do not have sufficient balance to complete this operation.'
|
|
1342
|
+
// }
|
|
1343
|
+
//
|
|
1344
|
+
const error = this.safeString(message, 'error');
|
|
1345
|
+
const code = this.safeInteger(error, 'errorCode');
|
|
1346
|
+
const action = this.safeString(message, 'action');
|
|
1347
|
+
const buildMessage = this.buildMessageHash(action, message);
|
|
1348
|
+
const messageHash = this.safeString(message, 'requestId', buildMessage);
|
|
1349
|
+
let rejected = false;
|
|
1350
|
+
try {
|
|
1351
|
+
this.handleErrors(code, error, client.url, '', {}, error, message, {}, {});
|
|
1352
|
+
}
|
|
1353
|
+
catch (e) {
|
|
1354
|
+
rejected = true;
|
|
1355
|
+
client.reject(e, messageHash);
|
|
1356
|
+
}
|
|
1357
|
+
if (!rejected) {
|
|
1358
|
+
client.reject(message, messageHash);
|
|
1359
|
+
return true;
|
|
1360
|
+
}
|
|
1361
|
+
return undefined;
|
|
1362
|
+
}
|
|
1363
|
+
handleMessage(client, message) {
|
|
1364
|
+
//
|
|
1365
|
+
// {
|
|
1366
|
+
// "event": "subscribed",
|
|
1367
|
+
// "subscriptions": {
|
|
1368
|
+
// "book": [ "BTC-EUR" ]
|
|
1369
|
+
// }
|
|
1370
|
+
// }
|
|
1371
|
+
//
|
|
1372
|
+
// {
|
|
1373
|
+
// "event": "book",
|
|
1374
|
+
// "market": "BTC-EUR",
|
|
1375
|
+
// "nonce": 36729561,
|
|
1376
|
+
// "bids": [
|
|
1377
|
+
// [ "8513.3", "0" ],
|
|
1378
|
+
// [ '8518.8', "0.64236203" ],
|
|
1379
|
+
// [ '8513.6', "0.32435481" ],
|
|
1380
|
+
// ],
|
|
1381
|
+
// "asks": []
|
|
1382
|
+
// }
|
|
1383
|
+
//
|
|
1384
|
+
// {
|
|
1385
|
+
// "action": "getBook",
|
|
1386
|
+
// "response": {
|
|
1387
|
+
// "market": "BTC-EUR",
|
|
1388
|
+
// "nonce": 36946120,
|
|
1389
|
+
// "bids": [
|
|
1390
|
+
// [ '8494.9', "0.24399521" ],
|
|
1391
|
+
// [ '8494.8', "0.34884085" ],
|
|
1392
|
+
// [ '8493.9', "0.14535128" ],
|
|
1393
|
+
// ],
|
|
1394
|
+
// "asks": [
|
|
1395
|
+
// [ "8495", "0.46982463" ],
|
|
1396
|
+
// [ '8495.1', "0.12178267" ],
|
|
1397
|
+
// [ '8496.2', "0.21924143" ],
|
|
1398
|
+
// ]
|
|
1399
|
+
// }
|
|
1400
|
+
// }
|
|
1401
|
+
//
|
|
1402
|
+
// {
|
|
1403
|
+
// "event": "authenticate",
|
|
1404
|
+
// "authenticated": true
|
|
1405
|
+
// }
|
|
1406
|
+
//
|
|
1407
|
+
const error = this.safeString(message, 'error');
|
|
1408
|
+
if (error !== undefined) {
|
|
1409
|
+
this.handleErrorMessage(client, message);
|
|
1410
|
+
}
|
|
1411
|
+
const methods = {
|
|
1412
|
+
'subscribed': this.handleSubscriptionStatus,
|
|
1413
|
+
'book': this.handleOrderBook,
|
|
1414
|
+
'getBook': this.handleOrderBookSnapshot,
|
|
1415
|
+
'trade': this.handleTrade,
|
|
1416
|
+
'candle': this.handleOHLCV,
|
|
1417
|
+
'ticker24h': this.handleTicker,
|
|
1418
|
+
'authenticate': this.handleAuthenticationMessage,
|
|
1419
|
+
'order': this.handleOrder,
|
|
1420
|
+
'fill': this.handleMyTrade,
|
|
1421
|
+
'privateCreateOrder': this.handleSingleOrder,
|
|
1422
|
+
'privateUpdateOrder': this.handleSingleOrder,
|
|
1423
|
+
'privateGetBalance': this.handleFetchBalance,
|
|
1424
|
+
'privateCancelOrders': this.handleMultipleOrders,
|
|
1425
|
+
'privateGetOrders': this.handleMultipleOrders,
|
|
1426
|
+
'privateGetOrder': this.handleSingleOrder,
|
|
1427
|
+
'privateCancelOrder': this.handleSingleOrder,
|
|
1428
|
+
'privateGetOrdersOpen': this.handleMultipleOrders,
|
|
1429
|
+
'privateGetAccount': this.handleTradingFees,
|
|
1430
|
+
'privateGetDepositHistory': this.handleDeposits,
|
|
1431
|
+
'privateGetWithdrawalHistory': this.handleWithdraws,
|
|
1432
|
+
'privateWithdrawAssets': this.handleWithdraw,
|
|
1433
|
+
'privateGetTrades': this.handleMyTrades,
|
|
1434
|
+
'getAssets': this.handleFetchCurrencies,
|
|
1435
|
+
'getCandles': this.handleFetchOHLCV,
|
|
1436
|
+
'getMarkets': this.handleMarkets,
|
|
1437
|
+
};
|
|
1438
|
+
const event = this.safeString(message, 'event');
|
|
1439
|
+
let method = this.safeValue(methods, event);
|
|
1440
|
+
if (method === undefined) {
|
|
1441
|
+
const action = this.safeString(message, 'action');
|
|
1442
|
+
method = this.safeValue(methods, action);
|
|
1443
|
+
if (method !== undefined) {
|
|
1444
|
+
method.call(this, client, message);
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
else {
|
|
1448
|
+
method.call(this, client, message);
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}
|