ccxt 4.2.11 → 4.2.13
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 +5 -5
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +1347 -490
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/_virtual/agent.js +7 -0
- package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
- package/dist/cjs/_virtual/promisify.js +7 -0
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +474 -0
- package/dist/cjs/js/src/abstract/ace.js +9 -0
- package/dist/cjs/js/src/abstract/alpaca.js +9 -0
- package/dist/cjs/js/src/abstract/ascendex.js +9 -0
- package/dist/cjs/js/src/abstract/bigone.js +9 -0
- package/dist/cjs/js/src/abstract/binance.js +9 -0
- package/dist/cjs/js/src/abstract/bingx.js +9 -0
- package/dist/cjs/js/src/abstract/bit2c.js +9 -0
- package/dist/cjs/js/src/abstract/bitbank.js +9 -0
- package/dist/cjs/js/src/abstract/bitbns.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
- package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
- package/dist/cjs/js/src/abstract/bitforex.js +9 -0
- package/dist/cjs/js/src/abstract/bitget.js +9 -0
- package/dist/cjs/js/src/abstract/bithumb.js +9 -0
- package/dist/cjs/js/src/abstract/bitmart.js +9 -0
- package/dist/cjs/js/src/abstract/bitmex.js +9 -0
- package/dist/cjs/js/src/abstract/bitopro.js +9 -0
- package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
- package/dist/cjs/js/src/abstract/bitrue.js +9 -0
- package/dist/cjs/js/src/abstract/bitso.js +9 -0
- package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
- package/dist/cjs/js/src/abstract/bitteam.js +9 -0
- package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
- package/dist/cjs/js/src/abstract/bl3p.js +9 -0
- package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
- package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
- package/dist/cjs/js/src/abstract/btcbox.js +9 -0
- package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
- package/dist/cjs/js/src/abstract/btcturk.js +9 -0
- package/dist/cjs/js/src/abstract/bybit.js +9 -0
- package/dist/cjs/js/src/abstract/cex.js +9 -0
- package/dist/cjs/js/src/abstract/coinbase.js +9 -0
- package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
- package/dist/cjs/js/src/abstract/coincheck.js +9 -0
- package/dist/cjs/js/src/abstract/coinex.js +9 -0
- package/dist/cjs/js/src/abstract/coinlist.js +9 -0
- package/dist/cjs/js/src/abstract/coinmate.js +9 -0
- package/dist/cjs/js/src/abstract/coinone.js +9 -0
- package/dist/cjs/js/src/abstract/coinsph.js +9 -0
- package/dist/cjs/js/src/abstract/coinspot.js +9 -0
- package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
- package/dist/cjs/js/src/abstract/currencycom.js +9 -0
- package/dist/cjs/js/src/abstract/delta.js +9 -0
- package/dist/cjs/js/src/abstract/deribit.js +9 -0
- package/dist/cjs/js/src/abstract/digifinex.js +9 -0
- package/dist/cjs/js/src/abstract/exmo.js +9 -0
- package/dist/cjs/js/src/abstract/gate.js +9 -0
- package/dist/cjs/js/src/abstract/gemini.js +9 -0
- package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
- package/dist/cjs/js/src/abstract/hollaex.js +9 -0
- package/dist/cjs/js/src/abstract/htx.js +9 -0
- package/dist/cjs/js/src/abstract/huobijp.js +9 -0
- package/dist/cjs/js/src/abstract/idex.js +9 -0
- package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
- package/dist/cjs/js/src/abstract/indodax.js +9 -0
- package/dist/cjs/js/src/abstract/kraken.js +9 -0
- package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kucoin.js +9 -0
- package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kuna.js +9 -0
- package/dist/cjs/js/src/abstract/latoken.js +9 -0
- package/dist/cjs/js/src/abstract/lbank.js +9 -0
- package/dist/cjs/js/src/abstract/luno.js +9 -0
- package/dist/cjs/js/src/abstract/lykke.js +9 -0
- package/dist/cjs/js/src/abstract/mercado.js +9 -0
- package/dist/cjs/js/src/abstract/mexc.js +9 -0
- package/dist/cjs/js/src/abstract/ndax.js +9 -0
- package/dist/cjs/js/src/abstract/novadax.js +9 -0
- package/dist/cjs/js/src/abstract/oceanex.js +9 -0
- package/dist/cjs/js/src/abstract/okcoin.js +9 -0
- package/dist/cjs/js/src/abstract/okx.js +9 -0
- package/dist/cjs/js/src/abstract/p2b.js +9 -0
- package/dist/cjs/js/src/abstract/paymium.js +9 -0
- package/dist/cjs/js/src/abstract/phemex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
- package/dist/cjs/js/src/abstract/probit.js +9 -0
- package/dist/cjs/js/src/abstract/timex.js +9 -0
- package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
- package/dist/cjs/js/src/abstract/upbit.js +9 -0
- package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
- package/dist/cjs/js/src/abstract/wazirx.js +9 -0
- package/dist/cjs/js/src/abstract/whitebit.js +9 -0
- package/dist/cjs/js/src/abstract/woo.js +9 -0
- package/dist/cjs/js/src/abstract/yobit.js +9 -0
- package/dist/cjs/js/src/abstract/zaif.js +9 -0
- package/dist/cjs/js/src/abstract/zonda.js +9 -0
- package/dist/cjs/js/src/ace.js +1058 -0
- package/dist/cjs/js/src/alpaca.js +1125 -0
- package/dist/cjs/js/src/ascendex.js +3360 -0
- package/dist/cjs/js/src/base/Exchange.js +5110 -0
- package/dist/cjs/js/src/base/Precise.js +263 -0
- package/dist/cjs/js/src/base/errors.js +299 -0
- package/dist/cjs/js/src/base/functions/crypto.js +78 -0
- package/dist/cjs/js/src/base/functions/encode.js +44 -0
- package/dist/cjs/js/src/base/functions/generic.js +193 -0
- package/dist/cjs/js/src/base/functions/misc.js +96 -0
- package/dist/cjs/js/src/base/functions/number.js +297 -0
- package/dist/cjs/js/src/base/functions/platform.js +28 -0
- package/dist/cjs/js/src/base/functions/rsa.js +34 -0
- package/dist/cjs/js/src/base/functions/string.js +48 -0
- package/dist/cjs/js/src/base/functions/throttle.js +66 -0
- package/dist/cjs/js/src/base/functions/time.js +187 -0
- package/dist/cjs/js/src/base/functions/totp.js +24 -0
- package/dist/cjs/js/src/base/functions/type.js +162 -0
- package/dist/cjs/js/src/base/functions.js +157 -0
- package/dist/cjs/js/src/base/ws/Cache.js +254 -0
- package/dist/cjs/js/src/base/ws/Client.js +299 -0
- package/dist/cjs/js/src/base/ws/Future.js +34 -0
- package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
- package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
- package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
- package/dist/cjs/js/src/bequant.js +33 -0
- package/dist/cjs/js/src/bigone.js +2209 -0
- package/dist/cjs/js/src/binance.js +9736 -0
- package/dist/cjs/js/src/binancecoinm.js +45 -0
- package/dist/cjs/js/src/binanceus.js +84 -0
- package/dist/cjs/js/src/binanceusdm.js +58 -0
- package/dist/cjs/js/src/bingx.js +3807 -0
- package/dist/cjs/js/src/bit2c.js +916 -0
- package/dist/cjs/js/src/bitbank.js +1000 -0
- package/dist/cjs/js/src/bitbay.js +17 -0
- package/dist/cjs/js/src/bitbns.js +1220 -0
- package/dist/cjs/js/src/bitcoincom.js +17 -0
- package/dist/cjs/js/src/bitfinex.js +1670 -0
- package/dist/cjs/js/src/bitfinex2.js +2990 -0
- package/dist/cjs/js/src/bitflyer.js +1045 -0
- package/dist/cjs/js/src/bitforex.js +852 -0
- package/dist/cjs/js/src/bitget.js +8291 -0
- package/dist/cjs/js/src/bithumb.js +1090 -0
- package/dist/cjs/js/src/bitmart.js +4454 -0
- package/dist/cjs/js/src/bitmex.js +2884 -0
- package/dist/cjs/js/src/bitopro.js +1724 -0
- package/dist/cjs/js/src/bitpanda.js +2002 -0
- package/dist/cjs/js/src/bitrue.js +3253 -0
- package/dist/cjs/js/src/bitso.js +1753 -0
- package/dist/cjs/js/src/bitstamp.js +2188 -0
- package/dist/cjs/js/src/bitteam.js +2309 -0
- package/dist/cjs/js/src/bitvavo.js +1968 -0
- package/dist/cjs/js/src/bl3p.js +447 -0
- package/dist/cjs/js/src/blockchaincom.js +1160 -0
- package/dist/cjs/js/src/btcalpha.js +929 -0
- package/dist/cjs/js/src/btcbox.js +565 -0
- package/dist/cjs/js/src/btcmarkets.js +1237 -0
- package/dist/cjs/js/src/btcturk.js +929 -0
- package/dist/cjs/js/src/bybit.js +7646 -0
- package/dist/cjs/js/src/cex.js +1693 -0
- package/dist/cjs/js/src/coinbase.js +3424 -0
- package/dist/cjs/js/src/coinbasepro.js +1866 -0
- package/dist/cjs/js/src/coincheck.js +843 -0
- package/dist/cjs/js/src/coinex.js +5414 -0
- package/dist/cjs/js/src/coinlist.js +2329 -0
- package/dist/cjs/js/src/coinmate.js +989 -0
- package/dist/cjs/js/src/coinone.js +1185 -0
- package/dist/cjs/js/src/coinsph.js +1933 -0
- package/dist/cjs/js/src/coinspot.js +548 -0
- package/dist/cjs/js/src/cryptocom.js +3007 -0
- package/dist/cjs/js/src/currencycom.js +2015 -0
- package/dist/cjs/js/src/delta.js +3256 -0
- package/dist/cjs/js/src/deribit.js +3306 -0
- package/dist/cjs/js/src/digifinex.js +4307 -0
- package/dist/cjs/js/src/exmo.js +2645 -0
- package/dist/cjs/js/src/fmfwio.js +34 -0
- package/dist/cjs/js/src/gate.js +7072 -0
- package/dist/cjs/js/src/gateio.js +16 -0
- package/dist/cjs/js/src/gemini.js +1801 -0
- package/dist/cjs/js/src/hitbtc.js +3660 -0
- package/dist/cjs/js/src/hitbtc3.js +19 -0
- package/dist/cjs/js/src/hollaex.js +1882 -0
- package/dist/cjs/js/src/htx.js +9049 -0
- package/dist/cjs/js/src/huobi.js +16 -0
- package/dist/cjs/js/src/huobijp.js +1918 -0
- package/dist/cjs/js/src/idex.js +1770 -0
- package/dist/cjs/js/src/independentreserve.js +761 -0
- package/dist/cjs/js/src/indodax.js +1069 -0
- package/dist/cjs/js/src/kraken.js +2857 -0
- package/dist/cjs/js/src/krakenfutures.js +2407 -0
- package/dist/cjs/js/src/kucoin.js +4489 -0
- package/dist/cjs/js/src/kucoinfutures.js +2475 -0
- package/dist/cjs/js/src/kuna.js +1949 -0
- package/dist/cjs/js/src/latoken.js +1729 -0
- package/dist/cjs/js/src/lbank.js +2851 -0
- package/dist/cjs/js/src/luno.js +1044 -0
- package/dist/cjs/js/src/lykke.js +1303 -0
- package/dist/cjs/js/src/mercado.js +897 -0
- package/dist/cjs/js/src/mexc.js +5407 -0
- package/dist/cjs/js/src/ndax.js +2450 -0
- package/dist/cjs/js/src/novadax.js +1556 -0
- package/dist/cjs/js/src/oceanex.js +964 -0
- package/dist/cjs/js/src/okcoin.js +3115 -0
- package/dist/cjs/js/src/okx.js +7330 -0
- package/dist/cjs/js/src/p2b.js +1243 -0
- package/dist/cjs/js/src/paymium.js +597 -0
- package/dist/cjs/js/src/phemex.js +4722 -0
- package/dist/cjs/js/src/poloniex.js +2356 -0
- package/dist/cjs/js/src/poloniexfutures.js +1794 -0
- package/dist/cjs/js/src/pro/alpaca.js +714 -0
- package/dist/cjs/js/src/pro/ascendex.js +957 -0
- package/dist/cjs/js/src/pro/bequant.js +33 -0
- package/dist/cjs/js/src/pro/binance.js +2796 -0
- package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
- package/dist/cjs/js/src/pro/binanceus.js +51 -0
- package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
- package/dist/cjs/js/src/pro/bingx.js +944 -0
- package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
- package/dist/cjs/js/src/pro/bitfinex.js +672 -0
- package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
- package/dist/cjs/js/src/pro/bitget.js +1733 -0
- package/dist/cjs/js/src/pro/bitmart.js +1486 -0
- package/dist/cjs/js/src/pro/bitmex.js +1576 -0
- package/dist/cjs/js/src/pro/bitopro.js +327 -0
- package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
- package/dist/cjs/js/src/pro/bitrue.js +462 -0
- package/dist/cjs/js/src/pro/bitstamp.js +547 -0
- package/dist/cjs/js/src/pro/bitvavo.js +704 -0
- package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
- package/dist/cjs/js/src/pro/bybit.js +1843 -0
- package/dist/cjs/js/src/pro/cex.js +1510 -0
- package/dist/cjs/js/src/pro/coinbase.js +561 -0
- package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
- package/dist/cjs/js/src/pro/coinex.js +1095 -0
- package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
- package/dist/cjs/js/src/pro/currencycom.js +563 -0
- package/dist/cjs/js/src/pro/deribit.js +825 -0
- package/dist/cjs/js/src/pro/exmo.js +658 -0
- package/dist/cjs/js/src/pro/gate.js +1316 -0
- package/dist/cjs/js/src/pro/gateio.js +16 -0
- package/dist/cjs/js/src/pro/gemini.js +649 -0
- package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
- package/dist/cjs/js/src/pro/hollaex.js +597 -0
- package/dist/cjs/js/src/pro/htx.js +2383 -0
- package/dist/cjs/js/src/pro/huobi.js +16 -0
- package/dist/cjs/js/src/pro/huobijp.js +606 -0
- package/dist/cjs/js/src/pro/idex.js +714 -0
- package/dist/cjs/js/src/pro/independentreserve.js +280 -0
- package/dist/cjs/js/src/pro/kraken.js +1364 -0
- package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
- package/dist/cjs/js/src/pro/kucoin.js +1052 -0
- package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
- package/dist/cjs/js/src/pro/luno.js +322 -0
- package/dist/cjs/js/src/pro/mexc.js +1170 -0
- package/dist/cjs/js/src/pro/ndax.js +545 -0
- package/dist/cjs/js/src/pro/okcoin.js +760 -0
- package/dist/cjs/js/src/pro/okx.js +1608 -0
- package/dist/cjs/js/src/pro/phemex.js +1511 -0
- package/dist/cjs/js/src/pro/poloniex.js +1253 -0
- package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
- package/dist/cjs/js/src/pro/probit.js +586 -0
- package/dist/cjs/js/src/pro/upbit.js +234 -0
- package/dist/cjs/js/src/pro/wazirx.js +776 -0
- package/dist/cjs/js/src/pro/whitebit.js +927 -0
- package/dist/cjs/js/src/pro/woo.js +769 -0
- package/dist/cjs/js/src/probit.js +1867 -0
- package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
- package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
- package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
- package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
- package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
- package/dist/cjs/js/src/timex.js +1562 -0
- package/dist/cjs/js/src/tokocrypto.js +2542 -0
- package/dist/cjs/js/src/upbit.js +1844 -0
- package/dist/cjs/js/src/wavesexchange.js +2607 -0
- package/dist/cjs/js/src/wazirx.js +953 -0
- package/dist/cjs/js/src/whitebit.js +2309 -0
- package/dist/cjs/js/src/woo.js +2765 -0
- package/dist/cjs/js/src/yobit.js +1314 -0
- package/dist/cjs/js/src/zaif.js +736 -0
- package/dist/cjs/js/src/zonda.js +1883 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bigone.d.ts +18 -0
- package/js/src/abstract/binance.d.ts +2 -0
- package/js/src/abstract/binancecoinm.d.ts +2 -0
- package/js/src/abstract/binanceus.d.ts +2 -0
- package/js/src/abstract/binanceusdm.d.ts +2 -0
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/bybit.d.ts +1 -0
- package/js/src/abstract/gate.d.ts +11 -0
- package/js/src/abstract/gateio.d.ts +11 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/alpaca.js +18 -18
- package/js/src/base/Exchange.d.ts +5 -1
- package/js/src/base/Exchange.js +101 -12
- package/js/src/bigone.d.ts +3 -2
- package/js/src/bigone.js +429 -167
- package/js/src/binance.js +48 -34
- package/js/src/bingx.js +115 -38
- package/js/src/bitfinex.d.ts +2 -2
- package/js/src/bitfinex.js +2 -3
- package/js/src/bitget.js +33 -13
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +5 -5
- package/js/src/bitmex.js +1 -0
- package/js/src/bybit.js +2 -0
- package/js/src/coinbase.d.ts +26 -3
- package/js/src/coinbase.js +176 -26
- package/js/src/coinlist.js +3 -4
- package/js/src/coinone.js +1 -1
- package/js/src/coinsph.js +2 -3
- package/js/src/deribit.js +1 -0
- package/js/src/gate.d.ts +4 -4
- package/js/src/gate.js +96 -59
- package/js/src/gemini.js +1 -1
- package/js/src/hitbtc.d.ts +4 -4
- package/js/src/hitbtc.js +2 -3
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +29 -7
- package/js/src/huobijp.js +2 -3
- package/js/src/independentreserve.js +7 -5
- package/js/src/kraken.js +3 -6
- package/js/src/lbank.js +59 -33
- package/js/src/mexc.js +2 -1
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +14 -3
- package/js/src/phemex.js +9 -2
- package/js/src/pro/binance.d.ts +2 -23
- package/js/src/pro/binance.js +58 -22
- package/js/src/pro/coinbase.d.ts +2 -2
- package/js/src/pro/coinbase.js +4 -1
- package/js/src/pro/coinbasepro.d.ts +2 -2
- package/js/src/pro/hitbtc.d.ts +2 -2
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +52 -2
- package/js/src/pro/poloniex.d.ts +2 -2
- package/js/src/probit.js +4 -2
- package/js/src/upbit.d.ts +3 -101
- package/js/src/upbit.js +12 -12
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +52 -0
- package/package.json +1 -1
- package/skip-tests.json +5 -0
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var paymium$1 = require('./abstract/paymium.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 sha256 = require('./static_dependencies/noble-hashes/sha256.js');
|
|
8
|
+
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* @class paymium
|
|
13
|
+
* @augments Exchange
|
|
14
|
+
*/
|
|
15
|
+
class paymium extends paymium$1 {
|
|
16
|
+
describe() {
|
|
17
|
+
return this.deepExtend(super.describe(), {
|
|
18
|
+
'id': 'paymium',
|
|
19
|
+
'name': 'Paymium',
|
|
20
|
+
'countries': ['FR', 'EU'],
|
|
21
|
+
'rateLimit': 2000,
|
|
22
|
+
'version': 'v1',
|
|
23
|
+
'has': {
|
|
24
|
+
'CORS': true,
|
|
25
|
+
'spot': true,
|
|
26
|
+
'margin': undefined,
|
|
27
|
+
'swap': false,
|
|
28
|
+
'future': false,
|
|
29
|
+
'option': false,
|
|
30
|
+
'cancelOrder': true,
|
|
31
|
+
'createDepositAddress': true,
|
|
32
|
+
'createOrder': true,
|
|
33
|
+
'fetchBalance': true,
|
|
34
|
+
'fetchDepositAddress': true,
|
|
35
|
+
'fetchDepositAddresses': true,
|
|
36
|
+
'fetchFundingHistory': false,
|
|
37
|
+
'fetchFundingRate': false,
|
|
38
|
+
'fetchFundingRateHistory': false,
|
|
39
|
+
'fetchFundingRates': false,
|
|
40
|
+
'fetchIndexOHLCV': false,
|
|
41
|
+
'fetchMarkOHLCV': false,
|
|
42
|
+
'fetchOpenInterestHistory': false,
|
|
43
|
+
'fetchOrderBook': true,
|
|
44
|
+
'fetchPremiumIndexOHLCV': false,
|
|
45
|
+
'fetchTicker': true,
|
|
46
|
+
'fetchTrades': true,
|
|
47
|
+
'fetchTradingFee': false,
|
|
48
|
+
'fetchTradingFees': false,
|
|
49
|
+
'transfer': true,
|
|
50
|
+
},
|
|
51
|
+
'urls': {
|
|
52
|
+
'logo': 'https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg',
|
|
53
|
+
'api': {
|
|
54
|
+
'rest': 'https://paymium.com/api',
|
|
55
|
+
},
|
|
56
|
+
'www': 'https://www.paymium.com',
|
|
57
|
+
'fees': 'https://www.paymium.com/page/help/fees',
|
|
58
|
+
'doc': [
|
|
59
|
+
'https://github.com/Paymium/api-documentation',
|
|
60
|
+
'https://www.paymium.com/page/developers',
|
|
61
|
+
'https://paymium.github.io/api-documentation/',
|
|
62
|
+
],
|
|
63
|
+
'referral': 'https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj',
|
|
64
|
+
},
|
|
65
|
+
'api': {
|
|
66
|
+
'public': {
|
|
67
|
+
'get': [
|
|
68
|
+
'countries',
|
|
69
|
+
'currencies',
|
|
70
|
+
'data/{currency}/ticker',
|
|
71
|
+
'data/{currency}/trades',
|
|
72
|
+
'data/{currency}/depth',
|
|
73
|
+
'bitcoin_charts/{id}/trades',
|
|
74
|
+
'bitcoin_charts/{id}/depth',
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
'private': {
|
|
78
|
+
'get': [
|
|
79
|
+
'user',
|
|
80
|
+
'user/addresses',
|
|
81
|
+
'user/addresses/{address}',
|
|
82
|
+
'user/orders',
|
|
83
|
+
'user/orders/{uuid}',
|
|
84
|
+
'user/price_alerts',
|
|
85
|
+
'merchant/get_payment/{uuid}',
|
|
86
|
+
],
|
|
87
|
+
'post': [
|
|
88
|
+
'user/addresses',
|
|
89
|
+
'user/orders',
|
|
90
|
+
'user/withdrawals',
|
|
91
|
+
'user/email_transfers',
|
|
92
|
+
'user/payment_requests',
|
|
93
|
+
'user/price_alerts',
|
|
94
|
+
'merchant/create_payment',
|
|
95
|
+
],
|
|
96
|
+
'delete': [
|
|
97
|
+
'user/orders/{uuid}',
|
|
98
|
+
'user/orders/{uuid}/cancel',
|
|
99
|
+
'user/price_alerts/{id}',
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
'markets': {
|
|
104
|
+
'BTC/EUR': this.safeMarketStructure({ 'id': 'eur', 'symbol': 'BTC/EUR', 'base': 'BTC', 'quote': 'EUR', 'baseId': 'btc', 'quoteId': 'eur', 'type': 'spot', 'spot': true }),
|
|
105
|
+
},
|
|
106
|
+
'fees': {
|
|
107
|
+
'trading': {
|
|
108
|
+
'maker': this.parseNumber('-0.001'),
|
|
109
|
+
'taker': this.parseNumber('0.005'),
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
'precisionMode': number.TICK_SIZE,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
parseBalance(response) {
|
|
116
|
+
const result = { 'info': response };
|
|
117
|
+
const currencies = Object.keys(this.currencies);
|
|
118
|
+
for (let i = 0; i < currencies.length; i++) {
|
|
119
|
+
const code = currencies[i];
|
|
120
|
+
const currency = this.currency(code);
|
|
121
|
+
const currencyId = currency['id'];
|
|
122
|
+
const free = 'balance_' + currencyId;
|
|
123
|
+
if (free in response) {
|
|
124
|
+
const account = this.account();
|
|
125
|
+
const used = 'locked_' + currencyId;
|
|
126
|
+
account['free'] = this.safeString(response, free);
|
|
127
|
+
account['used'] = this.safeString(response, used);
|
|
128
|
+
result[code] = account;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return this.safeBalance(result);
|
|
132
|
+
}
|
|
133
|
+
async fetchBalance(params = {}) {
|
|
134
|
+
/**
|
|
135
|
+
* @method
|
|
136
|
+
* @name paymium#fetchBalance
|
|
137
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
138
|
+
* @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user/get
|
|
139
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
140
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
141
|
+
*/
|
|
142
|
+
await this.loadMarkets();
|
|
143
|
+
const response = await this.privateGetUser(params);
|
|
144
|
+
return this.parseBalance(response);
|
|
145
|
+
}
|
|
146
|
+
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
147
|
+
/**
|
|
148
|
+
* @method
|
|
149
|
+
* @name paymium#fetchOrderBook
|
|
150
|
+
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
151
|
+
* @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1depth/get
|
|
152
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
153
|
+
* @param {int} [limit] the maximum amount of order book entries to return
|
|
154
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
155
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
156
|
+
*/
|
|
157
|
+
await this.loadMarkets();
|
|
158
|
+
const market = this.market(symbol);
|
|
159
|
+
const request = {
|
|
160
|
+
'currency': market['id'],
|
|
161
|
+
};
|
|
162
|
+
const response = await this.publicGetDataCurrencyDepth(this.extend(request, params));
|
|
163
|
+
return this.parseOrderBook(response, market['symbol'], undefined, 'bids', 'asks', 'price', 'amount');
|
|
164
|
+
}
|
|
165
|
+
parseTicker(ticker, market = undefined) {
|
|
166
|
+
//
|
|
167
|
+
// {
|
|
168
|
+
// "high":"33740.82",
|
|
169
|
+
// "low":"32185.15",
|
|
170
|
+
// "volume":"4.7890433",
|
|
171
|
+
// "bid":"33313.53",
|
|
172
|
+
// "ask":"33497.97",
|
|
173
|
+
// "midpoint":"33405.75",
|
|
174
|
+
// "vwap":"32802.5263553",
|
|
175
|
+
// "at":1643381654,
|
|
176
|
+
// "price":"33143.91",
|
|
177
|
+
// "open":"33116.86",
|
|
178
|
+
// "variation":"0.0817",
|
|
179
|
+
// "currency":"EUR",
|
|
180
|
+
// "trade_id":"ce2f5152-3ac5-412d-9b24-9fa72338474c",
|
|
181
|
+
// "size":"0.00041087"
|
|
182
|
+
// }
|
|
183
|
+
//
|
|
184
|
+
const symbol = this.safeSymbol(undefined, market);
|
|
185
|
+
const timestamp = this.safeTimestamp(ticker, 'at');
|
|
186
|
+
const vwap = this.safeString(ticker, 'vwap');
|
|
187
|
+
const baseVolume = this.safeString(ticker, 'volume');
|
|
188
|
+
const quoteVolume = Precise["default"].stringMul(baseVolume, vwap);
|
|
189
|
+
const last = this.safeString(ticker, 'price');
|
|
190
|
+
return this.safeTicker({
|
|
191
|
+
'symbol': symbol,
|
|
192
|
+
'timestamp': timestamp,
|
|
193
|
+
'datetime': this.iso8601(timestamp),
|
|
194
|
+
'high': this.safeString(ticker, 'high'),
|
|
195
|
+
'low': this.safeString(ticker, 'low'),
|
|
196
|
+
'bid': this.safeString(ticker, 'bid'),
|
|
197
|
+
'bidVolume': undefined,
|
|
198
|
+
'ask': this.safeString(ticker, 'ask'),
|
|
199
|
+
'askVolume': undefined,
|
|
200
|
+
'vwap': vwap,
|
|
201
|
+
'open': this.safeString(ticker, 'open'),
|
|
202
|
+
'close': last,
|
|
203
|
+
'last': last,
|
|
204
|
+
'previousClose': undefined,
|
|
205
|
+
'change': undefined,
|
|
206
|
+
'percentage': this.safeString(ticker, 'variation'),
|
|
207
|
+
'average': undefined,
|
|
208
|
+
'baseVolume': baseVolume,
|
|
209
|
+
'quoteVolume': quoteVolume,
|
|
210
|
+
'info': ticker,
|
|
211
|
+
}, market);
|
|
212
|
+
}
|
|
213
|
+
async fetchTicker(symbol, params = {}) {
|
|
214
|
+
/**
|
|
215
|
+
* @method
|
|
216
|
+
* @name paymium#fetchTicker
|
|
217
|
+
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
218
|
+
* @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1ticker/get
|
|
219
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
220
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
221
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
222
|
+
*/
|
|
223
|
+
await this.loadMarkets();
|
|
224
|
+
const market = this.market(symbol);
|
|
225
|
+
const request = {
|
|
226
|
+
'currency': market['id'],
|
|
227
|
+
};
|
|
228
|
+
const ticker = await this.publicGetDataCurrencyTicker(this.extend(request, params));
|
|
229
|
+
//
|
|
230
|
+
// {
|
|
231
|
+
// "high":"33740.82",
|
|
232
|
+
// "low":"32185.15",
|
|
233
|
+
// "volume":"4.7890433",
|
|
234
|
+
// "bid":"33313.53",
|
|
235
|
+
// "ask":"33497.97",
|
|
236
|
+
// "midpoint":"33405.75",
|
|
237
|
+
// "vwap":"32802.5263553",
|
|
238
|
+
// "at":1643381654,
|
|
239
|
+
// "price":"33143.91",
|
|
240
|
+
// "open":"33116.86",
|
|
241
|
+
// "variation":"0.0817",
|
|
242
|
+
// "currency":"EUR",
|
|
243
|
+
// "trade_id":"ce2f5152-3ac5-412d-9b24-9fa72338474c",
|
|
244
|
+
// "size":"0.00041087"
|
|
245
|
+
// }
|
|
246
|
+
//
|
|
247
|
+
return this.parseTicker(ticker, market);
|
|
248
|
+
}
|
|
249
|
+
parseTrade(trade, market = undefined) {
|
|
250
|
+
const timestamp = this.safeTimestamp(trade, 'created_at_int');
|
|
251
|
+
const id = this.safeString(trade, 'uuid');
|
|
252
|
+
market = this.safeMarket(undefined, market);
|
|
253
|
+
const side = this.safeString(trade, 'side');
|
|
254
|
+
const price = this.safeString(trade, 'price');
|
|
255
|
+
const amountField = 'traded_' + market['base'].toLowerCase();
|
|
256
|
+
const amount = this.safeString(trade, amountField);
|
|
257
|
+
return this.safeTrade({
|
|
258
|
+
'info': trade,
|
|
259
|
+
'id': id,
|
|
260
|
+
'order': undefined,
|
|
261
|
+
'timestamp': timestamp,
|
|
262
|
+
'datetime': this.iso8601(timestamp),
|
|
263
|
+
'symbol': market['symbol'],
|
|
264
|
+
'type': undefined,
|
|
265
|
+
'side': side,
|
|
266
|
+
'takerOrMaker': undefined,
|
|
267
|
+
'price': price,
|
|
268
|
+
'amount': amount,
|
|
269
|
+
'cost': undefined,
|
|
270
|
+
'fee': undefined,
|
|
271
|
+
}, market);
|
|
272
|
+
}
|
|
273
|
+
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
274
|
+
/**
|
|
275
|
+
* @method
|
|
276
|
+
* @name paymium#fetchTrades
|
|
277
|
+
* @description get the list of most recent trades for a particular symbol
|
|
278
|
+
* @see https://paymium.github.io/api-documentation/#tag/Public-data/paths/~1data~1%7Bcurrency%7D~1trades/get
|
|
279
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
280
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
281
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
282
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
284
|
+
*/
|
|
285
|
+
await this.loadMarkets();
|
|
286
|
+
const market = this.market(symbol);
|
|
287
|
+
const request = {
|
|
288
|
+
'currency': market['id'],
|
|
289
|
+
};
|
|
290
|
+
const response = await this.publicGetDataCurrencyTrades(this.extend(request, params));
|
|
291
|
+
return this.parseTrades(response, market, since, limit);
|
|
292
|
+
}
|
|
293
|
+
async createDepositAddress(code, params = {}) {
|
|
294
|
+
/**
|
|
295
|
+
* @method
|
|
296
|
+
* @name paymium#createDepositAddress
|
|
297
|
+
* @description create a currency deposit address
|
|
298
|
+
* @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses/post
|
|
299
|
+
* @param {string} code unified currency code of the currency for the deposit address
|
|
300
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
301
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
302
|
+
*/
|
|
303
|
+
await this.loadMarkets();
|
|
304
|
+
const response = await this.privatePostUserAddresses(params);
|
|
305
|
+
//
|
|
306
|
+
// {
|
|
307
|
+
// "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
|
|
308
|
+
// "valid_until": 1620041926,
|
|
309
|
+
// "currency": "BTC",
|
|
310
|
+
// "label": "Savings"
|
|
311
|
+
// }
|
|
312
|
+
//
|
|
313
|
+
return this.parseDepositAddress(response);
|
|
314
|
+
}
|
|
315
|
+
async fetchDepositAddress(code, params = {}) {
|
|
316
|
+
/**
|
|
317
|
+
* @method
|
|
318
|
+
* @name paymium#fetchDepositAddress
|
|
319
|
+
* @description fetch the deposit address for a currency associated with this account
|
|
320
|
+
* @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses~1%7Baddress%7D/get
|
|
321
|
+
* @param {string} code unified currency code
|
|
322
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
323
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
324
|
+
*/
|
|
325
|
+
await this.loadMarkets();
|
|
326
|
+
const request = {
|
|
327
|
+
'address': code,
|
|
328
|
+
};
|
|
329
|
+
const response = await this.privateGetUserAddressesAddress(this.extend(request, params));
|
|
330
|
+
//
|
|
331
|
+
// {
|
|
332
|
+
// "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
|
|
333
|
+
// "valid_until": 1620041926,
|
|
334
|
+
// "currency": "BTC",
|
|
335
|
+
// "label": "Savings"
|
|
336
|
+
// }
|
|
337
|
+
//
|
|
338
|
+
return this.parseDepositAddress(response);
|
|
339
|
+
}
|
|
340
|
+
async fetchDepositAddresses(codes = undefined, params = {}) {
|
|
341
|
+
/**
|
|
342
|
+
* @method
|
|
343
|
+
* @name paymium#fetchDepositAddresses
|
|
344
|
+
* @description fetch deposit addresses for multiple currencies and chain types
|
|
345
|
+
* @see https://paymium.github.io/api-documentation/#tag/User/paths/~1user~1addresses/get
|
|
346
|
+
* @param {string[]|undefined} codes list of unified currency codes, default is undefined
|
|
347
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
348
|
+
* @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
349
|
+
*/
|
|
350
|
+
await this.loadMarkets();
|
|
351
|
+
const response = await this.privateGetUserAddresses(params);
|
|
352
|
+
//
|
|
353
|
+
// [
|
|
354
|
+
// {
|
|
355
|
+
// "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
|
|
356
|
+
// "valid_until": 1620041926,
|
|
357
|
+
// "currency": "BTC",
|
|
358
|
+
// "label": "Savings"
|
|
359
|
+
// }
|
|
360
|
+
// ]
|
|
361
|
+
//
|
|
362
|
+
return this.parseDepositAddresses(response, codes);
|
|
363
|
+
}
|
|
364
|
+
parseDepositAddress(depositAddress, currency = undefined) {
|
|
365
|
+
//
|
|
366
|
+
// {
|
|
367
|
+
// "address": "1HdjGr6WCTcnmW1tNNsHX7fh4Jr5C2PeKe",
|
|
368
|
+
// "valid_until": 1620041926,
|
|
369
|
+
// "currency": "BTC",
|
|
370
|
+
// "label": "Savings"
|
|
371
|
+
// }
|
|
372
|
+
//
|
|
373
|
+
const address = this.safeString(depositAddress, 'address');
|
|
374
|
+
const currencyId = this.safeString(depositAddress, 'currency');
|
|
375
|
+
return {
|
|
376
|
+
'info': depositAddress,
|
|
377
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
378
|
+
'address': address,
|
|
379
|
+
'tag': undefined,
|
|
380
|
+
'network': undefined,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
384
|
+
/**
|
|
385
|
+
* @method
|
|
386
|
+
* @name paymium#createOrder
|
|
387
|
+
* @description create a trade order
|
|
388
|
+
* @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders/post
|
|
389
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
390
|
+
* @param {string} type 'market' or 'limit'
|
|
391
|
+
* @param {string} side 'buy' or 'sell'
|
|
392
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
393
|
+
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
394
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
395
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
396
|
+
*/
|
|
397
|
+
await this.loadMarkets();
|
|
398
|
+
const market = this.market(symbol);
|
|
399
|
+
const request = {
|
|
400
|
+
'type': this.capitalize(type) + 'Order',
|
|
401
|
+
'currency': market['id'],
|
|
402
|
+
'direction': side,
|
|
403
|
+
'amount': amount,
|
|
404
|
+
};
|
|
405
|
+
if (type !== 'market') {
|
|
406
|
+
request['price'] = price;
|
|
407
|
+
}
|
|
408
|
+
const response = await this.privatePostUserOrders(this.extend(request, params));
|
|
409
|
+
return this.safeOrder({
|
|
410
|
+
'info': response,
|
|
411
|
+
'id': response['uuid'],
|
|
412
|
+
}, market);
|
|
413
|
+
}
|
|
414
|
+
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
415
|
+
/**
|
|
416
|
+
* @method
|
|
417
|
+
* @name paymium#cancelOrder
|
|
418
|
+
* @description cancels an open order
|
|
419
|
+
* @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders~1%7Buuid%7D/delete
|
|
420
|
+
* @see https://paymium.github.io/api-documentation/#tag/Order/paths/~1user~1orders~1%7Buuid%7D~1cancel/delete
|
|
421
|
+
* @param {string} id order id
|
|
422
|
+
* @param {string} symbol not used by paymium cancelOrder ()
|
|
423
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
424
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
425
|
+
*/
|
|
426
|
+
const request = {
|
|
427
|
+
'uuid': id,
|
|
428
|
+
};
|
|
429
|
+
return await this.privateDeleteUserOrdersUuidCancel(this.extend(request, params));
|
|
430
|
+
}
|
|
431
|
+
async transfer(code, amount, fromAccount, toAccount, params = {}) {
|
|
432
|
+
/**
|
|
433
|
+
* @method
|
|
434
|
+
* @name paymium#transfer
|
|
435
|
+
* @description transfer currency internally between wallets on the same account
|
|
436
|
+
* @see https://paymium.github.io/api-documentation/#tag/Transfer/paths/~1user~1email_transfers/post
|
|
437
|
+
* @param {string} code unified currency code
|
|
438
|
+
* @param {float} amount amount to transfer
|
|
439
|
+
* @param {string} fromAccount account to transfer from
|
|
440
|
+
* @param {string} toAccount account to transfer to
|
|
441
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
442
|
+
* @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
|
|
443
|
+
*/
|
|
444
|
+
await this.loadMarkets();
|
|
445
|
+
const currency = this.currency(code);
|
|
446
|
+
if (toAccount.indexOf('@') < 0) {
|
|
447
|
+
throw new errors.ExchangeError(this.id + ' transfer() only allows transfers to an email address');
|
|
448
|
+
}
|
|
449
|
+
if (code !== 'BTC' && code !== 'EUR') {
|
|
450
|
+
throw new errors.ExchangeError(this.id + ' transfer() only allows BTC or EUR');
|
|
451
|
+
}
|
|
452
|
+
const request = {
|
|
453
|
+
'currency': currency['id'],
|
|
454
|
+
'amount': this.currencyToPrecision(code, amount),
|
|
455
|
+
'email': toAccount,
|
|
456
|
+
// 'comment': 'a small note explaining the transfer'
|
|
457
|
+
};
|
|
458
|
+
const response = await this.privatePostUserEmailTransfers(this.extend(request, params));
|
|
459
|
+
//
|
|
460
|
+
// {
|
|
461
|
+
// "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
|
|
462
|
+
// "type": "Transfer",
|
|
463
|
+
// "currency": "BTC",
|
|
464
|
+
// "currency_amount": "string",
|
|
465
|
+
// "created_at": "2013-10-24T10:34:37.000Z",
|
|
466
|
+
// "updated_at": "2013-10-24T10:34:37.000Z",
|
|
467
|
+
// "amount": "1.0",
|
|
468
|
+
// "state": "executed",
|
|
469
|
+
// "currency_fee": "0.0",
|
|
470
|
+
// "btc_fee": "0.0",
|
|
471
|
+
// "comment": "string",
|
|
472
|
+
// "traded_btc": "string",
|
|
473
|
+
// "traded_currency": "string",
|
|
474
|
+
// "direction": "buy",
|
|
475
|
+
// "price": "string",
|
|
476
|
+
// "account_operations": [
|
|
477
|
+
// {
|
|
478
|
+
// "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
|
|
479
|
+
// "amount": "1.0",
|
|
480
|
+
// "currency": "BTC",
|
|
481
|
+
// "created_at": "2013-10-24T10:34:37.000Z",
|
|
482
|
+
// "created_at_int": 1389094259,
|
|
483
|
+
// "name": "account_operation",
|
|
484
|
+
// "address": "1FPDBXNqSkZMsw1kSkkajcj8berxDQkUoc",
|
|
485
|
+
// "tx_hash": "string",
|
|
486
|
+
// "is_trading_account": true
|
|
487
|
+
// }
|
|
488
|
+
// ]
|
|
489
|
+
// }
|
|
490
|
+
//
|
|
491
|
+
return this.parseTransfer(response, currency);
|
|
492
|
+
}
|
|
493
|
+
parseTransfer(transfer, currency = undefined) {
|
|
494
|
+
//
|
|
495
|
+
// {
|
|
496
|
+
// "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
|
|
497
|
+
// "type": "Transfer",
|
|
498
|
+
// "currency": "BTC",
|
|
499
|
+
// "currency_amount": "string",
|
|
500
|
+
// "created_at": "2013-10-24T10:34:37.000Z",
|
|
501
|
+
// "updated_at": "2013-10-24T10:34:37.000Z",
|
|
502
|
+
// "amount": "1.0",
|
|
503
|
+
// "state": "executed",
|
|
504
|
+
// "currency_fee": "0.0",
|
|
505
|
+
// "btc_fee": "0.0",
|
|
506
|
+
// "comment": "string",
|
|
507
|
+
// "traded_btc": "string",
|
|
508
|
+
// "traded_currency": "string",
|
|
509
|
+
// "direction": "buy",
|
|
510
|
+
// "price": "string",
|
|
511
|
+
// "account_operations": [
|
|
512
|
+
// {
|
|
513
|
+
// "uuid": "968f4580-e26c-4ad8-8bcd-874d23d55296",
|
|
514
|
+
// "amount": "1.0",
|
|
515
|
+
// "currency": "BTC",
|
|
516
|
+
// "created_at": "2013-10-24T10:34:37.000Z",
|
|
517
|
+
// "created_at_int": 1389094259,
|
|
518
|
+
// "name": "account_operation",
|
|
519
|
+
// "address": "1FPDBXNqSkZMsw1kSkkajcj8berxDQkUoc",
|
|
520
|
+
// "tx_hash": "string",
|
|
521
|
+
// "is_trading_account": true
|
|
522
|
+
// }
|
|
523
|
+
// ]
|
|
524
|
+
// }
|
|
525
|
+
//
|
|
526
|
+
const currencyId = this.safeString(transfer, 'currency');
|
|
527
|
+
const updatedAt = this.safeString(transfer, 'updated_at');
|
|
528
|
+
const timetstamp = this.parseDate(updatedAt);
|
|
529
|
+
const accountOperations = this.safeValue(transfer, 'account_operations');
|
|
530
|
+
const firstOperation = this.safeValue(accountOperations, 0, {});
|
|
531
|
+
const status = this.safeString(transfer, 'state');
|
|
532
|
+
return {
|
|
533
|
+
'info': transfer,
|
|
534
|
+
'id': this.safeString(transfer, 'uuid'),
|
|
535
|
+
'timestamp': timetstamp,
|
|
536
|
+
'datetime': this.iso8601(timetstamp),
|
|
537
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
538
|
+
'amount': this.safeNumber(transfer, 'amount'),
|
|
539
|
+
'fromAccount': undefined,
|
|
540
|
+
'toAccount': this.safeString(firstOperation, 'address'),
|
|
541
|
+
'status': this.parseTransferStatus(status),
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
parseTransferStatus(status) {
|
|
545
|
+
const statuses = {
|
|
546
|
+
'executed': 'ok',
|
|
547
|
+
// what are the other statuses?
|
|
548
|
+
};
|
|
549
|
+
return this.safeString(statuses, status, status);
|
|
550
|
+
}
|
|
551
|
+
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
552
|
+
let url = this.urls['api']['rest'] + '/' + this.version + '/' + this.implodeParams(path, params);
|
|
553
|
+
const query = this.omit(params, this.extractParams(path));
|
|
554
|
+
if (api === 'public') {
|
|
555
|
+
if (Object.keys(query).length) {
|
|
556
|
+
url += '?' + this.urlencode(query);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
this.checkRequiredCredentials();
|
|
561
|
+
const nonce = this.nonce().toString();
|
|
562
|
+
let auth = nonce + url;
|
|
563
|
+
headers = {
|
|
564
|
+
'Api-Key': this.apiKey,
|
|
565
|
+
'Api-Nonce': nonce,
|
|
566
|
+
};
|
|
567
|
+
if (method === 'POST') {
|
|
568
|
+
if (Object.keys(query).length) {
|
|
569
|
+
body = this.json(query);
|
|
570
|
+
auth += body;
|
|
571
|
+
headers['Content-Type'] = 'application/json';
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
if (Object.keys(query).length) {
|
|
576
|
+
const queryString = this.urlencode(query);
|
|
577
|
+
auth += queryString;
|
|
578
|
+
url += '?' + queryString;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
headers['Api-Signature'] = this.hmac(this.encode(auth), this.encode(this.secret), sha256.sha256);
|
|
582
|
+
}
|
|
583
|
+
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
584
|
+
}
|
|
585
|
+
handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
586
|
+
if (response === undefined) {
|
|
587
|
+
return undefined;
|
|
588
|
+
}
|
|
589
|
+
const errors$1 = this.safeValue(response, 'errors');
|
|
590
|
+
if (errors$1 !== undefined) {
|
|
591
|
+
throw new errors.ExchangeError(this.id + ' ' + this.json(response));
|
|
592
|
+
}
|
|
593
|
+
return undefined;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
module.exports = paymium;
|