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,1185 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var coinone$1 = require('./abstract/coinone.js');
|
|
4
|
-
var errors = require('./base/errors.js');
|
|
5
|
-
var Precise = require('./base/Precise.js');
|
|
6
|
-
var number = require('./base/functions/number.js');
|
|
7
|
-
var sha512 = require('./static_dependencies/noble-hashes/sha512.js');
|
|
8
|
-
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
/**
|
|
12
|
-
* @class coinone
|
|
13
|
-
* @augments Exchange
|
|
14
|
-
*/
|
|
15
|
-
class coinone extends coinone$1 {
|
|
16
|
-
describe() {
|
|
17
|
-
return this.deepExtend(super.describe(), {
|
|
18
|
-
'id': 'coinone',
|
|
19
|
-
'name': 'CoinOne',
|
|
20
|
-
'countries': ['KR'],
|
|
21
|
-
// 'enableRateLimit': false,
|
|
22
|
-
'rateLimit': 667,
|
|
23
|
-
'version': 'v2',
|
|
24
|
-
'pro': false,
|
|
25
|
-
'has': {
|
|
26
|
-
'CORS': undefined,
|
|
27
|
-
'spot': true,
|
|
28
|
-
'margin': false,
|
|
29
|
-
'swap': false,
|
|
30
|
-
'future': false,
|
|
31
|
-
'option': false,
|
|
32
|
-
'addMargin': false,
|
|
33
|
-
'cancelOrder': true,
|
|
34
|
-
'closeAllPositions': false,
|
|
35
|
-
'closePosition': false,
|
|
36
|
-
'createMarketOrder': false,
|
|
37
|
-
'createOrder': true,
|
|
38
|
-
'createReduceOnlyOrder': false,
|
|
39
|
-
'createStopLimitOrder': false,
|
|
40
|
-
'createStopMarketOrder': false,
|
|
41
|
-
'createStopOrder': false,
|
|
42
|
-
'fetchBalance': true,
|
|
43
|
-
'fetchBorrowRateHistories': false,
|
|
44
|
-
'fetchBorrowRateHistory': false,
|
|
45
|
-
'fetchClosedOrders': false,
|
|
46
|
-
'fetchCrossBorrowRate': false,
|
|
47
|
-
'fetchCrossBorrowRates': false,
|
|
48
|
-
'fetchCurrencies': true,
|
|
49
|
-
'fetchDepositAddresses': true,
|
|
50
|
-
'fetchFundingHistory': false,
|
|
51
|
-
'fetchFundingRate': false,
|
|
52
|
-
'fetchFundingRateHistory': false,
|
|
53
|
-
'fetchFundingRates': false,
|
|
54
|
-
'fetchIndexOHLCV': false,
|
|
55
|
-
'fetchIsolatedBorrowRate': false,
|
|
56
|
-
'fetchIsolatedBorrowRates': false,
|
|
57
|
-
'fetchLeverage': false,
|
|
58
|
-
'fetchLeverageTiers': false,
|
|
59
|
-
'fetchMarginMode': false,
|
|
60
|
-
'fetchMarkets': true,
|
|
61
|
-
'fetchMarkOHLCV': false,
|
|
62
|
-
'fetchMyTrades': true,
|
|
63
|
-
'fetchOpenInterestHistory': false,
|
|
64
|
-
'fetchOpenOrders': true,
|
|
65
|
-
'fetchOrder': true,
|
|
66
|
-
'fetchOrderBook': true,
|
|
67
|
-
'fetchPosition': false,
|
|
68
|
-
'fetchPositionMode': false,
|
|
69
|
-
'fetchPositions': false,
|
|
70
|
-
'fetchPositionsRisk': false,
|
|
71
|
-
'fetchPremiumIndexOHLCV': false,
|
|
72
|
-
'fetchTicker': true,
|
|
73
|
-
'fetchTickers': true,
|
|
74
|
-
'fetchTrades': true,
|
|
75
|
-
'reduceMargin': false,
|
|
76
|
-
'setLeverage': false,
|
|
77
|
-
'setMarginMode': false,
|
|
78
|
-
'setPositionMode': false,
|
|
79
|
-
'ws': true,
|
|
80
|
-
},
|
|
81
|
-
'urls': {
|
|
82
|
-
'logo': 'https://user-images.githubusercontent.com/1294454/38003300-adc12fba-323f-11e8-8525-725f53c4a659.jpg',
|
|
83
|
-
'api': {
|
|
84
|
-
'rest': 'https://api.coinone.co.kr',
|
|
85
|
-
'v2Public': 'https://api.coinone.co.kr/public/v2',
|
|
86
|
-
'v2Private': 'https://api.coinone.co.kr/v2',
|
|
87
|
-
'v2_1Private': 'https://api.coinone.co.kr/v2.1',
|
|
88
|
-
},
|
|
89
|
-
'www': 'https://coinone.co.kr',
|
|
90
|
-
'doc': 'https://doc.coinone.co.kr',
|
|
91
|
-
},
|
|
92
|
-
'requiredCredentials': {
|
|
93
|
-
'apiKey': true,
|
|
94
|
-
'secret': true,
|
|
95
|
-
},
|
|
96
|
-
'api': {
|
|
97
|
-
'public': {
|
|
98
|
-
'get': [
|
|
99
|
-
'orderbook',
|
|
100
|
-
'ticker',
|
|
101
|
-
'ticker_utc',
|
|
102
|
-
'trades',
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
'v2Public': {
|
|
106
|
-
'get': [
|
|
107
|
-
'range_units',
|
|
108
|
-
'markets/{quote_currency}',
|
|
109
|
-
'markets/{quote_currency}/{target_currency}',
|
|
110
|
-
'orderbook/{quote_currency}/{target_currency}',
|
|
111
|
-
'trades/{quote_currency}/{target_currency}',
|
|
112
|
-
'ticker_new/{quote_currency}',
|
|
113
|
-
'ticker_new/{quote_currency}/{target_currency}',
|
|
114
|
-
'ticker_utc_new/{quote_currency}',
|
|
115
|
-
'ticker_utc_new/{quote_currency}/{target_currency}',
|
|
116
|
-
'currencies',
|
|
117
|
-
'currencies/{currency}',
|
|
118
|
-
'chart/{quote_currency}/{target_currency}',
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
'private': {
|
|
122
|
-
'post': [
|
|
123
|
-
'account/deposit_address',
|
|
124
|
-
'account/btc_deposit_address',
|
|
125
|
-
'account/balance',
|
|
126
|
-
'account/daily_balance',
|
|
127
|
-
'account/user_info',
|
|
128
|
-
'account/virtual_account',
|
|
129
|
-
'order/cancel_all',
|
|
130
|
-
'order/cancel',
|
|
131
|
-
'order/limit_buy',
|
|
132
|
-
'order/limit_sell',
|
|
133
|
-
'order/complete_orders',
|
|
134
|
-
'order/limit_orders',
|
|
135
|
-
'order/order_info',
|
|
136
|
-
'transaction/auth_number',
|
|
137
|
-
'transaction/history',
|
|
138
|
-
'transaction/krw/history',
|
|
139
|
-
'transaction/btc',
|
|
140
|
-
'transaction/coin',
|
|
141
|
-
],
|
|
142
|
-
},
|
|
143
|
-
'v2Private': {
|
|
144
|
-
'post': [
|
|
145
|
-
'account/balance',
|
|
146
|
-
'account/deposit_address',
|
|
147
|
-
'account/user_info',
|
|
148
|
-
'account/virtual_account',
|
|
149
|
-
'order/cancel',
|
|
150
|
-
'order/limit_buy',
|
|
151
|
-
'order/limit_sell',
|
|
152
|
-
'order/limit_orders',
|
|
153
|
-
'order/complete_orders',
|
|
154
|
-
'order/query_order',
|
|
155
|
-
'transaction/auth_number',
|
|
156
|
-
'transaction/btc',
|
|
157
|
-
'transaction/history',
|
|
158
|
-
'transaction/krw/history',
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
'v2_1Private': {
|
|
162
|
-
'post': [
|
|
163
|
-
'account/balance/all',
|
|
164
|
-
'account/balance',
|
|
165
|
-
'account/trade_fee',
|
|
166
|
-
'account/trade_fee/{quote_currency}/{target_currency}',
|
|
167
|
-
'order/limit',
|
|
168
|
-
'order/cancel',
|
|
169
|
-
'order/cancel/all',
|
|
170
|
-
'order/open_orders',
|
|
171
|
-
'order/open_orders/all',
|
|
172
|
-
'order/complete_orders',
|
|
173
|
-
'order/complete_orders/all',
|
|
174
|
-
'order/info',
|
|
175
|
-
'transaction/krw/history',
|
|
176
|
-
'transaction/coin/history',
|
|
177
|
-
'transaction/coin/withdrawal/limit',
|
|
178
|
-
],
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
'fees': {
|
|
182
|
-
'trading': {
|
|
183
|
-
'tierBased': false,
|
|
184
|
-
'percentage': true,
|
|
185
|
-
'taker': 0.002,
|
|
186
|
-
'maker': 0.002,
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
'precisionMode': number.TICK_SIZE,
|
|
190
|
-
'exceptions': {
|
|
191
|
-
'405': errors.OnMaintenance,
|
|
192
|
-
'104': errors.OrderNotFound,
|
|
193
|
-
'108': errors.BadSymbol,
|
|
194
|
-
'107': errors.BadRequest, // {"errorCode":"107","errorMsg":"Parameter error","result":"error"}
|
|
195
|
-
},
|
|
196
|
-
'commonCurrencies': {
|
|
197
|
-
'SOC': 'Soda Coin',
|
|
198
|
-
},
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
async fetchCurrencies(params = {}) {
|
|
202
|
-
/**
|
|
203
|
-
* @method
|
|
204
|
-
* @name coinone#fetchCurrencies
|
|
205
|
-
* @description fetches all available currencies on an exchange
|
|
206
|
-
* @see https://docs.coinone.co.kr/reference/currencies
|
|
207
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
208
|
-
* @returns {object} an associative dictionary of currencies
|
|
209
|
-
*/
|
|
210
|
-
const response = await this.v2PublicGetCurrencies(params);
|
|
211
|
-
//
|
|
212
|
-
// {
|
|
213
|
-
// "result": "success",
|
|
214
|
-
// "error_code": "0",
|
|
215
|
-
// "server_time": 1701054555578,
|
|
216
|
-
// "currencies": [
|
|
217
|
-
// {
|
|
218
|
-
// "name": "Polygon",
|
|
219
|
-
// "symbol": "MATIC",
|
|
220
|
-
// "deposit_status": "normal",
|
|
221
|
-
// "withdraw_status": "normal",
|
|
222
|
-
// "deposit_confirm_count": 150,
|
|
223
|
-
// "max_precision": 8,
|
|
224
|
-
// "deposit_fee": "0.0",
|
|
225
|
-
// "withdrawal_min_amount": "1.0",
|
|
226
|
-
// "withdrawal_fee": "3.0"
|
|
227
|
-
// }
|
|
228
|
-
// ]
|
|
229
|
-
// }
|
|
230
|
-
//
|
|
231
|
-
const result = {};
|
|
232
|
-
const currencies = this.safeValue(response, 'currencies', []);
|
|
233
|
-
for (let i = 0; i < currencies.length; i++) {
|
|
234
|
-
const entry = currencies[i];
|
|
235
|
-
const id = this.safeString(entry, 'symbol');
|
|
236
|
-
const name = this.safeString(entry, 'name');
|
|
237
|
-
const code = this.safeCurrencyCode(id);
|
|
238
|
-
const withdrawStatus = this.safeString(entry, 'withdraw_status', '');
|
|
239
|
-
const depositStatus = this.safeString(entry, 'deposit_status', '');
|
|
240
|
-
const isWithdrawEnabled = withdrawStatus === 'normal';
|
|
241
|
-
const isDepositEnabled = depositStatus === 'normal';
|
|
242
|
-
result[code] = {
|
|
243
|
-
'id': id,
|
|
244
|
-
'code': code,
|
|
245
|
-
'info': entry,
|
|
246
|
-
'name': name,
|
|
247
|
-
'active': isWithdrawEnabled && isDepositEnabled,
|
|
248
|
-
'deposit': isDepositEnabled,
|
|
249
|
-
'withdraw': isWithdrawEnabled,
|
|
250
|
-
'fee': this.safeNumber(entry, 'withdrawal_fee'),
|
|
251
|
-
'precision': this.parseNumber(this.parsePrecision(this.safeString(entry, 'max_precision'))),
|
|
252
|
-
'limits': {
|
|
253
|
-
'amount': {
|
|
254
|
-
'min': undefined,
|
|
255
|
-
'max': undefined,
|
|
256
|
-
},
|
|
257
|
-
'withdraw': {
|
|
258
|
-
'min': this.safeNumber(entry, 'withdrawal_min_amount'),
|
|
259
|
-
'max': undefined,
|
|
260
|
-
},
|
|
261
|
-
},
|
|
262
|
-
'networks': {},
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
return result;
|
|
266
|
-
}
|
|
267
|
-
async fetchMarkets(params = {}) {
|
|
268
|
-
/**
|
|
269
|
-
* @method
|
|
270
|
-
* @name coinone#fetchMarkets
|
|
271
|
-
* @description retrieves data on all markets for coinone
|
|
272
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/tickers
|
|
273
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
274
|
-
* @returns {object[]} an array of objects representing market data
|
|
275
|
-
*/
|
|
276
|
-
const request = {
|
|
277
|
-
'quote_currency': 'KRW',
|
|
278
|
-
};
|
|
279
|
-
const response = await this.v2PublicGetTickerNewQuoteCurrency(request);
|
|
280
|
-
//
|
|
281
|
-
// {
|
|
282
|
-
// "result": "success",
|
|
283
|
-
// "error_code": "0",
|
|
284
|
-
// "server_time": 1701067923060,
|
|
285
|
-
// "tickers": [
|
|
286
|
-
// {
|
|
287
|
-
// "quote_currency": "krw",
|
|
288
|
-
// "target_currency": "stg",
|
|
289
|
-
// "timestamp": 1701067920001,
|
|
290
|
-
// "high": "667.5",
|
|
291
|
-
// "low": "667.5",
|
|
292
|
-
// "first": "667.5",
|
|
293
|
-
// "last": "667.5",
|
|
294
|
-
// "quote_volume": "0.0",
|
|
295
|
-
// "target_volume": "0.0",
|
|
296
|
-
// "best_asks": [
|
|
297
|
-
// {
|
|
298
|
-
// "price": "777.0",
|
|
299
|
-
// "qty": "73.9098"
|
|
300
|
-
// }
|
|
301
|
-
// ],
|
|
302
|
-
// "best_bids": [
|
|
303
|
-
// {
|
|
304
|
-
// "price": "690.8",
|
|
305
|
-
// "qty": "40.7768"
|
|
306
|
-
// }
|
|
307
|
-
// ],
|
|
308
|
-
// "id": "1701067920001001"
|
|
309
|
-
// }
|
|
310
|
-
// ]
|
|
311
|
-
// }
|
|
312
|
-
//
|
|
313
|
-
const tickers = this.safeValue(response, 'tickers', []);
|
|
314
|
-
const result = [];
|
|
315
|
-
for (let i = 0; i < tickers.length; i++) {
|
|
316
|
-
const entry = this.safeValue(tickers, i);
|
|
317
|
-
const id = this.safeString(entry, 'id');
|
|
318
|
-
const baseId = this.safeStringUpper(entry, 'target_currency');
|
|
319
|
-
const quoteId = this.safeStringUpper(entry, 'quote_currency');
|
|
320
|
-
const base = this.safeCurrencyCode(baseId);
|
|
321
|
-
const quote = this.safeCurrencyCode(quoteId);
|
|
322
|
-
result.push({
|
|
323
|
-
'id': id,
|
|
324
|
-
'symbol': base + '/' + quote,
|
|
325
|
-
'base': base,
|
|
326
|
-
'quote': quote,
|
|
327
|
-
'settle': undefined,
|
|
328
|
-
'baseId': baseId,
|
|
329
|
-
'quoteId': quoteId,
|
|
330
|
-
'settleId': undefined,
|
|
331
|
-
'type': 'spot',
|
|
332
|
-
'spot': true,
|
|
333
|
-
'margin': false,
|
|
334
|
-
'swap': false,
|
|
335
|
-
'future': false,
|
|
336
|
-
'option': false,
|
|
337
|
-
'active': undefined,
|
|
338
|
-
'contract': false,
|
|
339
|
-
'linear': undefined,
|
|
340
|
-
'inverse': undefined,
|
|
341
|
-
'contractSize': undefined,
|
|
342
|
-
'expiry': undefined,
|
|
343
|
-
'expiryDatetime': undefined,
|
|
344
|
-
'strike': undefined,
|
|
345
|
-
'optionType': undefined,
|
|
346
|
-
'precision': {
|
|
347
|
-
'amount': this.parseNumber('1e-4'),
|
|
348
|
-
'price': this.parseNumber('1e-4'),
|
|
349
|
-
'cost': this.parseNumber('1e-8'),
|
|
350
|
-
},
|
|
351
|
-
'limits': {
|
|
352
|
-
'leverage': {
|
|
353
|
-
'min': undefined,
|
|
354
|
-
'max': undefined,
|
|
355
|
-
},
|
|
356
|
-
'amount': {
|
|
357
|
-
'min': undefined,
|
|
358
|
-
'max': undefined,
|
|
359
|
-
},
|
|
360
|
-
'price': {
|
|
361
|
-
'min': undefined,
|
|
362
|
-
'max': undefined,
|
|
363
|
-
},
|
|
364
|
-
'cost': {
|
|
365
|
-
'min': undefined,
|
|
366
|
-
'max': undefined,
|
|
367
|
-
},
|
|
368
|
-
},
|
|
369
|
-
'created': undefined,
|
|
370
|
-
'info': entry,
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
return result;
|
|
374
|
-
}
|
|
375
|
-
parseBalance(response) {
|
|
376
|
-
const result = { 'info': response };
|
|
377
|
-
const balances = this.omit(response, [
|
|
378
|
-
'errorCode',
|
|
379
|
-
'result',
|
|
380
|
-
'normalWallets',
|
|
381
|
-
]);
|
|
382
|
-
const currencyIds = Object.keys(balances);
|
|
383
|
-
for (let i = 0; i < currencyIds.length; i++) {
|
|
384
|
-
const currencyId = currencyIds[i];
|
|
385
|
-
const balance = balances[currencyId];
|
|
386
|
-
const code = this.safeCurrencyCode(currencyId);
|
|
387
|
-
const account = this.account();
|
|
388
|
-
account['free'] = this.safeString(balance, 'avail');
|
|
389
|
-
account['total'] = this.safeString(balance, 'balance');
|
|
390
|
-
result[code] = account;
|
|
391
|
-
}
|
|
392
|
-
return this.safeBalance(result);
|
|
393
|
-
}
|
|
394
|
-
async fetchBalance(params = {}) {
|
|
395
|
-
/**
|
|
396
|
-
* @method
|
|
397
|
-
* @name coinone#fetchBalance
|
|
398
|
-
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
399
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/v21
|
|
400
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
401
|
-
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
402
|
-
*/
|
|
403
|
-
await this.loadMarkets();
|
|
404
|
-
const response = await this.v2PrivatePostAccountBalance(params);
|
|
405
|
-
return this.parseBalance(response);
|
|
406
|
-
}
|
|
407
|
-
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
408
|
-
/**
|
|
409
|
-
* @method
|
|
410
|
-
* @name coinone#fetchOrderBook
|
|
411
|
-
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
412
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/orderbook
|
|
413
|
-
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
414
|
-
* @param {int} [limit] the maximum amount of order book entries to return
|
|
415
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
416
|
-
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
417
|
-
*/
|
|
418
|
-
await this.loadMarkets();
|
|
419
|
-
const market = this.market(symbol);
|
|
420
|
-
const request = {
|
|
421
|
-
'quote_currency': market['quote'],
|
|
422
|
-
'target_currency': market['base'],
|
|
423
|
-
};
|
|
424
|
-
if (limit !== undefined) {
|
|
425
|
-
request['size'] = limit; // only support 5, 10, 15, 16
|
|
426
|
-
}
|
|
427
|
-
const response = await this.v2PublicGetOrderbookQuoteCurrencyTargetCurrency(this.extend(request, params));
|
|
428
|
-
//
|
|
429
|
-
// {
|
|
430
|
-
// "result": "success",
|
|
431
|
-
// "error_code": "0",
|
|
432
|
-
// "timestamp": 1701071108673,
|
|
433
|
-
// "id": "1701071108673001",
|
|
434
|
-
// "quote_currency": "KRW",
|
|
435
|
-
// "target_currency": "BTC",
|
|
436
|
-
// "order_book_unit": "0.0",
|
|
437
|
-
// "bids": [
|
|
438
|
-
// {
|
|
439
|
-
// "price": "50048000",
|
|
440
|
-
// "qty": "0.01080229"
|
|
441
|
-
// }
|
|
442
|
-
// ],
|
|
443
|
-
// "asks": [
|
|
444
|
-
// {
|
|
445
|
-
// "price": "50058000",
|
|
446
|
-
// "qty": "0.00272592"
|
|
447
|
-
// }
|
|
448
|
-
// ]
|
|
449
|
-
// }
|
|
450
|
-
//
|
|
451
|
-
const timestamp = this.safeInteger(response, 'timestamp');
|
|
452
|
-
return this.parseOrderBook(response, market['symbol'], timestamp, 'bids', 'asks', 'price', 'qty');
|
|
453
|
-
}
|
|
454
|
-
async fetchTickers(symbols = undefined, params = {}) {
|
|
455
|
-
/**
|
|
456
|
-
* @method
|
|
457
|
-
* @name coinone#fetchTickers
|
|
458
|
-
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
459
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/tickers
|
|
460
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/ticker
|
|
461
|
-
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
462
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
463
|
-
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
464
|
-
*/
|
|
465
|
-
await this.loadMarkets();
|
|
466
|
-
symbols = this.marketSymbols(symbols);
|
|
467
|
-
const request = {
|
|
468
|
-
'quote_currency': 'KRW',
|
|
469
|
-
};
|
|
470
|
-
let market = undefined;
|
|
471
|
-
let response = undefined;
|
|
472
|
-
if (symbols !== undefined) {
|
|
473
|
-
const first = this.safeString(symbols, 0);
|
|
474
|
-
market = this.market(first);
|
|
475
|
-
request['quote_currency'] = market['quote'];
|
|
476
|
-
request['target_currency'] = market['base'];
|
|
477
|
-
response = await this.v2PublicGetTickerNewQuoteCurrencyTargetCurrency(this.extend(request, params));
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
response = await this.v2PublicGetTickerNewQuoteCurrency(this.extend(request, params));
|
|
481
|
-
}
|
|
482
|
-
//
|
|
483
|
-
// {
|
|
484
|
-
// "result": "success",
|
|
485
|
-
// "error_code": "0",
|
|
486
|
-
// "server_time": 1701073358487,
|
|
487
|
-
// "tickers": [
|
|
488
|
-
// {
|
|
489
|
-
// "quote_currency": "krw",
|
|
490
|
-
// "target_currency": "btc",
|
|
491
|
-
// "timestamp": 1701073357818,
|
|
492
|
-
// "high": "50543000.0",
|
|
493
|
-
// "low": "49945000.0",
|
|
494
|
-
// "first": "50487000.0",
|
|
495
|
-
// "last": "50062000.0",
|
|
496
|
-
// "quote_volume": "11349804285.3859",
|
|
497
|
-
// "target_volume": "226.07268994",
|
|
498
|
-
// "best_asks": [
|
|
499
|
-
// {
|
|
500
|
-
// "price": "50081000.0",
|
|
501
|
-
// "qty": "0.18471358"
|
|
502
|
-
// }
|
|
503
|
-
// ],
|
|
504
|
-
// "best_bids": [
|
|
505
|
-
// {
|
|
506
|
-
// "price": "50062000.0",
|
|
507
|
-
// "qty": "0.04213455"
|
|
508
|
-
// }
|
|
509
|
-
// ],
|
|
510
|
-
// "id": "1701073357818001"
|
|
511
|
-
// }
|
|
512
|
-
// ]
|
|
513
|
-
// }
|
|
514
|
-
//
|
|
515
|
-
const data = this.safeValue(response, 'tickers', []);
|
|
516
|
-
return this.parseTickers(data, symbols);
|
|
517
|
-
}
|
|
518
|
-
async fetchTicker(symbol, params = {}) {
|
|
519
|
-
/**
|
|
520
|
-
* @method
|
|
521
|
-
* @name coinone#fetchTicker
|
|
522
|
-
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
523
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/ticker
|
|
524
|
-
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
525
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
526
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
527
|
-
*/
|
|
528
|
-
await this.loadMarkets();
|
|
529
|
-
const market = this.market(symbol);
|
|
530
|
-
const request = {
|
|
531
|
-
'quote_currency': market['quote'],
|
|
532
|
-
'target_currency': market['base'],
|
|
533
|
-
};
|
|
534
|
-
const response = await this.v2PublicGetTickerNewQuoteCurrencyTargetCurrency(this.extend(request, params));
|
|
535
|
-
//
|
|
536
|
-
// {
|
|
537
|
-
// "result": "success",
|
|
538
|
-
// "error_code": "0",
|
|
539
|
-
// "server_time": 1701073358487,
|
|
540
|
-
// "tickers": [
|
|
541
|
-
// {
|
|
542
|
-
// "quote_currency": "krw",
|
|
543
|
-
// "target_currency": "btc",
|
|
544
|
-
// "timestamp": 1701073357818,
|
|
545
|
-
// "high": "50543000.0",
|
|
546
|
-
// "low": "49945000.0",
|
|
547
|
-
// "first": "50487000.0",
|
|
548
|
-
// "last": "50062000.0",
|
|
549
|
-
// "quote_volume": "11349804285.3859",
|
|
550
|
-
// "target_volume": "226.07268994",
|
|
551
|
-
// "best_asks": [
|
|
552
|
-
// {
|
|
553
|
-
// "price": "50081000.0",
|
|
554
|
-
// "qty": "0.18471358"
|
|
555
|
-
// }
|
|
556
|
-
// ],
|
|
557
|
-
// "best_bids": [
|
|
558
|
-
// {
|
|
559
|
-
// "price": "50062000.0",
|
|
560
|
-
// "qty": "0.04213455"
|
|
561
|
-
// }
|
|
562
|
-
// ],
|
|
563
|
-
// "id": "1701073357818001"
|
|
564
|
-
// }
|
|
565
|
-
// ]
|
|
566
|
-
// }
|
|
567
|
-
//
|
|
568
|
-
const data = this.safeValue(response, 'tickers', []);
|
|
569
|
-
const ticker = this.safeValue(data, 0, {});
|
|
570
|
-
return this.parseTicker(ticker, market);
|
|
571
|
-
}
|
|
572
|
-
parseTicker(ticker, market = undefined) {
|
|
573
|
-
//
|
|
574
|
-
// {
|
|
575
|
-
// "quote_currency": "krw",
|
|
576
|
-
// "target_currency": "btc",
|
|
577
|
-
// "timestamp": 1701073357818,
|
|
578
|
-
// "high": "50543000.0",
|
|
579
|
-
// "low": "49945000.0",
|
|
580
|
-
// "first": "50487000.0",
|
|
581
|
-
// "last": "50062000.0",
|
|
582
|
-
// "quote_volume": "11349804285.3859",
|
|
583
|
-
// "target_volume": "226.07268994",
|
|
584
|
-
// "best_asks": [
|
|
585
|
-
// {
|
|
586
|
-
// "price": "50081000.0",
|
|
587
|
-
// "qty": "0.18471358"
|
|
588
|
-
// }
|
|
589
|
-
// ],
|
|
590
|
-
// "best_bids": [
|
|
591
|
-
// {
|
|
592
|
-
// "price": "50062000.0",
|
|
593
|
-
// "qty": "0.04213455"
|
|
594
|
-
// }
|
|
595
|
-
// ],
|
|
596
|
-
// "id": "1701073357818001"
|
|
597
|
-
// }
|
|
598
|
-
//
|
|
599
|
-
const timestamp = this.safeInteger(ticker, 'timestamp');
|
|
600
|
-
const last = this.safeString(ticker, 'last');
|
|
601
|
-
const asks = this.safeValue(ticker, 'best_asks');
|
|
602
|
-
const bids = this.safeValue(ticker, 'best_bids');
|
|
603
|
-
const baseId = this.safeString(ticker, 'target_currency');
|
|
604
|
-
const quoteId = this.safeString(ticker, 'quote_currency');
|
|
605
|
-
const base = this.safeCurrencyCode(baseId);
|
|
606
|
-
const quote = this.safeCurrencyCode(quoteId);
|
|
607
|
-
return this.safeTicker({
|
|
608
|
-
'symbol': base + '/' + quote,
|
|
609
|
-
'timestamp': timestamp,
|
|
610
|
-
'datetime': this.iso8601(timestamp),
|
|
611
|
-
'high': this.safeString(ticker, 'high'),
|
|
612
|
-
'low': this.safeString(ticker, 'low'),
|
|
613
|
-
'bid': this.safeString(bids, 'price'),
|
|
614
|
-
'bidVolume': this.safeString(bids, 'qty'),
|
|
615
|
-
'ask': this.safeString(asks, 'price'),
|
|
616
|
-
'askVolume': this.safeString(asks, 'qty'),
|
|
617
|
-
'vwap': undefined,
|
|
618
|
-
'open': this.safeString(ticker, 'first'),
|
|
619
|
-
'close': last,
|
|
620
|
-
'last': last,
|
|
621
|
-
'previousClose': undefined,
|
|
622
|
-
'change': undefined,
|
|
623
|
-
'percentage': undefined,
|
|
624
|
-
'average': undefined,
|
|
625
|
-
'baseVolume': this.safeString(ticker, 'target_volume'),
|
|
626
|
-
'quoteVolume': this.safeString(ticker, 'quote_volume'),
|
|
627
|
-
'info': ticker,
|
|
628
|
-
}, market);
|
|
629
|
-
}
|
|
630
|
-
parseTrade(trade, market = undefined) {
|
|
631
|
-
//
|
|
632
|
-
// fetchTrades (public)
|
|
633
|
-
//
|
|
634
|
-
// {
|
|
635
|
-
// "id": "1701075265708001",
|
|
636
|
-
// "timestamp": 1701075265708,
|
|
637
|
-
// "price": "50020000",
|
|
638
|
-
// "qty": "0.00155177",
|
|
639
|
-
// "is_seller_maker": false
|
|
640
|
-
// }
|
|
641
|
-
//
|
|
642
|
-
// fetchMyTrades (private)
|
|
643
|
-
//
|
|
644
|
-
// {
|
|
645
|
-
// "timestamp": "1416561032",
|
|
646
|
-
// "price": "419000.0",
|
|
647
|
-
// "type": "bid",
|
|
648
|
-
// "qty": "0.001",
|
|
649
|
-
// "feeRate": "-0.0015",
|
|
650
|
-
// "fee": "-0.0000015",
|
|
651
|
-
// "orderId": "E84A1AC2-8088-4FA0-B093-A3BCDB9B3C85"
|
|
652
|
-
// }
|
|
653
|
-
//
|
|
654
|
-
const timestamp = this.safeInteger(trade, 'timestamp');
|
|
655
|
-
market = this.safeMarket(undefined, market);
|
|
656
|
-
const isSellerMaker = this.safeValue(trade, 'is_seller_maker');
|
|
657
|
-
let side = undefined;
|
|
658
|
-
if (isSellerMaker !== undefined) {
|
|
659
|
-
side = isSellerMaker ? 'sell' : 'buy';
|
|
660
|
-
}
|
|
661
|
-
const priceString = this.safeString(trade, 'price');
|
|
662
|
-
const amountString = this.safeString(trade, 'qty');
|
|
663
|
-
const orderId = this.safeString(trade, 'orderId');
|
|
664
|
-
let feeCostString = this.safeString(trade, 'fee');
|
|
665
|
-
let fee = undefined;
|
|
666
|
-
if (feeCostString !== undefined) {
|
|
667
|
-
feeCostString = Precise["default"].stringAbs(feeCostString);
|
|
668
|
-
let feeRateString = this.safeString(trade, 'feeRate');
|
|
669
|
-
feeRateString = Precise["default"].stringAbs(feeRateString);
|
|
670
|
-
const feeCurrencyCode = (side === 'sell') ? market['quote'] : market['base'];
|
|
671
|
-
fee = {
|
|
672
|
-
'cost': feeCostString,
|
|
673
|
-
'currency': feeCurrencyCode,
|
|
674
|
-
'rate': feeRateString,
|
|
675
|
-
};
|
|
676
|
-
}
|
|
677
|
-
return this.safeTrade({
|
|
678
|
-
'id': this.safeString(trade, 'id'),
|
|
679
|
-
'info': trade,
|
|
680
|
-
'timestamp': timestamp,
|
|
681
|
-
'datetime': this.iso8601(timestamp),
|
|
682
|
-
'order': orderId,
|
|
683
|
-
'symbol': market['symbol'],
|
|
684
|
-
'type': undefined,
|
|
685
|
-
'side': side,
|
|
686
|
-
'takerOrMaker': undefined,
|
|
687
|
-
'price': priceString,
|
|
688
|
-
'amount': amountString,
|
|
689
|
-
'cost': undefined,
|
|
690
|
-
'fee': fee,
|
|
691
|
-
}, market);
|
|
692
|
-
}
|
|
693
|
-
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
694
|
-
/**
|
|
695
|
-
* @method
|
|
696
|
-
* @name coinone#fetchTrades
|
|
697
|
-
* @description get the list of most recent trades for a particular symbol
|
|
698
|
-
* @see https://docs.coinone.co.kr/v1.0/reference/recent-completed-orders
|
|
699
|
-
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
700
|
-
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
701
|
-
* @param {int} [limit] the maximum amount of trades to fetch
|
|
702
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
703
|
-
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
704
|
-
*/
|
|
705
|
-
await this.loadMarkets();
|
|
706
|
-
const market = this.market(symbol);
|
|
707
|
-
const request = {
|
|
708
|
-
'quote_currency': market['quote'],
|
|
709
|
-
'target_currency': market['base'],
|
|
710
|
-
};
|
|
711
|
-
if (limit !== undefined) {
|
|
712
|
-
request['size'] = Math.min(limit, 200);
|
|
713
|
-
}
|
|
714
|
-
const response = await this.v2PublicGetTradesQuoteCurrencyTargetCurrency(this.extend(request, params));
|
|
715
|
-
//
|
|
716
|
-
// {
|
|
717
|
-
// "result": "success",
|
|
718
|
-
// "error_code": "0",
|
|
719
|
-
// "server_time": 1701075315771,
|
|
720
|
-
// "quote_currency": "KRW",
|
|
721
|
-
// "target_currency": "BTC",
|
|
722
|
-
// "transactions": [
|
|
723
|
-
// {
|
|
724
|
-
// "id": "1701075265708001",
|
|
725
|
-
// "timestamp": 1701075265708,
|
|
726
|
-
// "price": "50020000",
|
|
727
|
-
// "qty": "0.00155177",
|
|
728
|
-
// "is_seller_maker": false
|
|
729
|
-
// }
|
|
730
|
-
// ]
|
|
731
|
-
// }
|
|
732
|
-
//
|
|
733
|
-
const data = this.safeValue(response, 'transactions', []);
|
|
734
|
-
return this.parseTrades(data, market, since, limit);
|
|
735
|
-
}
|
|
736
|
-
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
737
|
-
/**
|
|
738
|
-
* @method
|
|
739
|
-
* @name coinone#createOrder
|
|
740
|
-
* @description create a trade order
|
|
741
|
-
* @see https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_buy
|
|
742
|
-
* @see https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_sell
|
|
743
|
-
* @param {string} symbol unified symbol of the market to create an order in
|
|
744
|
-
* @param {string} type must be 'limit'
|
|
745
|
-
* @param {string} side 'buy' or 'sell'
|
|
746
|
-
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
747
|
-
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
748
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
749
|
-
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
750
|
-
*/
|
|
751
|
-
if (type !== 'limit') {
|
|
752
|
-
throw new errors.ExchangeError(this.id + ' createOrder() allows limit orders only');
|
|
753
|
-
}
|
|
754
|
-
await this.loadMarkets();
|
|
755
|
-
const market = this.market(symbol);
|
|
756
|
-
const request = {
|
|
757
|
-
'price': price,
|
|
758
|
-
'currency': market['id'],
|
|
759
|
-
'qty': amount,
|
|
760
|
-
};
|
|
761
|
-
const method = 'privatePostOrder' + this.capitalize(type) + this.capitalize(side);
|
|
762
|
-
const response = await this[method](this.extend(request, params));
|
|
763
|
-
//
|
|
764
|
-
// {
|
|
765
|
-
// "result": "success",
|
|
766
|
-
// "errorCode": "0",
|
|
767
|
-
// "orderId": "8a82c561-40b4-4cb3-9bc0-9ac9ffc1d63b"
|
|
768
|
-
// }
|
|
769
|
-
//
|
|
770
|
-
return this.parseOrder(response, market);
|
|
771
|
-
}
|
|
772
|
-
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
773
|
-
/**
|
|
774
|
-
* @method
|
|
775
|
-
* @name coinone#fetchOrder
|
|
776
|
-
* @description fetches information on an order made by the user
|
|
777
|
-
* @param {string} symbol unified symbol of the market the order was made in
|
|
778
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
779
|
-
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
780
|
-
*/
|
|
781
|
-
if (symbol === undefined) {
|
|
782
|
-
throw new errors.ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
|
|
783
|
-
}
|
|
784
|
-
await this.loadMarkets();
|
|
785
|
-
const market = this.market(symbol);
|
|
786
|
-
const request = {
|
|
787
|
-
'order_id': id,
|
|
788
|
-
'currency': market['id'],
|
|
789
|
-
};
|
|
790
|
-
const response = await this.v2PrivatePostOrderQueryOrder(this.extend(request, params));
|
|
791
|
-
//
|
|
792
|
-
// {
|
|
793
|
-
// "result": "success",
|
|
794
|
-
// "errorCode": "0",
|
|
795
|
-
// "orderId": "0e3019f2-1e4d-11e9-9ec7-00e04c3600d7",
|
|
796
|
-
// "baseCurrency": "KRW",
|
|
797
|
-
// "targetCurrency": "BTC",
|
|
798
|
-
// "price": "10011000.0",
|
|
799
|
-
// "originalQty": "3.0",
|
|
800
|
-
// "executedQty": "0.62",
|
|
801
|
-
// "canceledQty": "1.125",
|
|
802
|
-
// "remainQty": "1.255",
|
|
803
|
-
// "status": "partially_filled",
|
|
804
|
-
// "side": "bid",
|
|
805
|
-
// "orderedAt": 1499340941,
|
|
806
|
-
// "updatedAt": 1499341142,
|
|
807
|
-
// "feeRate": "0.002",
|
|
808
|
-
// "fee": "0.00124",
|
|
809
|
-
// "averageExecutedPrice": "10011000.0"
|
|
810
|
-
// }
|
|
811
|
-
//
|
|
812
|
-
return this.parseOrder(response, market);
|
|
813
|
-
}
|
|
814
|
-
parseOrderStatus(status) {
|
|
815
|
-
const statuses = {
|
|
816
|
-
'live': 'open',
|
|
817
|
-
'partially_filled': 'open',
|
|
818
|
-
'partially_canceled': 'open',
|
|
819
|
-
'filled': 'closed',
|
|
820
|
-
'canceled': 'canceled',
|
|
821
|
-
};
|
|
822
|
-
return this.safeString(statuses, status, status);
|
|
823
|
-
}
|
|
824
|
-
parseOrder(order, market = undefined) {
|
|
825
|
-
//
|
|
826
|
-
// createOrder
|
|
827
|
-
//
|
|
828
|
-
// {
|
|
829
|
-
// "result": "success",
|
|
830
|
-
// "errorCode": "0",
|
|
831
|
-
// "orderId": "8a82c561-40b4-4cb3-9bc0-9ac9ffc1d63b"
|
|
832
|
-
// }
|
|
833
|
-
//
|
|
834
|
-
// fetchOrder
|
|
835
|
-
//
|
|
836
|
-
// {
|
|
837
|
-
// "result": "success",
|
|
838
|
-
// "errorCode": "0",
|
|
839
|
-
// "orderId": "0e3019f2-1e4d-11e9-9ec7-00e04c3600d7",
|
|
840
|
-
// "baseCurrency": "KRW",
|
|
841
|
-
// "targetCurrency": "BTC",
|
|
842
|
-
// "price": "10011000.0",
|
|
843
|
-
// "originalQty": "3.0",
|
|
844
|
-
// "executedQty": "0.62",
|
|
845
|
-
// "canceledQty": "1.125",
|
|
846
|
-
// "remainQty": "1.255",
|
|
847
|
-
// "status": "partially_filled",
|
|
848
|
-
// "side": "bid",
|
|
849
|
-
// "orderedAt": 1499340941,
|
|
850
|
-
// "updatedAt": 1499341142,
|
|
851
|
-
// "feeRate": "0.002",
|
|
852
|
-
// "fee": "0.00124",
|
|
853
|
-
// "averageExecutedPrice": "10011000.0"
|
|
854
|
-
// }
|
|
855
|
-
//
|
|
856
|
-
// fetchOpenOrders
|
|
857
|
-
//
|
|
858
|
-
// {
|
|
859
|
-
// "index": "0",
|
|
860
|
-
// "orderId": "68665943-1eb5-4e4b-9d76-845fc54f5489",
|
|
861
|
-
// "timestamp": "1449037367",
|
|
862
|
-
// "price": "444000.0",
|
|
863
|
-
// "qty": "0.3456",
|
|
864
|
-
// "type": "ask",
|
|
865
|
-
// "feeRate": "-0.0015"
|
|
866
|
-
// }
|
|
867
|
-
//
|
|
868
|
-
const id = this.safeString(order, 'orderId');
|
|
869
|
-
const baseId = this.safeString(order, 'baseCurrency');
|
|
870
|
-
const quoteId = this.safeString(order, 'targetCurrency');
|
|
871
|
-
let base = undefined;
|
|
872
|
-
let quote = undefined;
|
|
873
|
-
if (baseId !== undefined) {
|
|
874
|
-
base = this.safeCurrencyCode(baseId);
|
|
875
|
-
}
|
|
876
|
-
if (quoteId !== undefined) {
|
|
877
|
-
quote = this.safeCurrencyCode(quoteId);
|
|
878
|
-
}
|
|
879
|
-
let symbol = undefined;
|
|
880
|
-
if ((base !== undefined) && (quote !== undefined)) {
|
|
881
|
-
symbol = base + '/' + quote;
|
|
882
|
-
market = this.safeMarket(symbol, market, '/');
|
|
883
|
-
}
|
|
884
|
-
const timestamp = this.safeTimestamp2(order, 'timestamp', 'updatedAt');
|
|
885
|
-
let side = this.safeString2(order, 'type', 'side');
|
|
886
|
-
if (side === 'ask') {
|
|
887
|
-
side = 'sell';
|
|
888
|
-
}
|
|
889
|
-
else if (side === 'bid') {
|
|
890
|
-
side = 'buy';
|
|
891
|
-
}
|
|
892
|
-
const remainingString = this.safeString(order, 'remainQty');
|
|
893
|
-
const amountString = this.safeString2(order, 'originalQty', 'qty');
|
|
894
|
-
let status = this.safeString(order, 'status');
|
|
895
|
-
// https://github.com/ccxt/ccxt/pull/7067
|
|
896
|
-
if (status === 'live') {
|
|
897
|
-
if ((remainingString !== undefined) && (amountString !== undefined)) {
|
|
898
|
-
const isLessThan = Precise["default"].stringLt(remainingString, amountString);
|
|
899
|
-
if (isLessThan) {
|
|
900
|
-
status = 'canceled';
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
status = this.parseOrderStatus(status);
|
|
905
|
-
let fee = undefined;
|
|
906
|
-
const feeCostString = this.safeString(order, 'fee');
|
|
907
|
-
if (feeCostString !== undefined) {
|
|
908
|
-
const feeCurrencyCode = (side === 'sell') ? quote : base;
|
|
909
|
-
fee = {
|
|
910
|
-
'cost': feeCostString,
|
|
911
|
-
'rate': this.safeString(order, 'feeRate'),
|
|
912
|
-
'currency': feeCurrencyCode,
|
|
913
|
-
};
|
|
914
|
-
}
|
|
915
|
-
return this.safeOrder({
|
|
916
|
-
'info': order,
|
|
917
|
-
'id': id,
|
|
918
|
-
'clientOrderId': undefined,
|
|
919
|
-
'timestamp': timestamp,
|
|
920
|
-
'datetime': this.iso8601(timestamp),
|
|
921
|
-
'lastTradeTimestamp': undefined,
|
|
922
|
-
'symbol': symbol,
|
|
923
|
-
'type': 'limit',
|
|
924
|
-
'timeInForce': undefined,
|
|
925
|
-
'postOnly': undefined,
|
|
926
|
-
'side': side,
|
|
927
|
-
'price': this.safeString(order, 'price'),
|
|
928
|
-
'stopPrice': undefined,
|
|
929
|
-
'triggerPrice': undefined,
|
|
930
|
-
'cost': undefined,
|
|
931
|
-
'average': this.safeString(order, 'averageExecutedPrice'),
|
|
932
|
-
'amount': amountString,
|
|
933
|
-
'filled': this.safeString(order, 'executedQty'),
|
|
934
|
-
'remaining': remainingString,
|
|
935
|
-
'status': status,
|
|
936
|
-
'fee': fee,
|
|
937
|
-
'trades': undefined,
|
|
938
|
-
}, market);
|
|
939
|
-
}
|
|
940
|
-
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
941
|
-
/**
|
|
942
|
-
* @method
|
|
943
|
-
* @name coinone#fetchOpenOrders
|
|
944
|
-
* @description fetch all unfilled currently open orders
|
|
945
|
-
* @param {string} symbol unified market symbol
|
|
946
|
-
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
947
|
-
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
948
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
949
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
950
|
-
*/
|
|
951
|
-
// The returned amount might not be same as the ordered amount. If an order is partially filled, the returned amount means the remaining amount.
|
|
952
|
-
// For the same reason, the returned amount and remaining are always same, and the returned filled and cost are always zero.
|
|
953
|
-
if (symbol === undefined) {
|
|
954
|
-
throw new errors.ExchangeError(this.id + ' fetchOpenOrders() allows fetching closed orders with a specific symbol');
|
|
955
|
-
}
|
|
956
|
-
await this.loadMarkets();
|
|
957
|
-
const market = this.market(symbol);
|
|
958
|
-
const request = {
|
|
959
|
-
'currency': market['id'],
|
|
960
|
-
};
|
|
961
|
-
const response = await this.privatePostOrderLimitOrders(this.extend(request, params));
|
|
962
|
-
//
|
|
963
|
-
// {
|
|
964
|
-
// "result": "success",
|
|
965
|
-
// "errorCode": "0",
|
|
966
|
-
// "limitOrders": [
|
|
967
|
-
// {
|
|
968
|
-
// "index": "0",
|
|
969
|
-
// "orderId": "68665943-1eb5-4e4b-9d76-845fc54f5489",
|
|
970
|
-
// "timestamp": "1449037367",
|
|
971
|
-
// "price": "444000.0",
|
|
972
|
-
// "qty": "0.3456",
|
|
973
|
-
// "type": "ask",
|
|
974
|
-
// "feeRate": "-0.0015"
|
|
975
|
-
// }
|
|
976
|
-
// ]
|
|
977
|
-
// }
|
|
978
|
-
//
|
|
979
|
-
const limitOrders = this.safeValue(response, 'limitOrders', []);
|
|
980
|
-
return this.parseOrders(limitOrders, market, since, limit);
|
|
981
|
-
}
|
|
982
|
-
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
983
|
-
/**
|
|
984
|
-
* @method
|
|
985
|
-
* @name coinone#fetchMyTrades
|
|
986
|
-
* @description fetch all trades made by the user
|
|
987
|
-
* @param {string} symbol unified market symbol
|
|
988
|
-
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
989
|
-
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
990
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
991
|
-
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
992
|
-
*/
|
|
993
|
-
if (symbol === undefined) {
|
|
994
|
-
throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
995
|
-
}
|
|
996
|
-
await this.loadMarkets();
|
|
997
|
-
const market = this.market(symbol);
|
|
998
|
-
const request = {
|
|
999
|
-
'currency': market['id'],
|
|
1000
|
-
};
|
|
1001
|
-
const response = await this.v2PrivatePostOrderCompleteOrders(this.extend(request, params));
|
|
1002
|
-
//
|
|
1003
|
-
// despite the name of the endpoint it returns trades which may have a duplicate orderId
|
|
1004
|
-
// https://github.com/ccxt/ccxt/pull/7067
|
|
1005
|
-
//
|
|
1006
|
-
// {
|
|
1007
|
-
// "result": "success",
|
|
1008
|
-
// "errorCode": "0",
|
|
1009
|
-
// "completeOrders": [
|
|
1010
|
-
// {
|
|
1011
|
-
// "timestamp": "1416561032",
|
|
1012
|
-
// "price": "419000.0",
|
|
1013
|
-
// "type": "bid",
|
|
1014
|
-
// "qty": "0.001",
|
|
1015
|
-
// "feeRate": "-0.0015",
|
|
1016
|
-
// "fee": "-0.0000015",
|
|
1017
|
-
// "orderId": "E84A1AC2-8088-4FA0-B093-A3BCDB9B3C85"
|
|
1018
|
-
// }
|
|
1019
|
-
// ]
|
|
1020
|
-
// }
|
|
1021
|
-
//
|
|
1022
|
-
const completeOrders = this.safeValue(response, 'completeOrders', []);
|
|
1023
|
-
return this.parseTrades(completeOrders, market, since, limit);
|
|
1024
|
-
}
|
|
1025
|
-
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
1026
|
-
/**
|
|
1027
|
-
* @method
|
|
1028
|
-
* @name coinone#cancelOrder
|
|
1029
|
-
* @description cancels an open order
|
|
1030
|
-
* @param {string} id order id
|
|
1031
|
-
* @param {string} symbol unified symbol of the market the order was made in
|
|
1032
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1033
|
-
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1034
|
-
*/
|
|
1035
|
-
if (symbol === undefined) {
|
|
1036
|
-
// eslint-disable-next-line quotes
|
|
1037
|
-
throw new errors.ArgumentsRequired(this.id + " cancelOrder() requires a symbol argument. To cancel the order, pass a symbol argument and {'price': 12345, 'qty': 1.2345, 'is_ask': 0} in the params argument of cancelOrder.");
|
|
1038
|
-
}
|
|
1039
|
-
const price = this.safeNumber(params, 'price');
|
|
1040
|
-
const qty = this.safeNumber(params, 'qty');
|
|
1041
|
-
const isAsk = this.safeInteger(params, 'is_ask');
|
|
1042
|
-
if ((price === undefined) || (qty === undefined) || (isAsk === undefined)) {
|
|
1043
|
-
// eslint-disable-next-line quotes
|
|
1044
|
-
throw new errors.ArgumentsRequired(this.id + " cancelOrder() requires {'price': 12345, 'qty': 1.2345, 'is_ask': 0} in the params argument.");
|
|
1045
|
-
}
|
|
1046
|
-
await this.loadMarkets();
|
|
1047
|
-
const request = {
|
|
1048
|
-
'order_id': id,
|
|
1049
|
-
'price': price,
|
|
1050
|
-
'qty': qty,
|
|
1051
|
-
'is_ask': isAsk,
|
|
1052
|
-
'currency': this.marketId(symbol),
|
|
1053
|
-
};
|
|
1054
|
-
const response = await this.v2PrivatePostOrderCancel(this.extend(request, params));
|
|
1055
|
-
//
|
|
1056
|
-
// {
|
|
1057
|
-
// "result": "success",
|
|
1058
|
-
// "errorCode": "0"
|
|
1059
|
-
// }
|
|
1060
|
-
//
|
|
1061
|
-
return response;
|
|
1062
|
-
}
|
|
1063
|
-
async fetchDepositAddresses(codes = undefined, params = {}) {
|
|
1064
|
-
/**
|
|
1065
|
-
* @method
|
|
1066
|
-
* @name coinone#fetchDepositAddresses
|
|
1067
|
-
* @description fetch deposit addresses for multiple currencies and chain types
|
|
1068
|
-
* @param {string[]|undefined} codes list of unified currency codes, default is undefined
|
|
1069
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1070
|
-
* @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1071
|
-
*/
|
|
1072
|
-
await this.loadMarkets();
|
|
1073
|
-
const response = await this.v2PrivatePostAccountDepositAddress(params);
|
|
1074
|
-
//
|
|
1075
|
-
// {
|
|
1076
|
-
// "result": "success",
|
|
1077
|
-
// "errorCode": "0",
|
|
1078
|
-
// "walletAddress": {
|
|
1079
|
-
// "matic": null,
|
|
1080
|
-
// "btc": "mnobqu4i6qMCJWDpf5UimRmr8JCvZ8FLcN",
|
|
1081
|
-
// "xrp": null,
|
|
1082
|
-
// "xrp_tag": "-1",
|
|
1083
|
-
// "kava": null,
|
|
1084
|
-
// "kava_memo": null,
|
|
1085
|
-
// }
|
|
1086
|
-
// }
|
|
1087
|
-
//
|
|
1088
|
-
const walletAddress = this.safeValue(response, 'walletAddress', {});
|
|
1089
|
-
const keys = Object.keys(walletAddress);
|
|
1090
|
-
const result = {};
|
|
1091
|
-
for (let i = 0; i < keys.length; i++) {
|
|
1092
|
-
const key = keys[i];
|
|
1093
|
-
const value = walletAddress[key];
|
|
1094
|
-
if ((!value) || (value === '-1')) {
|
|
1095
|
-
continue;
|
|
1096
|
-
}
|
|
1097
|
-
const parts = key.split('_');
|
|
1098
|
-
const currencyId = this.safeValue(parts, 0);
|
|
1099
|
-
const secondPart = this.safeValue(parts, 1);
|
|
1100
|
-
const code = this.safeCurrencyCode(currencyId);
|
|
1101
|
-
let depositAddress = this.safeValue(result, code);
|
|
1102
|
-
if (depositAddress === undefined) {
|
|
1103
|
-
depositAddress = {
|
|
1104
|
-
'currency': code,
|
|
1105
|
-
'address': undefined,
|
|
1106
|
-
'tag': undefined,
|
|
1107
|
-
'info': value,
|
|
1108
|
-
};
|
|
1109
|
-
}
|
|
1110
|
-
const address = this.safeString(depositAddress, 'address', value);
|
|
1111
|
-
this.checkAddress(address);
|
|
1112
|
-
depositAddress['address'] = address;
|
|
1113
|
-
depositAddress['info'] = address;
|
|
1114
|
-
if ((secondPart === 'tag' || secondPart === 'memo')) {
|
|
1115
|
-
depositAddress['tag'] = value;
|
|
1116
|
-
depositAddress['info'] = [address, value];
|
|
1117
|
-
}
|
|
1118
|
-
result[code] = depositAddress;
|
|
1119
|
-
}
|
|
1120
|
-
return result;
|
|
1121
|
-
}
|
|
1122
|
-
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
1123
|
-
const request = this.implodeParams(path, params);
|
|
1124
|
-
const query = this.omit(params, this.extractParams(path));
|
|
1125
|
-
let url = this.urls['api']['rest'] + '/';
|
|
1126
|
-
if (api === 'v2Public') {
|
|
1127
|
-
url = this.urls['api']['v2Public'] + '/';
|
|
1128
|
-
api = 'public';
|
|
1129
|
-
}
|
|
1130
|
-
else if (api === 'v2Private') {
|
|
1131
|
-
url = this.urls['api']['v2Private'] + '/';
|
|
1132
|
-
}
|
|
1133
|
-
else if (api === 'v2_1Private') {
|
|
1134
|
-
url = this.urls['api']['v2_1Private'] + '/';
|
|
1135
|
-
}
|
|
1136
|
-
if (api === 'public') {
|
|
1137
|
-
url += request;
|
|
1138
|
-
if (Object.keys(query).length) {
|
|
1139
|
-
url += '?' + this.urlencode(query);
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
else {
|
|
1143
|
-
this.checkRequiredCredentials();
|
|
1144
|
-
url += request;
|
|
1145
|
-
const nonce = this.nonce().toString();
|
|
1146
|
-
const json = this.json(this.extend({
|
|
1147
|
-
'access_token': this.apiKey,
|
|
1148
|
-
'nonce': nonce,
|
|
1149
|
-
}, params));
|
|
1150
|
-
const payload = this.stringToBase64(json);
|
|
1151
|
-
body = payload;
|
|
1152
|
-
const secret = this.secret.toUpperCase();
|
|
1153
|
-
const signature = this.hmac(this.encode(payload), this.encode(secret), sha512.sha512);
|
|
1154
|
-
headers = {
|
|
1155
|
-
'Content-Type': 'application/json',
|
|
1156
|
-
'X-COINONE-PAYLOAD': payload,
|
|
1157
|
-
'X-COINONE-SIGNATURE': signature,
|
|
1158
|
-
};
|
|
1159
|
-
}
|
|
1160
|
-
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
1161
|
-
}
|
|
1162
|
-
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
1163
|
-
if (response === undefined) {
|
|
1164
|
-
return undefined;
|
|
1165
|
-
}
|
|
1166
|
-
if ('result' in response) {
|
|
1167
|
-
const result = response['result'];
|
|
1168
|
-
if (result !== 'success') {
|
|
1169
|
-
//
|
|
1170
|
-
// { "errorCode": "405", "status": "maintenance", "result": "error"}
|
|
1171
|
-
//
|
|
1172
|
-
const errorCode = this.safeString(response, 'errorCode');
|
|
1173
|
-
const feedback = this.id + ' ' + body;
|
|
1174
|
-
this.throwExactlyMatchedException(this.exceptions, errorCode, feedback);
|
|
1175
|
-
throw new errors.ExchangeError(feedback);
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
else {
|
|
1179
|
-
throw new errors.ExchangeError(this.id + ' ' + body);
|
|
1180
|
-
}
|
|
1181
|
-
return undefined;
|
|
1182
|
-
}
|
|
1183
|
-
}
|
|
1184
|
-
|
|
1185
|
-
module.exports = coinone;
|