ccxt 4.2.88__py2.py3-none-any.whl → 4.2.90__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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +1 -1
- ccxt/abstract/bingx.py +2 -0
- ccxt/abstract/bybit.py +2 -0
- ccxt/ascendex.py +6 -3
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ascendex.py +6 -3
- ccxt/async_support/base/exchange.py +15 -2
- ccxt/async_support/bigone.py +2 -2
- ccxt/async_support/binance.py +88 -14
- ccxt/async_support/bingx.py +96 -3
- ccxt/async_support/bit2c.py +2 -2
- ccxt/async_support/bitbank.py +2 -2
- ccxt/async_support/bitfinex.py +2 -2
- ccxt/async_support/bitfinex2.py +4 -3
- ccxt/async_support/bitflyer.py +4 -2
- ccxt/async_support/bitget.py +12 -5
- ccxt/async_support/bitmart.py +6 -4
- ccxt/async_support/bitmex.py +3 -2
- ccxt/async_support/bitopro.py +3 -3
- ccxt/async_support/bitrue.py +3 -2
- ccxt/async_support/bitso.py +2 -2
- ccxt/async_support/bitstamp.py +89 -97
- 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 +4 -2
- ccxt/async_support/bybit.py +57 -5
- ccxt/async_support/cex.py +3 -3
- ccxt/async_support/coinbase.py +42 -22
- ccxt/async_support/coinbaseinternational.py +3 -2
- ccxt/async_support/coinbasepro.py +3 -3
- ccxt/async_support/coincheck.py +2 -2
- ccxt/async_support/coinex.py +101 -13
- 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 +6 -4
- ccxt/async_support/cryptocom.py +1 -0
- ccxt/async_support/currencycom.py +3 -3
- ccxt/async_support/delta.py +3 -2
- ccxt/async_support/deribit.py +3 -3
- ccxt/async_support/digifinex.py +7 -4
- ccxt/async_support/exmo.py +4 -3
- ccxt/async_support/gate.py +8 -4
- ccxt/async_support/gemini.py +13 -12
- ccxt/async_support/hitbtc.py +8 -5
- ccxt/async_support/hollaex.py +3 -3
- ccxt/async_support/htx.py +7 -4
- ccxt/async_support/huobijp.py +2 -2
- ccxt/async_support/hyperliquid.py +3 -2
- ccxt/async_support/idex.py +3 -3
- ccxt/async_support/independentreserve.py +2 -2
- ccxt/async_support/kraken.py +3 -3
- ccxt/async_support/kucoin.py +43 -18
- ccxt/async_support/kucoinfutures.py +32 -4
- ccxt/async_support/kuna.py +2 -2
- ccxt/async_support/latoken.py +7 -3
- ccxt/async_support/lbank.py +7 -5
- ccxt/async_support/luno.py +4 -2
- ccxt/async_support/lykke.py +2 -2
- ccxt/async_support/mexc.py +57 -9
- ccxt/async_support/ndax.py +2 -2
- ccxt/async_support/oceanex.py +2 -2
- ccxt/async_support/okcoin.py +2 -2
- ccxt/async_support/okx.py +149 -12
- ccxt/async_support/onetrading.py +3 -3
- ccxt/async_support/phemex.py +3 -2
- ccxt/async_support/poloniex.py +3 -3
- ccxt/async_support/probit.py +2 -2
- ccxt/async_support/timex.py +6 -4
- ccxt/async_support/upbit.py +2 -2
- ccxt/async_support/wazirx.py +2 -2
- ccxt/async_support/whitebit.py +3 -3
- ccxt/async_support/woo.py +4 -3
- ccxt/async_support/yobit.py +2 -2
- ccxt/base/exchange.py +65 -12
- ccxt/base/types.py +33 -0
- ccxt/bigone.py +2 -2
- ccxt/binance.py +88 -14
- ccxt/bingx.py +96 -3
- ccxt/bit2c.py +2 -2
- ccxt/bitbank.py +2 -2
- ccxt/bitfinex.py +2 -2
- ccxt/bitfinex2.py +4 -3
- ccxt/bitflyer.py +4 -2
- ccxt/bitget.py +12 -5
- ccxt/bitmart.py +6 -4
- ccxt/bitmex.py +3 -2
- ccxt/bitopro.py +3 -3
- ccxt/bitrue.py +3 -2
- ccxt/bitso.py +2 -2
- ccxt/bitstamp.py +89 -97
- ccxt/bitteam.py +2 -2
- ccxt/bitvavo.py +3 -3
- ccxt/bl3p.py +2 -2
- ccxt/blockchaincom.py +2 -2
- ccxt/blofin.py +4 -2
- ccxt/bybit.py +57 -5
- ccxt/cex.py +3 -3
- ccxt/coinbase.py +42 -22
- ccxt/coinbaseinternational.py +3 -2
- ccxt/coinbasepro.py +3 -3
- ccxt/coincheck.py +2 -2
- ccxt/coinex.py +101 -13
- ccxt/coinlist.py +3 -3
- ccxt/coinmate.py +2 -2
- ccxt/coinmetro.py +2 -2
- ccxt/coinone.py +2 -2
- ccxt/coinsph.py +6 -4
- ccxt/cryptocom.py +1 -0
- ccxt/currencycom.py +3 -3
- ccxt/delta.py +3 -2
- ccxt/deribit.py +3 -3
- ccxt/digifinex.py +7 -4
- ccxt/exmo.py +4 -3
- ccxt/gate.py +8 -4
- ccxt/gemini.py +13 -12
- ccxt/hitbtc.py +8 -5
- ccxt/hollaex.py +3 -3
- ccxt/htx.py +7 -4
- ccxt/huobijp.py +2 -2
- ccxt/hyperliquid.py +3 -2
- ccxt/idex.py +3 -3
- ccxt/independentreserve.py +2 -2
- ccxt/kraken.py +3 -3
- ccxt/kucoin.py +43 -18
- ccxt/kucoinfutures.py +32 -4
- ccxt/kuna.py +2 -2
- ccxt/latoken.py +7 -3
- ccxt/lbank.py +7 -5
- ccxt/luno.py +4 -2
- ccxt/lykke.py +2 -2
- ccxt/mexc.py +57 -9
- ccxt/ndax.py +2 -2
- ccxt/oceanex.py +2 -2
- ccxt/okcoin.py +2 -2
- ccxt/okx.py +149 -12
- ccxt/onetrading.py +3 -3
- ccxt/phemex.py +3 -2
- ccxt/poloniex.py +3 -3
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +2 -0
- ccxt/pro/bitvavo.py +2 -2
- ccxt/probit.py +2 -2
- ccxt/timex.py +6 -4
- ccxt/upbit.py +2 -2
- ccxt/wazirx.py +2 -2
- ccxt/whitebit.py +3 -3
- ccxt/woo.py +4 -3
- ccxt/yobit.py +2 -2
- {ccxt-4.2.88.dist-info → ccxt-4.2.90.dist-info}/METADATA +4 -4
- {ccxt-4.2.88.dist-info → ccxt-4.2.90.dist-info}/RECORD +156 -156
- {ccxt-4.2.88.dist-info → ccxt-4.2.90.dist-info}/WHEEL +0 -0
- {ccxt-4.2.88.dist-info → ccxt-4.2.90.dist-info}/top_level.txt +0 -0
ccxt/exmo.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.exmo import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, 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 PermissionDenied
|
@@ -273,6 +273,7 @@ class exmo(Exchange, ImplicitAPI):
|
|
273
273
|
'info': data,
|
274
274
|
'symbol': self.safe_symbol(None, market),
|
275
275
|
'type': None,
|
276
|
+
'marginMode': 'isolated',
|
276
277
|
'amount': None,
|
277
278
|
'total': None,
|
278
279
|
'code': self.safe_value(market, 'quote'),
|
@@ -303,7 +304,7 @@ class exmo(Exchange, ImplicitAPI):
|
|
303
304
|
"""
|
304
305
|
return self.modify_margin_helper(symbol, amount, 'add', params)
|
305
306
|
|
306
|
-
def fetch_trading_fees(self, params={}):
|
307
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
307
308
|
"""
|
308
309
|
fetch the trading fees for multiple markets
|
309
310
|
:see: https://documenter.getpostman.com/view/10287440/SzYXWKPi#90927062-256c-4b03-900f-2b99131f9a54
|
@@ -573,7 +574,7 @@ class exmo(Exchange, ImplicitAPI):
|
|
573
574
|
}
|
574
575
|
return self.assign_default_deposit_withdraw_fees(result)
|
575
576
|
|
576
|
-
def fetch_currencies(self, params={}):
|
577
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
577
578
|
"""
|
578
579
|
fetches all available currencies on an exchange
|
579
580
|
:see: https://documenter.getpostman.com/view/10287440/SzYXWKPi#7cdf0ca8-9ff6-4cf3-aa33-bcec83155c49
|
ccxt/gate.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.gate import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, 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 PermissionDenied
|
@@ -138,6 +138,7 @@ class gate(Exchange, ImplicitAPI):
|
|
138
138
|
'fetchLeverages': True,
|
139
139
|
'fetchLeverageTiers': True,
|
140
140
|
'fetchLiquidations': True,
|
141
|
+
'fetchMarginAdjustmentHistory': False,
|
141
142
|
'fetchMarginMode': False,
|
142
143
|
'fetchMarketLeverageTiers': True,
|
143
144
|
'fetchMarkets': True,
|
@@ -1520,7 +1521,7 @@ class gate(Exchange, ImplicitAPI):
|
|
1520
1521
|
defaultSettle = ['usdt'] if (type == 'swap') else ['btc']
|
1521
1522
|
return self.safe_value(fetchMarketsContractOptions, 'settlementCurrencies', defaultSettle)
|
1522
1523
|
|
1523
|
-
def fetch_currencies(self, params={}):
|
1524
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
1524
1525
|
"""
|
1525
1526
|
fetches all available currencies on an exchange
|
1526
1527
|
:see: https://www.gate.io/docs/developers/apiv4/en/#list-all-currencies-details
|
@@ -1928,7 +1929,7 @@ class gate(Exchange, ImplicitAPI):
|
|
1928
1929
|
'network': network,
|
1929
1930
|
}
|
1930
1931
|
|
1931
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
1932
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1932
1933
|
"""
|
1933
1934
|
fetch the trading fees for a market
|
1934
1935
|
:see: https://www.gate.io/docs/developers/apiv4/en/#retrieve-personal-trading-fee
|
@@ -1958,7 +1959,7 @@ class gate(Exchange, ImplicitAPI):
|
|
1958
1959
|
#
|
1959
1960
|
return self.parse_trading_fee(response, market)
|
1960
1961
|
|
1961
|
-
def fetch_trading_fees(self, params={}):
|
1962
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
1962
1963
|
"""
|
1963
1964
|
fetch the trading fees for multiple markets
|
1964
1965
|
:see: https://www.gate.io/docs/developers/apiv4/en/#retrieve-personal-trading-fee
|
@@ -2017,6 +2018,8 @@ class gate(Exchange, ImplicitAPI):
|
|
2017
2018
|
'symbol': self.safe_string(market, 'symbol'),
|
2018
2019
|
'maker': self.safe_number(info, makerKey),
|
2019
2020
|
'taker': self.safe_number(info, takerKey),
|
2021
|
+
'percentage': None,
|
2022
|
+
'tierBased': None,
|
2020
2023
|
}
|
2021
2024
|
|
2022
2025
|
def fetch_transaction_fees(self, codes: List[str] = None, params={}):
|
@@ -5685,6 +5688,7 @@ class gate(Exchange, ImplicitAPI):
|
|
5685
5688
|
'info': data,
|
5686
5689
|
'symbol': market['symbol'],
|
5687
5690
|
'type': None,
|
5691
|
+
'marginMode': 'isolated',
|
5688
5692
|
'amount': None,
|
5689
5693
|
'total': total,
|
5690
5694
|
'code': self.safe_value(market, 'quote'),
|
ccxt/gemini.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.gemini import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, 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 PermissionDenied
|
@@ -121,6 +121,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
121
121
|
# https://github.com/ccxt/ccxt/issues/7874
|
122
122
|
# https://github.com/ccxt/ccxt/issues/7894
|
123
123
|
'web': 'https://docs.gemini.com',
|
124
|
+
'webExchange': 'https://exchange.gemini.com',
|
124
125
|
},
|
125
126
|
'fees': [
|
126
127
|
'https://gemini.com/api-fee-schedule',
|
@@ -302,7 +303,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
302
303
|
},
|
303
304
|
})
|
304
305
|
|
305
|
-
def fetch_currencies(self, params={}):
|
306
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
306
307
|
"""
|
307
308
|
fetches all available currencies on an exchange
|
308
309
|
:param dict [params]: extra parameters specific to the endpoint
|
@@ -629,7 +630,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
629
630
|
quoteId = None
|
630
631
|
settleId = None
|
631
632
|
tickSize = None
|
632
|
-
|
633
|
+
amountPrecision = None
|
633
634
|
minSize = None
|
634
635
|
status = None
|
635
636
|
swap = False
|
@@ -640,9 +641,9 @@ class gemini(Exchange, ImplicitAPI):
|
|
640
641
|
isArray = (isinstance(response, list))
|
641
642
|
if not isString and not isArray:
|
642
643
|
marketId = self.safe_string_lower(response, 'symbol')
|
644
|
+
amountPrecision = self.safe_number(response, 'tick_size') # right, exchange has an imperfect naming and self turns out to be an amount-precision
|
645
|
+
tickSize = self.safe_number(response, 'quote_increment') # self is tick-size actually
|
643
646
|
minSize = self.safe_number(response, 'min_order_size')
|
644
|
-
tickSize = self.safe_number(response, 'tick_size')
|
645
|
-
increment = self.safe_number(response, 'quote_increment')
|
646
647
|
status = self.parse_market_active(self.safe_string(response, 'status'))
|
647
648
|
baseId = self.safe_string(response, 'base_currency')
|
648
649
|
quoteId = self.safe_string(response, 'quote_currency')
|
@@ -653,9 +654,9 @@ class gemini(Exchange, ImplicitAPI):
|
|
653
654
|
marketId = response
|
654
655
|
else:
|
655
656
|
marketId = self.safe_string_lower(response, 0)
|
656
|
-
|
657
|
-
|
658
|
-
|
657
|
+
tickSize = self.parse_number(self.parse_precision(self.safe_string(response, 1))) # priceTickDecimalPlaces
|
658
|
+
amountPrecision = self.parse_number(self.parse_precision(self.safe_string(response, 2))) # quantityTickDecimalPlaces
|
659
|
+
minSize = self.safe_number(response, 3) # quantityMinimum
|
659
660
|
marketIdUpper = marketId.upper()
|
660
661
|
isPerp = (marketIdUpper.find('PERP') >= 0)
|
661
662
|
marketIdWithoutPerp = marketIdUpper.replace('PERP', '')
|
@@ -704,8 +705,8 @@ class gemini(Exchange, ImplicitAPI):
|
|
704
705
|
'strike': None,
|
705
706
|
'optionType': None,
|
706
707
|
'precision': {
|
707
|
-
'price':
|
708
|
-
'amount':
|
708
|
+
'price': tickSize,
|
709
|
+
'amount': amountPrecision,
|
709
710
|
},
|
710
711
|
'limits': {
|
711
712
|
'leverage': {
|
@@ -1048,7 +1049,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
1048
1049
|
result[code] = account
|
1049
1050
|
return self.safe_balance(result)
|
1050
1051
|
|
1051
|
-
def fetch_trading_fees(self, params={}):
|
1052
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
1052
1053
|
"""
|
1053
1054
|
fetch the trading fees for multiple markets
|
1054
1055
|
:see: https://docs.gemini.com/rest-api/#get-notional-volume
|
@@ -1707,7 +1708,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
1707
1708
|
apiKey = self.apiKey
|
1708
1709
|
if apiKey.find('account') < 0:
|
1709
1710
|
raise AuthenticationError(self.id + ' sign() requires an account-key, master-keys are not-supported')
|
1710
|
-
nonce = self.nonce()
|
1711
|
+
nonce = str(self.nonce())
|
1711
1712
|
request = self.extend({
|
1712
1713
|
'request': url,
|
1713
1714
|
'nonce': nonce,
|
ccxt/hitbtc.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.hitbtc import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModes, MarginModification, 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 PermissionDenied
|
@@ -802,7 +802,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
802
802
|
})
|
803
803
|
return result
|
804
804
|
|
805
|
-
def fetch_currencies(self, params={}):
|
805
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
806
806
|
"""
|
807
807
|
fetches all available currencies on an exchange
|
808
808
|
:see: https://api.hitbtc.com/#currencies
|
@@ -1547,7 +1547,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
1547
1547
|
timestamp = self.parse8601(self.safe_string(response, 'timestamp'))
|
1548
1548
|
return self.parse_order_book(response, symbol, timestamp, 'bid', 'ask')
|
1549
1549
|
|
1550
|
-
def parse_trading_fee(self, fee, market: Market = None):
|
1550
|
+
def parse_trading_fee(self, fee, market: Market = None) -> TradingFeeInterface:
|
1551
1551
|
#
|
1552
1552
|
# {
|
1553
1553
|
# "symbol":"ARVUSDT", # returned from fetchTradingFees only
|
@@ -1564,9 +1564,11 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
1564
1564
|
'symbol': symbol,
|
1565
1565
|
'taker': taker,
|
1566
1566
|
'maker': maker,
|
1567
|
+
'percentage': None,
|
1568
|
+
'tierBased': None,
|
1567
1569
|
}
|
1568
1570
|
|
1569
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
1571
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1570
1572
|
"""
|
1571
1573
|
fetch the trading fees for a market
|
1572
1574
|
:see: https://api.hitbtc.com/#get-trading-commission
|
@@ -1595,7 +1597,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
1595
1597
|
#
|
1596
1598
|
return self.parse_trading_fee(response, market)
|
1597
1599
|
|
1598
|
-
def fetch_trading_fees(self, params={}):
|
1600
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
1599
1601
|
"""
|
1600
1602
|
fetch the trading fees for multiple markets
|
1601
1603
|
:see: https://api.hitbtc.com/#get-all-trading-commissions
|
@@ -3080,6 +3082,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
3080
3082
|
'info': data,
|
3081
3083
|
'symbol': market['symbol'],
|
3082
3084
|
'type': None,
|
3085
|
+
'marginMode': 'isolated',
|
3083
3086
|
'amount': None,
|
3084
3087
|
'total': None,
|
3085
3088
|
'code': self.safe_string(currencyInfo, 'code'),
|
ccxt/hollaex.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.hollaex import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, 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 ArgumentsRequired
|
12
12
|
from ccxt.base.errors import BadRequest
|
@@ -328,7 +328,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
328
328
|
})
|
329
329
|
return result
|
330
330
|
|
331
|
-
def fetch_currencies(self, params={}):
|
331
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
332
332
|
"""
|
333
333
|
fetches all available currencies on an exchange
|
334
334
|
:see: https://apidocs.hollaex.com/#constants
|
@@ -679,7 +679,7 @@ class hollaex(Exchange, ImplicitAPI):
|
|
679
679
|
'fee': fee,
|
680
680
|
}, market)
|
681
681
|
|
682
|
-
def fetch_trading_fees(self, params={}):
|
682
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
683
683
|
"""
|
684
684
|
fetch the trading fees for multiple markets
|
685
685
|
:see: https://apidocs.hollaex.com/#tiers
|
ccxt/htx.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.htx import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -102,6 +102,7 @@ class htx(Exchange, ImplicitAPI):
|
|
102
102
|
'fetchLeverage': False,
|
103
103
|
'fetchLeverageTiers': True,
|
104
104
|
'fetchLiquidations': True,
|
105
|
+
'fetchMarginAdjustmentHistory': False,
|
105
106
|
'fetchMarketLeverageTiers': True,
|
106
107
|
'fetchMarkets': True,
|
107
108
|
'fetchMarkOHLCV': True,
|
@@ -1485,7 +1486,7 @@ class htx(Exchange, ImplicitAPI):
|
|
1485
1486
|
#
|
1486
1487
|
return self.safe_integer_2(response, 'data', 'ts')
|
1487
1488
|
|
1488
|
-
def parse_trading_fee(self, fee, market: Market = None):
|
1489
|
+
def parse_trading_fee(self, fee, market: Market = None) -> TradingFeeInterface:
|
1489
1490
|
#
|
1490
1491
|
# {
|
1491
1492
|
# "symbol":"btcusdt",
|
@@ -1501,9 +1502,11 @@ class htx(Exchange, ImplicitAPI):
|
|
1501
1502
|
'symbol': self.safe_symbol(marketId, market),
|
1502
1503
|
'maker': self.safe_number(fee, 'actualMakerRate'),
|
1503
1504
|
'taker': self.safe_number(fee, 'actualTakerRate'),
|
1505
|
+
'percentage': None,
|
1506
|
+
'tierBased': None,
|
1504
1507
|
}
|
1505
1508
|
|
1506
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
1509
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1507
1510
|
"""
|
1508
1511
|
fetch the trading fees for a market
|
1509
1512
|
:param str symbol: unified market symbol
|
@@ -2986,7 +2989,7 @@ class htx(Exchange, ImplicitAPI):
|
|
2986
2989
|
defaultAccount = self.safe_value(accounts, 0, {})
|
2987
2990
|
return self.safe_string(defaultAccount, 'id')
|
2988
2991
|
|
2989
|
-
def fetch_currencies(self, params={}):
|
2992
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
2990
2993
|
"""
|
2991
2994
|
fetches all available currencies on an exchange
|
2992
2995
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
ccxt/huobijp.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.huobijp import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -954,7 +954,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
954
954
|
response = self.privateGetAccountAccounts(params)
|
955
955
|
return response['data']
|
956
956
|
|
957
|
-
def fetch_currencies(self, params={}):
|
957
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
958
958
|
"""
|
959
959
|
fetches all available currencies on an exchange
|
960
960
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
ccxt/hyperliquid.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.hyperliquid import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Trade, TransferEntry
|
8
|
+
from ccxt.base.types import Balances, Currencies, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Trade, TransferEntry
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -207,7 +207,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
207
207
|
super(hyperliquid, self).set_sandbox_mode(enabled)
|
208
208
|
self.options['sandboxMode'] = enabled
|
209
209
|
|
210
|
-
def fetch_currencies(self, params={}):
|
210
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
211
211
|
"""
|
212
212
|
fetches all available currencies on an exchange
|
213
213
|
:see: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-exchange-metadata
|
@@ -2024,6 +2024,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
2024
2024
|
'info': data,
|
2025
2025
|
'symbol': self.safe_symbol(None, market),
|
2026
2026
|
'type': None,
|
2027
|
+
'marginMode': 'isolated',
|
2027
2028
|
'amount': None,
|
2028
2029
|
'total': None,
|
2029
2030
|
'code': self.safe_string(market, 'settle'),
|
ccxt/idex.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.idex import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, 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 BadRequest
|
@@ -609,7 +609,7 @@ class idex(Exchange, ImplicitAPI):
|
|
609
609
|
'fee': fee,
|
610
610
|
}, market)
|
611
611
|
|
612
|
-
def fetch_trading_fees(self, params={}):
|
612
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
613
613
|
"""
|
614
614
|
fetch the trading fees for multiple markets
|
615
615
|
:see: https://api-docs-v3.idex.io/#get-api-account
|
@@ -712,7 +712,7 @@ class idex(Exchange, ImplicitAPI):
|
|
712
712
|
descending = side == 'bids'
|
713
713
|
return self.sort_by(result, 0, descending)
|
714
714
|
|
715
|
-
def fetch_currencies(self, params={}):
|
715
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
716
716
|
"""
|
717
717
|
fetches all available currencies on an exchange
|
718
718
|
:see: https://api-docs-v3.idex.io/#get-assets
|
ccxt/independentreserve.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.independentreserve import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
|
9
|
+
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, 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
|
@@ -586,7 +586,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
586
586
|
response = self.publicGetGetRecentTrades(self.extend(request, params))
|
587
587
|
return self.parse_trades(response['Trades'], market, since, limit)
|
588
588
|
|
589
|
-
def fetch_trading_fees(self, params={}):
|
589
|
+
def fetch_trading_fees(self, params={}) -> TradingFees:
|
590
590
|
"""
|
591
591
|
fetch the trading fees for multiple markets
|
592
592
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
ccxt/kraken.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.kraken import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, IndexType, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, IndexType, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -641,7 +641,7 @@ class kraken(Exchange, ImplicitAPI):
|
|
641
641
|
result.append(self.extend(defaults, markets[i]))
|
642
642
|
return result
|
643
643
|
|
644
|
-
def fetch_currencies(self, params={}):
|
644
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
645
645
|
"""
|
646
646
|
fetches all available currencies on an exchange
|
647
647
|
:see: https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getAssetInfo
|
@@ -697,7 +697,7 @@ class kraken(Exchange, ImplicitAPI):
|
|
697
697
|
}
|
698
698
|
return result
|
699
699
|
|
700
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
700
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
701
701
|
"""
|
702
702
|
fetch the trading fees for a market
|
703
703
|
:see: https://docs.kraken.com/rest/#tag/Account-Data/operation/getTradeVolume
|
ccxt/kucoin.py
CHANGED
@@ -8,7 +8,7 @@ from ccxt.abstract.kucoin import ImplicitAPI
|
|
8
8
|
import hashlib
|
9
9
|
import math
|
10
10
|
import json
|
11
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
11
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
12
12
|
from typing import List
|
13
13
|
from ccxt.base.errors import ExchangeError
|
14
14
|
from ccxt.base.errors import PermissionDenied
|
@@ -92,6 +92,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
92
92
|
'fetchL3OrderBook': True,
|
93
93
|
'fetchLedger': True,
|
94
94
|
'fetchLeverageTiers': False,
|
95
|
+
'fetchMarginAdjustmentHistory': False,
|
95
96
|
'fetchMarginMode': False,
|
96
97
|
'fetchMarketLeverageTiers': False,
|
97
98
|
'fetchMarkets': True,
|
@@ -1130,7 +1131,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1130
1131
|
})
|
1131
1132
|
return result
|
1132
1133
|
|
1133
|
-
def fetch_currencies(self, params={}):
|
1134
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
1134
1135
|
"""
|
1135
1136
|
fetches all available currencies on an exchange
|
1136
1137
|
:see: https://docs.kucoin.com/#get-currencies
|
@@ -2960,7 +2961,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2960
2961
|
'fee': fee,
|
2961
2962
|
}, market)
|
2962
2963
|
|
2963
|
-
def fetch_trading_fee(self, symbol: str, params={}):
|
2964
|
+
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
2964
2965
|
"""
|
2965
2966
|
fetch the trading fees for a market
|
2966
2967
|
:see: https://docs.kucoin.com/#actual-fee-rate-of-the-trading-pair
|
@@ -3314,9 +3315,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3314
3315
|
|
3315
3316
|
def parse_balance_helper(self, entry):
|
3316
3317
|
account = self.account()
|
3317
|
-
account['used'] = self.
|
3318
|
-
account['free'] = self.
|
3319
|
-
account['total'] = self.
|
3318
|
+
account['used'] = self.safe_string_2(entry, 'holdBalance', 'hold')
|
3319
|
+
account['free'] = self.safe_string_2(entry, 'availableBalance', 'available')
|
3320
|
+
account['total'] = self.safe_string_2(entry, 'totalBalance', 'total')
|
3320
3321
|
debt = self.safe_string(entry, 'liability')
|
3321
3322
|
interest = self.safe_string(entry, 'interest')
|
3322
3323
|
account['debt'] = Precise.string_add(debt, interest)
|
@@ -3365,7 +3366,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3365
3366
|
request['type'] = type
|
3366
3367
|
response = self.privateGetAccounts(self.extend(request, query))
|
3367
3368
|
#
|
3368
|
-
# Spot
|
3369
|
+
# Spot
|
3369
3370
|
#
|
3370
3371
|
# {
|
3371
3372
|
# "code": "200000",
|
@@ -3381,35 +3382,59 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3381
3382
|
# ]
|
3382
3383
|
# }
|
3383
3384
|
#
|
3385
|
+
# Cross
|
3386
|
+
#
|
3387
|
+
# {
|
3388
|
+
# "code": "200000",
|
3389
|
+
# "data": {
|
3390
|
+
# "debtRatio": "0",
|
3391
|
+
# "accounts": [
|
3392
|
+
# {
|
3393
|
+
# "currency": "USDT",
|
3394
|
+
# "totalBalance": "5",
|
3395
|
+
# "availableBalance": "5",
|
3396
|
+
# "holdBalance": "0",
|
3397
|
+
# "liability": "0",
|
3398
|
+
# "maxBorrowSize": "20"
|
3399
|
+
# },
|
3400
|
+
# ]
|
3401
|
+
# }
|
3402
|
+
# }
|
3403
|
+
#
|
3384
3404
|
# Isolated
|
3385
3405
|
#
|
3386
3406
|
# {
|
3387
3407
|
# "code": "200000",
|
3388
3408
|
# "data": {
|
3389
|
-
# "
|
3390
|
-
# "
|
3409
|
+
# "totalAssetOfQuoteCurrency": "0",
|
3410
|
+
# "totalLiabilityOfQuoteCurrency": "0",
|
3411
|
+
# "timestamp": 1712085661155,
|
3391
3412
|
# "assets": [
|
3392
3413
|
# {
|
3393
3414
|
# "symbol": "MANA-USDT",
|
3394
|
-
# "status": "
|
3415
|
+
# "status": "EFFECTIVE",
|
3395
3416
|
# "debtRatio": "0",
|
3396
3417
|
# "baseAsset": {
|
3397
3418
|
# "currency": "MANA",
|
3398
|
-
# "
|
3399
|
-
# "
|
3400
|
-
# "
|
3419
|
+
# "borrowEnabled": True,
|
3420
|
+
# "transferInEnabled": True,
|
3421
|
+
# "total": "0",
|
3422
|
+
# "hold": "0",
|
3423
|
+
# "available": "0",
|
3401
3424
|
# "liability": "0",
|
3402
3425
|
# "interest": "0",
|
3403
|
-
# "
|
3426
|
+
# "maxBorrowSize": "0"
|
3404
3427
|
# },
|
3405
3428
|
# "quoteAsset": {
|
3406
3429
|
# "currency": "USDT",
|
3407
|
-
# "
|
3408
|
-
# "
|
3409
|
-
# "
|
3430
|
+
# "borrowEnabled": True,
|
3431
|
+
# "transferInEnabled": True,
|
3432
|
+
# "total": "0",
|
3433
|
+
# "hold": "0",
|
3434
|
+
# "available": "0",
|
3410
3435
|
# "liability": "0",
|
3411
3436
|
# "interest": "0",
|
3412
|
-
# "
|
3437
|
+
# "maxBorrowSize": "0"
|
3413
3438
|
# }
|
3414
3439
|
# },
|
3415
3440
|
# ...
|
ccxt/kucoinfutures.py
CHANGED
@@ -80,6 +80,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
80
80
|
'fetchL3OrderBook': True,
|
81
81
|
'fetchLedger': True,
|
82
82
|
'fetchLeverageTiers': False,
|
83
|
+
'fetchMarginAdjustmentHistory': False,
|
83
84
|
'fetchMarginMode': False,
|
84
85
|
'fetchMarketLeverageTiers': True,
|
85
86
|
'fetchMarkets': True,
|
@@ -1497,7 +1498,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1497
1498
|
'direction': 'in',
|
1498
1499
|
})
|
1499
1500
|
|
1500
|
-
def parse_margin_modification(self, info, market: Market = None):
|
1501
|
+
def parse_margin_modification(self, info, market: Market = None) -> MarginModification:
|
1501
1502
|
#
|
1502
1503
|
# {
|
1503
1504
|
# "id": "62311d26064e8f00013f2c6d",
|
@@ -1549,14 +1550,18 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1549
1550
|
crossMode = self.safe_value(info, 'crossMode')
|
1550
1551
|
mode = 'cross' if crossMode else 'isolated'
|
1551
1552
|
marketId = self.safe_string(market, 'symbol')
|
1553
|
+
timestamp = self.safe_integer(info, 'currentTimestamp')
|
1552
1554
|
return {
|
1553
1555
|
'info': info,
|
1554
|
-
'
|
1555
|
-
'
|
1556
|
+
'symbol': self.safe_symbol(marketId, market),
|
1557
|
+
'type': None,
|
1558
|
+
'marginMode': mode,
|
1556
1559
|
'amount': None,
|
1560
|
+
'total': None,
|
1557
1561
|
'code': self.safe_currency_code(currencyId),
|
1558
|
-
'symbol': self.safe_symbol(marketId, market),
|
1559
1562
|
'status': None,
|
1563
|
+
'timestamp': timestamp,
|
1564
|
+
'datetime': self.iso8601(timestamp),
|
1560
1565
|
}
|
1561
1566
|
|
1562
1567
|
def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
@@ -1682,6 +1687,29 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1682
1687
|
return self.fetch_paginated_call_dynamic('fetchClosedOrders', symbol, since, limit, params)
|
1683
1688
|
return self.fetch_orders_by_status('done', symbol, since, limit, params)
|
1684
1689
|
|
1690
|
+
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1691
|
+
"""
|
1692
|
+
fetches information on multiple open orders made by the user
|
1693
|
+
:see: https://docs.kucoin.com/futures/#get-order-list
|
1694
|
+
:see: https://docs.kucoin.com/futures/#get-untriggered-stop-order-list
|
1695
|
+
:param str symbol: unified market symbol of the market orders were made in
|
1696
|
+
:param int [since]: the earliest time in ms to fetch orders for
|
1697
|
+
:param int [limit]: the maximum number of order structures to retrieve
|
1698
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1699
|
+
:param int [params.till]: end time in ms
|
1700
|
+
:param str [params.side]: buy or sell
|
1701
|
+
:param str [params.type]: limit, or market
|
1702
|
+
:param boolean [params.trigger]: set to True to retrieve untriggered stop orders
|
1703
|
+
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
1704
|
+
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1705
|
+
"""
|
1706
|
+
self.load_markets()
|
1707
|
+
paginate = False
|
1708
|
+
paginate, params = self.handle_option_and_params(params, 'fetchOpenOrders', 'paginate')
|
1709
|
+
if paginate:
|
1710
|
+
return self.fetch_paginated_call_dynamic('fetchOpenOrders', symbol, since, limit, params)
|
1711
|
+
return self.fetch_orders_by_status('open', symbol, since, limit, params)
|
1712
|
+
|
1685
1713
|
def fetch_order(self, id: Str = None, symbol: Str = None, params={}):
|
1686
1714
|
"""
|
1687
1715
|
fetches information on an order made by the user
|
ccxt/kuna.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.kuna import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import json
|
10
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -425,7 +425,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
425
425
|
data = self.safe_value(response, 'data', {})
|
426
426
|
return self.safe_integer(data, 'timestamp_miliseconds')
|
427
427
|
|
428
|
-
def fetch_currencies(self, params={}):
|
428
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
429
429
|
"""
|
430
430
|
fetches all available currencies on an exchange
|
431
431
|
:see: https://docs.kuna.io/docs/get-information-about-available-currencies
|