ccxt 4.2.17 → 4.2.19
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 +9 -9
- package/dist/ccxt.browser.js +48992 -47725
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +12 -1
- package/dist/cjs/src/alpaca.js +18 -18
- package/dist/cjs/src/ascendex.js +13 -6
- package/dist/cjs/src/base/Exchange.js +266 -27
- package/dist/cjs/src/bigone.js +434 -168
- package/dist/cjs/src/binance.js +163 -34
- package/dist/cjs/src/binanceus.js +8 -0
- package/dist/cjs/src/bingx.js +183 -41
- package/dist/cjs/src/bitfinex.js +2 -3
- package/dist/cjs/src/bitget.js +59 -16
- package/dist/cjs/src/bitmart.js +5 -5
- package/dist/cjs/src/bitmex.js +4 -6
- package/dist/cjs/src/bitpanda.js +5 -1991
- package/dist/cjs/src/bitstamp.js +8 -0
- package/dist/cjs/src/bybit.js +27 -47
- package/dist/cjs/src/coinbase.js +176 -26
- package/dist/cjs/src/coincheck.js +1 -0
- package/dist/cjs/src/coinex.js +3 -0
- package/dist/cjs/src/coinlist.js +13 -6
- package/dist/cjs/src/coinone.js +2 -2
- package/dist/cjs/src/coinsph.js +4 -5
- package/dist/cjs/src/delta.js +7 -1
- package/dist/cjs/src/deribit.js +17 -4
- package/dist/cjs/src/gate.js +151 -169
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hitbtc.js +2 -3
- package/dist/cjs/src/htx.js +157 -7
- package/dist/cjs/src/huobijp.js +2 -3
- package/dist/cjs/src/independentreserve.js +7 -5
- package/dist/cjs/src/kraken.js +86 -54
- package/dist/cjs/src/kucoin.js +5 -0
- package/dist/cjs/src/kucoinfutures.js +131 -77
- package/dist/cjs/src/lbank.js +60 -33
- package/dist/cjs/src/luno.js +84 -2
- package/dist/cjs/src/mexc.js +3 -3
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okx.js +23 -11
- package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
- package/dist/cjs/src/phemex.js +37 -27
- package/dist/cjs/src/poloniexfutures.js +1 -0
- package/dist/cjs/src/pro/binance.js +66 -25
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bitpanda.js +5 -1330
- package/dist/cjs/src/pro/coinbase.js +4 -1
- package/dist/cjs/src/pro/coincheck.js +208 -0
- package/dist/cjs/src/pro/hitbtc.js +5 -4
- package/dist/cjs/src/pro/htx.js +6 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/krakenfutures.js +7 -1
- package/dist/cjs/src/pro/kucoin.js +46 -36
- package/dist/cjs/src/pro/kucoinfutures.js +45 -37
- package/dist/cjs/src/pro/lbank.js +881 -0
- package/dist/cjs/src/pro/okx.js +52 -2
- package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
- package/dist/cjs/src/pro/poloniex.js +2 -2
- package/dist/cjs/src/pro/poloniexfutures.js +43 -35
- package/dist/cjs/src/pro/woo.js +126 -0
- package/dist/cjs/src/probit.js +4 -2
- package/dist/cjs/src/upbit.js +12 -12
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +1 -0
- package/dist/cjs/src/woo.js +56 -0
- package/js/ccxt.d.ts +14 -2
- package/js/ccxt.js +10 -2
- package/js/src/abstract/bitpanda.d.ts +4 -4
- package/js/src/abstract/bitstamp.d.ts +8 -0
- package/js/src/abstract/gate.d.ts +1 -0
- package/js/src/abstract/gateio.d.ts +1 -0
- package/js/src/abstract/htx.d.ts +3 -0
- package/js/src/abstract/huobi.d.ts +3 -0
- package/js/src/abstract/luno.d.ts +1 -0
- package/js/src/abstract/onetrading.d.ts +38 -0
- package/js/src/ascendex.js +2 -0
- package/js/src/base/Exchange.d.ts +2 -3
- package/js/src/base/Exchange.js +5 -2
- package/js/src/binance.js +7 -1
- package/js/src/bingx.d.ts +1 -0
- package/js/src/bingx.js +26 -0
- package/js/src/bitget.js +22 -3
- package/js/src/bitpanda.d.ts +2 -72
- package/js/src/bitpanda.js +5 -1991
- package/js/src/bitstamp.js +8 -0
- package/js/src/bybit.js +21 -47
- package/js/src/coincheck.js +1 -0
- package/js/src/deribit.js +16 -4
- package/js/src/gate.d.ts +1 -0
- package/js/src/gate.js +50 -110
- package/js/src/htx.js +3 -0
- package/js/src/kraken.d.ts +1 -0
- package/js/src/kraken.js +40 -39
- package/js/src/lbank.js +1 -0
- package/js/src/luno.d.ts +3 -1
- package/js/src/luno.js +84 -2
- package/js/src/mexc.js +1 -2
- package/js/src/onetrading.d.ts +74 -0
- package/js/src/onetrading.js +2003 -0
- package/js/src/poloniexfutures.js +1 -0
- package/js/src/pro/binance.js +7 -2
- package/js/src/pro/bitget.js +1 -1
- package/js/src/pro/bitpanda.d.ts +2 -34
- package/js/src/pro/bitpanda.js +5 -1330
- package/js/src/pro/coincheck.d.ts +12 -0
- package/js/src/pro/coincheck.js +209 -0
- package/js/src/pro/kucoin.js +43 -35
- package/js/src/pro/kucoinfutures.js +45 -37
- package/js/src/pro/lbank.d.ts +29 -0
- package/js/src/pro/lbank.js +882 -0
- package/js/src/pro/onetrading.d.ts +36 -0
- package/js/src/pro/onetrading.js +1339 -0
- package/js/src/pro/poloniexfutures.js +43 -35
- package/js/src/whitebit.js +1 -0
- package/package.json +2 -2
- package/rollup.config.js +2 -0
- package/skip-tests.json +14 -2
- package/test-commonjs.cjs +25 -1
- package/dist/cjs/js/ccxt.js +0 -476
- package/dist/cjs/js/src/abstract/alpaca.js +0 -9
- package/dist/cjs/js/src/abstract/ascendex.js +0 -9
- package/dist/cjs/js/src/abstract/bigone.js +0 -9
- package/dist/cjs/js/src/abstract/binance.js +0 -9
- package/dist/cjs/js/src/abstract/bingx.js +0 -9
- package/dist/cjs/js/src/abstract/bit2c.js +0 -9
- package/dist/cjs/js/src/abstract/bitbank.js +0 -9
- package/dist/cjs/js/src/abstract/bitbns.js +0 -9
- package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
- package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
- package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
- package/dist/cjs/js/src/abstract/bitforex.js +0 -9
- package/dist/cjs/js/src/abstract/bitget.js +0 -9
- package/dist/cjs/js/src/abstract/bithumb.js +0 -9
- package/dist/cjs/js/src/abstract/bitmart.js +0 -9
- package/dist/cjs/js/src/abstract/bitmex.js +0 -9
- package/dist/cjs/js/src/abstract/bitopro.js +0 -9
- package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
- package/dist/cjs/js/src/abstract/bitrue.js +0 -9
- package/dist/cjs/js/src/abstract/bitso.js +0 -9
- package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
- package/dist/cjs/js/src/abstract/bitteam.js +0 -9
- package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
- package/dist/cjs/js/src/abstract/bl3p.js +0 -9
- package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
- package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
- package/dist/cjs/js/src/abstract/btcbox.js +0 -9
- package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
- package/dist/cjs/js/src/abstract/btcturk.js +0 -9
- package/dist/cjs/js/src/abstract/bybit.js +0 -9
- package/dist/cjs/js/src/abstract/cex.js +0 -9
- package/dist/cjs/js/src/abstract/coinbase.js +0 -9
- package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
- package/dist/cjs/js/src/abstract/coincheck.js +0 -9
- package/dist/cjs/js/src/abstract/coinex.js +0 -9
- package/dist/cjs/js/src/abstract/coinlist.js +0 -9
- package/dist/cjs/js/src/abstract/coinmate.js +0 -9
- package/dist/cjs/js/src/abstract/coinone.js +0 -9
- package/dist/cjs/js/src/abstract/coinsph.js +0 -9
- package/dist/cjs/js/src/abstract/coinspot.js +0 -9
- package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
- package/dist/cjs/js/src/abstract/currencycom.js +0 -9
- package/dist/cjs/js/src/abstract/delta.js +0 -9
- package/dist/cjs/js/src/abstract/deribit.js +0 -9
- package/dist/cjs/js/src/abstract/digifinex.js +0 -9
- package/dist/cjs/js/src/abstract/exmo.js +0 -9
- package/dist/cjs/js/src/abstract/gate.js +0 -9
- package/dist/cjs/js/src/abstract/gemini.js +0 -9
- package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
- package/dist/cjs/js/src/abstract/hollaex.js +0 -9
- package/dist/cjs/js/src/abstract/htx.js +0 -9
- package/dist/cjs/js/src/abstract/huobijp.js +0 -9
- package/dist/cjs/js/src/abstract/idex.js +0 -9
- package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
- package/dist/cjs/js/src/abstract/indodax.js +0 -9
- package/dist/cjs/js/src/abstract/kraken.js +0 -9
- package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
- package/dist/cjs/js/src/abstract/kucoin.js +0 -9
- package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
- package/dist/cjs/js/src/abstract/kuna.js +0 -9
- package/dist/cjs/js/src/abstract/latoken.js +0 -9
- package/dist/cjs/js/src/abstract/lbank.js +0 -9
- package/dist/cjs/js/src/abstract/luno.js +0 -9
- package/dist/cjs/js/src/abstract/lykke.js +0 -9
- package/dist/cjs/js/src/abstract/mercado.js +0 -9
- package/dist/cjs/js/src/abstract/mexc.js +0 -9
- package/dist/cjs/js/src/abstract/ndax.js +0 -9
- package/dist/cjs/js/src/abstract/novadax.js +0 -9
- package/dist/cjs/js/src/abstract/oceanex.js +0 -9
- package/dist/cjs/js/src/abstract/okcoin.js +0 -9
- package/dist/cjs/js/src/abstract/okx.js +0 -9
- package/dist/cjs/js/src/abstract/p2b.js +0 -9
- package/dist/cjs/js/src/abstract/paymium.js +0 -9
- package/dist/cjs/js/src/abstract/phemex.js +0 -9
- package/dist/cjs/js/src/abstract/poloniex.js +0 -9
- package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
- package/dist/cjs/js/src/abstract/probit.js +0 -9
- package/dist/cjs/js/src/abstract/timex.js +0 -9
- package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
- package/dist/cjs/js/src/abstract/upbit.js +0 -9
- package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
- package/dist/cjs/js/src/abstract/wazirx.js +0 -9
- package/dist/cjs/js/src/abstract/whitebit.js +0 -9
- package/dist/cjs/js/src/abstract/woo.js +0 -9
- package/dist/cjs/js/src/abstract/yobit.js +0 -9
- package/dist/cjs/js/src/abstract/zaif.js +0 -9
- package/dist/cjs/js/src/abstract/zonda.js +0 -9
- package/dist/cjs/js/src/ace.js +0 -1058
- package/dist/cjs/js/src/alpaca.js +0 -1125
- package/dist/cjs/js/src/ascendex.js +0 -3365
- package/dist/cjs/js/src/base/Exchange.js +0 -5257
- package/dist/cjs/js/src/base/Precise.js +0 -263
- package/dist/cjs/js/src/base/errors.js +0 -299
- package/dist/cjs/js/src/base/functions/crypto.js +0 -78
- package/dist/cjs/js/src/base/functions/encode.js +0 -44
- package/dist/cjs/js/src/base/functions/generic.js +0 -193
- package/dist/cjs/js/src/base/functions/misc.js +0 -96
- package/dist/cjs/js/src/base/functions/number.js +0 -297
- package/dist/cjs/js/src/base/functions/platform.js +0 -28
- package/dist/cjs/js/src/base/functions/rsa.js +0 -34
- package/dist/cjs/js/src/base/functions/string.js +0 -48
- package/dist/cjs/js/src/base/functions/throttle.js +0 -66
- package/dist/cjs/js/src/base/functions/time.js +0 -187
- package/dist/cjs/js/src/base/functions/totp.js +0 -24
- package/dist/cjs/js/src/base/functions/type.js +0 -162
- package/dist/cjs/js/src/base/functions.js +0 -157
- package/dist/cjs/js/src/base/ws/Cache.js +0 -254
- package/dist/cjs/js/src/base/ws/Client.js +0 -299
- package/dist/cjs/js/src/base/ws/Future.js +0 -34
- package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
- package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
- package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
- package/dist/cjs/js/src/bequant.js +0 -33
- package/dist/cjs/js/src/bigone.js +0 -2213
- package/dist/cjs/js/src/binance.js +0 -9845
- package/dist/cjs/js/src/binancecoinm.js +0 -45
- package/dist/cjs/js/src/binanceus.js +0 -92
- package/dist/cjs/js/src/binanceusdm.js +0 -58
- package/dist/cjs/js/src/bingx.js +0 -3846
- package/dist/cjs/js/src/bit2c.js +0 -916
- package/dist/cjs/js/src/bitbank.js +0 -1000
- package/dist/cjs/js/src/bitbay.js +0 -17
- package/dist/cjs/js/src/bitbns.js +0 -1220
- package/dist/cjs/js/src/bitcoincom.js +0 -17
- package/dist/cjs/js/src/bitfinex.js +0 -1670
- package/dist/cjs/js/src/bitfinex2.js +0 -2990
- package/dist/cjs/js/src/bitflyer.js +0 -1045
- package/dist/cjs/js/src/bitforex.js +0 -852
- package/dist/cjs/js/src/bitget.js +0 -8295
- package/dist/cjs/js/src/bithumb.js +0 -1090
- package/dist/cjs/js/src/bitmart.js +0 -4454
- package/dist/cjs/js/src/bitmex.js +0 -2881
- package/dist/cjs/js/src/bitopro.js +0 -1724
- package/dist/cjs/js/src/bitrue.js +0 -3253
- package/dist/cjs/js/src/bitso.js +0 -1753
- package/dist/cjs/js/src/bitstamp.js +0 -2188
- package/dist/cjs/js/src/bitteam.js +0 -2309
- package/dist/cjs/js/src/bitvavo.js +0 -1968
- package/dist/cjs/js/src/bl3p.js +0 -447
- package/dist/cjs/js/src/blockchaincom.js +0 -1160
- package/dist/cjs/js/src/btcalpha.js +0 -929
- package/dist/cjs/js/src/btcbox.js +0 -565
- package/dist/cjs/js/src/btcmarkets.js +0 -1237
- package/dist/cjs/js/src/btcturk.js +0 -929
- package/dist/cjs/js/src/bybit.js +0 -7650
- package/dist/cjs/js/src/cex.js +0 -1693
- package/dist/cjs/js/src/coinbase.js +0 -3424
- package/dist/cjs/js/src/coinbasepro.js +0 -1866
- package/dist/cjs/js/src/coincheck.js +0 -843
- package/dist/cjs/js/src/coinex.js +0 -5417
- package/dist/cjs/js/src/coinlist.js +0 -2337
- package/dist/cjs/js/src/coinmate.js +0 -989
- package/dist/cjs/js/src/coinone.js +0 -1185
- package/dist/cjs/js/src/coinsph.js +0 -1933
- package/dist/cjs/js/src/coinspot.js +0 -548
- package/dist/cjs/js/src/cryptocom.js +0 -3007
- package/dist/cjs/js/src/currencycom.js +0 -2015
- package/dist/cjs/js/src/delta.js +0 -3262
- package/dist/cjs/js/src/deribit.js +0 -3306
- package/dist/cjs/js/src/digifinex.js +0 -4307
- package/dist/cjs/js/src/exmo.js +0 -2645
- package/dist/cjs/js/src/fmfwio.js +0 -34
- package/dist/cjs/js/src/gate.js +0 -7077
- package/dist/cjs/js/src/gateio.js +0 -16
- package/dist/cjs/js/src/gemini.js +0 -1801
- package/dist/cjs/js/src/hitbtc.js +0 -3660
- package/dist/cjs/js/src/hitbtc3.js +0 -19
- package/dist/cjs/js/src/hollaex.js +0 -1882
- package/dist/cjs/js/src/htx.js +0 -9174
- package/dist/cjs/js/src/huobi.js +0 -16
- package/dist/cjs/js/src/huobijp.js +0 -1918
- package/dist/cjs/js/src/idex.js +0 -1770
- package/dist/cjs/js/src/independentreserve.js +0 -761
- package/dist/cjs/js/src/indodax.js +0 -1069
- package/dist/cjs/js/src/kraken.js +0 -2891
- package/dist/cjs/js/src/krakenfutures.js +0 -2407
- package/dist/cjs/js/src/kucoin.js +0 -4494
- package/dist/cjs/js/src/kucoinfutures.js +0 -2529
- package/dist/cjs/js/src/kuna.js +0 -1949
- package/dist/cjs/js/src/latoken.js +0 -1729
- package/dist/cjs/js/src/lbank.js +0 -2851
- package/dist/cjs/js/src/luno.js +0 -1044
- package/dist/cjs/js/src/lykke.js +0 -1303
- package/dist/cjs/js/src/mercado.js +0 -897
- package/dist/cjs/js/src/mexc.js +0 -5407
- package/dist/cjs/js/src/ndax.js +0 -2450
- package/dist/cjs/js/src/novadax.js +0 -1556
- package/dist/cjs/js/src/oceanex.js +0 -964
- package/dist/cjs/js/src/okcoin.js +0 -3115
- package/dist/cjs/js/src/okx.js +0 -7331
- package/dist/cjs/js/src/p2b.js +0 -1243
- package/dist/cjs/js/src/paymium.js +0 -597
- package/dist/cjs/js/src/phemex.js +0 -4725
- package/dist/cjs/js/src/poloniex.js +0 -2356
- package/dist/cjs/js/src/poloniexfutures.js +0 -1794
- package/dist/cjs/js/src/pro/alpaca.js +0 -714
- package/dist/cjs/js/src/pro/ascendex.js +0 -957
- package/dist/cjs/js/src/pro/bequant.js +0 -33
- package/dist/cjs/js/src/pro/binance.js +0 -2796
- package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
- package/dist/cjs/js/src/pro/binanceus.js +0 -51
- package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
- package/dist/cjs/js/src/pro/bingx.js +0 -944
- package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
- package/dist/cjs/js/src/pro/bitfinex.js +0 -672
- package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
- package/dist/cjs/js/src/pro/bitget.js +0 -1733
- package/dist/cjs/js/src/pro/bitmart.js +0 -1486
- package/dist/cjs/js/src/pro/bitmex.js +0 -1576
- package/dist/cjs/js/src/pro/bitopro.js +0 -327
- package/dist/cjs/js/src/pro/bitrue.js +0 -462
- package/dist/cjs/js/src/pro/bitstamp.js +0 -547
- package/dist/cjs/js/src/pro/bitvavo.js +0 -704
- package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
- package/dist/cjs/js/src/pro/bybit.js +0 -1843
- package/dist/cjs/js/src/pro/cex.js +0 -1510
- package/dist/cjs/js/src/pro/coinbase.js +0 -561
- package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
- package/dist/cjs/js/src/pro/coinex.js +0 -1095
- package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
- package/dist/cjs/js/src/pro/currencycom.js +0 -563
- package/dist/cjs/js/src/pro/deribit.js +0 -825
- package/dist/cjs/js/src/pro/exmo.js +0 -658
- package/dist/cjs/js/src/pro/gate.js +0 -1316
- package/dist/cjs/js/src/pro/gateio.js +0 -16
- package/dist/cjs/js/src/pro/gemini.js +0 -649
- package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
- package/dist/cjs/js/src/pro/hollaex.js +0 -597
- package/dist/cjs/js/src/pro/htx.js +0 -2388
- package/dist/cjs/js/src/pro/huobi.js +0 -16
- package/dist/cjs/js/src/pro/huobijp.js +0 -606
- package/dist/cjs/js/src/pro/idex.js +0 -714
- package/dist/cjs/js/src/pro/independentreserve.js +0 -280
- package/dist/cjs/js/src/pro/kraken.js +0 -1364
- package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
- package/dist/cjs/js/src/pro/kucoin.js +0 -1054
- package/dist/cjs/js/src/pro/kucoinfutures.js +0 -981
- package/dist/cjs/js/src/pro/luno.js +0 -322
- package/dist/cjs/js/src/pro/mexc.js +0 -1170
- package/dist/cjs/js/src/pro/ndax.js +0 -545
- package/dist/cjs/js/src/pro/okcoin.js +0 -760
- package/dist/cjs/js/src/pro/okx.js +0 -1608
- package/dist/cjs/js/src/pro/phemex.js +0 -1511
- package/dist/cjs/js/src/pro/poloniex.js +0 -1253
- package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1014
- package/dist/cjs/js/src/pro/probit.js +0 -586
- package/dist/cjs/js/src/pro/upbit.js +0 -234
- package/dist/cjs/js/src/pro/wazirx.js +0 -776
- package/dist/cjs/js/src/pro/whitebit.js +0 -927
- package/dist/cjs/js/src/pro/woo.js +0 -895
- package/dist/cjs/js/src/probit.js +0 -1867
- package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
- package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
- package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
- package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
- package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
- package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
- package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
- package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
- package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
- package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
- package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
- package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
- package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
- package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
- package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
- package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
- package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
- package/dist/cjs/js/src/timex.js +0 -1562
- package/dist/cjs/js/src/tokocrypto.js +0 -2542
- package/dist/cjs/js/src/upbit.js +0 -1844
- package/dist/cjs/js/src/wavesexchange.js +0 -2607
- package/dist/cjs/js/src/wazirx.js +0 -953
- package/dist/cjs/js/src/whitebit.js +0 -2309
- package/dist/cjs/js/src/woo.js +0 -2769
- package/dist/cjs/js/src/yobit.js +0 -1314
- package/dist/cjs/js/src/zaif.js +0 -736
- package/dist/cjs/js/src/zonda.js +0 -1883
- package/dist/cjs/src/abstract/bitpanda.js +0 -9
- package/test.ts +0 -0
- /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
- /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
- /package/js/src/abstract/{bitpanda.js → onetrading.js} +0 -0
|
@@ -1,1160 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var blockchaincom$1 = require('./abstract/blockchaincom.js');
|
|
4
|
-
var errors = require('./base/errors.js');
|
|
5
|
-
var Precise = require('./base/Precise.js');
|
|
6
|
-
var number = require('./base/functions/number.js');
|
|
7
|
-
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
/**
|
|
11
|
-
* @class blockchaincom
|
|
12
|
-
* @augments Exchange
|
|
13
|
-
*/
|
|
14
|
-
class blockchaincom extends blockchaincom$1 {
|
|
15
|
-
describe() {
|
|
16
|
-
return this.deepExtend(super.describe(), {
|
|
17
|
-
'id': 'blockchaincom',
|
|
18
|
-
'secret': undefined,
|
|
19
|
-
'name': 'Blockchain.com',
|
|
20
|
-
'countries': ['LX'],
|
|
21
|
-
'rateLimit': 500,
|
|
22
|
-
'version': 'v3',
|
|
23
|
-
'pro': true,
|
|
24
|
-
'has': {
|
|
25
|
-
'CORS': false,
|
|
26
|
-
'spot': true,
|
|
27
|
-
'margin': undefined,
|
|
28
|
-
'swap': false,
|
|
29
|
-
'future': false,
|
|
30
|
-
'option': false,
|
|
31
|
-
'cancelAllOrders': true,
|
|
32
|
-
'cancelOrder': true,
|
|
33
|
-
'createOrder': true,
|
|
34
|
-
'createStopLimitOrder': true,
|
|
35
|
-
'createStopMarketOrder': true,
|
|
36
|
-
'createStopOrder': true,
|
|
37
|
-
'fetchBalance': true,
|
|
38
|
-
'fetchCanceledOrders': true,
|
|
39
|
-
'fetchClosedOrders': true,
|
|
40
|
-
'fetchDeposit': true,
|
|
41
|
-
'fetchDepositAddress': true,
|
|
42
|
-
'fetchDeposits': true,
|
|
43
|
-
'fetchFundingHistory': false,
|
|
44
|
-
'fetchFundingRate': false,
|
|
45
|
-
'fetchFundingRateHistory': false,
|
|
46
|
-
'fetchFundingRates': false,
|
|
47
|
-
'fetchIndexOHLCV': false,
|
|
48
|
-
'fetchL2OrderBook': true,
|
|
49
|
-
'fetchL3OrderBook': true,
|
|
50
|
-
'fetchLedger': false,
|
|
51
|
-
'fetchMarginMode': false,
|
|
52
|
-
'fetchMarkets': true,
|
|
53
|
-
'fetchMarkOHLCV': false,
|
|
54
|
-
'fetchMyTrades': true,
|
|
55
|
-
'fetchOHLCV': false,
|
|
56
|
-
'fetchOpenInterestHistory': false,
|
|
57
|
-
'fetchOpenOrders': true,
|
|
58
|
-
'fetchOrder': true,
|
|
59
|
-
'fetchOrderBook': true,
|
|
60
|
-
'fetchPositionMode': false,
|
|
61
|
-
'fetchPremiumIndexOHLCV': false,
|
|
62
|
-
'fetchTicker': true,
|
|
63
|
-
'fetchTickers': true,
|
|
64
|
-
'fetchTrades': false,
|
|
65
|
-
'fetchTradingFee': false,
|
|
66
|
-
'fetchTradingFees': true,
|
|
67
|
-
'fetchTransfer': false,
|
|
68
|
-
'fetchTransfers': false,
|
|
69
|
-
'fetchWithdrawal': true,
|
|
70
|
-
'fetchWithdrawals': true,
|
|
71
|
-
'fetchWithdrawalWhitelist': true,
|
|
72
|
-
'transfer': false,
|
|
73
|
-
'withdraw': true,
|
|
74
|
-
},
|
|
75
|
-
'timeframes': undefined,
|
|
76
|
-
'urls': {
|
|
77
|
-
'logo': 'https://user-images.githubusercontent.com/1294454/147515585-1296e91b-7398-45e5-9d32-f6121538533f.jpeg',
|
|
78
|
-
'test': {
|
|
79
|
-
'public': 'https://testnet-api.delta.exchange',
|
|
80
|
-
'private': 'https://testnet-api.delta.exchange',
|
|
81
|
-
},
|
|
82
|
-
'api': {
|
|
83
|
-
'public': 'https://api.blockchain.com/v3/exchange',
|
|
84
|
-
'private': 'https://api.blockchain.com/v3/exchange',
|
|
85
|
-
},
|
|
86
|
-
'www': 'https://blockchain.com',
|
|
87
|
-
'doc': [
|
|
88
|
-
'https://api.blockchain.com/v3',
|
|
89
|
-
],
|
|
90
|
-
'fees': 'https://exchange.blockchain.com/fees',
|
|
91
|
-
},
|
|
92
|
-
'api': {
|
|
93
|
-
'public': {
|
|
94
|
-
'get': {
|
|
95
|
-
'tickers': 1,
|
|
96
|
-
'tickers/{symbol}': 1,
|
|
97
|
-
'symbols': 1,
|
|
98
|
-
'symbols/{symbol}': 1,
|
|
99
|
-
'l2/{symbol}': 1,
|
|
100
|
-
'l3/{symbol}': 1, // fetchL3OrderBook
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
'private': {
|
|
104
|
-
'get': {
|
|
105
|
-
'fees': 1,
|
|
106
|
-
'orders': 1,
|
|
107
|
-
'orders/{orderId}': 1,
|
|
108
|
-
'trades': 1,
|
|
109
|
-
'fills': 1,
|
|
110
|
-
'deposits': 1,
|
|
111
|
-
'deposits/{depositId}': 1,
|
|
112
|
-
'accounts': 1,
|
|
113
|
-
'accounts/{account}/{currency}': 1,
|
|
114
|
-
'whitelist': 1,
|
|
115
|
-
'whitelist/{currency}': 1,
|
|
116
|
-
'withdrawals': 1,
|
|
117
|
-
'withdrawals/{withdrawalId}': 1, // fetchWithdrawalById
|
|
118
|
-
},
|
|
119
|
-
'post': {
|
|
120
|
-
'orders': 1,
|
|
121
|
-
'deposits/{currency}': 1,
|
|
122
|
-
'withdrawals': 1, // withdraw
|
|
123
|
-
},
|
|
124
|
-
'delete': {
|
|
125
|
-
'orders': 1,
|
|
126
|
-
'orders/{orderId}': 1, // cancelOrder
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
'fees': {
|
|
131
|
-
'trading': {
|
|
132
|
-
'feeSide': 'get',
|
|
133
|
-
'tierBased': true,
|
|
134
|
-
'percentage': true,
|
|
135
|
-
'tiers': {
|
|
136
|
-
'taker': [
|
|
137
|
-
[this.parseNumber('0'), this.parseNumber('0.004')],
|
|
138
|
-
[this.parseNumber('10000'), this.parseNumber('0.0022')],
|
|
139
|
-
[this.parseNumber('50000'), this.parseNumber('0.002')],
|
|
140
|
-
[this.parseNumber('100000'), this.parseNumber('0.0018')],
|
|
141
|
-
[this.parseNumber('500000'), this.parseNumber('0.0018')],
|
|
142
|
-
[this.parseNumber('1000000'), this.parseNumber('0.0018')],
|
|
143
|
-
[this.parseNumber('2500000'), this.parseNumber('0.0018')],
|
|
144
|
-
[this.parseNumber('5000000'), this.parseNumber('0.0016')],
|
|
145
|
-
[this.parseNumber('25000000'), this.parseNumber('0.0014')],
|
|
146
|
-
[this.parseNumber('100000000'), this.parseNumber('0.0011')],
|
|
147
|
-
[this.parseNumber('500000000'), this.parseNumber('0.0008')],
|
|
148
|
-
[this.parseNumber('1000000000'), this.parseNumber('0.0006')],
|
|
149
|
-
],
|
|
150
|
-
'maker': [
|
|
151
|
-
[this.parseNumber('0'), this.parseNumber('0.002')],
|
|
152
|
-
[this.parseNumber('10000'), this.parseNumber('0.0012')],
|
|
153
|
-
[this.parseNumber('50000'), this.parseNumber('0.001')],
|
|
154
|
-
[this.parseNumber('100000'), this.parseNumber('0.0008')],
|
|
155
|
-
[this.parseNumber('500000'), this.parseNumber('0.0007000000000000001')],
|
|
156
|
-
[this.parseNumber('1000000'), this.parseNumber('0.0006')],
|
|
157
|
-
[this.parseNumber('2500000'), this.parseNumber('0.0005')],
|
|
158
|
-
[this.parseNumber('5000000'), this.parseNumber('0.0004')],
|
|
159
|
-
[this.parseNumber('25000000'), this.parseNumber('0.0003')],
|
|
160
|
-
[this.parseNumber('100000000'), this.parseNumber('0.0002')],
|
|
161
|
-
[this.parseNumber('500000000'), this.parseNumber('0.0001')],
|
|
162
|
-
[this.parseNumber('1000000000'), this.parseNumber('0')],
|
|
163
|
-
],
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
'requiredCredentials': {
|
|
168
|
-
'apiKey': false,
|
|
169
|
-
'secret': true,
|
|
170
|
-
},
|
|
171
|
-
'options': {
|
|
172
|
-
'networks': {
|
|
173
|
-
'ERC20': 'ETH',
|
|
174
|
-
'TRC20': 'TRX',
|
|
175
|
-
'ALGO': 'ALGO',
|
|
176
|
-
'ADA': 'ADA',
|
|
177
|
-
'AR': 'AR',
|
|
178
|
-
'ATOM': 'ATOM',
|
|
179
|
-
'AVAXC': 'AVAX',
|
|
180
|
-
'BCH': 'BCH',
|
|
181
|
-
'BSV': 'BSV',
|
|
182
|
-
'BTC': 'BTC',
|
|
183
|
-
// 'BEP20': 'BNB', // todo
|
|
184
|
-
'DCR': 'DCR',
|
|
185
|
-
'DESO': 'DESO',
|
|
186
|
-
'DASH': 'DASH',
|
|
187
|
-
'CELO': 'CELO',
|
|
188
|
-
'CHZ': 'CHZ',
|
|
189
|
-
'MATIC': 'MATIC',
|
|
190
|
-
'SOL': 'SOL',
|
|
191
|
-
'DOGE': 'DOGE',
|
|
192
|
-
'DOT': 'DOT',
|
|
193
|
-
'EOS': 'EOS',
|
|
194
|
-
'ETC': 'ETC',
|
|
195
|
-
'FIL': 'FIL',
|
|
196
|
-
'KAVA': 'KAVA',
|
|
197
|
-
'LTC': 'LTC',
|
|
198
|
-
'IOTA': 'MIOTA',
|
|
199
|
-
'NEAR': 'NEAR',
|
|
200
|
-
'STX': 'STX',
|
|
201
|
-
'XLM': 'XLM',
|
|
202
|
-
'XMR': 'XMR',
|
|
203
|
-
'XRP': 'XRP',
|
|
204
|
-
'XTZ': 'XTZ',
|
|
205
|
-
'ZEC': 'ZEC',
|
|
206
|
-
'ZIL': 'ZIL',
|
|
207
|
-
// 'THETA': 'THETA', // todo: possible TFUEL THETA FUEL is also same, but API might have a mistake
|
|
208
|
-
// todo: uncomment below after consensus
|
|
209
|
-
// 'MOBILECOIN': 'MOB',
|
|
210
|
-
// 'KIN': 'KIN',
|
|
211
|
-
// 'DIGITALGOLD': 'DGLD',
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
'precisionMode': number.TICK_SIZE,
|
|
215
|
-
'exceptions': {
|
|
216
|
-
'exact': {
|
|
217
|
-
'401': errors.AuthenticationError,
|
|
218
|
-
'404': errors.OrderNotFound,
|
|
219
|
-
},
|
|
220
|
-
'broad': {},
|
|
221
|
-
},
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
async fetchMarkets(params = {}) {
|
|
225
|
-
/**
|
|
226
|
-
* @method
|
|
227
|
-
* @name blockchaincom#fetchMarkets
|
|
228
|
-
* @description retrieves data on all markets for blockchaincom
|
|
229
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
230
|
-
* @returns {object[]} an array of objects representing market data
|
|
231
|
-
*/
|
|
232
|
-
//
|
|
233
|
-
// "USDC-GBP": {
|
|
234
|
-
// "base_currency": "USDC",
|
|
235
|
-
// "base_currency_scale": 6,
|
|
236
|
-
// "counter_currency": "GBP",
|
|
237
|
-
// "counter_currency_scale": 2,
|
|
238
|
-
// "min_price_increment": 10000,
|
|
239
|
-
// "min_price_increment_scale": 8,
|
|
240
|
-
// "min_order_size": 500000000,
|
|
241
|
-
// "min_order_size_scale": 8,
|
|
242
|
-
// "max_order_size": 0,
|
|
243
|
-
// "max_order_size_scale": 8,
|
|
244
|
-
// "lot_size": 10000,
|
|
245
|
-
// "lot_size_scale": 8,
|
|
246
|
-
// "status": "open",
|
|
247
|
-
// "id": 68,
|
|
248
|
-
// "auction_price": 0,
|
|
249
|
-
// "auction_size": 0,
|
|
250
|
-
// "auction_time": "",
|
|
251
|
-
// "imbalance": 0
|
|
252
|
-
// }
|
|
253
|
-
//
|
|
254
|
-
const markets = await this.publicGetSymbols(params);
|
|
255
|
-
const marketIds = Object.keys(markets);
|
|
256
|
-
const result = [];
|
|
257
|
-
for (let i = 0; i < marketIds.length; i++) {
|
|
258
|
-
const marketId = marketIds[i];
|
|
259
|
-
const market = this.safeValue(markets, marketId);
|
|
260
|
-
const baseId = this.safeString(market, 'base_currency');
|
|
261
|
-
const quoteId = this.safeString(market, 'counter_currency');
|
|
262
|
-
const base = this.safeCurrencyCode(baseId);
|
|
263
|
-
const quote = this.safeCurrencyCode(quoteId);
|
|
264
|
-
const numericId = this.safeNumber(market, 'id');
|
|
265
|
-
let active = undefined;
|
|
266
|
-
const marketState = this.safeString(market, 'status');
|
|
267
|
-
if (marketState === 'open') {
|
|
268
|
-
active = true;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
active = false;
|
|
272
|
-
}
|
|
273
|
-
// price precision
|
|
274
|
-
const minPriceIncrementString = this.safeString(market, 'min_price_increment');
|
|
275
|
-
const minPriceIncrementScaleString = this.safeString(market, 'min_price_increment_scale');
|
|
276
|
-
const minPriceScalePrecisionString = this.parsePrecision(minPriceIncrementScaleString);
|
|
277
|
-
const pricePrecisionString = Precise["default"].stringMul(minPriceIncrementString, minPriceScalePrecisionString);
|
|
278
|
-
// amount precision
|
|
279
|
-
const lotSizeString = this.safeString(market, 'lot_size');
|
|
280
|
-
const lotSizeScaleString = this.safeString(market, 'lot_size_scale');
|
|
281
|
-
const lotSizeScalePrecisionString = this.parsePrecision(lotSizeScaleString);
|
|
282
|
-
const amountPrecisionString = Precise["default"].stringMul(lotSizeString, lotSizeScalePrecisionString);
|
|
283
|
-
// minimum order size
|
|
284
|
-
const minOrderSizeString = this.safeString(market, 'min_order_size');
|
|
285
|
-
const minOrderSizeScaleString = this.safeString(market, 'min_order_size_scale');
|
|
286
|
-
const minOrderSizeScalePrecisionString = this.parsePrecision(minOrderSizeScaleString);
|
|
287
|
-
const minOrderSizePreciseString = Precise["default"].stringMul(minOrderSizeString, minOrderSizeScalePrecisionString);
|
|
288
|
-
const minOrderSize = this.parseNumber(minOrderSizePreciseString);
|
|
289
|
-
// maximum order size
|
|
290
|
-
let maxOrderSize = undefined;
|
|
291
|
-
maxOrderSize = this.safeString(market, 'max_order_size');
|
|
292
|
-
if (maxOrderSize !== '0') {
|
|
293
|
-
const maxOrderSizeScaleString = this.safeString(market, 'max_order_size_scale');
|
|
294
|
-
const maxOrderSizeScalePrecisionString = this.parsePrecision(maxOrderSizeScaleString);
|
|
295
|
-
const maxOrderSizeString = Precise["default"].stringMul(maxOrderSize, maxOrderSizeScalePrecisionString);
|
|
296
|
-
maxOrderSize = this.parseNumber(maxOrderSizeString);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
maxOrderSize = undefined;
|
|
300
|
-
}
|
|
301
|
-
result.push({
|
|
302
|
-
'info': market,
|
|
303
|
-
'id': marketId,
|
|
304
|
-
'numericId': numericId,
|
|
305
|
-
'symbol': base + '/' + quote,
|
|
306
|
-
'base': base,
|
|
307
|
-
'quote': quote,
|
|
308
|
-
'settle': undefined,
|
|
309
|
-
'baseId': baseId,
|
|
310
|
-
'quoteId': quoteId,
|
|
311
|
-
'settleId': undefined,
|
|
312
|
-
'type': 'spot',
|
|
313
|
-
'spot': true,
|
|
314
|
-
'margin': false,
|
|
315
|
-
'swap': false,
|
|
316
|
-
'future': false,
|
|
317
|
-
'option': false,
|
|
318
|
-
'active': active,
|
|
319
|
-
'contract': false,
|
|
320
|
-
'linear': undefined,
|
|
321
|
-
'inverse': undefined,
|
|
322
|
-
'contractSize': undefined,
|
|
323
|
-
'expiry': undefined,
|
|
324
|
-
'expiryDatetime': undefined,
|
|
325
|
-
'strike': undefined,
|
|
326
|
-
'optionType': undefined,
|
|
327
|
-
'precision': {
|
|
328
|
-
'amount': this.parseNumber(amountPrecisionString),
|
|
329
|
-
'price': this.parseNumber(pricePrecisionString),
|
|
330
|
-
},
|
|
331
|
-
'limits': {
|
|
332
|
-
'leverage': {
|
|
333
|
-
'min': undefined,
|
|
334
|
-
'max': undefined,
|
|
335
|
-
},
|
|
336
|
-
'amount': {
|
|
337
|
-
'min': minOrderSize,
|
|
338
|
-
'max': maxOrderSize,
|
|
339
|
-
},
|
|
340
|
-
'price': {
|
|
341
|
-
'min': undefined,
|
|
342
|
-
'max': undefined,
|
|
343
|
-
},
|
|
344
|
-
'cost': {
|
|
345
|
-
'min': undefined,
|
|
346
|
-
'max': undefined,
|
|
347
|
-
},
|
|
348
|
-
},
|
|
349
|
-
'created': undefined,
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
return result;
|
|
353
|
-
}
|
|
354
|
-
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
355
|
-
/**
|
|
356
|
-
* @method
|
|
357
|
-
* @name blockchaincom#fetchOrderBook
|
|
358
|
-
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
359
|
-
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
360
|
-
* @param {int} [limit] the maximum amount of order book entries to return
|
|
361
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
362
|
-
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
363
|
-
*/
|
|
364
|
-
return await this.fetchL3OrderBook(symbol, limit, params);
|
|
365
|
-
}
|
|
366
|
-
async fetchL3OrderBook(symbol, limit = undefined, params = {}) {
|
|
367
|
-
/**
|
|
368
|
-
* @method
|
|
369
|
-
* @name blockchaincom#fetchL3OrderBook
|
|
370
|
-
* @description fetches level 3 information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
371
|
-
* @param {string} symbol unified market symbol
|
|
372
|
-
* @param {int} [limit] max number of orders to return, default is undefined
|
|
373
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
374
|
-
* @returns {object} an [order book structure]{@link https://docs.ccxt.com/#/?id=order-book-structure}
|
|
375
|
-
*/
|
|
376
|
-
await this.loadMarkets();
|
|
377
|
-
const market = this.market(symbol);
|
|
378
|
-
const request = {
|
|
379
|
-
'symbol': market['id'],
|
|
380
|
-
};
|
|
381
|
-
if (limit !== undefined) {
|
|
382
|
-
request['depth'] = limit;
|
|
383
|
-
}
|
|
384
|
-
const response = await this.publicGetL3Symbol(this.extend(request, params));
|
|
385
|
-
return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'px', 'qty');
|
|
386
|
-
}
|
|
387
|
-
async fetchL2OrderBook(symbol, limit = undefined, params = {}) {
|
|
388
|
-
await this.loadMarkets();
|
|
389
|
-
const market = this.market(symbol);
|
|
390
|
-
const request = {
|
|
391
|
-
'symbol': market['id'],
|
|
392
|
-
};
|
|
393
|
-
if (limit !== undefined) {
|
|
394
|
-
request['depth'] = limit;
|
|
395
|
-
}
|
|
396
|
-
const response = await this.publicGetL2Symbol(this.extend(request, params));
|
|
397
|
-
return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'px', 'qty');
|
|
398
|
-
}
|
|
399
|
-
parseTicker(ticker, market = undefined) {
|
|
400
|
-
//
|
|
401
|
-
// {
|
|
402
|
-
// "symbol": "BTC-USD",
|
|
403
|
-
// "price_24h": 47791.86,
|
|
404
|
-
// "volume_24h": 362.88635738,
|
|
405
|
-
// "last_trade_price": 47587.75
|
|
406
|
-
// }
|
|
407
|
-
//
|
|
408
|
-
const marketId = this.safeString(ticker, 'symbol');
|
|
409
|
-
const symbol = this.safeSymbol(marketId, market, '-');
|
|
410
|
-
const last = this.safeString(ticker, 'last_trade_price');
|
|
411
|
-
const baseVolume = this.safeString(ticker, 'volume_24h');
|
|
412
|
-
const open = this.safeString(ticker, 'price_24h');
|
|
413
|
-
return this.safeTicker({
|
|
414
|
-
'symbol': symbol,
|
|
415
|
-
'timestamp': undefined,
|
|
416
|
-
'datetime': undefined,
|
|
417
|
-
'high': undefined,
|
|
418
|
-
'low': undefined,
|
|
419
|
-
'bid': undefined,
|
|
420
|
-
'bidVolume': undefined,
|
|
421
|
-
'ask': undefined,
|
|
422
|
-
'askVolume': undefined,
|
|
423
|
-
'vwap': undefined,
|
|
424
|
-
'open': open,
|
|
425
|
-
'close': undefined,
|
|
426
|
-
'last': last,
|
|
427
|
-
'previousClose': undefined,
|
|
428
|
-
'change': undefined,
|
|
429
|
-
'percentage': undefined,
|
|
430
|
-
'average': undefined,
|
|
431
|
-
'baseVolume': baseVolume,
|
|
432
|
-
'quoteVolume': undefined,
|
|
433
|
-
'info': ticker,
|
|
434
|
-
}, market);
|
|
435
|
-
}
|
|
436
|
-
async fetchTicker(symbol, params = {}) {
|
|
437
|
-
/**
|
|
438
|
-
* @method
|
|
439
|
-
* @name blockchaincom#fetchTicker
|
|
440
|
-
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
441
|
-
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
442
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
443
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
444
|
-
*/
|
|
445
|
-
await this.loadMarkets();
|
|
446
|
-
const market = this.market(symbol);
|
|
447
|
-
const request = {
|
|
448
|
-
'symbol': market['id'],
|
|
449
|
-
};
|
|
450
|
-
const response = await this.publicGetTickersSymbol(this.extend(request, params));
|
|
451
|
-
return this.parseTicker(response, market);
|
|
452
|
-
}
|
|
453
|
-
async fetchTickers(symbols = undefined, params = {}) {
|
|
454
|
-
/**
|
|
455
|
-
* @method
|
|
456
|
-
* @name blockchaincom#fetchTickers
|
|
457
|
-
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
458
|
-
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
459
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
460
|
-
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
461
|
-
*/
|
|
462
|
-
await this.loadMarkets();
|
|
463
|
-
const tickers = await this.publicGetTickers(params);
|
|
464
|
-
return this.parseTickers(tickers, symbols);
|
|
465
|
-
}
|
|
466
|
-
parseOrderState(state) {
|
|
467
|
-
const states = {
|
|
468
|
-
'OPEN': 'open',
|
|
469
|
-
'REJECTED': 'rejected',
|
|
470
|
-
'FILLED': 'closed',
|
|
471
|
-
'CANCELED': 'canceled',
|
|
472
|
-
'PART_FILLED': 'open',
|
|
473
|
-
'EXPIRED': 'expired',
|
|
474
|
-
};
|
|
475
|
-
return this.safeString(states, state, state);
|
|
476
|
-
}
|
|
477
|
-
parseOrder(order, market = undefined) {
|
|
478
|
-
//
|
|
479
|
-
// {
|
|
480
|
-
// "clOrdId": "00001",
|
|
481
|
-
// "ordType": "MARKET",
|
|
482
|
-
// "ordStatus": "FILLED",
|
|
483
|
-
// "side": "BUY",
|
|
484
|
-
// "symbol": "USDC-USDT",
|
|
485
|
-
// "exOrdId": "281775861306290",
|
|
486
|
-
// "price": null,
|
|
487
|
-
// "text": "Fill",
|
|
488
|
-
// "lastShares": "30.0",
|
|
489
|
-
// "lastPx": "0.9999",
|
|
490
|
-
// "leavesQty": "0.0",
|
|
491
|
-
// "cumQty": "30.0",
|
|
492
|
-
// "avgPx": "0.9999",
|
|
493
|
-
// "timestamp": "1633940339619"
|
|
494
|
-
// }
|
|
495
|
-
//
|
|
496
|
-
const clientOrderId = this.safeString(order, 'clOrdId');
|
|
497
|
-
const type = this.safeStringLower(order, 'ordType');
|
|
498
|
-
const statusId = this.safeString(order, 'ordStatus');
|
|
499
|
-
const state = this.parseOrderState(statusId);
|
|
500
|
-
const side = this.safeStringLower(order, 'side');
|
|
501
|
-
const marketId = this.safeString(order, 'symbol');
|
|
502
|
-
const symbol = this.safeSymbol(marketId, market, '-');
|
|
503
|
-
const exchangeOrderId = this.safeString(order, 'exOrdId');
|
|
504
|
-
const price = (type !== 'market') ? this.safeString(order, 'price') : undefined;
|
|
505
|
-
const average = this.safeNumber(order, 'avgPx');
|
|
506
|
-
const timestamp = this.safeInteger(order, 'timestamp');
|
|
507
|
-
const datetime = this.iso8601(timestamp);
|
|
508
|
-
const filled = this.safeString(order, 'cumQty');
|
|
509
|
-
const remaining = this.safeString(order, 'leavesQty');
|
|
510
|
-
const result = this.safeOrder({
|
|
511
|
-
'id': exchangeOrderId,
|
|
512
|
-
'clientOrderId': clientOrderId,
|
|
513
|
-
'datetime': datetime,
|
|
514
|
-
'timestamp': timestamp,
|
|
515
|
-
'lastTradeTimestamp': undefined,
|
|
516
|
-
'status': state,
|
|
517
|
-
'symbol': symbol,
|
|
518
|
-
'type': type,
|
|
519
|
-
'timeInForce': undefined,
|
|
520
|
-
'side': side,
|
|
521
|
-
'price': price,
|
|
522
|
-
'average': average,
|
|
523
|
-
'amount': undefined,
|
|
524
|
-
'filled': filled,
|
|
525
|
-
'remaining': remaining,
|
|
526
|
-
'cost': undefined,
|
|
527
|
-
'trades': [],
|
|
528
|
-
'fees': {},
|
|
529
|
-
'info': order,
|
|
530
|
-
});
|
|
531
|
-
return result;
|
|
532
|
-
}
|
|
533
|
-
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
534
|
-
/**
|
|
535
|
-
* @method
|
|
536
|
-
* @name blockchaincom#createOrder
|
|
537
|
-
* @description create a trade order
|
|
538
|
-
* @param {string} symbol unified symbol of the market to create an order in
|
|
539
|
-
* @param {string} type 'market' or 'limit'
|
|
540
|
-
* @param {string} side 'buy' or 'sell'
|
|
541
|
-
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
542
|
-
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
543
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
544
|
-
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
545
|
-
*/
|
|
546
|
-
await this.loadMarkets();
|
|
547
|
-
const market = this.market(symbol);
|
|
548
|
-
const orderType = this.safeString(params, 'ordType', type);
|
|
549
|
-
const uppercaseOrderType = orderType.toUpperCase();
|
|
550
|
-
const clientOrderId = this.safeString2(params, 'clientOrderId', 'clOrdId', this.uuid16());
|
|
551
|
-
params = this.omit(params, ['ordType', 'clientOrderId', 'clOrdId']);
|
|
552
|
-
const request = {
|
|
553
|
-
// 'stopPx' : limit price
|
|
554
|
-
// 'timeInForce' : "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date
|
|
555
|
-
// 'expireDate' : expiry date in the format YYYYMMDD
|
|
556
|
-
// 'minQty' : The minimum quantity required for an IOC fill
|
|
557
|
-
'ordType': uppercaseOrderType,
|
|
558
|
-
'symbol': market['id'],
|
|
559
|
-
'side': side.toUpperCase(),
|
|
560
|
-
'orderQty': this.amountToPrecision(symbol, amount),
|
|
561
|
-
'clOrdId': clientOrderId,
|
|
562
|
-
};
|
|
563
|
-
const stopPrice = this.safeValue2(params, 'stopPx', 'stopPrice');
|
|
564
|
-
params = this.omit(params, ['stopPx', 'stopPrice']);
|
|
565
|
-
if (uppercaseOrderType === 'STOP' || uppercaseOrderType === 'STOPLIMIT') {
|
|
566
|
-
if (stopPrice === undefined) {
|
|
567
|
-
throw new errors.ArgumentsRequired(this.id + ' createOrder() requires a stopPx or stopPrice param for a ' + uppercaseOrderType + ' order');
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
if (stopPrice !== undefined) {
|
|
571
|
-
if (uppercaseOrderType === 'MARKET') {
|
|
572
|
-
request['ordType'] = 'STOP';
|
|
573
|
-
}
|
|
574
|
-
else if (uppercaseOrderType === 'LIMIT') {
|
|
575
|
-
request['ordType'] = 'STOPLIMIT';
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
let priceRequired = false;
|
|
579
|
-
let stopPriceRequired = false;
|
|
580
|
-
if (request['ordType'] === 'LIMIT' || request['ordType'] === 'STOPLIMIT') {
|
|
581
|
-
priceRequired = true;
|
|
582
|
-
}
|
|
583
|
-
if (request['ordType'] === 'STOP' || request['ordType'] === 'STOPLIMIT') {
|
|
584
|
-
stopPriceRequired = true;
|
|
585
|
-
}
|
|
586
|
-
if (priceRequired) {
|
|
587
|
-
request['price'] = this.priceToPrecision(symbol, price);
|
|
588
|
-
}
|
|
589
|
-
if (stopPriceRequired) {
|
|
590
|
-
request['stopPx'] = this.priceToPrecision(symbol, stopPrice);
|
|
591
|
-
}
|
|
592
|
-
const response = await this.privatePostOrders(this.extend(request, params));
|
|
593
|
-
return this.parseOrder(response, market);
|
|
594
|
-
}
|
|
595
|
-
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
596
|
-
/**
|
|
597
|
-
* @method
|
|
598
|
-
* @name blockchaincom#cancelOrder
|
|
599
|
-
* @description cancels an open order
|
|
600
|
-
* @param {string} id order id
|
|
601
|
-
* @param {string} symbol unified symbol of the market the order was made in
|
|
602
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
603
|
-
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
604
|
-
*/
|
|
605
|
-
const request = {
|
|
606
|
-
'orderId': id,
|
|
607
|
-
};
|
|
608
|
-
const response = await this.privateDeleteOrdersOrderId(this.extend(request, params));
|
|
609
|
-
return {
|
|
610
|
-
'id': id,
|
|
611
|
-
'info': response,
|
|
612
|
-
};
|
|
613
|
-
}
|
|
614
|
-
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
615
|
-
/**
|
|
616
|
-
* @method
|
|
617
|
-
* @name blockchaincom#cancelAllOrders
|
|
618
|
-
* @description cancel all open orders
|
|
619
|
-
* @param {string} symbol unified market symbol of the market to cancel orders in, all markets are used if undefined, default is undefined
|
|
620
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
621
|
-
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
622
|
-
*/
|
|
623
|
-
// cancels all open orders if no symbol specified
|
|
624
|
-
// cancels all open orders of specified symbol, if symbol is specified
|
|
625
|
-
await this.loadMarkets();
|
|
626
|
-
const request = {
|
|
627
|
-
// 'symbol': marketId,
|
|
628
|
-
};
|
|
629
|
-
if (symbol !== undefined) {
|
|
630
|
-
const marketId = this.marketId(symbol);
|
|
631
|
-
request['symbol'] = marketId;
|
|
632
|
-
}
|
|
633
|
-
const response = await this.privateDeleteOrders(this.extend(request, params));
|
|
634
|
-
return {
|
|
635
|
-
'symbol': symbol,
|
|
636
|
-
'info': response,
|
|
637
|
-
};
|
|
638
|
-
}
|
|
639
|
-
async fetchTradingFees(params = {}) {
|
|
640
|
-
/**
|
|
641
|
-
* @method
|
|
642
|
-
* @name blockchaincom#fetchTradingFees
|
|
643
|
-
* @description fetch the trading fees for multiple markets
|
|
644
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
645
|
-
* @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
|
|
646
|
-
*/
|
|
647
|
-
await this.loadMarkets();
|
|
648
|
-
const response = await this.privateGetFees(params);
|
|
649
|
-
//
|
|
650
|
-
// {
|
|
651
|
-
// "makerRate": "0.002",
|
|
652
|
-
// "takerRate": "0.004",
|
|
653
|
-
// "volumeInUSD": "0.0"
|
|
654
|
-
// }
|
|
655
|
-
//
|
|
656
|
-
const makerFee = this.safeNumber(response, 'makerRate');
|
|
657
|
-
const takerFee = this.safeNumber(response, 'takerRate');
|
|
658
|
-
const result = {};
|
|
659
|
-
for (let i = 0; i < this.symbols.length; i++) {
|
|
660
|
-
const symbol = this.symbols[i];
|
|
661
|
-
result[symbol] = {
|
|
662
|
-
'info': response,
|
|
663
|
-
'symbol': symbol,
|
|
664
|
-
'maker': makerFee,
|
|
665
|
-
'taker': takerFee,
|
|
666
|
-
};
|
|
667
|
-
}
|
|
668
|
-
return result;
|
|
669
|
-
}
|
|
670
|
-
async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
671
|
-
/**
|
|
672
|
-
* @method
|
|
673
|
-
* @name blockchaincom#fetchCanceledOrders
|
|
674
|
-
* @description fetches information on multiple canceled orders made by the user
|
|
675
|
-
* @param {string} symbol unified market symbol of the market orders were made in
|
|
676
|
-
* @param {int} [since] timestamp in ms of the earliest order, default is undefined
|
|
677
|
-
* @param {int} [limit] max number of orders to return, default is undefined
|
|
678
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
679
|
-
* @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
680
|
-
*/
|
|
681
|
-
const state = 'CANCELED';
|
|
682
|
-
return await this.fetchOrdersByState(state, symbol, since, limit, params);
|
|
683
|
-
}
|
|
684
|
-
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
685
|
-
/**
|
|
686
|
-
* @method
|
|
687
|
-
* @name blockchaincom#fetchClosedOrders
|
|
688
|
-
* @description fetches information on multiple closed orders made by the user
|
|
689
|
-
* @param {string} symbol unified market symbol of the market orders were made in
|
|
690
|
-
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
691
|
-
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
692
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
693
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
694
|
-
*/
|
|
695
|
-
const state = 'FILLED';
|
|
696
|
-
return await this.fetchOrdersByState(state, symbol, since, limit, params);
|
|
697
|
-
}
|
|
698
|
-
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
699
|
-
/**
|
|
700
|
-
* @method
|
|
701
|
-
* @name blockchaincom#fetchOpenOrders
|
|
702
|
-
* @description fetch all unfilled currently open orders
|
|
703
|
-
* @param {string} symbol unified market symbol
|
|
704
|
-
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
705
|
-
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
706
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
707
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
708
|
-
*/
|
|
709
|
-
const state = 'OPEN';
|
|
710
|
-
return await this.fetchOrdersByState(state, symbol, since, limit, params);
|
|
711
|
-
}
|
|
712
|
-
async fetchOrdersByState(state, symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
713
|
-
await this.loadMarkets();
|
|
714
|
-
const request = {
|
|
715
|
-
// 'to': unix epoch ms
|
|
716
|
-
// 'from': unix epoch ms
|
|
717
|
-
'status': state,
|
|
718
|
-
'limit': 100,
|
|
719
|
-
};
|
|
720
|
-
let market = undefined;
|
|
721
|
-
if (symbol !== undefined) {
|
|
722
|
-
market = this.market(symbol);
|
|
723
|
-
request['symbol'] = market['id'];
|
|
724
|
-
}
|
|
725
|
-
const response = await this.privateGetOrders(this.extend(request, params));
|
|
726
|
-
return this.parseOrders(response, market, since, limit);
|
|
727
|
-
}
|
|
728
|
-
parseTrade(trade, market = undefined) {
|
|
729
|
-
//
|
|
730
|
-
// {
|
|
731
|
-
// "exOrdId":281685751028507,
|
|
732
|
-
// "tradeId":281685434947633,
|
|
733
|
-
// "execId":8847494003,
|
|
734
|
-
// "side":"BUY",
|
|
735
|
-
// "symbol":"AAVE-USDT",
|
|
736
|
-
// "price":405.34,
|
|
737
|
-
// "qty":0.1,
|
|
738
|
-
// "fee":0.162136,
|
|
739
|
-
// "timestamp":1634559249687
|
|
740
|
-
// }
|
|
741
|
-
//
|
|
742
|
-
const orderId = this.safeString(trade, 'exOrdId');
|
|
743
|
-
const tradeId = this.safeString(trade, 'tradeId');
|
|
744
|
-
const side = this.safeString(trade, 'side').toLowerCase();
|
|
745
|
-
const marketId = this.safeString(trade, 'symbol');
|
|
746
|
-
const priceString = this.safeString(trade, 'price');
|
|
747
|
-
const amountString = this.safeString(trade, 'qty');
|
|
748
|
-
const timestamp = this.safeInteger(trade, 'timestamp');
|
|
749
|
-
const datetime = this.iso8601(timestamp);
|
|
750
|
-
market = this.safeMarket(marketId, market, '-');
|
|
751
|
-
const symbol = market['symbol'];
|
|
752
|
-
let fee = undefined;
|
|
753
|
-
const feeCostString = this.safeString(trade, 'fee');
|
|
754
|
-
if (feeCostString !== undefined) {
|
|
755
|
-
const feeCurrency = market['quote'];
|
|
756
|
-
fee = { 'cost': feeCostString, 'currency': feeCurrency };
|
|
757
|
-
}
|
|
758
|
-
return this.safeTrade({
|
|
759
|
-
'id': tradeId,
|
|
760
|
-
'timestamp': timestamp,
|
|
761
|
-
'datetime': datetime,
|
|
762
|
-
'symbol': symbol,
|
|
763
|
-
'order': orderId,
|
|
764
|
-
'type': undefined,
|
|
765
|
-
'side': side,
|
|
766
|
-
'takerOrMaker': undefined,
|
|
767
|
-
'price': priceString,
|
|
768
|
-
'amount': amountString,
|
|
769
|
-
'cost': undefined,
|
|
770
|
-
'fee': fee,
|
|
771
|
-
'info': trade,
|
|
772
|
-
}, market);
|
|
773
|
-
}
|
|
774
|
-
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
775
|
-
/**
|
|
776
|
-
* @method
|
|
777
|
-
* @name blockchaincom#fetchMyTrades
|
|
778
|
-
* @description fetch all trades made by the user
|
|
779
|
-
* @param {string} symbol unified market symbol
|
|
780
|
-
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
781
|
-
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
782
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
783
|
-
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
784
|
-
*/
|
|
785
|
-
await this.loadMarkets();
|
|
786
|
-
const request = {};
|
|
787
|
-
if (limit !== undefined) {
|
|
788
|
-
request['limit'] = limit;
|
|
789
|
-
}
|
|
790
|
-
let market = undefined;
|
|
791
|
-
if (symbol !== undefined) {
|
|
792
|
-
request['symbol'] = this.marketId(symbol);
|
|
793
|
-
market = this.market(symbol);
|
|
794
|
-
}
|
|
795
|
-
const trades = await this.privateGetFills(this.extend(request, params));
|
|
796
|
-
return this.parseTrades(trades, market, since, limit, params); // need to define
|
|
797
|
-
}
|
|
798
|
-
async fetchDepositAddress(code, params = {}) {
|
|
799
|
-
/**
|
|
800
|
-
* @method
|
|
801
|
-
* @name blockchaincom#fetchDepositAddress
|
|
802
|
-
* @description fetch the deposit address for a currency associated with this account
|
|
803
|
-
* @param {string} code unified currency code
|
|
804
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
805
|
-
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
806
|
-
*/
|
|
807
|
-
await this.loadMarkets();
|
|
808
|
-
const currency = this.currency(code);
|
|
809
|
-
const request = {
|
|
810
|
-
'currency': currency['id'],
|
|
811
|
-
};
|
|
812
|
-
const response = await this.privatePostDepositsCurrency(this.extend(request, params));
|
|
813
|
-
const rawAddress = this.safeString(response, 'address');
|
|
814
|
-
let tag = undefined;
|
|
815
|
-
let address = undefined;
|
|
816
|
-
if (rawAddress !== undefined) {
|
|
817
|
-
// if a tag or memo is used it is separated by a colon in the 'address' value
|
|
818
|
-
[address, tag] = rawAddress.split(':');
|
|
819
|
-
}
|
|
820
|
-
const result = { 'info': response };
|
|
821
|
-
result['currency'] = currency['code'];
|
|
822
|
-
result['address'] = address;
|
|
823
|
-
if (tag !== undefined) {
|
|
824
|
-
result['tag'] = tag;
|
|
825
|
-
}
|
|
826
|
-
return result;
|
|
827
|
-
}
|
|
828
|
-
parseTransactionState(state) {
|
|
829
|
-
const states = {
|
|
830
|
-
'COMPLETED': 'ok',
|
|
831
|
-
'REJECTED': 'failed',
|
|
832
|
-
'PENDING': 'pending',
|
|
833
|
-
'FAILED': 'failed',
|
|
834
|
-
'REFUNDED': 'refunded',
|
|
835
|
-
};
|
|
836
|
-
return this.safeString(states, state, state);
|
|
837
|
-
}
|
|
838
|
-
parseTransaction(transaction, currency = undefined) {
|
|
839
|
-
//
|
|
840
|
-
// deposit
|
|
841
|
-
//
|
|
842
|
-
// {
|
|
843
|
-
// "depositId":"748e9180-be0d-4a80-e175-0156150efc95",
|
|
844
|
-
// "amount":0.009,
|
|
845
|
-
// "currency":"ETH",
|
|
846
|
-
// "address":"0xEC6B5929D454C8D9546d4221ace969E1810Fa92c",
|
|
847
|
-
// "state":"COMPLETED",
|
|
848
|
-
// "txHash":"582114562140e51a80b481c2dfebaf62b4ab9769b8ff54820bb67e34d4a3ab0c",
|
|
849
|
-
// "timestamp":1633697196241
|
|
850
|
-
// }
|
|
851
|
-
//
|
|
852
|
-
// withdrawal
|
|
853
|
-
//
|
|
854
|
-
// {
|
|
855
|
-
// "amount":30.0,
|
|
856
|
-
// "currency":"USDT",
|
|
857
|
-
// "beneficiary":"cab00d11-6e7f-46b7-b453-2e8ef6f101fa", // blockchain specific id
|
|
858
|
-
// "withdrawalId":"99df5ef7-eab6-4033-be49-312930fbd1ea",
|
|
859
|
-
// "fee":34.005078,
|
|
860
|
-
// "state":"COMPLETED",
|
|
861
|
-
// "timestamp":1634218452549
|
|
862
|
-
// }
|
|
863
|
-
//
|
|
864
|
-
let type = undefined;
|
|
865
|
-
let id = undefined;
|
|
866
|
-
const amount = this.safeNumber(transaction, 'amount');
|
|
867
|
-
const timestamp = this.safeInteger(transaction, 'timestamp');
|
|
868
|
-
const currencyId = this.safeString(transaction, 'currency');
|
|
869
|
-
const code = this.safeCurrencyCode(currencyId, currency);
|
|
870
|
-
const state = this.safeString(transaction, 'state');
|
|
871
|
-
if ('depositId' in transaction) {
|
|
872
|
-
type = 'deposit';
|
|
873
|
-
id = this.safeString(transaction, 'depositId');
|
|
874
|
-
}
|
|
875
|
-
else if ('withdrawalId' in transaction) {
|
|
876
|
-
type = 'withdrawal';
|
|
877
|
-
id = this.safeString(transaction, 'withdrawalId');
|
|
878
|
-
}
|
|
879
|
-
const feeCost = (type === 'withdrawal') ? this.safeNumber(transaction, 'fee') : undefined;
|
|
880
|
-
let fee = undefined;
|
|
881
|
-
if (feeCost !== undefined) {
|
|
882
|
-
fee = { 'currency': code, 'cost': feeCost };
|
|
883
|
-
}
|
|
884
|
-
const address = this.safeString(transaction, 'address');
|
|
885
|
-
const txid = this.safeString(transaction, 'txhash');
|
|
886
|
-
return {
|
|
887
|
-
'info': transaction,
|
|
888
|
-
'id': id,
|
|
889
|
-
'txid': txid,
|
|
890
|
-
'timestamp': timestamp,
|
|
891
|
-
'datetime': this.iso8601(timestamp),
|
|
892
|
-
'network': undefined,
|
|
893
|
-
'addressFrom': undefined,
|
|
894
|
-
'address': address,
|
|
895
|
-
'addressTo': address,
|
|
896
|
-
'tagFrom': undefined,
|
|
897
|
-
'tag': undefined,
|
|
898
|
-
'tagTo': undefined,
|
|
899
|
-
'type': type,
|
|
900
|
-
'amount': amount,
|
|
901
|
-
'currency': code,
|
|
902
|
-
'status': this.parseTransactionState(state),
|
|
903
|
-
'updated': undefined,
|
|
904
|
-
'comment': undefined,
|
|
905
|
-
'internal': undefined,
|
|
906
|
-
'fee': fee,
|
|
907
|
-
};
|
|
908
|
-
}
|
|
909
|
-
async withdraw(code, amount, address, tag = undefined, params = {}) {
|
|
910
|
-
/**
|
|
911
|
-
* @method
|
|
912
|
-
* @name blockchaincom#withdraw
|
|
913
|
-
* @description make a withdrawal
|
|
914
|
-
* @param {string} code unified currency code
|
|
915
|
-
* @param {float} amount the amount to withdraw
|
|
916
|
-
* @param {string} address the address to withdraw to
|
|
917
|
-
* @param {string} tag
|
|
918
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
919
|
-
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
920
|
-
*/
|
|
921
|
-
await this.loadMarkets();
|
|
922
|
-
const currency = this.currency(code);
|
|
923
|
-
const request = {
|
|
924
|
-
'amount': amount,
|
|
925
|
-
'currency': currency['id'],
|
|
926
|
-
'beneficiary': address,
|
|
927
|
-
'sendMax': false,
|
|
928
|
-
};
|
|
929
|
-
const response = await this.privatePostWithdrawals(this.extend(request, params));
|
|
930
|
-
//
|
|
931
|
-
// {
|
|
932
|
-
// "amount": "30.0",
|
|
933
|
-
// "currency": "USDT",
|
|
934
|
-
// "beneficiary": "adcd43fb-9ba6-41f7-8c0d-7013482cb88f",
|
|
935
|
-
// "withdrawalId": "99df5ef7-eab6-4033-be49-312930fbd1ea",
|
|
936
|
-
// "fee": "34.005078",
|
|
937
|
-
// "state": "PENDING",
|
|
938
|
-
// "timestamp": "1634218452595"
|
|
939
|
-
// },
|
|
940
|
-
//
|
|
941
|
-
return this.parseTransaction(response, currency);
|
|
942
|
-
}
|
|
943
|
-
async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
944
|
-
/**
|
|
945
|
-
* @method
|
|
946
|
-
* @name blockchaincom#fetchWithdrawals
|
|
947
|
-
* @description fetch all withdrawals made from an account
|
|
948
|
-
* @param {string} code unified currency code
|
|
949
|
-
* @param {int} [since] the earliest time in ms to fetch withdrawals for
|
|
950
|
-
* @param {int} [limit] the maximum number of withdrawals structures to retrieve
|
|
951
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
952
|
-
* @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
953
|
-
*/
|
|
954
|
-
await this.loadMarkets();
|
|
955
|
-
const request = {
|
|
956
|
-
// 'from' : integer timestamp in ms
|
|
957
|
-
// 'to' : integer timestamp in ms
|
|
958
|
-
};
|
|
959
|
-
if (since !== undefined) {
|
|
960
|
-
request['from'] = since;
|
|
961
|
-
}
|
|
962
|
-
let currency = undefined;
|
|
963
|
-
if (code !== undefined) {
|
|
964
|
-
currency = this.currency(code);
|
|
965
|
-
}
|
|
966
|
-
const response = await this.privateGetWithdrawals(this.extend(request, params));
|
|
967
|
-
return this.parseTransactions(response, currency, since, limit);
|
|
968
|
-
}
|
|
969
|
-
async fetchWithdrawal(id, code = undefined, params = {}) {
|
|
970
|
-
/**
|
|
971
|
-
* @method
|
|
972
|
-
* @name blockchaincom#fetchWithdrawal
|
|
973
|
-
* @description fetch data on a currency withdrawal via the withdrawal id
|
|
974
|
-
* @param {string} id withdrawal id
|
|
975
|
-
* @param {string} code not used by blockchaincom.fetchWithdrawal
|
|
976
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
977
|
-
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
978
|
-
*/
|
|
979
|
-
await this.loadMarkets();
|
|
980
|
-
const request = {
|
|
981
|
-
'withdrawalId': id,
|
|
982
|
-
};
|
|
983
|
-
const response = await this.privateGetWithdrawalsWithdrawalId(this.extend(request, params));
|
|
984
|
-
return this.parseTransaction(response);
|
|
985
|
-
}
|
|
986
|
-
async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
987
|
-
/**
|
|
988
|
-
* @method
|
|
989
|
-
* @name blockchaincom#fetchDeposits
|
|
990
|
-
* @description fetch all deposits made to an account
|
|
991
|
-
* @param {string} code unified currency code
|
|
992
|
-
* @param {int} [since] the earliest time in ms to fetch deposits for
|
|
993
|
-
* @param {int} [limit] the maximum number of deposits structures to retrieve
|
|
994
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
995
|
-
* @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
996
|
-
*/
|
|
997
|
-
await this.loadMarkets();
|
|
998
|
-
const request = {
|
|
999
|
-
// 'from' : integer timestamp in ms
|
|
1000
|
-
// 'to' : integer timestap in ms
|
|
1001
|
-
};
|
|
1002
|
-
if (since !== undefined) {
|
|
1003
|
-
request['from'] = since;
|
|
1004
|
-
}
|
|
1005
|
-
let currency = undefined;
|
|
1006
|
-
if (code !== undefined) {
|
|
1007
|
-
currency = this.currency(code);
|
|
1008
|
-
}
|
|
1009
|
-
const response = await this.privateGetDeposits(this.extend(request, params));
|
|
1010
|
-
return this.parseTransactions(response, currency, since, limit);
|
|
1011
|
-
}
|
|
1012
|
-
async fetchDeposit(id, code = undefined, params = {}) {
|
|
1013
|
-
/**
|
|
1014
|
-
* @method
|
|
1015
|
-
* @name blockchaincom#fetchDeposit
|
|
1016
|
-
* @description fetch information on a deposit
|
|
1017
|
-
* @param {string} id deposit id
|
|
1018
|
-
* @param {string} code not used by blockchaincom fetchDeposit ()
|
|
1019
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1020
|
-
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
1021
|
-
*/
|
|
1022
|
-
await this.loadMarkets();
|
|
1023
|
-
const depositId = this.safeString(params, 'depositId', id);
|
|
1024
|
-
const request = {
|
|
1025
|
-
'depositId': depositId,
|
|
1026
|
-
};
|
|
1027
|
-
const deposit = await this.privateGetDepositsDepositId(this.extend(request, params));
|
|
1028
|
-
return this.parseTransaction(deposit);
|
|
1029
|
-
}
|
|
1030
|
-
async fetchBalance(params = {}) {
|
|
1031
|
-
/**
|
|
1032
|
-
* @method
|
|
1033
|
-
* @name blockchaincom#fetchBalance
|
|
1034
|
-
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1035
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1036
|
-
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
1037
|
-
*/
|
|
1038
|
-
await this.loadMarkets();
|
|
1039
|
-
const accountName = this.safeString(params, 'account', 'primary');
|
|
1040
|
-
params = this.omit(params, 'account');
|
|
1041
|
-
const request = {
|
|
1042
|
-
'account': accountName,
|
|
1043
|
-
};
|
|
1044
|
-
const response = await this.privateGetAccounts(this.extend(request, params));
|
|
1045
|
-
//
|
|
1046
|
-
// {
|
|
1047
|
-
// "primary": [
|
|
1048
|
-
// {
|
|
1049
|
-
// "currency":"ETH",
|
|
1050
|
-
// "balance":0.009,
|
|
1051
|
-
// "available":0.009,
|
|
1052
|
-
// "balance_local":30.82869,
|
|
1053
|
-
// "available_local":30.82869,
|
|
1054
|
-
// "rate":3425.41
|
|
1055
|
-
// },
|
|
1056
|
-
// ...
|
|
1057
|
-
// ]
|
|
1058
|
-
// }
|
|
1059
|
-
//
|
|
1060
|
-
const balances = this.safeValue(response, accountName);
|
|
1061
|
-
if (balances === undefined) {
|
|
1062
|
-
throw new errors.ExchangeError(this.id + ' fetchBalance() could not find the "' + accountName + '" account');
|
|
1063
|
-
}
|
|
1064
|
-
const result = { 'info': response };
|
|
1065
|
-
for (let i = 0; i < balances.length; i++) {
|
|
1066
|
-
const entry = balances[i];
|
|
1067
|
-
const currencyId = this.safeString(entry, 'currency');
|
|
1068
|
-
const code = this.safeCurrencyCode(currencyId);
|
|
1069
|
-
const account = this.account();
|
|
1070
|
-
account['free'] = this.safeString(entry, 'available');
|
|
1071
|
-
account['total'] = this.safeString(entry, 'balance');
|
|
1072
|
-
result[code] = account;
|
|
1073
|
-
}
|
|
1074
|
-
return this.safeBalance(result);
|
|
1075
|
-
}
|
|
1076
|
-
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
1077
|
-
/**
|
|
1078
|
-
* @method
|
|
1079
|
-
* @name blockchaincom#fetchOrder
|
|
1080
|
-
* @description fetches information on an order made by the user
|
|
1081
|
-
* @param {string} symbol not used by blockchaincom fetchOrder
|
|
1082
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1083
|
-
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1084
|
-
*/
|
|
1085
|
-
// note: only works with exchange-order-id
|
|
1086
|
-
// does not work with clientOrderId
|
|
1087
|
-
await this.loadMarkets();
|
|
1088
|
-
const request = {
|
|
1089
|
-
'orderId': id,
|
|
1090
|
-
};
|
|
1091
|
-
const response = await this.privateGetOrdersOrderId(this.extend(request, params));
|
|
1092
|
-
//
|
|
1093
|
-
// {
|
|
1094
|
-
// "exOrdId": 11111111,
|
|
1095
|
-
// "clOrdId": "ABC",
|
|
1096
|
-
// "ordType": "MARKET",
|
|
1097
|
-
// "ordStatus": "FILLED",
|
|
1098
|
-
// "side": "BUY",
|
|
1099
|
-
// "price": 0.12345,
|
|
1100
|
-
// "text": "string",
|
|
1101
|
-
// "symbol": "BTC-USD",
|
|
1102
|
-
// "lastShares": 0.5678,
|
|
1103
|
-
// "lastPx": 3500.12,
|
|
1104
|
-
// "leavesQty": 10,
|
|
1105
|
-
// "cumQty": 0.123345,
|
|
1106
|
-
// "avgPx": 345.33,
|
|
1107
|
-
// "timestamp": 1592830770594
|
|
1108
|
-
// }
|
|
1109
|
-
//
|
|
1110
|
-
return this.parseOrder(response);
|
|
1111
|
-
}
|
|
1112
|
-
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
1113
|
-
const requestPath = '/' + this.implodeParams(path, params);
|
|
1114
|
-
let url = this.urls['api'][api] + requestPath;
|
|
1115
|
-
const query = this.omit(params, this.extractParams(path));
|
|
1116
|
-
if (api === 'public') {
|
|
1117
|
-
if (Object.keys(query).length) {
|
|
1118
|
-
url += '?' + this.urlencode(query);
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
else if (api === 'private') {
|
|
1122
|
-
this.checkRequiredCredentials();
|
|
1123
|
-
headers = {
|
|
1124
|
-
'X-API-Token': this.secret,
|
|
1125
|
-
};
|
|
1126
|
-
if ((method === 'GET')) {
|
|
1127
|
-
if (Object.keys(query).length) {
|
|
1128
|
-
url += '?' + this.urlencode(query);
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
else {
|
|
1132
|
-
body = this.json(query);
|
|
1133
|
-
headers['Content-Type'] = 'application/json';
|
|
1134
|
-
}
|
|
1135
|
-
}
|
|
1136
|
-
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
1137
|
-
}
|
|
1138
|
-
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
1139
|
-
// {"timestamp":"2021-10-21T15:13:58.837+00:00","status":404,"error":"Not Found","message":"","path":"/orders/505050"
|
|
1140
|
-
if (response === undefined) {
|
|
1141
|
-
return undefined;
|
|
1142
|
-
}
|
|
1143
|
-
const text = this.safeString(response, 'text');
|
|
1144
|
-
if (text !== undefined) { // if trade currency account is empty returns 200 with rejected order
|
|
1145
|
-
if (text === 'Insufficient Balance') {
|
|
1146
|
-
throw new errors.InsufficientFunds(this.id + ' ' + body);
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
const errorCode = this.safeString(response, 'status');
|
|
1150
|
-
const errorMessage = this.safeString(response, 'error');
|
|
1151
|
-
if (code !== undefined) {
|
|
1152
|
-
const feedback = this.id + ' ' + this.json(response);
|
|
1153
|
-
this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
|
|
1154
|
-
this.throwBroadlyMatchedException(this.exceptions['broad'], errorMessage, feedback);
|
|
1155
|
-
}
|
|
1156
|
-
return undefined;
|
|
1157
|
-
}
|
|
1158
|
-
}
|
|
1159
|
-
|
|
1160
|
-
module.exports = blockchaincom;
|