ccxt 4.5.28 → 4.5.29
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 +21 -5
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/alpaca.js +21 -21
- package/dist/cjs/src/apex.js +20 -20
- package/dist/cjs/src/arkham.js +22 -22
- package/dist/cjs/src/ascendex.js +28 -28
- package/dist/cjs/src/backpack.js +22 -22
- package/dist/cjs/src/base/Exchange.js +48 -38
- package/dist/cjs/src/base/functions/throttle.js +54 -5
- package/dist/cjs/src/bigone.js +19 -19
- package/dist/cjs/src/binance.js +83 -82
- package/dist/cjs/src/bingx.js +46 -46
- package/dist/cjs/src/bit2c.js +11 -11
- package/dist/cjs/src/bitbank.js +49 -48
- package/dist/cjs/src/bitbns.js +13 -13
- package/dist/cjs/src/bitfinex.js +33 -33
- package/dist/cjs/src/bitflyer.js +17 -17
- package/dist/cjs/src/bitget.js +58 -57
- package/dist/cjs/src/bithumb.js +10 -10
- package/dist/cjs/src/bitmart.js +44 -44
- package/dist/cjs/src/bitmex.js +24 -24
- package/dist/cjs/src/bitopro.js +20 -20
- package/dist/cjs/src/bitrue.js +18 -18
- package/dist/cjs/src/bitso.js +20 -20
- package/dist/cjs/src/bitstamp.js +21 -21
- package/dist/cjs/src/bittrade.js +20 -20
- package/dist/cjs/src/bitvavo.js +19 -19
- package/dist/cjs/src/blockchaincom.js +20 -20
- package/dist/cjs/src/blofin.js +26 -26
- package/dist/cjs/src/btcalpha.js +35 -34
- package/dist/cjs/src/btcbox.js +10 -10
- package/dist/cjs/src/btcmarkets.js +16 -16
- package/dist/cjs/src/btcturk.js +10 -10
- package/dist/cjs/src/bullish.js +26 -26
- package/dist/cjs/src/bybit.js +67 -67
- package/dist/cjs/src/cex.js +18 -18
- package/dist/cjs/src/coinbase.js +40 -40
- package/dist/cjs/src/coinbaseexchange.js +22 -22
- package/dist/cjs/src/coinbaseinternational.js +22 -22
- package/dist/cjs/src/coincatch.js +39 -39
- package/dist/cjs/src/coincheck.js +11 -11
- package/dist/cjs/src/coinex.js +48 -48
- package/dist/cjs/src/coinmate.js +14 -14
- package/dist/cjs/src/coinmetro.js +14 -14
- package/dist/cjs/src/coinone.js +11 -11
- package/dist/cjs/src/coinsph.js +20 -20
- package/dist/cjs/src/coinspot.js +8 -8
- package/dist/cjs/src/cryptocom.js +32 -32
- package/dist/cjs/src/cryptomus.js +9 -9
- package/dist/cjs/src/deepcoin.js +33 -33
- package/dist/cjs/src/defx.js +23 -23
- package/dist/cjs/src/delta.js +29 -29
- package/dist/cjs/src/deribit.js +36 -36
- package/dist/cjs/src/derive.js +19 -19
- package/dist/cjs/src/digifinex.js +36 -36
- package/dist/cjs/src/dydx.js +22 -22
- package/dist/cjs/src/exmo.js +29 -29
- package/dist/cjs/src/foxbit.js +23 -23
- package/dist/cjs/src/gate.js +57 -57
- package/dist/cjs/src/gemini.js +16 -16
- package/dist/cjs/src/hashkey.js +35 -35
- package/dist/cjs/src/hibachi.js +24 -24
- package/dist/cjs/src/hitbtc.js +38 -38
- package/dist/cjs/src/hollaex.js +22 -22
- package/dist/cjs/src/htx.js +50 -50
- package/dist/cjs/src/hyperliquid.js +76 -42
- package/dist/cjs/src/independentreserve.js +13 -13
- package/dist/cjs/src/indodax.js +14 -14
- package/dist/cjs/src/kraken.js +30 -30
- package/dist/cjs/src/krakenfutures.js +21 -21
- package/dist/cjs/src/kucoin.js +44 -44
- package/dist/cjs/src/kucoinfutures.js +42 -40
- package/dist/cjs/src/latoken.js +16 -16
- package/dist/cjs/src/lbank.js +23 -23
- package/dist/cjs/src/luno.js +17 -17
- package/dist/cjs/src/mercado.js +11 -11
- package/dist/cjs/src/mexc.js +47 -47
- package/dist/cjs/src/modetrade.js +37 -35
- package/dist/cjs/src/ndax.js +19 -19
- package/dist/cjs/src/novadax.js +19 -19
- package/dist/cjs/src/oceanex.js +16 -16
- package/dist/cjs/src/okx.js +83 -83
- package/dist/cjs/src/onetrading.js +34 -33
- package/dist/cjs/src/oxfun.js +25 -25
- package/dist/cjs/src/p2b.js +11 -11
- package/dist/cjs/src/paradex.js +54 -54
- package/dist/cjs/src/paymium.js +20 -21
- package/dist/cjs/src/phemex.js +35 -35
- package/dist/cjs/src/poloniex.js +27 -27
- package/dist/cjs/src/pro/alpaca.js +5 -5
- package/dist/cjs/src/pro/apex.js +8 -8
- package/dist/cjs/src/pro/arkham.js +5 -5
- package/dist/cjs/src/pro/ascendex.js +5 -5
- package/dist/cjs/src/pro/backpack.js +16 -16
- package/dist/cjs/src/pro/binance.js +35 -35
- package/dist/cjs/src/pro/bingx.js +9 -9
- package/dist/cjs/src/pro/bitfinex.js +8 -8
- package/dist/cjs/src/pro/bitget.js +12 -12
- package/dist/cjs/src/pro/bithumb.js +3 -3
- package/dist/cjs/src/pro/bitmart.js +388 -31
- package/dist/cjs/src/pro/bitmex.js +9 -9
- package/dist/cjs/src/pro/bitopro.js +5 -5
- package/dist/cjs/src/pro/bitrue.js +2 -2
- package/dist/cjs/src/pro/bitstamp.js +3 -3
- package/dist/cjs/src/pro/bittrade.js +3 -3
- package/dist/cjs/src/pro/bitvavo.js +19 -19
- package/dist/cjs/src/pro/blockchaincom.js +5 -5
- package/dist/cjs/src/pro/blofin.js +10 -10
- package/dist/cjs/src/pro/bullish.js +6 -6
- package/dist/cjs/src/pro/bybit.js +19 -19
- package/dist/cjs/src/pro/cex.js +13 -13
- package/dist/cjs/src/pro/coinbase.js +13 -13
- package/dist/cjs/src/pro/coinbaseexchange.js +10 -10
- package/dist/cjs/src/pro/coinbaseinternational.js +8 -8
- package/dist/cjs/src/pro/coincatch.js +10 -10
- package/dist/cjs/src/pro/coincheck.js +2 -2
- package/dist/cjs/src/pro/coinex.js +10 -10
- package/dist/cjs/src/pro/coinone.js +3 -3
- package/dist/cjs/src/pro/cryptocom.js +20 -20
- package/dist/cjs/src/pro/deepcoin.js +8 -8
- package/dist/cjs/src/pro/defx.js +15 -15
- package/dist/cjs/src/pro/deribit.js +10 -10
- package/dist/cjs/src/pro/derive.js +6 -6
- package/dist/cjs/src/pro/dydx.js +3 -3
- package/dist/cjs/src/pro/exmo.js +7 -7
- package/dist/cjs/src/pro/gate.js +21 -59
- package/dist/cjs/src/pro/gemini.js +6 -6
- package/dist/cjs/src/pro/hashkey.js +6 -6
- package/dist/cjs/src/pro/hitbtc.js +8 -8
- package/dist/cjs/src/pro/hollaex.js +5 -5
- package/dist/cjs/src/pro/htx.js +9 -9
- package/dist/cjs/src/pro/hyperliquid.js +103 -14
- package/dist/cjs/src/pro/independentreserve.js +2 -2
- package/dist/cjs/src/pro/kraken.js +15 -15
- package/dist/cjs/src/pro/krakenfutures.js +10 -10
- package/dist/cjs/src/pro/kucoin.js +15 -15
- package/dist/cjs/src/pro/kucoinfutures.js +13 -13
- package/dist/cjs/src/pro/lbank.js +5 -5
- package/dist/cjs/src/pro/luno.js +2 -2
- package/dist/cjs/src/pro/mexc.js +13 -13
- package/dist/cjs/src/pro/modetrade.js +8 -8
- package/dist/cjs/src/pro/ndax.js +3 -3
- package/dist/cjs/src/pro/okx.js +25 -25
- package/dist/cjs/src/pro/onetrading.js +6 -6
- package/dist/cjs/src/pro/oxfun.js +13 -13
- package/dist/cjs/src/pro/p2b.js +5 -5
- package/dist/cjs/src/pro/paradex.js +8 -8
- package/dist/cjs/src/pro/phemex.js +7 -7
- package/dist/cjs/src/pro/poloniex.js +8 -8
- package/dist/cjs/src/pro/probit.js +6 -6
- package/dist/cjs/src/pro/toobit.js +9 -9
- package/dist/cjs/src/pro/upbit.js +9 -9
- package/dist/cjs/src/pro/whitebit.js +7 -7
- package/dist/cjs/src/pro/woo.js +13 -13
- package/dist/cjs/src/pro/woofipro.js +20 -20
- package/dist/cjs/src/pro/xt.js +2 -2
- package/dist/cjs/src/probit.js +18 -18
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +11 -0
- package/dist/cjs/src/timex.js +16 -16
- package/dist/cjs/src/tokocrypto.js +17 -17
- package/dist/cjs/src/toobit.js +31 -29
- package/dist/cjs/src/upbit.js +23 -23
- package/dist/cjs/src/wavesexchange.js +86 -85
- package/dist/cjs/src/whitebit.js +44 -44
- package/dist/cjs/src/woo.js +51 -49
- package/dist/cjs/src/woofipro.js +104 -82
- package/dist/cjs/src/xt.js +17 -12
- package/dist/cjs/src/yobit.js +15 -15
- package/dist/cjs/src/zaif.js +38 -9
- package/dist/cjs/src/zebpay.js +35 -20
- package/dist/cjs/src/zonda.js +14 -14
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/alpaca.d.ts +21 -21
- package/js/src/alpaca.js +21 -21
- package/js/src/apex.d.ts +20 -20
- package/js/src/apex.js +20 -20
- package/js/src/arkham.d.ts +22 -22
- package/js/src/arkham.js +22 -22
- package/js/src/ascendex.d.ts +28 -28
- package/js/src/ascendex.js +28 -28
- package/js/src/backpack.d.ts +21 -21
- package/js/src/backpack.js +22 -22
- package/js/src/base/Exchange.d.ts +6 -3
- package/js/src/base/Exchange.js +48 -38
- package/js/src/base/functions/throttle.d.ts +22 -0
- package/js/src/base/functions/throttle.js +54 -5
- package/js/src/bigone.d.ts +19 -19
- package/js/src/bigone.js +19 -19
- package/js/src/binance.d.ts +82 -82
- package/js/src/binance.js +83 -82
- package/js/src/bingx.d.ts +46 -46
- package/js/src/bingx.js +46 -46
- package/js/src/bit2c.d.ts +11 -11
- package/js/src/bit2c.js +11 -11
- package/js/src/bitbank.d.ts +12 -12
- package/js/src/bitbank.js +49 -48
- package/js/src/bitbns.d.ts +13 -13
- package/js/src/bitbns.js +13 -13
- package/js/src/bitfinex.d.ts +33 -33
- package/js/src/bitfinex.js +33 -33
- package/js/src/bitflyer.d.ts +17 -17
- package/js/src/bitflyer.js +17 -17
- package/js/src/bitget.d.ts +57 -57
- package/js/src/bitget.js +58 -57
- package/js/src/bithumb.d.ts +10 -10
- package/js/src/bithumb.js +10 -10
- package/js/src/bitmart.d.ts +42 -42
- package/js/src/bitmart.js +44 -44
- package/js/src/bitmex.d.ts +24 -24
- package/js/src/bitmex.js +24 -24
- package/js/src/bitopro.d.ts +20 -20
- package/js/src/bitopro.js +20 -20
- package/js/src/bitrue.d.ts +18 -18
- package/js/src/bitrue.js +18 -18
- package/js/src/bitso.d.ts +20 -20
- package/js/src/bitso.js +20 -20
- package/js/src/bitstamp.d.ts +21 -21
- package/js/src/bitstamp.js +21 -21
- package/js/src/bittrade.d.ts +20 -20
- package/js/src/bittrade.js +20 -20
- package/js/src/bitvavo.d.ts +19 -19
- package/js/src/bitvavo.js +19 -19
- package/js/src/blockchaincom.d.ts +20 -20
- package/js/src/blockchaincom.js +20 -20
- package/js/src/blofin.d.ts +26 -26
- package/js/src/blofin.js +26 -26
- package/js/src/btcalpha.d.ts +14 -14
- package/js/src/btcalpha.js +35 -34
- package/js/src/btcbox.d.ts +10 -10
- package/js/src/btcbox.js +10 -10
- package/js/src/btcmarkets.d.ts +16 -16
- package/js/src/btcmarkets.js +16 -16
- package/js/src/btcturk.d.ts +10 -10
- package/js/src/btcturk.js +10 -10
- package/js/src/bullish.d.ts +26 -26
- package/js/src/bullish.js +26 -26
- package/js/src/bybit.d.ts +66 -66
- package/js/src/bybit.js +67 -67
- package/js/src/cex.d.ts +18 -18
- package/js/src/cex.js +18 -18
- package/js/src/coinbase.d.ts +40 -40
- package/js/src/coinbase.js +40 -40
- package/js/src/coinbaseexchange.d.ts +22 -22
- package/js/src/coinbaseexchange.js +22 -22
- package/js/src/coinbaseinternational.d.ts +22 -22
- package/js/src/coinbaseinternational.js +22 -22
- package/js/src/coincatch.d.ts +39 -39
- package/js/src/coincatch.js +39 -39
- package/js/src/coincheck.d.ts +11 -11
- package/js/src/coincheck.js +11 -11
- package/js/src/coinex.d.ts +48 -48
- package/js/src/coinex.js +48 -48
- package/js/src/coinmate.d.ts +14 -14
- package/js/src/coinmate.js +14 -14
- package/js/src/coinmetro.d.ts +14 -14
- package/js/src/coinmetro.js +14 -14
- package/js/src/coinone.d.ts +11 -11
- package/js/src/coinone.js +11 -11
- package/js/src/coinsph.d.ts +20 -20
- package/js/src/coinsph.js +20 -20
- package/js/src/coinspot.d.ts +8 -8
- package/js/src/coinspot.js +8 -8
- package/js/src/cryptocom.d.ts +32 -32
- package/js/src/cryptocom.js +32 -32
- package/js/src/cryptomus.d.ts +9 -9
- package/js/src/cryptomus.js +9 -9
- package/js/src/deepcoin.d.ts +33 -33
- package/js/src/deepcoin.js +33 -33
- package/js/src/defx.d.ts +23 -23
- package/js/src/defx.js +23 -23
- package/js/src/delta.d.ts +29 -29
- package/js/src/delta.js +29 -29
- package/js/src/deribit.d.ts +36 -36
- package/js/src/deribit.js +36 -36
- package/js/src/derive.d.ts +19 -19
- package/js/src/derive.js +19 -19
- package/js/src/digifinex.d.ts +36 -36
- package/js/src/digifinex.js +36 -36
- package/js/src/dydx.d.ts +22 -22
- package/js/src/dydx.js +22 -22
- package/js/src/exmo.d.ts +29 -29
- package/js/src/exmo.js +29 -29
- package/js/src/foxbit.d.ts +23 -23
- package/js/src/foxbit.js +23 -23
- package/js/src/gate.d.ts +57 -57
- package/js/src/gate.js +57 -57
- package/js/src/gemini.d.ts +16 -16
- package/js/src/gemini.js +16 -16
- package/js/src/hashkey.d.ts +35 -35
- package/js/src/hashkey.js +35 -35
- package/js/src/hibachi.d.ts +24 -24
- package/js/src/hibachi.js +24 -24
- package/js/src/hitbtc.d.ts +38 -38
- package/js/src/hitbtc.js +38 -38
- package/js/src/hollaex.d.ts +22 -22
- package/js/src/hollaex.js +22 -22
- package/js/src/htx.d.ts +50 -50
- package/js/src/htx.js +50 -50
- package/js/src/hyperliquid.d.ts +46 -36
- package/js/src/hyperliquid.js +76 -42
- package/js/src/independentreserve.d.ts +13 -13
- package/js/src/independentreserve.js +13 -13
- package/js/src/indodax.d.ts +14 -14
- package/js/src/indodax.js +14 -14
- package/js/src/kraken.d.ts +30 -30
- package/js/src/kraken.js +30 -30
- package/js/src/krakenfutures.d.ts +21 -21
- package/js/src/krakenfutures.js +21 -21
- package/js/src/kucoin.d.ts +44 -44
- package/js/src/kucoin.js +44 -44
- package/js/src/kucoinfutures.d.ts +35 -35
- package/js/src/kucoinfutures.js +42 -40
- package/js/src/latoken.d.ts +16 -16
- package/js/src/latoken.js +16 -16
- package/js/src/lbank.d.ts +23 -23
- package/js/src/lbank.js +23 -23
- package/js/src/luno.d.ts +17 -17
- package/js/src/luno.js +17 -17
- package/js/src/mercado.d.ts +11 -11
- package/js/src/mercado.js +11 -11
- package/js/src/mexc.d.ts +47 -47
- package/js/src/mexc.js +47 -47
- package/js/src/modetrade.d.ts +31 -31
- package/js/src/modetrade.js +37 -35
- package/js/src/ndax.d.ts +19 -19
- package/js/src/ndax.js +19 -19
- package/js/src/novadax.d.ts +19 -19
- package/js/src/novadax.js +19 -19
- package/js/src/oceanex.d.ts +16 -16
- package/js/src/oceanex.js +16 -16
- package/js/src/okx.d.ts +74 -74
- package/js/src/okx.js +83 -83
- package/js/src/onetrading.d.ts +34 -33
- package/js/src/onetrading.js +34 -33
- package/js/src/oxfun.d.ts +25 -25
- package/js/src/oxfun.js +25 -25
- package/js/src/p2b.d.ts +11 -11
- package/js/src/p2b.js +11 -11
- package/js/src/paradex.d.ts +54 -54
- package/js/src/paradex.js +54 -54
- package/js/src/paymium.d.ts +20 -21
- package/js/src/paymium.js +20 -21
- package/js/src/phemex.d.ts +30 -30
- package/js/src/phemex.js +35 -35
- package/js/src/poloniex.d.ts +26 -26
- package/js/src/poloniex.js +27 -27
- package/js/src/pro/alpaca.d.ts +5 -5
- package/js/src/pro/alpaca.js +5 -5
- package/js/src/pro/apex.d.ts +8 -8
- package/js/src/pro/apex.js +8 -8
- package/js/src/pro/arkham.d.ts +5 -5
- package/js/src/pro/arkham.js +5 -5
- package/js/src/pro/ascendex.d.ts +5 -5
- package/js/src/pro/ascendex.js +5 -5
- package/js/src/pro/backpack.d.ts +16 -16
- package/js/src/pro/backpack.js +16 -16
- package/js/src/pro/binance.d.ts +35 -35
- package/js/src/pro/binance.js +35 -35
- package/js/src/pro/bingx.d.ts +9 -9
- package/js/src/pro/bingx.js +9 -9
- package/js/src/pro/bitfinex.d.ts +8 -8
- package/js/src/pro/bitfinex.js +8 -8
- package/js/src/pro/bitget.d.ts +12 -12
- package/js/src/pro/bitget.js +12 -12
- package/js/src/pro/bithumb.d.ts +3 -3
- package/js/src/pro/bithumb.js +3 -3
- package/js/src/pro/bitmart.d.ts +120 -9
- package/js/src/pro/bitmart.js +388 -31
- package/js/src/pro/bitmex.d.ts +9 -9
- package/js/src/pro/bitmex.js +9 -9
- package/js/src/pro/bitopro.d.ts +5 -5
- package/js/src/pro/bitopro.js +5 -5
- package/js/src/pro/bitrue.d.ts +2 -2
- package/js/src/pro/bitrue.js +2 -2
- package/js/src/pro/bitstamp.d.ts +3 -3
- package/js/src/pro/bitstamp.js +3 -3
- package/js/src/pro/bittrade.d.ts +3 -3
- package/js/src/pro/bittrade.js +3 -3
- package/js/src/pro/bitvavo.d.ts +19 -19
- package/js/src/pro/bitvavo.js +19 -19
- package/js/src/pro/blockchaincom.d.ts +5 -5
- package/js/src/pro/blockchaincom.js +5 -5
- package/js/src/pro/blofin.d.ts +10 -10
- package/js/src/pro/blofin.js +10 -10
- package/js/src/pro/bullish.d.ts +6 -6
- package/js/src/pro/bullish.js +6 -6
- package/js/src/pro/bybit.d.ts +19 -19
- package/js/src/pro/bybit.js +19 -19
- package/js/src/pro/cex.d.ts +13 -13
- package/js/src/pro/cex.js +13 -13
- package/js/src/pro/coinbase.d.ts +13 -13
- package/js/src/pro/coinbase.js +13 -13
- package/js/src/pro/coinbaseexchange.d.ts +10 -10
- package/js/src/pro/coinbaseexchange.js +10 -10
- package/js/src/pro/coinbaseinternational.d.ts +8 -8
- package/js/src/pro/coinbaseinternational.js +8 -8
- package/js/src/pro/coincatch.d.ts +10 -10
- package/js/src/pro/coincatch.js +10 -10
- package/js/src/pro/coincheck.d.ts +2 -2
- package/js/src/pro/coincheck.js +2 -2
- package/js/src/pro/coinex.d.ts +10 -10
- package/js/src/pro/coinex.js +10 -10
- package/js/src/pro/coinone.d.ts +3 -3
- package/js/src/pro/coinone.js +3 -3
- package/js/src/pro/cryptocom.d.ts +20 -20
- package/js/src/pro/cryptocom.js +20 -20
- package/js/src/pro/deepcoin.d.ts +8 -8
- package/js/src/pro/deepcoin.js +8 -8
- package/js/src/pro/defx.d.ts +15 -15
- package/js/src/pro/defx.js +15 -15
- package/js/src/pro/deribit.d.ts +10 -10
- package/js/src/pro/deribit.js +10 -10
- package/js/src/pro/derive.d.ts +6 -6
- package/js/src/pro/derive.js +6 -6
- package/js/src/pro/dydx.d.ts +3 -3
- package/js/src/pro/dydx.js +3 -3
- package/js/src/pro/exmo.d.ts +7 -7
- package/js/src/pro/exmo.js +7 -7
- package/js/src/pro/gate.d.ts +22 -23
- package/js/src/pro/gate.js +21 -59
- package/js/src/pro/gemini.d.ts +6 -6
- package/js/src/pro/gemini.js +6 -6
- package/js/src/pro/hashkey.d.ts +6 -6
- package/js/src/pro/hashkey.js +6 -6
- package/js/src/pro/hitbtc.d.ts +8 -8
- package/js/src/pro/hitbtc.js +8 -8
- package/js/src/pro/hollaex.d.ts +5 -5
- package/js/src/pro/hollaex.js +5 -5
- package/js/src/pro/htx.d.ts +9 -9
- package/js/src/pro/htx.js +9 -9
- package/js/src/pro/hyperliquid.d.ts +38 -14
- package/js/src/pro/hyperliquid.js +103 -14
- package/js/src/pro/independentreserve.d.ts +2 -2
- package/js/src/pro/independentreserve.js +2 -2
- package/js/src/pro/kraken.d.ts +15 -15
- package/js/src/pro/kraken.js +15 -15
- package/js/src/pro/krakenfutures.d.ts +10 -10
- package/js/src/pro/krakenfutures.js +10 -10
- package/js/src/pro/kucoin.d.ts +15 -15
- package/js/src/pro/kucoin.js +15 -15
- package/js/src/pro/kucoinfutures.d.ts +13 -13
- package/js/src/pro/kucoinfutures.js +13 -13
- package/js/src/pro/lbank.d.ts +5 -5
- package/js/src/pro/lbank.js +5 -5
- package/js/src/pro/luno.d.ts +2 -2
- package/js/src/pro/luno.js +2 -2
- package/js/src/pro/mexc.d.ts +13 -13
- package/js/src/pro/mexc.js +13 -13
- package/js/src/pro/modetrade.d.ts +8 -8
- package/js/src/pro/modetrade.js +8 -8
- package/js/src/pro/ndax.d.ts +3 -3
- package/js/src/pro/ndax.js +3 -3
- package/js/src/pro/okx.d.ts +25 -25
- package/js/src/pro/okx.js +25 -25
- package/js/src/pro/onetrading.d.ts +6 -6
- package/js/src/pro/onetrading.js +6 -6
- package/js/src/pro/oxfun.d.ts +13 -13
- package/js/src/pro/oxfun.js +13 -13
- package/js/src/pro/p2b.d.ts +5 -5
- package/js/src/pro/p2b.js +5 -5
- package/js/src/pro/paradex.d.ts +8 -8
- package/js/src/pro/paradex.js +8 -8
- package/js/src/pro/phemex.d.ts +7 -7
- package/js/src/pro/phemex.js +7 -7
- package/js/src/pro/poloniex.d.ts +8 -8
- package/js/src/pro/poloniex.js +8 -8
- package/js/src/pro/probit.d.ts +6 -6
- package/js/src/pro/probit.js +6 -6
- package/js/src/pro/toobit.d.ts +9 -9
- package/js/src/pro/toobit.js +9 -9
- package/js/src/pro/upbit.d.ts +9 -9
- package/js/src/pro/upbit.js +9 -9
- package/js/src/pro/whitebit.d.ts +7 -7
- package/js/src/pro/whitebit.js +7 -7
- package/js/src/pro/woo.d.ts +13 -13
- package/js/src/pro/woo.js +13 -13
- package/js/src/pro/woofipro.d.ts +20 -20
- package/js/src/pro/woofipro.js +20 -20
- package/js/src/pro/xt.d.ts +2 -2
- package/js/src/pro/xt.js +2 -2
- package/js/src/probit.d.ts +18 -18
- package/js/src/probit.js +18 -18
- package/js/src/static_dependencies/ethers/utils/index.d.ts +2 -1
- package/js/src/static_dependencies/ethers/utils/index.js +8 -1
- package/js/src/timex.d.ts +16 -16
- package/js/src/timex.js +16 -16
- package/js/src/tokocrypto.d.ts +17 -17
- package/js/src/tokocrypto.js +17 -17
- package/js/src/toobit.d.ts +27 -27
- package/js/src/toobit.js +31 -29
- package/js/src/upbit.d.ts +23 -23
- package/js/src/upbit.js +23 -23
- package/js/src/wavesexchange.d.ts +15 -15
- package/js/src/wavesexchange.js +86 -85
- package/js/src/whitebit.d.ts +44 -44
- package/js/src/whitebit.js +44 -44
- package/js/src/woo.d.ts +45 -45
- package/js/src/woo.js +51 -49
- package/js/src/woofipro.d.ts +77 -77
- package/js/src/woofipro.js +104 -82
- package/js/src/xt.d.ts +12 -12
- package/js/src/xt.js +17 -12
- package/js/src/yobit.d.ts +15 -15
- package/js/src/yobit.js +15 -15
- package/js/src/zaif.d.ts +9 -9
- package/js/src/zaif.js +38 -9
- package/js/src/zebpay.d.ts +20 -20
- package/js/src/zebpay.js +35 -20
- package/js/src/zonda.d.ts +14 -14
- package/js/src/zonda.js +14 -14
- package/package.json +1 -1
package/js/src/pro/bitmart.js
CHANGED
|
@@ -35,6 +35,16 @@ export default class bitmart extends bitmartRest {
|
|
|
35
35
|
'watchOHLCV': true,
|
|
36
36
|
'watchPosition': 'emulated',
|
|
37
37
|
'watchPositions': true,
|
|
38
|
+
'unWatchBidsAsks': false,
|
|
39
|
+
'unWatchOHLCV': true,
|
|
40
|
+
'unWatchOrderBook': true,
|
|
41
|
+
'unWatchOrderBookForSymbols': true,
|
|
42
|
+
'unWatchOrders': true,
|
|
43
|
+
'unWatchPositions': true,
|
|
44
|
+
'unWatchTicker': true,
|
|
45
|
+
'unWatchTickers': true,
|
|
46
|
+
'unWatchTrades': true,
|
|
47
|
+
'unWatchTradesForSymbols': true,
|
|
38
48
|
},
|
|
39
49
|
'urls': {
|
|
40
50
|
'api': {
|
|
@@ -98,10 +108,18 @@ export default class bitmart extends bitmartRest {
|
|
|
98
108
|
const url = this.implodeHostname(this.urls['api']['ws'][type]['public']);
|
|
99
109
|
let request = {};
|
|
100
110
|
let messageHash = undefined;
|
|
111
|
+
const unsubscribe = this.safeBool(params, 'unsubscribe', false);
|
|
112
|
+
let prefix = '';
|
|
113
|
+
let requestOp = 'subscribe';
|
|
114
|
+
if (unsubscribe) {
|
|
115
|
+
params = this.omit(params, 'unsubscribe');
|
|
116
|
+
prefix = 'unsubscribe::';
|
|
117
|
+
requestOp = 'unsubscribe';
|
|
118
|
+
}
|
|
101
119
|
if (type === 'spot') {
|
|
102
120
|
messageHash = 'spot/' + channel + ':' + market['id'];
|
|
103
121
|
request = {
|
|
104
|
-
'op':
|
|
122
|
+
'op': requestOp,
|
|
105
123
|
'args': [messageHash],
|
|
106
124
|
};
|
|
107
125
|
}
|
|
@@ -113,10 +131,11 @@ export default class bitmart extends bitmartRest {
|
|
|
113
131
|
messageHash += ':' + speed;
|
|
114
132
|
}
|
|
115
133
|
request = {
|
|
116
|
-
'action':
|
|
134
|
+
'action': requestOp,
|
|
117
135
|
'args': [messageHash],
|
|
118
136
|
};
|
|
119
137
|
}
|
|
138
|
+
messageHash = prefix + messageHash;
|
|
120
139
|
return await this.watch(url, messageHash, this.deepExtend(request, params), messageHash);
|
|
121
140
|
}
|
|
122
141
|
async subscribeMultiple(channel, type, symbols = undefined, params = {}) {
|
|
@@ -126,11 +145,23 @@ export default class bitmart extends bitmartRest {
|
|
|
126
145
|
const actionType = (type === 'spot') ? 'op' : 'action';
|
|
127
146
|
const rawSubscriptions = [];
|
|
128
147
|
const messageHashes = [];
|
|
148
|
+
const subHashes = [];
|
|
149
|
+
const unsubscribe = this.safeBool(params, 'unsubscribe', false);
|
|
150
|
+
let prefix = '';
|
|
151
|
+
let requestOp = 'subscribe';
|
|
152
|
+
if (unsubscribe) {
|
|
153
|
+
params = this.omit(params, 'unsubscribe');
|
|
154
|
+
prefix = 'unsubscribe::';
|
|
155
|
+
requestOp = 'unsubscribe';
|
|
156
|
+
}
|
|
129
157
|
for (let i = 0; i < symbols.length; i++) {
|
|
130
158
|
const market = this.market(symbols[i]);
|
|
131
159
|
const message = channelType + '/' + channel + ':' + market['id'];
|
|
160
|
+
const subHash = prefix + message;
|
|
161
|
+
const messageHash = prefix + channel + ':' + market['symbol'];
|
|
132
162
|
rawSubscriptions.push(message);
|
|
133
|
-
|
|
163
|
+
subHashes.push(subHash);
|
|
164
|
+
messageHashes.push(messageHash);
|
|
134
165
|
}
|
|
135
166
|
// as an exclusion, futures "tickers" need one generic request for all symbols
|
|
136
167
|
// if ((type !== 'spot') && (channel === 'ticker')) {
|
|
@@ -140,8 +171,8 @@ export default class bitmart extends bitmartRest {
|
|
|
140
171
|
const request = {
|
|
141
172
|
'args': rawSubscriptions,
|
|
142
173
|
};
|
|
143
|
-
request[actionType] =
|
|
144
|
-
return await this.watchMultiple(url, messageHashes, this.deepExtend(request, params),
|
|
174
|
+
request[actionType] = requestOp;
|
|
175
|
+
return await this.watchMultiple(url, messageHashes, this.deepExtend(request, params), subHashes);
|
|
145
176
|
}
|
|
146
177
|
/**
|
|
147
178
|
* @method
|
|
@@ -150,7 +181,7 @@ export default class bitmart extends bitmartRest {
|
|
|
150
181
|
* @see https://developer-pro.bitmart.com/en/futuresv2/#private-assets-channel
|
|
151
182
|
* @description watch balance and get the amount of funds available for trading or funds locked in orders
|
|
152
183
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
153
|
-
* @returns {object} a [balance structure]{@link https://docs.ccxt.com
|
|
184
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/?id=balance-structure}
|
|
154
185
|
*/
|
|
155
186
|
async watchBalance(params = {}) {
|
|
156
187
|
await this.loadMarkets();
|
|
@@ -176,8 +207,8 @@ export default class bitmart extends bitmartRest {
|
|
|
176
207
|
this.setBalanceCache(client, type, messageHash);
|
|
177
208
|
let fetchBalanceSnapshot = undefined;
|
|
178
209
|
let awaitBalanceSnapshot = undefined;
|
|
179
|
-
[fetchBalanceSnapshot, params] = this.handleOptionAndParams(
|
|
180
|
-
[awaitBalanceSnapshot, params] = this.handleOptionAndParams(
|
|
210
|
+
[fetchBalanceSnapshot, params] = this.handleOptionAndParams(params, 'watchBalance', 'fetchBalanceSnapshot', true);
|
|
211
|
+
[awaitBalanceSnapshot, params] = this.handleOptionAndParams(params, 'watchBalance', 'awaitBalanceSnapshot', false);
|
|
181
212
|
if (fetchBalanceSnapshot && awaitBalanceSnapshot) {
|
|
182
213
|
await client.future(type + ':fetchBalanceSnapshot');
|
|
183
214
|
}
|
|
@@ -187,7 +218,7 @@ export default class bitmart extends bitmartRest {
|
|
|
187
218
|
if (subscribeHash in client.subscriptions) {
|
|
188
219
|
return;
|
|
189
220
|
}
|
|
190
|
-
const options = this.
|
|
221
|
+
const options = this.safeDict(this.options, 'watchBalance');
|
|
191
222
|
const snapshot = this.safeBool(options, 'fetchBalanceSnapshot', true);
|
|
192
223
|
if (snapshot) {
|
|
193
224
|
const messageHash = type + ':' + 'fetchBalanceSnapshot';
|
|
@@ -253,7 +284,7 @@ export default class bitmart extends bitmartRest {
|
|
|
253
284
|
const timestamp = this.safeInteger(message, 'event_time');
|
|
254
285
|
this.balance[type]['timestamp'] = timestamp;
|
|
255
286
|
this.balance[type]['datetime'] = this.iso8601(timestamp);
|
|
256
|
-
const balanceDetails = this.
|
|
287
|
+
const balanceDetails = this.safeList(data[i], 'balance_details', []);
|
|
257
288
|
for (let ii = 0; ii < balanceDetails.length; ii++) {
|
|
258
289
|
const rawBalance = balanceDetails[i];
|
|
259
290
|
const account = this.account();
|
|
@@ -287,7 +318,7 @@ export default class bitmart extends bitmartRest {
|
|
|
287
318
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
288
319
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
289
320
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
290
|
-
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com
|
|
321
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
|
|
291
322
|
*/
|
|
292
323
|
async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
293
324
|
return await this.watchTradesForSymbols([symbol], since, limit, params);
|
|
@@ -296,12 +327,13 @@ export default class bitmart extends bitmartRest {
|
|
|
296
327
|
* @method
|
|
297
328
|
* @name bitmart#watchTradesForSymbols
|
|
298
329
|
* @see https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
|
330
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-trade-channel
|
|
299
331
|
* @description get the list of most recent trades for a list of symbols
|
|
300
332
|
* @param {string[]} symbols unified symbol of the market to fetch trades for
|
|
301
333
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
302
334
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
303
335
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
304
|
-
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com
|
|
336
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
|
|
305
337
|
*/
|
|
306
338
|
async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
|
|
307
339
|
await this.loadMarkets();
|
|
@@ -322,6 +354,37 @@ export default class bitmart extends bitmartRest {
|
|
|
322
354
|
}
|
|
323
355
|
return result;
|
|
324
356
|
}
|
|
357
|
+
/**
|
|
358
|
+
* @method
|
|
359
|
+
* @name bitmart#unWatchTrades
|
|
360
|
+
* @description unWatches from the stream channel
|
|
361
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
|
362
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-trade-channel
|
|
363
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
364
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
365
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
366
|
+
*/
|
|
367
|
+
async unWatchTrades(symbol, params = {}) {
|
|
368
|
+
return await this.unWatchTradesForSymbols([symbol], params);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* @method
|
|
372
|
+
* @name bitmart#unWatchTradesForSymbols
|
|
373
|
+
* @description unsubscribes from the trades channel
|
|
374
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-trade-channel
|
|
375
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-trade-channel
|
|
376
|
+
* @param {string[]} symbols unified symbol of the market to fetch trades for
|
|
377
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
378
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
379
|
+
*/
|
|
380
|
+
async unWatchTradesForSymbols(symbols, params = {}) {
|
|
381
|
+
await this.loadMarkets();
|
|
382
|
+
let marketType = undefined;
|
|
383
|
+
[symbols, marketType, params] = this.getParamsForMultipleSub('unWatchTradesForSymbols', symbols, undefined, params);
|
|
384
|
+
const channelName = 'trade';
|
|
385
|
+
params = this.extend(params, { 'unsubscribe': true });
|
|
386
|
+
return await this.subscribeMultiple(channelName, marketType, symbols, params);
|
|
387
|
+
}
|
|
325
388
|
getParamsForMultipleSub(methodName, symbols, limit = undefined, params = {}) {
|
|
326
389
|
symbols = this.marketSymbols(symbols, undefined, false, true);
|
|
327
390
|
const length = symbols.length;
|
|
@@ -341,7 +404,7 @@ export default class bitmart extends bitmartRest {
|
|
|
341
404
|
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
342
405
|
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
343
406
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
344
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com
|
|
407
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
|
|
345
408
|
*/
|
|
346
409
|
async watchTicker(symbol, params = {}) {
|
|
347
410
|
await this.loadMarkets();
|
|
@@ -357,7 +420,7 @@ export default class bitmart extends bitmartRest {
|
|
|
357
420
|
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
358
421
|
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
359
422
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
360
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com
|
|
423
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
|
|
361
424
|
*/
|
|
362
425
|
async watchTickers(symbols = undefined, params = {}) {
|
|
363
426
|
await this.loadMarkets();
|
|
@@ -372,6 +435,37 @@ export default class bitmart extends bitmartRest {
|
|
|
372
435
|
}
|
|
373
436
|
return this.filterByArray(this.tickers, 'symbol', symbols);
|
|
374
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* @method
|
|
440
|
+
* @name bitmart#unWatchTicker
|
|
441
|
+
* @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
442
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
|
443
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
|
444
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
445
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
446
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
447
|
+
*/
|
|
448
|
+
async unWatchTicker(symbol, params = {}) {
|
|
449
|
+
return await this.unWatchTickers([symbol], params);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* @method
|
|
453
|
+
* @name bitmart#unWatchTickers
|
|
454
|
+
* @description unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
455
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
|
|
456
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
|
|
457
|
+
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
458
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
459
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
460
|
+
*/
|
|
461
|
+
async unWatchTickers(symbols = undefined, params = {}) {
|
|
462
|
+
await this.loadMarkets();
|
|
463
|
+
const market = this.getMarketFromSymbols(symbols);
|
|
464
|
+
let marketType = undefined;
|
|
465
|
+
[marketType, params] = this.handleMarketTypeAndParams('watchTickers', market, params);
|
|
466
|
+
params = this.extend(params, { 'unsubscribe': true });
|
|
467
|
+
return await this.subscribeMultiple('ticker', marketType, symbols, params);
|
|
468
|
+
}
|
|
375
469
|
/**
|
|
376
470
|
* @method
|
|
377
471
|
* @name bitmart#watchBidsAsks
|
|
@@ -380,7 +474,7 @@ export default class bitmart extends bitmartRest {
|
|
|
380
474
|
* @description watches best bid & ask for symbols
|
|
381
475
|
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
382
476
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
383
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com
|
|
477
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
|
|
384
478
|
*/
|
|
385
479
|
async watchBidsAsks(symbols = undefined, params = {}) {
|
|
386
480
|
await this.loadMarkets();
|
|
@@ -421,7 +515,7 @@ export default class bitmart extends bitmartRest {
|
|
|
421
515
|
rawTickers = this.safeList(message, 'data', []);
|
|
422
516
|
}
|
|
423
517
|
else {
|
|
424
|
-
rawTickers = [this.
|
|
518
|
+
rawTickers = [this.safeDict(message, 'data', {})];
|
|
425
519
|
}
|
|
426
520
|
if (!rawTickers.length) {
|
|
427
521
|
return;
|
|
@@ -460,7 +554,7 @@ export default class bitmart extends bitmartRest {
|
|
|
460
554
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
461
555
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
462
556
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
463
|
-
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com
|
|
557
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
|
|
464
558
|
*/
|
|
465
559
|
async watchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
466
560
|
await this.loadMarkets();
|
|
@@ -501,6 +595,54 @@ export default class bitmart extends bitmartRest {
|
|
|
501
595
|
}
|
|
502
596
|
return this.filterBySymbolSinceLimit(this.orders, symbol, since, limit, true);
|
|
503
597
|
}
|
|
598
|
+
/**
|
|
599
|
+
* @method
|
|
600
|
+
* @name bitmart#unWatchOrders
|
|
601
|
+
* @description unWatches information on multiple orders made by the user
|
|
602
|
+
* @see https://developer-pro.bitmart.com/en/spot/#private-order-progress
|
|
603
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#private-order-channel
|
|
604
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
605
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
606
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
607
|
+
*/
|
|
608
|
+
async unWatchOrders(symbol = undefined, params = {}) {
|
|
609
|
+
await this.loadMarkets();
|
|
610
|
+
let market = undefined;
|
|
611
|
+
let messageHash = 'unsubscribe::orders';
|
|
612
|
+
if (symbol !== undefined) {
|
|
613
|
+
symbol = this.symbol(symbol);
|
|
614
|
+
market = this.market(symbol);
|
|
615
|
+
if (market['swap']) {
|
|
616
|
+
throw new NotSupported(this.id + ' unWatchOrders() does not support a symbol for swap markets, unWatch from all markets only');
|
|
617
|
+
}
|
|
618
|
+
messageHash += '::' + symbol;
|
|
619
|
+
}
|
|
620
|
+
let type = 'spot';
|
|
621
|
+
[type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
|
|
622
|
+
await this.authenticate(type, params);
|
|
623
|
+
let request = undefined;
|
|
624
|
+
if (type === 'spot') {
|
|
625
|
+
let argsRequest = 'spot/user/order:';
|
|
626
|
+
if (symbol !== undefined) {
|
|
627
|
+
argsRequest += market['id'];
|
|
628
|
+
}
|
|
629
|
+
else {
|
|
630
|
+
argsRequest = 'spot/user/orders:ALL_SYMBOLS';
|
|
631
|
+
}
|
|
632
|
+
request = {
|
|
633
|
+
'op': 'unsubscribe',
|
|
634
|
+
'args': [argsRequest],
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
else {
|
|
638
|
+
request = {
|
|
639
|
+
'action': 'unsubscribe',
|
|
640
|
+
'args': ['futures/order'],
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
const url = this.implodeHostname(this.urls['api']['ws'][type]['private']);
|
|
644
|
+
return await this.watch(url, messageHash, this.deepExtend(request, params), messageHash);
|
|
645
|
+
}
|
|
504
646
|
handleOrders(client, message) {
|
|
505
647
|
//
|
|
506
648
|
// spot
|
|
@@ -555,7 +697,7 @@ export default class bitmart extends bitmartRest {
|
|
|
555
697
|
// ]
|
|
556
698
|
// }
|
|
557
699
|
//
|
|
558
|
-
const orders = this.
|
|
700
|
+
const orders = this.safeList(message, 'data');
|
|
559
701
|
if (orders === undefined) {
|
|
560
702
|
return;
|
|
561
703
|
}
|
|
@@ -671,13 +813,13 @@ export default class bitmart extends bitmartRest {
|
|
|
671
813
|
}, market);
|
|
672
814
|
}
|
|
673
815
|
else {
|
|
674
|
-
const orderInfo = this.
|
|
816
|
+
const orderInfo = this.safeDict(order, 'order');
|
|
675
817
|
const marketId = this.safeString(orderInfo, 'symbol');
|
|
676
818
|
const symbol = this.safeSymbol(marketId, market, '', 'swap');
|
|
677
819
|
const orderId = this.safeString(orderInfo, 'order_id');
|
|
678
820
|
const timestamp = this.safeInteger(orderInfo, 'create_time');
|
|
679
821
|
const updatedTimestamp = this.safeInteger(orderInfo, 'update_time');
|
|
680
|
-
const lastTrade = this.
|
|
822
|
+
const lastTrade = this.safeDict(orderInfo, 'last_trade');
|
|
681
823
|
const cachedOrders = this.orders;
|
|
682
824
|
const orders = this.safeValue(cachedOrders.hashmap, symbol, {});
|
|
683
825
|
const cachedOrder = this.safeValue(orders, orderId);
|
|
@@ -772,6 +914,31 @@ export default class bitmart extends bitmartRest {
|
|
|
772
914
|
}
|
|
773
915
|
return this.filterBySymbolsSinceLimit(this.positions, symbols, since, limit);
|
|
774
916
|
}
|
|
917
|
+
/**
|
|
918
|
+
* @method
|
|
919
|
+
* @name bitmart#unWatchPositions
|
|
920
|
+
* @description unWatches all open positions
|
|
921
|
+
* @see https://developer-pro.bitmart.com/en/futures/#private-position-channel
|
|
922
|
+
* @param {string[]} [symbols] list of unified market symbols
|
|
923
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
924
|
+
* @returns {object} status of the unwatch request
|
|
925
|
+
*/
|
|
926
|
+
async unWatchPositions(symbols = undefined, params = {}) {
|
|
927
|
+
if (symbols !== undefined) {
|
|
928
|
+
const length = symbols.length;
|
|
929
|
+
if (length > 0) {
|
|
930
|
+
throw new NotSupported(this.id + ' unWatchPositions() does not support a list of symbols, unWatch from all markets only');
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
await this.loadMarkets();
|
|
934
|
+
const request = {
|
|
935
|
+
'action': 'unsubscribe',
|
|
936
|
+
'args': ['futures/position'],
|
|
937
|
+
};
|
|
938
|
+
const messageHash = 'unsubscribe::positions';
|
|
939
|
+
const url = this.implodeHostname(this.urls['api']['ws']['swap']['private']);
|
|
940
|
+
return await this.watch(url, messageHash, this.deepExtend(request, params), messageHash);
|
|
941
|
+
}
|
|
775
942
|
handlePositions(client, message) {
|
|
776
943
|
//
|
|
777
944
|
// {
|
|
@@ -808,7 +975,7 @@ export default class bitmart extends bitmartRest {
|
|
|
808
975
|
// ]
|
|
809
976
|
// }
|
|
810
977
|
//
|
|
811
|
-
const data = this.
|
|
978
|
+
const data = this.safeList(message, 'data', []);
|
|
812
979
|
if (this.positions === undefined) {
|
|
813
980
|
this.positions = new ArrayCacheBySymbolBySide();
|
|
814
981
|
}
|
|
@@ -920,7 +1087,7 @@ export default class bitmart extends bitmartRest {
|
|
|
920
1087
|
// ]
|
|
921
1088
|
// }
|
|
922
1089
|
//
|
|
923
|
-
const data = this.
|
|
1090
|
+
const data = this.safeList(message, 'data');
|
|
924
1091
|
if (data === undefined) {
|
|
925
1092
|
return;
|
|
926
1093
|
}
|
|
@@ -1058,7 +1225,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1058
1225
|
rawTickers = this.safeList(message, 'data', []);
|
|
1059
1226
|
}
|
|
1060
1227
|
else {
|
|
1061
|
-
rawTickers = [this.
|
|
1228
|
+
rawTickers = [this.safeDict(message, 'data', {})];
|
|
1062
1229
|
}
|
|
1063
1230
|
if (!rawTickers.length) {
|
|
1064
1231
|
return;
|
|
@@ -1130,8 +1297,8 @@ export default class bitmart extends bitmartRest {
|
|
|
1130
1297
|
symbol = this.symbol(symbol);
|
|
1131
1298
|
const market = this.market(symbol);
|
|
1132
1299
|
let type = 'spot';
|
|
1133
|
-
[type, params] = this.handleMarketTypeAndParams('
|
|
1134
|
-
const timeframes = this.
|
|
1300
|
+
[type, params] = this.handleMarketTypeAndParams('watchOHLCV', market, params);
|
|
1301
|
+
const timeframes = this.safeDict(this.options, 'timeframes', {});
|
|
1135
1302
|
const interval = this.safeString(timeframes, timeframe);
|
|
1136
1303
|
let name = undefined;
|
|
1137
1304
|
if (type === 'spot') {
|
|
@@ -1146,6 +1313,35 @@ export default class bitmart extends bitmartRest {
|
|
|
1146
1313
|
}
|
|
1147
1314
|
return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
|
|
1148
1315
|
}
|
|
1316
|
+
/**
|
|
1317
|
+
* @method
|
|
1318
|
+
* @name bitmart#unWatchOHLCV
|
|
1319
|
+
* @description unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
1320
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-kline-channel
|
|
1321
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-klinebin-channel
|
|
1322
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
1323
|
+
* @param {string} timeframe the length of time each candle represents
|
|
1324
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1325
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
1326
|
+
*/
|
|
1327
|
+
async unWatchOHLCV(symbol, timeframe = '1m', params = {}) {
|
|
1328
|
+
await this.loadMarkets();
|
|
1329
|
+
symbol = this.symbol(symbol);
|
|
1330
|
+
const market = this.market(symbol);
|
|
1331
|
+
let type = 'spot';
|
|
1332
|
+
[type, params] = this.handleMarketTypeAndParams('unWatchOHLCV', market, params);
|
|
1333
|
+
const timeframes = this.safeDict(this.options, 'timeframes', {});
|
|
1334
|
+
const interval = this.safeString(timeframes, timeframe);
|
|
1335
|
+
let name = undefined;
|
|
1336
|
+
if (type === 'spot') {
|
|
1337
|
+
name = 'kline' + interval;
|
|
1338
|
+
}
|
|
1339
|
+
else {
|
|
1340
|
+
name = 'klineBin' + interval;
|
|
1341
|
+
}
|
|
1342
|
+
params = this.extend(params, { 'unsubscribe': true });
|
|
1343
|
+
return await this.subscribe(name, symbol, type, params);
|
|
1344
|
+
}
|
|
1149
1345
|
handleOHLCV(client, message) {
|
|
1150
1346
|
//
|
|
1151
1347
|
// {
|
|
@@ -1195,7 +1391,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1195
1391
|
const intervalParts = interval.split(':');
|
|
1196
1392
|
interval = this.safeString(intervalParts, 0);
|
|
1197
1393
|
// use a reverse lookup in a static map instead
|
|
1198
|
-
const timeframes = this.
|
|
1394
|
+
const timeframes = this.safeDict(this.options, 'timeframes', {});
|
|
1199
1395
|
const timeframe = this.findTimeframe(interval, timeframes);
|
|
1200
1396
|
const duration = this.parseTimeframe(timeframe);
|
|
1201
1397
|
const durationInMs = duration * 1000;
|
|
@@ -1204,7 +1400,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1204
1400
|
const marketId = this.safeString(data[i], 'symbol');
|
|
1205
1401
|
const market = this.safeMarket(marketId);
|
|
1206
1402
|
const symbol = market['symbol'];
|
|
1207
|
-
const rawOHLCV = this.
|
|
1403
|
+
const rawOHLCV = this.safeList(data[i], 'candle');
|
|
1208
1404
|
const parsed = this.parseOHLCV(rawOHLCV, market);
|
|
1209
1405
|
parsed[0] = this.parseToInt(parsed[0] / durationInMs) * durationInMs;
|
|
1210
1406
|
this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
|
|
@@ -1223,7 +1419,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1223
1419
|
const marketId = this.safeString(data, 'symbol');
|
|
1224
1420
|
const market = this.safeMarket(marketId, undefined, undefined, 'swap');
|
|
1225
1421
|
const symbol = market['symbol'];
|
|
1226
|
-
const items = this.
|
|
1422
|
+
const items = this.safeList(data, 'items', []);
|
|
1227
1423
|
this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
|
|
1228
1424
|
let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
|
|
1229
1425
|
if (stored === undefined) {
|
|
@@ -1250,11 +1446,11 @@ export default class bitmart extends bitmartRest {
|
|
|
1250
1446
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
1251
1447
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1252
1448
|
* @param {string} [params.speed] *futures only* '100ms' or '200ms'
|
|
1253
|
-
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com
|
|
1449
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
|
|
1254
1450
|
*/
|
|
1255
1451
|
async watchOrderBook(symbol, limit = undefined, params = {}) {
|
|
1256
1452
|
await this.loadMarkets();
|
|
1257
|
-
const options = this.
|
|
1453
|
+
const options = this.safeDict(this.options, 'watchOrderBook', {});
|
|
1258
1454
|
let depth = this.safeString(options, 'depth', 'depth/increase100');
|
|
1259
1455
|
symbol = this.symbol(symbol);
|
|
1260
1456
|
const market = this.market(symbol);
|
|
@@ -1266,6 +1462,31 @@ export default class bitmart extends bitmartRest {
|
|
|
1266
1462
|
const orderbook = await this.subscribe(depth, symbol, type, params);
|
|
1267
1463
|
return orderbook.limit();
|
|
1268
1464
|
}
|
|
1465
|
+
/**
|
|
1466
|
+
* @method
|
|
1467
|
+
* @name bitmart#unWatchOrderBook
|
|
1468
|
+
* @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
1469
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-depth-all-channel
|
|
1470
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
|
1471
|
+
* @see https://developer-pro.bitmart.com/en/futuresv2/#public-depth-channel
|
|
1472
|
+
* @param {string} symbol unified array of symbols
|
|
1473
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1474
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
1475
|
+
*/
|
|
1476
|
+
async unWatchOrderBook(symbol, params = {}) {
|
|
1477
|
+
await this.loadMarkets();
|
|
1478
|
+
const options = this.safeDict(this.options, 'watchOrderBook', {});
|
|
1479
|
+
let depth = this.safeString(options, 'depth', 'depth/increase100');
|
|
1480
|
+
symbol = this.symbol(symbol);
|
|
1481
|
+
const market = this.market(symbol);
|
|
1482
|
+
let type = 'spot';
|
|
1483
|
+
[type, params] = this.handleMarketTypeAndParams('unWatchOrderBook', market, params);
|
|
1484
|
+
if (type === 'swap' && depth === 'depth/increase100') {
|
|
1485
|
+
depth = 'depth50';
|
|
1486
|
+
}
|
|
1487
|
+
params = this.extend(params, { 'unsubscribe': true });
|
|
1488
|
+
return await this.subscribe(depth, symbol, type, params);
|
|
1489
|
+
}
|
|
1269
1490
|
handleDelta(bookside, delta) {
|
|
1270
1491
|
const price = this.safeFloat(delta, 0);
|
|
1271
1492
|
const amount = this.safeFloat(delta, 1);
|
|
@@ -1484,7 +1705,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1484
1705
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
1485
1706
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1486
1707
|
* @param {string} [params.depth] the type of order book to subscribe to, default is 'depth/increase100', also accepts 'depth5' or 'depth20' or depth50
|
|
1487
|
-
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com
|
|
1708
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/?id=order-book-structure} indexed by market symbols
|
|
1488
1709
|
*/
|
|
1489
1710
|
async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
|
|
1490
1711
|
await this.loadMarkets();
|
|
@@ -1498,6 +1719,28 @@ export default class bitmart extends bitmartRest {
|
|
|
1498
1719
|
const orderbook = await this.subscribeMultiple(channel, type, symbols, params);
|
|
1499
1720
|
return orderbook.limit();
|
|
1500
1721
|
}
|
|
1722
|
+
/**
|
|
1723
|
+
* @method
|
|
1724
|
+
* @name bitmart#unWatchOrderBookForSymbols
|
|
1725
|
+
* @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
1726
|
+
* @see https://developer-pro.bitmart.com/en/spot/#public-depth-increase-channel
|
|
1727
|
+
* @param {string[]} symbols unified array of symbols
|
|
1728
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1729
|
+
* @param {string} [params.depth] the type of order book to subscribe to, default is 'depth/increase100', also accepts 'depth5' or 'depth20' or depth50
|
|
1730
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
1731
|
+
*/
|
|
1732
|
+
async unWatchOrderBookForSymbols(symbols, params = {}) {
|
|
1733
|
+
await this.loadMarkets();
|
|
1734
|
+
let type = undefined;
|
|
1735
|
+
[symbols, type, params] = this.getParamsForMultipleSub('unWatchOrderBookForSymbols', symbols, undefined, params);
|
|
1736
|
+
let channel = undefined;
|
|
1737
|
+
[channel, params] = this.handleOptionAndParams(params, 'unWatchOrderBookForSymbols', 'depth', 'depth/increase100');
|
|
1738
|
+
if (type === 'swap' && channel === 'depth/increase100') {
|
|
1739
|
+
channel = 'depth50';
|
|
1740
|
+
}
|
|
1741
|
+
params = this.extend(params, { 'unsubscribe': true });
|
|
1742
|
+
return await this.subscribeMultiple(channel, type, symbols, params);
|
|
1743
|
+
}
|
|
1501
1744
|
async authenticate(type, params = {}) {
|
|
1502
1745
|
this.checkRequiredCredentials();
|
|
1503
1746
|
const url = this.implodeHostname(this.urls['api']['ws'][type]['private']);
|
|
@@ -1595,6 +1838,119 @@ export default class bitmart extends bitmartRest {
|
|
|
1595
1838
|
return true;
|
|
1596
1839
|
}
|
|
1597
1840
|
}
|
|
1841
|
+
handleUnSubscription(client, message) {
|
|
1842
|
+
//
|
|
1843
|
+
// spot
|
|
1844
|
+
// {
|
|
1845
|
+
// "topic": "spot/ticker:ETH_USDT",
|
|
1846
|
+
// "event": "unsubscribe"
|
|
1847
|
+
// }
|
|
1848
|
+
//
|
|
1849
|
+
// swap
|
|
1850
|
+
// {
|
|
1851
|
+
// "action": "unsubscribe",
|
|
1852
|
+
// "group": "futures/ticker:ETHUSDT",
|
|
1853
|
+
// "success": true,
|
|
1854
|
+
// "request": {
|
|
1855
|
+
// "action": "unsubscribe",
|
|
1856
|
+
// "args": [
|
|
1857
|
+
// "futures/ticker:ETHUSDT"
|
|
1858
|
+
// ]
|
|
1859
|
+
// }
|
|
1860
|
+
// }
|
|
1861
|
+
//
|
|
1862
|
+
const messageTopic = this.safeString2(message, 'topic', 'group');
|
|
1863
|
+
const unSubMessageTopic = 'unsubscribe::' + messageTopic;
|
|
1864
|
+
// one message includes info about one unsubscription only even if we requested multiple
|
|
1865
|
+
// so we can not just create subscription object in unWatch method and use it here
|
|
1866
|
+
// we need to reconstruct subscription params from the messageTopic
|
|
1867
|
+
const subscription = this.getUnSubParams(messageTopic);
|
|
1868
|
+
const subHash = this.safeString(subscription, 'subHash');
|
|
1869
|
+
const unsubHash = 'unsubscribe::' + subHash;
|
|
1870
|
+
const subHashIsPrefix = this.safeBool(subscription, 'subHashIsPrefix', false);
|
|
1871
|
+
// clean up both ways of storing subscription and unsubscription
|
|
1872
|
+
this.cleanUnsubscription(client, subHash, unsubHash, subHashIsPrefix);
|
|
1873
|
+
this.cleanUnsubscription(client, messageTopic, unSubMessageTopic, subHashIsPrefix);
|
|
1874
|
+
this.cleanCache(subscription);
|
|
1875
|
+
}
|
|
1876
|
+
getUnSubParams(messageTopic) {
|
|
1877
|
+
const parts = messageTopic.split(':');
|
|
1878
|
+
const channel = this.safeString(parts, 0);
|
|
1879
|
+
const marketTypeAndTopic = channel.split('/');
|
|
1880
|
+
const rawMarketType = this.safeStringLower(marketTypeAndTopic, 0);
|
|
1881
|
+
const marketType = this.parseMarketType(rawMarketType);
|
|
1882
|
+
let topic = this.safeString(marketTypeAndTopic, 1);
|
|
1883
|
+
const thirdPart = this.safeString(marketTypeAndTopic, 2);
|
|
1884
|
+
if (thirdPart !== undefined) {
|
|
1885
|
+
topic += '/' + thirdPart;
|
|
1886
|
+
}
|
|
1887
|
+
const marketId = this.safeString(parts, 1);
|
|
1888
|
+
const symbols = [];
|
|
1889
|
+
let symbol = undefined;
|
|
1890
|
+
let subHash = topic;
|
|
1891
|
+
let hashDelimiter = ':';
|
|
1892
|
+
let subHashIsPrefix = false;
|
|
1893
|
+
const parsedTopic = this.parseTopic(topic);
|
|
1894
|
+
if ((parsedTopic === 'orders') || (parsedTopic === 'positions')) {
|
|
1895
|
+
subHash = parsedTopic;
|
|
1896
|
+
hashDelimiter = '::';
|
|
1897
|
+
}
|
|
1898
|
+
if ((marketId !== undefined) && (marketId !== 'ALL_SYMBOLS')) {
|
|
1899
|
+
// if marketId is defined, we have a single symbol subscription
|
|
1900
|
+
const delimiter = (marketType === 'spot') ? '_' : '';
|
|
1901
|
+
const market = this.safeMarket(marketId, undefined, delimiter, marketType);
|
|
1902
|
+
symbol = market['symbol'];
|
|
1903
|
+
subHash += hashDelimiter + symbol;
|
|
1904
|
+
symbols.push(symbol);
|
|
1905
|
+
}
|
|
1906
|
+
else {
|
|
1907
|
+
subHashIsPrefix = true; // need to clean all subHashes with this prefix
|
|
1908
|
+
}
|
|
1909
|
+
const symbolsAndTimeframes = [];
|
|
1910
|
+
if (topic.startsWith('kline')) {
|
|
1911
|
+
let interval = topic.replace('kline', '');
|
|
1912
|
+
if (interval.startsWith('Bin')) {
|
|
1913
|
+
// swap market
|
|
1914
|
+
interval = interval.replace('Bin', '');
|
|
1915
|
+
}
|
|
1916
|
+
const timeframes = this.safeDict(this.options, 'timeframes', {});
|
|
1917
|
+
const timeframe = this.findTimeframe(interval, timeframes);
|
|
1918
|
+
const symbolAndTimeframe = [symbol, timeframe];
|
|
1919
|
+
symbolsAndTimeframes.push(symbolAndTimeframe);
|
|
1920
|
+
}
|
|
1921
|
+
const result = {
|
|
1922
|
+
'topic': parsedTopic,
|
|
1923
|
+
'symbols': symbols,
|
|
1924
|
+
'subHash': subHash,
|
|
1925
|
+
'symbolsAndTimeframes': symbolsAndTimeframes,
|
|
1926
|
+
'subHashIsPrefix': subHashIsPrefix,
|
|
1927
|
+
};
|
|
1928
|
+
return result;
|
|
1929
|
+
}
|
|
1930
|
+
parseTopic(topic) {
|
|
1931
|
+
if (topic.startsWith('depth')) {
|
|
1932
|
+
return 'orderbook';
|
|
1933
|
+
}
|
|
1934
|
+
if (topic.startsWith('kline')) {
|
|
1935
|
+
return 'ohlcv';
|
|
1936
|
+
}
|
|
1937
|
+
const topics = {
|
|
1938
|
+
'ticker': 'ticker',
|
|
1939
|
+
'trade': 'trades',
|
|
1940
|
+
'user/order': 'orders',
|
|
1941
|
+
'user/orders': 'orders',
|
|
1942
|
+
'order': 'orders',
|
|
1943
|
+
'position': 'positions',
|
|
1944
|
+
};
|
|
1945
|
+
return this.safeString(topics, topic, topic);
|
|
1946
|
+
}
|
|
1947
|
+
parseMarketType(marketType) {
|
|
1948
|
+
const types = {
|
|
1949
|
+
'spot': 'spot',
|
|
1950
|
+
'futures': 'swap',
|
|
1951
|
+
};
|
|
1952
|
+
return this.safeString(types, marketType, marketType);
|
|
1953
|
+
}
|
|
1598
1954
|
handleMessage(client, message) {
|
|
1599
1955
|
if (this.handleErrorMessage(client, message)) {
|
|
1600
1956
|
return;
|
|
@@ -1654,6 +2010,7 @@ export default class bitmart extends bitmartRest {
|
|
|
1654
2010
|
'login': this.handleAuthenticate,
|
|
1655
2011
|
'access': this.handleAuthenticate,
|
|
1656
2012
|
'subscribe': this.handleSubscriptionStatus,
|
|
2013
|
+
'unsubscribe': this.handleUnSubscription,
|
|
1657
2014
|
};
|
|
1658
2015
|
const method = this.safeValue(methods, event);
|
|
1659
2016
|
if (method !== undefined) {
|