ccxt 4.4.57__py2.py3-none-any.whl → 4.4.59__py2.py3-none-any.whl
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.
- ccxt/__init__.py +1 -3
- ccxt/abstract/xt.py +1 -0
- ccxt/ace.py +2 -2
- ccxt/alpaca.py +4 -4
- ccxt/ascendex.py +5 -3
- ccxt/async_support/__init__.py +1 -3
- ccxt/async_support/ace.py +2 -2
- ccxt/async_support/alpaca.py +4 -4
- ccxt/async_support/ascendex.py +5 -3
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bequant.py +2 -1
- ccxt/async_support/bigone.py +5 -5
- ccxt/async_support/binance.py +22 -6
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +2 -1
- ccxt/async_support/binanceusdm.py +2 -1
- ccxt/async_support/bingx.py +3 -3
- ccxt/async_support/bit2c.py +9 -9
- ccxt/async_support/bitbank.py +2 -2
- ccxt/async_support/bitbns.py +2 -2
- ccxt/async_support/bitcoincom.py +2 -1
- ccxt/async_support/bitfinex.py +2 -2
- ccxt/async_support/bitfinex1.py +2 -2
- ccxt/async_support/bitflyer.py +2 -2
- ccxt/async_support/bitget.py +8 -3
- ccxt/async_support/bithumb.py +2 -2
- ccxt/async_support/bitmart.py +150 -89
- ccxt/async_support/bitmex.py +2 -2
- ccxt/async_support/bitopro.py +2 -2
- ccxt/async_support/bitpanda.py +2 -1
- ccxt/async_support/bitrue.py +3 -3
- ccxt/async_support/bitso.py +2 -2
- ccxt/async_support/bitstamp.py +2 -2
- ccxt/async_support/bitteam.py +2 -2
- ccxt/async_support/bitvavo.py +3 -3
- ccxt/async_support/bl3p.py +2 -2
- ccxt/async_support/blockchaincom.py +2 -2
- ccxt/async_support/blofin.py +3 -4
- ccxt/async_support/btcalpha.py +2 -2
- ccxt/async_support/btcbox.py +2 -2
- ccxt/async_support/btcmarkets.py +3 -3
- ccxt/async_support/btcturk.py +2 -2
- ccxt/async_support/bybit.py +17 -6
- ccxt/async_support/cex.py +3 -3
- ccxt/async_support/coinbase.py +12 -5
- ccxt/async_support/coinbaseadvanced.py +2 -1
- ccxt/async_support/coinbaseexchange.py +3 -3
- ccxt/async_support/coinbaseinternational.py +3 -4
- ccxt/async_support/coincatch.py +3 -3
- ccxt/async_support/coincheck.py +2 -2
- ccxt/async_support/coinex.py +3 -3
- ccxt/async_support/coinlist.py +3 -3
- ccxt/async_support/coinmate.py +2 -2
- ccxt/async_support/coinmetro.py +2 -2
- ccxt/async_support/coinone.py +2 -2
- ccxt/async_support/coinsph.py +3 -3
- ccxt/async_support/coinspot.py +2 -2
- ccxt/async_support/cryptocom.py +2 -2
- ccxt/async_support/currencycom.py +3 -3
- ccxt/async_support/defx.py +3 -3
- ccxt/async_support/delta.py +3 -3
- ccxt/async_support/deribit.py +3 -3
- ccxt/async_support/digifinex.py +3 -3
- ccxt/async_support/ellipx.py +1 -1
- ccxt/async_support/exmo.py +2 -2
- ccxt/async_support/fmfwio.py +2 -1
- ccxt/async_support/gate.py +3 -3
- ccxt/async_support/gateio.py +2 -1
- ccxt/async_support/gemini.py +2 -2
- ccxt/async_support/hashkey.py +2 -2
- ccxt/async_support/hitbtc.py +3 -3
- ccxt/async_support/hollaex.py +2 -2
- ccxt/async_support/htx.py +3 -3
- ccxt/async_support/huobi.py +2 -1
- ccxt/async_support/huobijp.py +3 -3
- ccxt/async_support/hyperliquid.py +91 -6
- ccxt/async_support/idex.py +3 -3
- ccxt/async_support/independentreserve.py +2 -2
- ccxt/async_support/indodax.py +3 -3
- ccxt/async_support/kraken.py +3 -3
- ccxt/async_support/krakenfutures.py +2 -2
- ccxt/async_support/kucoin.py +3 -3
- ccxt/async_support/kucoinfutures.py +3 -3
- ccxt/async_support/kuna.py +3 -3
- ccxt/async_support/latoken.py +3 -3
- ccxt/async_support/lbank.py +3 -3
- ccxt/async_support/luno.py +2 -2
- ccxt/async_support/mercado.py +2 -2
- ccxt/async_support/mexc.py +3 -3
- ccxt/async_support/myokx.py +2 -1
- ccxt/async_support/ndax.py +2 -2
- ccxt/async_support/novadax.py +3 -3
- ccxt/async_support/oceanex.py +3 -3
- ccxt/async_support/okcoin.py +3 -3
- ccxt/async_support/okx.py +3 -4
- ccxt/async_support/onetrading.py +3 -3
- ccxt/async_support/oxfun.py +2 -2
- ccxt/async_support/p2b.py +2 -2
- ccxt/async_support/paradex.py +3 -3
- ccxt/async_support/paymium.py +2 -2
- ccxt/async_support/phemex.py +2 -2
- ccxt/async_support/poloniex.py +3 -3
- ccxt/async_support/poloniexfutures.py +3 -3
- ccxt/async_support/probit.py +3 -3
- ccxt/async_support/timex.py +15 -5
- ccxt/async_support/tokocrypto.py +3 -3
- ccxt/async_support/tradeogre.py +2 -2
- ccxt/async_support/upbit.py +2 -2
- ccxt/async_support/vertex.py +5 -5
- ccxt/async_support/wavesexchange.py +2 -3
- ccxt/async_support/whitebit.py +5 -4
- ccxt/async_support/woo.py +3 -4
- ccxt/async_support/woofipro.py +3 -4
- ccxt/async_support/xt.py +57 -4
- ccxt/async_support/yobit.py +2 -2
- ccxt/async_support/zaif.py +2 -2
- ccxt/async_support/zonda.py +2 -2
- ccxt/base/exchange.py +5 -4
- ccxt/bequant.py +2 -1
- ccxt/bigone.py +5 -5
- ccxt/binance.py +22 -6
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +2 -1
- ccxt/binanceusdm.py +2 -1
- ccxt/bingx.py +3 -3
- ccxt/bit2c.py +9 -9
- ccxt/bitbank.py +2 -2
- ccxt/bitbns.py +2 -2
- ccxt/bitcoincom.py +2 -1
- ccxt/bitfinex.py +2 -2
- ccxt/bitfinex1.py +2 -2
- ccxt/bitflyer.py +2 -2
- ccxt/bitget.py +8 -3
- ccxt/bithumb.py +2 -2
- ccxt/bitmart.py +150 -89
- ccxt/bitmex.py +2 -2
- ccxt/bitopro.py +2 -2
- ccxt/bitpanda.py +2 -1
- ccxt/bitrue.py +3 -3
- ccxt/bitso.py +2 -2
- ccxt/bitstamp.py +2 -2
- ccxt/bitteam.py +2 -2
- ccxt/bitvavo.py +3 -3
- ccxt/bl3p.py +2 -2
- ccxt/blockchaincom.py +2 -2
- ccxt/blofin.py +3 -4
- ccxt/btcalpha.py +2 -2
- ccxt/btcbox.py +2 -2
- ccxt/btcmarkets.py +3 -3
- ccxt/btcturk.py +2 -2
- ccxt/bybit.py +17 -6
- ccxt/cex.py +3 -3
- ccxt/coinbase.py +12 -5
- ccxt/coinbaseadvanced.py +2 -1
- ccxt/coinbaseexchange.py +3 -3
- ccxt/coinbaseinternational.py +3 -4
- ccxt/coincatch.py +3 -3
- ccxt/coincheck.py +2 -2
- ccxt/coinex.py +3 -3
- ccxt/coinlist.py +3 -3
- ccxt/coinmate.py +2 -2
- ccxt/coinmetro.py +2 -2
- ccxt/coinone.py +2 -2
- ccxt/coinsph.py +3 -3
- ccxt/coinspot.py +2 -2
- ccxt/cryptocom.py +2 -2
- ccxt/currencycom.py +3 -3
- ccxt/defx.py +3 -3
- ccxt/delta.py +3 -3
- ccxt/deribit.py +3 -3
- ccxt/digifinex.py +3 -3
- ccxt/ellipx.py +1 -1
- ccxt/exmo.py +2 -2
- ccxt/fmfwio.py +2 -1
- ccxt/gate.py +3 -3
- ccxt/gateio.py +2 -1
- ccxt/gemini.py +2 -2
- ccxt/hashkey.py +2 -2
- ccxt/hitbtc.py +3 -3
- ccxt/hollaex.py +2 -2
- ccxt/htx.py +3 -3
- ccxt/huobi.py +2 -1
- ccxt/huobijp.py +3 -3
- ccxt/hyperliquid.py +91 -6
- ccxt/idex.py +3 -3
- ccxt/independentreserve.py +2 -2
- ccxt/indodax.py +3 -3
- ccxt/kraken.py +3 -3
- ccxt/krakenfutures.py +2 -2
- ccxt/kucoin.py +3 -3
- ccxt/kucoinfutures.py +3 -3
- ccxt/kuna.py +3 -3
- ccxt/latoken.py +3 -3
- ccxt/lbank.py +3 -3
- ccxt/luno.py +2 -2
- ccxt/mercado.py +2 -2
- ccxt/mexc.py +3 -3
- ccxt/myokx.py +2 -1
- ccxt/ndax.py +2 -2
- ccxt/novadax.py +3 -3
- ccxt/oceanex.py +3 -3
- ccxt/okcoin.py +3 -3
- ccxt/okx.py +3 -4
- ccxt/onetrading.py +3 -3
- ccxt/oxfun.py +2 -2
- ccxt/p2b.py +2 -2
- ccxt/paradex.py +3 -3
- ccxt/paymium.py +2 -2
- ccxt/phemex.py +2 -2
- ccxt/poloniex.py +3 -3
- ccxt/poloniexfutures.py +3 -3
- ccxt/pro/__init__.py +1 -3
- ccxt/pro/alpaca.py +2 -2
- ccxt/pro/ascendex.py +2 -2
- ccxt/pro/bequant.py +2 -1
- ccxt/pro/binance.py +2 -3
- ccxt/pro/binancecoinm.py +2 -1
- ccxt/pro/binanceus.py +3 -2
- ccxt/pro/binanceusdm.py +2 -1
- ccxt/pro/bingx.py +2 -2
- ccxt/pro/bitcoincom.py +2 -1
- ccxt/pro/bitfinex.py +2 -2
- ccxt/pro/bitfinex1.py +2 -2
- ccxt/pro/bitget.py +2 -3
- ccxt/pro/bithumb.py +2 -2
- ccxt/pro/bitmart.py +2 -2
- ccxt/pro/bitmex.py +2 -2
- ccxt/pro/bitopro.py +2 -2
- ccxt/pro/bitpanda.py +2 -1
- ccxt/pro/bitrue.py +2 -2
- ccxt/pro/bitstamp.py +2 -2
- ccxt/pro/bitvavo.py +2 -2
- ccxt/pro/blockchaincom.py +2 -2
- ccxt/pro/blofin.py +1 -1
- ccxt/pro/bybit.py +6 -4
- ccxt/pro/cex.py +2 -2
- ccxt/pro/coinbase.py +2 -2
- ccxt/pro/coinbaseadvanced.py +2 -1
- ccxt/pro/coinbaseexchange.py +2 -2
- ccxt/pro/coinbaseinternational.py +2 -2
- ccxt/pro/coincatch.py +2 -3
- ccxt/pro/coincheck.py +2 -2
- ccxt/pro/coinex.py +2 -2
- ccxt/pro/coinone.py +2 -2
- ccxt/pro/cryptocom.py +2 -3
- ccxt/pro/currencycom.py +2 -2
- ccxt/pro/defx.py +2 -3
- ccxt/pro/deribit.py +2 -2
- ccxt/pro/exmo.py +2 -2
- ccxt/pro/gate.py +2 -3
- ccxt/pro/gateio.py +2 -1
- ccxt/pro/gemini.py +2 -2
- ccxt/pro/hashkey.py +2 -2
- ccxt/pro/hitbtc.py +2 -2
- ccxt/pro/hollaex.py +2 -2
- ccxt/pro/htx.py +2 -2
- ccxt/pro/huobi.py +2 -1
- ccxt/pro/huobijp.py +2 -2
- ccxt/pro/hyperliquid.py +2 -3
- ccxt/pro/idex.py +2 -2
- ccxt/pro/independentreserve.py +2 -2
- ccxt/pro/kraken.py +2 -2
- ccxt/pro/krakenfutures.py +2 -2
- ccxt/pro/kucoin.py +2 -3
- ccxt/pro/kucoinfutures.py +2 -3
- ccxt/pro/lbank.py +2 -2
- ccxt/pro/luno.py +2 -2
- ccxt/pro/mexc.py +5 -3
- ccxt/pro/myokx.py +2 -1
- ccxt/pro/ndax.py +2 -2
- ccxt/pro/okcoin.py +2 -2
- ccxt/pro/okx.py +2 -3
- ccxt/pro/onetrading.py +2 -2
- ccxt/pro/oxfun.py +2 -2
- ccxt/pro/p2b.py +2 -2
- ccxt/pro/paradex.py +2 -2
- ccxt/pro/phemex.py +2 -2
- ccxt/pro/poloniex.py +2 -2
- ccxt/pro/poloniexfutures.py +2 -2
- ccxt/pro/probit.py +2 -2
- ccxt/pro/upbit.py +2 -2
- ccxt/pro/vertex.py +2 -2
- ccxt/pro/wazirx.py +2 -2
- ccxt/pro/whitebit.py +2 -2
- ccxt/pro/woo.py +2 -2
- ccxt/pro/woofipro.py +2 -2
- ccxt/pro/xt.py +2 -2
- ccxt/probit.py +3 -3
- ccxt/test/tests_init.py +2 -2
- ccxt/timex.py +15 -5
- ccxt/tokocrypto.py +3 -3
- ccxt/tradeogre.py +2 -2
- ccxt/upbit.py +2 -2
- ccxt/vertex.py +5 -5
- ccxt/wavesexchange.py +2 -3
- ccxt/whitebit.py +5 -4
- ccxt/woo.py +3 -4
- ccxt/woofipro.py +3 -4
- ccxt/xt.py +57 -4
- ccxt/yobit.py +2 -2
- ccxt/zaif.py +2 -2
- ccxt/zonda.py +2 -2
- {ccxt-4.4.57.dist-info → ccxt-4.4.59.dist-info}/METADATA +30 -33
- {ccxt-4.4.57.dist-info → ccxt-4.4.59.dist-info}/RECORD +307 -310
- ccxt/abstract/wazirx.py +0 -30
- ccxt/async_support/wazirx.py +0 -1336
- ccxt/wazirx.py +0 -1336
- {ccxt-4.4.57.dist-info → ccxt-4.4.59.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.57.dist-info → ccxt-4.4.59.dist-info}/WHEEL +0 -0
- {ccxt-4.4.57.dist-info → ccxt-4.4.59.dist-info}/top_level.txt +0 -0
ccxt/bitmart.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitmart import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, BorrowInterest, Currencies, Currency, DepositAddress, FundingHistory, Int, IsolatedBorrowRate, IsolatedBorrowRates, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFeeInterface, Transaction, MarketInterface, TransferEntry
|
9
|
+
from ccxt.base.types import Any, Balances, BorrowInterest, Currencies, Currency, DepositAddress, FundingHistory, Int, IsolatedBorrowRate, IsolatedBorrowRates, LedgerEntry, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFeeInterface, Transaction, MarketInterface, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -32,7 +32,7 @@ from ccxt.base.precise import Precise
|
|
32
32
|
|
33
33
|
class bitmart(Exchange, ImplicitAPI):
|
34
34
|
|
35
|
-
def describe(self):
|
35
|
+
def describe(self) -> Any:
|
36
36
|
return self.deep_extend(super(bitmart, self).describe(), {
|
37
37
|
'id': 'bitmart',
|
38
38
|
'name': 'BitMart',
|
@@ -528,7 +528,10 @@ class bitmart(Exchange, ImplicitAPI):
|
|
528
528
|
'40049': InvalidOrder, # 403, The maximum length of clientOrderId cannot exceed 32
|
529
529
|
'40050': InvalidOrder, # 403, Client OrderId duplicated with existing orders
|
530
530
|
},
|
531
|
-
'broad': {
|
531
|
+
'broad': {
|
532
|
+
'You contract account available balance not enough': InsufficientFunds,
|
533
|
+
'you contract account available balance not enough': InsufficientFunds,
|
534
|
+
},
|
532
535
|
},
|
533
536
|
'commonCurrencies': {
|
534
537
|
'$GM': 'GOLDMINER',
|
@@ -541,9 +544,10 @@ class bitmart(Exchange, ImplicitAPI):
|
|
541
544
|
'TRU': 'Truebit', # conflict with TrueFi
|
542
545
|
},
|
543
546
|
'options': {
|
544
|
-
'defaultNetwork': 'ERC20',
|
545
547
|
'defaultNetworks': {
|
546
|
-
'USDT': '
|
548
|
+
'USDT': 'TRC20',
|
549
|
+
'BTC': 'BTC',
|
550
|
+
'ETH': 'ERC20',
|
547
551
|
},
|
548
552
|
'timeDifference': 0, # the difference between system clock and exchange clock
|
549
553
|
'adjustForTimeDifference': False, # controls the adjustment logic upon instantiation
|
@@ -585,7 +589,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
585
589
|
'KSM': 'KSM',
|
586
590
|
'ZEC': 'ZEC',
|
587
591
|
'NAS': 'NAS',
|
588
|
-
|
592
|
+
'POLYGON': 'MATIC',
|
589
593
|
'HRC20': 'HECO',
|
590
594
|
'XDC': 'XDC',
|
591
595
|
'ONE': 'ONE',
|
@@ -594,7 +598,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
594
598
|
'ICP': 'Computer',
|
595
599
|
'XTZ': 'XTZ',
|
596
600
|
'MINA': 'MINA',
|
597
|
-
|
601
|
+
'BEP20': 'BSC_BNB',
|
598
602
|
'THETA': 'THETA',
|
599
603
|
'AKT': 'AKT',
|
600
604
|
'AR': 'AR',
|
@@ -698,6 +702,12 @@ class bitmart(Exchange, ImplicitAPI):
|
|
698
702
|
# undetermined chains:
|
699
703
|
# LEX(for LexThum), TAYCAN(for TRICE), SFL(probably TAYCAN), OMNIA(for APEX), NAC(for NAC), KAG(Kinesis), CEM(crypto emergency), XVM(for Venidium), NEVM(for NEVM), IGT20(for IGNITE), FILM(FILMCredits), CC(CloudCoin), MERGE(MERGE), LTNM(Bitcoin latinum), PLUGCN( PlugChain), DINGO(dingo), LED(LEDGIS), AVAT(AVAT), VSOL(Vsolidus), EPIC(EPIC cash), NFC(netflowcoin), mrx(Metrix Coin), Idena(idena network), PKT(PKT Cash), BondDex(BondDex), XBN(XBN), KALAM(Kalamint), REV(RChain), KRC20(MyDeFiPet), ARC20(Hurricane Token), GMD(Coop network), BERS(Berith), ZEBI(Zebi), BRC(Baer Chain), DAPS(DAPS Coin), APL(Gold Secured Currency), NDAU(NDAU), WICC(WICC), UPG(Unipay God), TSL(TreasureSL), MXW(Maxonrow), CLC(Cifculation), SMH(SMH Coin), XIN(CPCoin), RDD(ReddCoin), OK(Okcash), KAR(KAR), CCX(ConcealNetwork),
|
700
704
|
},
|
705
|
+
'networksById': {
|
706
|
+
'ETH': 'ERC20',
|
707
|
+
'Ethereum': 'ERC20',
|
708
|
+
'USDT': 'OMNI', # the default USDT network for bitmart is OMNI
|
709
|
+
'Bitcoin': 'BTC',
|
710
|
+
},
|
701
711
|
'defaultType': 'spot', # 'spot', 'swap'
|
702
712
|
'fetchBalance': {
|
703
713
|
'type': 'spot', # 'spot', 'swap', 'account'
|
@@ -857,7 +867,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
857
867
|
},
|
858
868
|
})
|
859
869
|
|
860
|
-
def fetch_time(self, params={}):
|
870
|
+
def fetch_time(self, params={}) -> Int:
|
861
871
|
"""
|
862
872
|
fetches the current integer timestamp in milliseconds from the exchange server
|
863
873
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -968,6 +978,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
968
978
|
data = self.safe_dict(response, 'data', {})
|
969
979
|
symbols = self.safe_list(data, 'symbols', [])
|
970
980
|
result = []
|
981
|
+
fees = self.fees['trading']
|
971
982
|
for i in range(0, len(symbols)):
|
972
983
|
market = symbols[i]
|
973
984
|
id = self.safe_string(market, 'symbol')
|
@@ -1006,6 +1017,8 @@ class bitmart(Exchange, ImplicitAPI):
|
|
1006
1017
|
'expiryDatetime': None,
|
1007
1018
|
'strike': None,
|
1008
1019
|
'optionType': None,
|
1020
|
+
'maker': fees['maker'],
|
1021
|
+
'taker': fees['taker'],
|
1009
1022
|
'precision': {
|
1010
1023
|
'amount': baseMinSize,
|
1011
1024
|
'price': self.parse_number(self.parse_precision(self.safe_string(market, 'price_max_precision'))),
|
@@ -1077,6 +1090,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
1077
1090
|
data = self.safe_dict(response, 'data', {})
|
1078
1091
|
symbols = self.safe_list(data, 'symbols', [])
|
1079
1092
|
result = []
|
1093
|
+
fees = self.fees['trading']
|
1080
1094
|
for i in range(0, len(symbols)):
|
1081
1095
|
market = symbols[i]
|
1082
1096
|
id = self.safe_string(market, 'symbol')
|
@@ -1118,6 +1132,8 @@ class bitmart(Exchange, ImplicitAPI):
|
|
1118
1132
|
'expiryDatetime': self.iso8601(expiry),
|
1119
1133
|
'strike': None,
|
1120
1134
|
'optionType': None,
|
1135
|
+
'maker': fees['maker'],
|
1136
|
+
'taker': fees['taker'],
|
1121
1137
|
'precision': {
|
1122
1138
|
'amount': self.safe_number(market, 'vol_precision'),
|
1123
1139
|
'price': self.safe_number(market, 'price_precision'),
|
@@ -1166,61 +1182,129 @@ class bitmart(Exchange, ImplicitAPI):
|
|
1166
1182
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1167
1183
|
:returns dict: an associative dictionary of currencies
|
1168
1184
|
"""
|
1169
|
-
response = self.
|
1185
|
+
response = self.publicGetAccountV1Currencies(params)
|
1170
1186
|
#
|
1171
1187
|
# {
|
1172
|
-
# "message":"OK",
|
1188
|
+
# "message": "OK",
|
1173
1189
|
# "code":1000,
|
1174
|
-
# "trace":"
|
1175
|
-
# "data":{
|
1176
|
-
# "currencies":[
|
1177
|
-
# {
|
1178
|
-
#
|
1179
|
-
#
|
1190
|
+
# "trace": "9eaec51cd80d46d48a1c6b447206c4d6.71.17392193317851454",
|
1191
|
+
# "data": {
|
1192
|
+
# "currencies": [
|
1193
|
+
# {
|
1194
|
+
# "currency": "BTC",
|
1195
|
+
# "name": "Bitcoin",
|
1196
|
+
# "contract_address": null,
|
1197
|
+
# "network": "BTC",
|
1198
|
+
# "withdraw_enabled": True,
|
1199
|
+
# "deposit_enabled": True,
|
1200
|
+
# "withdraw_minsize": "0.0003",
|
1201
|
+
# "withdraw_minfee": "9.74"
|
1202
|
+
# }
|
1180
1203
|
# ]
|
1181
1204
|
# }
|
1182
1205
|
# }
|
1183
1206
|
#
|
1184
1207
|
data = self.safe_dict(response, 'data', {})
|
1185
1208
|
currencies = self.safe_list(data, 'currencies', [])
|
1186
|
-
result
|
1209
|
+
result = {}
|
1187
1210
|
for i in range(0, len(currencies)):
|
1188
1211
|
currency = currencies[i]
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1212
|
+
fullId = self.safe_string(currency, 'currency')
|
1213
|
+
currencyId = fullId
|
1214
|
+
networkId = self.safe_string(currency, 'network')
|
1215
|
+
if fullId.find('NFT') < 0:
|
1216
|
+
parts = fullId.split('-')
|
1217
|
+
currencyId = self.safe_string(parts, 0)
|
1218
|
+
second = self.safe_string(parts, 1)
|
1219
|
+
if second is not None:
|
1220
|
+
networkId = second.upper()
|
1221
|
+
currencyCode = self.safe_currency_code(currencyId)
|
1222
|
+
entry = self.safe_dict(result, currencyCode)
|
1223
|
+
if entry is None:
|
1224
|
+
entry = {
|
1225
|
+
'info': currency,
|
1226
|
+
'id': currencyId,
|
1227
|
+
'code': currencyCode,
|
1228
|
+
'precision': None,
|
1229
|
+
'name': self.safe_string(currency, 'name'),
|
1230
|
+
'deposit': None,
|
1231
|
+
'withdraw': None,
|
1232
|
+
'active': None,
|
1233
|
+
'networks': {},
|
1234
|
+
}
|
1235
|
+
networkCode = self.network_id_to_code(networkId)
|
1236
|
+
withdraw = self.safe_bool(currency, 'withdraw_enabled')
|
1237
|
+
deposit = self.safe_bool(currency, 'deposit_enabled')
|
1238
|
+
entry['networks'][networkCode] = {
|
1239
|
+
'info': currency,
|
1240
|
+
'id': networkId,
|
1241
|
+
'code': networkCode,
|
1242
|
+
'withdraw': withdraw,
|
1243
|
+
'deposit': deposit,
|
1244
|
+
'active': withdraw and deposit,
|
1245
|
+
'fee': self.safe_number(currency, 'withdraw_minfee'), # todo check
|
1205
1246
|
'limits': {
|
1206
|
-
'
|
1207
|
-
|
1247
|
+
'withdraw': {
|
1248
|
+
'min': self.safe_number(currency, 'withdraw_minsize'),
|
1249
|
+
'max': None,
|
1250
|
+
},
|
1251
|
+
'deposit': {
|
1252
|
+
'min': None,
|
1253
|
+
'max': None,
|
1254
|
+
},
|
1208
1255
|
},
|
1209
1256
|
}
|
1257
|
+
result[currencyCode] = entry
|
1258
|
+
keys = list(result.keys())
|
1259
|
+
for i in range(0, len(keys)):
|
1260
|
+
key = keys[i]
|
1261
|
+
currency = result[key]
|
1262
|
+
result[key] = self.safe_currency_structure(currency)
|
1210
1263
|
return result
|
1211
1264
|
|
1265
|
+
def get_currency_id_from_code_and_network(self, currencyCode: Str, networkCode: Str) -> Str:
|
1266
|
+
if networkCode is None:
|
1267
|
+
networkCode = self.default_network_code(currencyCode) # use default network code if not provided
|
1268
|
+
currency = self.currency(currencyCode)
|
1269
|
+
id = currency['id']
|
1270
|
+
idFromNetwork: Str = None
|
1271
|
+
networks = self.safe_dict(currency, 'networks', {})
|
1272
|
+
networkInfo: dict = {}
|
1273
|
+
if networkCode is None:
|
1274
|
+
# network code is not provided and there is no default network code
|
1275
|
+
network = self.safe_dict(networks, currencyCode) # trying to find network that has the same code
|
1276
|
+
if network is None:
|
1277
|
+
# use the first network in the networks list if there is no network code with the same code
|
1278
|
+
keys = list(networks.keys())
|
1279
|
+
length = len(keys)
|
1280
|
+
if length > 0:
|
1281
|
+
network = self.safe_value(networks, keys[0])
|
1282
|
+
networkInfo = self.safe_dict(network, 'info', {})
|
1283
|
+
idFromNetwork = self.safe_string(networkInfo, 'currency') # use currency name from network
|
1284
|
+
else:
|
1285
|
+
providedOrDefaultNetwork = self.safe_dict(networks, networkCode)
|
1286
|
+
if providedOrDefaultNetwork is not None:
|
1287
|
+
networkInfo = self.safe_dict(providedOrDefaultNetwork, 'info', {})
|
1288
|
+
idFromNetwork = self.safe_string(networkInfo, 'currency') # use currency name from network
|
1289
|
+
else:
|
1290
|
+
id += '-' + self.network_code_to_id(networkCode, currencyCode) # use concatenated currency id and network code if network is not found
|
1291
|
+
return idFromNetwork if (idFromNetwork is not None) else id
|
1292
|
+
|
1212
1293
|
def fetch_transaction_fee(self, code: str, params={}):
|
1213
1294
|
"""
|
1214
1295
|
@deprecated
|
1215
1296
|
please use fetchDepositWithdrawFee instead
|
1216
1297
|
:param str code: unified currency code
|
1217
1298
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1299
|
+
:param str [params.network]: the network code of the currency
|
1218
1300
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
1219
1301
|
"""
|
1220
1302
|
self.load_markets()
|
1221
1303
|
currency = self.currency(code)
|
1304
|
+
network: Str = None
|
1305
|
+
network, params = self.handle_network_code_and_params(params)
|
1222
1306
|
request: dict = {
|
1223
|
-
'currency': currency['
|
1307
|
+
'currency': self.get_currency_id_from_code_and_network(currency['code'], network),
|
1224
1308
|
}
|
1225
1309
|
response = self.privateGetAccountV1WithdrawCharge(self.extend(request, params))
|
1226
1310
|
#
|
@@ -1272,12 +1356,14 @@ class bitmart(Exchange, ImplicitAPI):
|
|
1272
1356
|
fetch the fee for deposits and withdrawals
|
1273
1357
|
:param str code: unified currency code
|
1274
1358
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1359
|
+
:param str [params.network]: the network code of the currency
|
1275
1360
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
1276
1361
|
"""
|
1277
1362
|
self.load_markets()
|
1278
|
-
|
1363
|
+
network: Str = None
|
1364
|
+
network, params = self.handle_network_code_and_params(params)
|
1279
1365
|
request: dict = {
|
1280
|
-
'currency':
|
1366
|
+
'currency': self.get_currency_id_from_code_and_network(code, network),
|
1281
1367
|
}
|
1282
1368
|
response = self.privateGetAccountV1WithdrawCharge(self.extend(request, params))
|
1283
1369
|
#
|
@@ -3409,24 +3495,11 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3409
3495
|
"""
|
3410
3496
|
self.load_markets()
|
3411
3497
|
currency = self.currency(code)
|
3412
|
-
|
3498
|
+
network: Str = None
|
3499
|
+
network, params = self.handle_network_code_and_params(params)
|
3413
3500
|
request: dict = {
|
3414
|
-
'currency':
|
3501
|
+
'currency': self.get_currency_id_from_code_and_network(code, network),
|
3415
3502
|
}
|
3416
|
-
if code == 'USDT':
|
3417
|
-
defaultNetworks = self.safe_value(self.options, 'defaultNetworks')
|
3418
|
-
defaultNetwork = self.safe_string_upper(defaultNetworks, code)
|
3419
|
-
networks = self.safe_dict(self.options, 'networks', {})
|
3420
|
-
networkInner = self.safe_string_upper(params, 'network', defaultNetwork) # self line allows the user to specify either ERC20 or ETH
|
3421
|
-
networkInner = self.safe_string(networks, networkInner, networkInner) # handle ERC20>ETH alias
|
3422
|
-
if networkInner is not None:
|
3423
|
-
request['currency'] = currencyId + '-' + networkInner # when network the currency need to be changed to currency + '-' + network https://developer-pro.bitmart.com/en/account/withdraw_apply.html on the end of page
|
3424
|
-
params = self.omit(params, 'network')
|
3425
|
-
else:
|
3426
|
-
networkCode = None
|
3427
|
-
networkCode, params = self.handle_network_code_and_params(params)
|
3428
|
-
if networkCode is not None:
|
3429
|
-
request['currency'] = currencyId + '-' + self.network_code_to_id(networkCode)
|
3430
3503
|
response = self.privateGetAccountV1DepositAddress(self.extend(request, params))
|
3431
3504
|
#
|
3432
3505
|
# {
|
@@ -3454,23 +3527,20 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3454
3527
|
# }
|
3455
3528
|
#
|
3456
3529
|
currencyId = self.safe_string(depositAddress, 'currency')
|
3530
|
+
network = self.safe_string(depositAddress, 'chain')
|
3531
|
+
if currencyId.find('NFT') < 0:
|
3532
|
+
parts = currencyId.split('-')
|
3533
|
+
currencyId = self.safe_string(parts, 0)
|
3534
|
+
secondPart = self.safe_string(parts, 1)
|
3535
|
+
if secondPart is not None:
|
3536
|
+
network = secondPart
|
3457
3537
|
address = self.safe_string(depositAddress, 'address')
|
3458
|
-
chain = self.safe_string(depositAddress, 'chain')
|
3459
|
-
network = None
|
3460
3538
|
currency = self.safe_currency(currencyId, currency)
|
3461
|
-
if chain is not None:
|
3462
|
-
parts = chain.split('-')
|
3463
|
-
partsLength = len(parts)
|
3464
|
-
networkId = self.safe_string(parts, partsLength - 1)
|
3465
|
-
if networkId == self.safe_string(currency, 'name'):
|
3466
|
-
network = self.safe_string(currency, 'code')
|
3467
|
-
else:
|
3468
|
-
network = self.network_id_to_code(networkId)
|
3469
3539
|
self.check_address(address)
|
3470
3540
|
return {
|
3471
3541
|
'info': depositAddress,
|
3472
3542
|
'currency': self.safe_string(currency, 'code'),
|
3473
|
-
'network': network,
|
3543
|
+
'network': self.network_id_to_code(network),
|
3474
3544
|
'address': address,
|
3475
3545
|
'tag': self.safe_string(depositAddress, 'address_memo'),
|
3476
3546
|
}
|
@@ -3483,29 +3553,23 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3483
3553
|
:param str address: the address to withdraw to
|
3484
3554
|
:param str tag:
|
3485
3555
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3556
|
+
:param str [params.network]: the network name for self withdrawal
|
3486
3557
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
3487
3558
|
"""
|
3488
3559
|
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
3489
3560
|
self.check_address(address)
|
3490
3561
|
self.load_markets()
|
3491
3562
|
currency = self.currency(code)
|
3563
|
+
network: Str = None
|
3564
|
+
network, params = self.handle_network_code_and_params(params)
|
3492
3565
|
request: dict = {
|
3493
|
-
'currency':
|
3566
|
+
'currency': self.get_currency_id_from_code_and_network(code, network),
|
3494
3567
|
'amount': amount,
|
3495
3568
|
'destination': 'To Digital Address', # To Digital Address, To Binance, To OKEX
|
3496
3569
|
'address': address,
|
3497
3570
|
}
|
3498
3571
|
if tag is not None:
|
3499
3572
|
request['address_memo'] = tag
|
3500
|
-
if code == 'USDT':
|
3501
|
-
defaultNetworks = self.safe_value(self.options, 'defaultNetworks')
|
3502
|
-
defaultNetwork = self.safe_string_upper(defaultNetworks, code)
|
3503
|
-
networks = self.safe_dict(self.options, 'networks', {})
|
3504
|
-
network = self.safe_string_upper(params, 'network', defaultNetwork) # self line allows the user to specify either ERC20 or ETH
|
3505
|
-
network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
|
3506
|
-
if network is not None:
|
3507
|
-
request['currency'] = request['currency'] + '-' + network # when network the currency need to be changed to currency + '-' + network https://developer-pro.bitmart.com/en/account/withdraw_apply.html on the end of page
|
3508
|
-
params = self.omit(params, 'network')
|
3509
3573
|
response = self.privatePostAccountV1WithdrawApply(self.extend(request, params))
|
3510
3574
|
#
|
3511
3575
|
# {
|
@@ -3538,16 +3602,6 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3538
3602
|
if code is not None:
|
3539
3603
|
currency = self.currency(code)
|
3540
3604
|
request['currency'] = currency['id']
|
3541
|
-
if code == 'USDT':
|
3542
|
-
defaultNetworks = self.safe_value(self.options, 'defaultNetworks')
|
3543
|
-
defaultNetwork = self.safe_string_upper(defaultNetworks, code)
|
3544
|
-
networks = self.safe_dict(self.options, 'networks', {})
|
3545
|
-
network = self.safe_string_upper(params, 'network', defaultNetwork) # self line allows the user to specify either ERC20 or ETH
|
3546
|
-
network = self.safe_string(networks, network, network) # handle ERC20>ETH alias
|
3547
|
-
if network is not None:
|
3548
|
-
request['currency'] = request['currency'] + '-' + network # when network the currency need to be changed to currency + '-' + network https://developer-pro.bitmart.com/en/account/withdraw_apply.html on the end of page
|
3549
|
-
currency['code'] = request['currency'] # update currency code to filter
|
3550
|
-
params = self.omit(params, 'network')
|
3551
3605
|
response = self.privateGetAccountV2DepositWithdrawHistory(self.extend(request, params))
|
3552
3606
|
#
|
3553
3607
|
# {
|
@@ -3725,6 +3779,11 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3725
3779
|
amount = self.safe_number(transaction, 'arrival_amount')
|
3726
3780
|
timestamp = self.safe_integer(transaction, 'apply_time')
|
3727
3781
|
currencyId = self.safe_string(transaction, 'currency')
|
3782
|
+
networkId: Str = None
|
3783
|
+
if currencyId.find('NFT') < 0:
|
3784
|
+
parts = currencyId.split('-')
|
3785
|
+
currencyId = self.safe_string(parts, 0)
|
3786
|
+
networkId = self.safe_string(parts, 1)
|
3728
3787
|
code = self.safe_currency_code(currencyId, currency)
|
3729
3788
|
status = self.parse_transaction_status(self.safe_string(transaction, 'status'))
|
3730
3789
|
feeCost = self.safe_number(transaction, 'fee')
|
@@ -3742,7 +3801,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
3742
3801
|
'id': id,
|
3743
3802
|
'currency': code,
|
3744
3803
|
'amount': amount,
|
3745
|
-
'network':
|
3804
|
+
'network': self.network_id_to_code(networkId),
|
3746
3805
|
'address': address,
|
3747
3806
|
'addressFrom': None,
|
3748
3807
|
'addressTo': None,
|
@@ -4920,6 +4979,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
4920
4979
|
else:
|
4921
4980
|
direction = 'in'
|
4922
4981
|
currencyId = self.safe_string(item, 'asset')
|
4982
|
+
currency = self.safe_currency(currencyId, currency)
|
4923
4983
|
timestamp = self.safe_integer(item, 'time')
|
4924
4984
|
type = self.safe_string(item, 'type')
|
4925
4985
|
return self.safe_ledger_entry({
|
@@ -4930,7 +4990,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
4930
4990
|
'referenceAccount': None,
|
4931
4991
|
'referenceId': self.safe_string(item, 'tradeId'),
|
4932
4992
|
'type': self.parse_ledger_entry_type(type),
|
4933
|
-
'currency':
|
4993
|
+
'currency': currency['code'],
|
4934
4994
|
'amount': self.parse_number(amount),
|
4935
4995
|
'timestamp': timestamp,
|
4936
4996
|
'datetime': self.iso8601(timestamp),
|
@@ -5085,6 +5145,7 @@ class bitmart(Exchange, ImplicitAPI):
|
|
5085
5145
|
# {"message":"Bad Request [from is empty]","code":50000,"trace":"579986f7-c93a-4559-926b-06ba9fa79d76","data":{}}
|
5086
5146
|
# {"message":"Kline size over 500","code":50004,"trace":"d625caa8-e8ca-4bd2-b77c-958776965819","data":{}}
|
5087
5147
|
# {"message":"Balance not enough","code":50020,"trace":"7c709d6a-3292-462c-98c5-32362540aeef","data":{}}
|
5148
|
+
# {"code":40012,"message":"You contract account available balance not enough.","trace":"..."}
|
5088
5149
|
#
|
5089
5150
|
# contract
|
5090
5151
|
#
|
@@ -5096,9 +5157,9 @@ class bitmart(Exchange, ImplicitAPI):
|
|
5096
5157
|
isErrorCode = (errorCode is not None) and (errorCode != '1000')
|
5097
5158
|
if isErrorCode or isErrorMessage:
|
5098
5159
|
feedback = self.id + ' ' + body
|
5099
|
-
self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
|
5100
|
-
self.throw_broadly_matched_exception(self.exceptions['broad'], errorCode, feedback)
|
5101
5160
|
self.throw_exactly_matched_exception(self.exceptions['exact'], message, feedback)
|
5102
5161
|
self.throw_broadly_matched_exception(self.exceptions['broad'], message, feedback)
|
5162
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
|
5163
|
+
self.throw_broadly_matched_exception(self.exceptions['broad'], errorCode, feedback)
|
5103
5164
|
raise ExchangeError(feedback) # unknown message
|
5104
5165
|
return None
|
ccxt/bitmex.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitmex import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, Leverages, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, Leverages, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -25,7 +25,7 @@ from ccxt.base.precise import Precise
|
|
25
25
|
|
26
26
|
class bitmex(Exchange, ImplicitAPI):
|
27
27
|
|
28
|
-
def describe(self):
|
28
|
+
def describe(self) -> Any:
|
29
29
|
return self.deep_extend(super(bitmex, self).describe(), {
|
30
30
|
'id': 'bitmex',
|
31
31
|
'name': 'BitMEX',
|
ccxt/bitopro.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.bitopro import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import math
|
10
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
10
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
@@ -21,7 +21,7 @@ from ccxt.base.precise import Precise
|
|
21
21
|
|
22
22
|
class bitopro(Exchange, ImplicitAPI):
|
23
23
|
|
24
|
-
def describe(self):
|
24
|
+
def describe(self) -> Any:
|
25
25
|
return self.deep_extend(super(bitopro, self).describe(), {
|
26
26
|
'id': 'bitopro',
|
27
27
|
'name': 'BitoPro',
|
ccxt/bitpanda.py
CHANGED
@@ -5,11 +5,12 @@
|
|
5
5
|
|
6
6
|
from ccxt.onetrading import onetrading
|
7
7
|
from ccxt.abstract.bitpanda import ImplicitAPI
|
8
|
+
from ccxt.base.types import Any
|
8
9
|
|
9
10
|
|
10
11
|
class bitpanda(onetrading, ImplicitAPI):
|
11
12
|
|
12
|
-
def describe(self):
|
13
|
+
def describe(self) -> Any:
|
13
14
|
return self.deep_extend(super(bitpanda, self).describe(), {
|
14
15
|
'id': 'bitpanda',
|
15
16
|
'alias': True,
|
ccxt/bitrue.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.bitrue import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import json
|
10
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
@@ -33,7 +33,7 @@ from ccxt.base.precise import Precise
|
|
33
33
|
|
34
34
|
class bitrue(Exchange, ImplicitAPI):
|
35
35
|
|
36
|
-
def describe(self):
|
36
|
+
def describe(self) -> Any:
|
37
37
|
return self.deep_extend(super(bitrue, self).describe(), {
|
38
38
|
'id': 'bitrue',
|
39
39
|
'name': 'Bitrue',
|
@@ -656,7 +656,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
656
656
|
'info': response,
|
657
657
|
}
|
658
658
|
|
659
|
-
def fetch_time(self, params={}):
|
659
|
+
def fetch_time(self, params={}) -> Int:
|
660
660
|
"""
|
661
661
|
fetches the current integer timestamp in milliseconds from the exchange server
|
662
662
|
|
ccxt/bitso.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitso import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, TradingFees, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -21,7 +21,7 @@ from ccxt.base.precise import Precise
|
|
21
21
|
|
22
22
|
class bitso(Exchange, ImplicitAPI):
|
23
23
|
|
24
|
-
def describe(self):
|
24
|
+
def describe(self) -> Any:
|
25
25
|
return self.deep_extend(super(bitso, self).describe(), {
|
26
26
|
'id': 'bitso',
|
27
27
|
'name': 'Bitso',
|
ccxt/bitstamp.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitstamp import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -26,7 +26,7 @@ from ccxt.base.precise import Precise
|
|
26
26
|
|
27
27
|
class bitstamp(Exchange, ImplicitAPI):
|
28
28
|
|
29
|
-
def describe(self):
|
29
|
+
def describe(self) -> Any:
|
30
30
|
return self.deep_extend(super(bitstamp, self).describe(), {
|
31
31
|
'id': 'bitstamp',
|
32
32
|
'name': 'Bitstamp',
|
ccxt/bitteam.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitteam import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -21,7 +21,7 @@ from ccxt.base.precise import Precise
|
|
21
21
|
|
22
22
|
class bitteam(Exchange, ImplicitAPI):
|
23
23
|
|
24
|
-
def describe(self):
|
24
|
+
def describe(self) -> Any:
|
25
25
|
return self.deep_extend(super(bitteam, self).describe(), {
|
26
26
|
'id': 'bitteam',
|
27
27
|
'name': 'BIT.TEAM',
|
ccxt/bitvavo.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitvavo import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -31,7 +31,7 @@ from ccxt.base.precise import Precise
|
|
31
31
|
|
32
32
|
class bitvavo(Exchange, ImplicitAPI):
|
33
33
|
|
34
|
-
def describe(self):
|
34
|
+
def describe(self) -> Any:
|
35
35
|
return self.deep_extend(super(bitvavo, self).describe(), {
|
36
36
|
'id': 'bitvavo',
|
37
37
|
'name': 'Bitvavo',
|
@@ -382,7 +382,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
382
382
|
# Prices submit with a precision larger than 5 will be cut by the API.
|
383
383
|
return self.decimal_to_precision(price, TRUNCATE, 8, DECIMAL_PLACES)
|
384
384
|
|
385
|
-
def fetch_time(self, params={}):
|
385
|
+
def fetch_time(self, params={}) -> Int:
|
386
386
|
"""
|
387
387
|
fetches the current integer timestamp in milliseconds from the exchange server
|
388
388
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
ccxt/bl3p.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bl3p import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, IndexType, Int, Market, Num, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
|
9
|
+
from ccxt.base.types import Any, Balances, Currency, IndexType, Int, Market, Num, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
12
12
|
from ccxt.base.precise import Precise
|
@@ -14,7 +14,7 @@ from ccxt.base.precise import Precise
|
|
14
14
|
|
15
15
|
class bl3p(Exchange, ImplicitAPI):
|
16
16
|
|
17
|
-
def describe(self):
|
17
|
+
def describe(self) -> Any:
|
18
18
|
return self.deep_extend(super(bl3p, self).describe(), {
|
19
19
|
'id': 'bl3p',
|
20
20
|
'name': 'BL3P',
|