ccxt 4.3.29__py2.py3-none-any.whl → 4.3.31__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 -1
- ccxt/abstract/binance.py +2 -0
- ccxt/abstract/binancecoinm.py +2 -0
- ccxt/abstract/binanceus.py +2 -0
- ccxt/abstract/binanceusdm.py +2 -0
- ccxt/ace.py +14 -14
- ccxt/alpaca.py +16 -16
- ccxt/ascendex.py +46 -46
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ace.py +14 -14
- ccxt/async_support/alpaca.py +16 -16
- ccxt/async_support/ascendex.py +46 -46
- ccxt/async_support/base/exchange.py +23 -23
- ccxt/async_support/base/ws/aiohttp_client.py +1 -0
- ccxt/async_support/base/ws/future.py +27 -29
- ccxt/async_support/bigone.py +32 -32
- ccxt/async_support/binance.py +105 -96
- ccxt/async_support/bingx.py +22 -22
- ccxt/async_support/bit2c.py +13 -13
- ccxt/async_support/bitbank.py +19 -19
- ccxt/async_support/bitbns.py +17 -17
- ccxt/async_support/bitfinex.py +24 -24
- ccxt/async_support/bitfinex2.py +142 -109
- ccxt/async_support/bitflyer.py +23 -23
- ccxt/async_support/bitget.py +76 -76
- ccxt/async_support/bithumb.py +20 -20
- ccxt/async_support/bitmart.py +55 -55
- ccxt/async_support/bitmex.py +41 -41
- ccxt/async_support/bitopro.py +30 -30
- ccxt/async_support/bitrue.py +37 -37
- ccxt/async_support/bitso.py +30 -30
- ccxt/async_support/bitstamp.py +31 -31
- ccxt/async_support/bitteam.py +26 -26
- ccxt/async_support/bitvavo.py +27 -27
- ccxt/async_support/bl3p.py +8 -8
- ccxt/async_support/blockchaincom.py +24 -24
- ccxt/async_support/blofin.py +37 -37
- ccxt/async_support/btcalpha.py +19 -19
- ccxt/async_support/btcbox.py +11 -11
- ccxt/async_support/btcmarkets.py +22 -22
- ccxt/async_support/btcturk.py +13 -13
- ccxt/async_support/bybit.py +96 -96
- ccxt/async_support/cex.py +21 -21
- ccxt/async_support/coinbase.py +53 -53
- ccxt/async_support/coinbaseexchange.py +29 -29
- ccxt/async_support/coinbaseinternational.py +32 -32
- ccxt/async_support/coincheck.py +14 -14
- ccxt/async_support/coinex.py +424 -448
- ccxt/async_support/coinlist.py +35 -35
- ccxt/async_support/coinmate.py +22 -22
- ccxt/async_support/coinmetro.py +22 -22
- ccxt/async_support/coinone.py +18 -18
- ccxt/async_support/coinsph.py +32 -32
- ccxt/async_support/coinspot.py +8 -8
- ccxt/async_support/cryptocom.py +43 -43
- ccxt/async_support/currencycom.py +33 -33
- ccxt/async_support/delta.py +35 -35
- ccxt/async_support/deribit.py +54 -54
- ccxt/async_support/digifinex.py +56 -56
- ccxt/async_support/exmo.py +34 -34
- ccxt/async_support/gate.py +60 -60
- ccxt/async_support/gemini.py +24 -24
- ccxt/async_support/hitbtc.py +51 -51
- ccxt/async_support/hollaex.py +29 -29
- ccxt/async_support/htx.py +73 -73
- ccxt/async_support/huobijp.py +30 -30
- ccxt/async_support/hyperliquid.py +58 -58
- ccxt/async_support/idex.py +33 -33
- ccxt/async_support/independentreserve.py +12 -12
- ccxt/async_support/indodax.py +21 -21
- ccxt/async_support/kraken.py +46 -51
- ccxt/async_support/krakenfutures.py +29 -29
- ccxt/async_support/kucoin.py +51 -51
- ccxt/async_support/kucoinfutures.py +33 -33
- ccxt/async_support/kuna.py +27 -27
- ccxt/async_support/latoken.py +27 -27
- ccxt/async_support/lbank.py +35 -35
- ccxt/async_support/luno.py +19 -19
- ccxt/async_support/lykke.py +20 -20
- ccxt/async_support/mercado.py +17 -17
- ccxt/async_support/mexc.py +64 -64
- ccxt/async_support/ndax.py +38 -38
- ccxt/async_support/novadax.py +26 -26
- ccxt/async_support/oceanex.py +21 -21
- ccxt/async_support/okcoin.py +35 -35
- ccxt/async_support/okx.py +85 -85
- ccxt/async_support/onetrading.py +32 -32
- ccxt/async_support/p2b.py +14 -14
- ccxt/async_support/paymium.py +12 -12
- ccxt/async_support/phemex.py +50 -50
- ccxt/async_support/poloniex.py +35 -35
- ccxt/async_support/poloniexfutures.py +25 -21
- ccxt/async_support/probit.py +30 -30
- ccxt/async_support/timex.py +22 -22
- ccxt/async_support/tokocrypto.py +26 -26
- ccxt/async_support/tradeogre.py +12 -12
- ccxt/async_support/upbit.py +28 -28
- ccxt/async_support/wavesexchange.py +33 -33
- ccxt/async_support/wazirx.py +21 -21
- ccxt/async_support/whitebit.py +80 -40
- ccxt/async_support/woo.py +51 -51
- ccxt/async_support/woofipro.py +46 -46
- ccxt/async_support/yobit.py +20 -20
- ccxt/async_support/zaif.py +12 -12
- ccxt/async_support/zonda.py +22 -22
- ccxt/base/exchange.py +39 -35
- ccxt/base/types.py +13 -0
- ccxt/bigone.py +32 -32
- ccxt/binance.py +105 -96
- ccxt/bingx.py +22 -22
- ccxt/bit2c.py +13 -13
- ccxt/bitbank.py +19 -19
- ccxt/bitbns.py +17 -17
- ccxt/bitfinex.py +24 -24
- ccxt/bitfinex2.py +142 -109
- ccxt/bitflyer.py +23 -23
- ccxt/bitget.py +76 -76
- ccxt/bithumb.py +20 -20
- ccxt/bitmart.py +55 -55
- ccxt/bitmex.py +41 -41
- ccxt/bitopro.py +30 -30
- ccxt/bitrue.py +37 -37
- ccxt/bitso.py +30 -30
- ccxt/bitstamp.py +31 -31
- ccxt/bitteam.py +26 -26
- ccxt/bitvavo.py +27 -27
- ccxt/bl3p.py +8 -8
- ccxt/blockchaincom.py +24 -24
- ccxt/blofin.py +37 -37
- ccxt/btcalpha.py +19 -19
- ccxt/btcbox.py +11 -11
- ccxt/btcmarkets.py +22 -22
- ccxt/btcturk.py +13 -13
- ccxt/bybit.py +96 -96
- ccxt/cex.py +21 -21
- ccxt/coinbase.py +53 -53
- ccxt/coinbaseexchange.py +29 -29
- ccxt/coinbaseinternational.py +32 -32
- ccxt/coincheck.py +14 -14
- ccxt/coinex.py +424 -448
- ccxt/coinlist.py +35 -35
- ccxt/coinmate.py +22 -22
- ccxt/coinmetro.py +22 -22
- ccxt/coinone.py +18 -18
- ccxt/coinsph.py +32 -32
- ccxt/coinspot.py +8 -8
- ccxt/cryptocom.py +43 -43
- ccxt/currencycom.py +33 -33
- ccxt/delta.py +35 -35
- ccxt/deribit.py +54 -54
- ccxt/digifinex.py +56 -56
- ccxt/exmo.py +34 -34
- ccxt/gate.py +60 -60
- ccxt/gemini.py +24 -24
- ccxt/hitbtc.py +51 -51
- ccxt/hollaex.py +29 -29
- ccxt/htx.py +73 -73
- ccxt/huobijp.py +30 -30
- ccxt/hyperliquid.py +58 -58
- ccxt/idex.py +33 -33
- ccxt/independentreserve.py +12 -12
- ccxt/indodax.py +21 -21
- ccxt/kraken.py +46 -51
- ccxt/krakenfutures.py +29 -29
- ccxt/kucoin.py +51 -51
- ccxt/kucoinfutures.py +33 -33
- ccxt/kuna.py +27 -27
- ccxt/latoken.py +27 -27
- ccxt/lbank.py +35 -35
- ccxt/luno.py +19 -19
- ccxt/lykke.py +20 -20
- ccxt/mercado.py +17 -17
- ccxt/mexc.py +64 -64
- ccxt/ndax.py +38 -38
- ccxt/novadax.py +26 -26
- ccxt/oceanex.py +21 -21
- ccxt/okcoin.py +35 -35
- ccxt/okx.py +85 -85
- ccxt/onetrading.py +32 -32
- ccxt/p2b.py +14 -14
- ccxt/paymium.py +12 -12
- ccxt/phemex.py +50 -50
- ccxt/poloniex.py +35 -35
- ccxt/poloniexfutures.py +25 -21
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/alpaca.py +8 -8
- ccxt/pro/ascendex.py +4 -4
- ccxt/pro/binance.py +56 -56
- ccxt/pro/bingx.py +5 -5
- ccxt/pro/bitfinex.py +6 -6
- ccxt/pro/bitfinex2.py +10 -10
- ccxt/pro/bitget.py +17 -17
- ccxt/pro/bithumb.py +6 -6
- ccxt/pro/bitmart.py +8 -8
- ccxt/pro/bitmex.py +16 -16
- ccxt/pro/bitopro.py +4 -4
- ccxt/pro/bitrue.py +8 -8
- ccxt/pro/bitstamp.py +5 -5
- ccxt/pro/bitvavo.py +14 -14
- ccxt/pro/blockchaincom.py +7 -7
- ccxt/pro/bybit.py +12 -12
- ccxt/pro/cex.py +19 -19
- ccxt/pro/coinbase.py +2 -2
- ccxt/pro/coinbaseexchange.py +10 -10
- ccxt/pro/coinbaseinternational.py +4 -4
- ccxt/pro/coincheck.py +2 -2
- ccxt/pro/coinex.py +15 -15
- ccxt/pro/coinone.py +4 -4
- ccxt/pro/cryptocom.py +11 -11
- ccxt/pro/currencycom.py +4 -4
- ccxt/pro/deribit.py +9 -9
- ccxt/pro/exmo.py +9 -9
- ccxt/pro/gate.py +12 -12
- ccxt/pro/gemini.py +11 -11
- ccxt/pro/hitbtc.py +13 -13
- ccxt/pro/hollaex.py +6 -6
- ccxt/pro/htx.py +15 -15
- ccxt/pro/huobijp.py +16 -16
- ccxt/pro/hyperliquid.py +9 -9
- ccxt/pro/idex.py +12 -12
- ccxt/pro/independentreserve.py +2 -2
- ccxt/pro/kraken.py +14 -14
- ccxt/pro/krakenfutures.py +12 -12
- ccxt/pro/kucoin.py +12 -12
- ccxt/pro/kucoinfutures.py +16 -16
- ccxt/pro/lbank.py +12 -12
- ccxt/pro/luno.py +4 -4
- ccxt/pro/mexc.py +14 -14
- ccxt/pro/ndax.py +12 -12
- ccxt/pro/okcoin.py +6 -6
- ccxt/pro/okx.py +30 -30
- ccxt/pro/onetrading.py +13 -13
- ccxt/pro/p2b.py +2 -2
- ccxt/pro/phemex.py +9 -9
- ccxt/pro/poloniex.py +9 -9
- ccxt/pro/poloniexfutures.py +10 -10
- ccxt/pro/probit.py +8 -8
- ccxt/pro/upbit.py +1 -1
- ccxt/pro/wazirx.py +10 -10
- ccxt/pro/whitebit.py +8 -8
- ccxt/pro/woo.py +14 -14
- ccxt/pro/woofipro.py +14 -14
- ccxt/probit.py +30 -30
- ccxt/test/base/test_shared_methods.py +1 -0
- ccxt/timex.py +22 -22
- ccxt/tokocrypto.py +26 -26
- ccxt/tradeogre.py +12 -12
- ccxt/upbit.py +28 -28
- ccxt/wavesexchange.py +33 -33
- ccxt/wazirx.py +21 -21
- ccxt/whitebit.py +80 -40
- ccxt/woo.py +51 -51
- ccxt/woofipro.py +46 -46
- ccxt/yobit.py +20 -20
- ccxt/zaif.py +12 -12
- ccxt/zonda.py +22 -22
- {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/METADATA +4 -4
- {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/RECORD +260 -260
- {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/WHEEL +0 -0
- {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/top_level.txt +0 -0
@@ -279,7 +279,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
279
279
|
# }
|
280
280
|
# ]
|
281
281
|
#
|
282
|
-
result = {}
|
282
|
+
result: dict = {}
|
283
283
|
for i in range(0, len(response)):
|
284
284
|
currency = response[i]
|
285
285
|
id = self.safe_string(currency, 'id')
|
@@ -482,7 +482,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
482
482
|
}
|
483
483
|
|
484
484
|
def parse_balance(self, response) -> Balances:
|
485
|
-
result = {'info': response}
|
485
|
+
result: dict = {'info': response}
|
486
486
|
for i in range(0, len(response)):
|
487
487
|
balance = response[i]
|
488
488
|
currencyId = self.safe_string(balance, 'currency')
|
@@ -518,7 +518,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
518
518
|
# level 1 - only the best bid and ask
|
519
519
|
# level 2 - top 50 bids and asks(aggregated)
|
520
520
|
# level 3 - full order book(non aggregated)
|
521
|
-
request = {
|
521
|
+
request: dict = {
|
522
522
|
'id': self.market_id(symbol),
|
523
523
|
'level': 2, # 1 best bidask, 2 aggregated, 3 full
|
524
524
|
}
|
@@ -631,7 +631,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
631
631
|
"""
|
632
632
|
await self.load_markets()
|
633
633
|
symbols = self.market_symbols(symbols)
|
634
|
-
request = {}
|
634
|
+
request: dict = {}
|
635
635
|
response = await self.publicGetProductsSparkLines(self.extend(request, params))
|
636
636
|
#
|
637
637
|
# {
|
@@ -653,7 +653,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
653
653
|
# ]
|
654
654
|
# }
|
655
655
|
#
|
656
|
-
result = {}
|
656
|
+
result: dict = {}
|
657
657
|
marketIds = list(response.keys())
|
658
658
|
delimiter = '-'
|
659
659
|
for i in range(0, len(marketIds)):
|
@@ -675,7 +675,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
675
675
|
"""
|
676
676
|
await self.load_markets()
|
677
677
|
market = self.market(symbol)
|
678
|
-
request = {
|
678
|
+
request: dict = {
|
679
679
|
'id': market['id'],
|
680
680
|
}
|
681
681
|
# publicGetProductsIdTicker or publicGetProductsIdStats
|
@@ -705,7 +705,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
705
705
|
#
|
706
706
|
return self.parse_ticker(response, market)
|
707
707
|
|
708
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
708
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
709
709
|
#
|
710
710
|
# {
|
711
711
|
# "type": "match",
|
@@ -794,7 +794,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
794
794
|
return await self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params, 100)
|
795
795
|
await self.load_markets()
|
796
796
|
market = self.market(symbol)
|
797
|
-
request = {
|
797
|
+
request: dict = {
|
798
798
|
'product_id': market['id'],
|
799
799
|
}
|
800
800
|
if limit is not None:
|
@@ -820,7 +820,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
820
820
|
"""
|
821
821
|
await self.load_markets()
|
822
822
|
market = self.market(symbol)
|
823
|
-
request = {
|
823
|
+
request: dict = {
|
824
824
|
'id': market['id'], # fixes issue #2
|
825
825
|
}
|
826
826
|
if limit is not None:
|
@@ -857,7 +857,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
857
857
|
#
|
858
858
|
maker = self.safe_number(response, 'maker_fee_rate')
|
859
859
|
taker = self.safe_number(response, 'taker_fee_rate')
|
860
|
-
result = {}
|
860
|
+
result: dict = {}
|
861
861
|
for i in range(0, len(self.symbols)):
|
862
862
|
symbol = self.symbols[i]
|
863
863
|
result[symbol] = {
|
@@ -910,7 +910,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
910
910
|
return await self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 300)
|
911
911
|
market = self.market(symbol)
|
912
912
|
parsedTimeframe = self.safe_integer(self.timeframes, timeframe)
|
913
|
-
request = {
|
913
|
+
request: dict = {
|
914
914
|
'id': market['id'],
|
915
915
|
}
|
916
916
|
if parsedTimeframe is not None:
|
@@ -959,8 +959,8 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
959
959
|
#
|
960
960
|
return self.safe_timestamp(response, 'epoch')
|
961
961
|
|
962
|
-
def parse_order_status(self, status):
|
963
|
-
statuses = {
|
962
|
+
def parse_order_status(self, status: Str):
|
963
|
+
statuses: dict = {
|
964
964
|
'pending': 'open',
|
965
965
|
'active': 'open',
|
966
966
|
'open': 'open',
|
@@ -970,7 +970,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
970
970
|
}
|
971
971
|
return self.safe_string(statuses, status, status)
|
972
972
|
|
973
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
973
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
974
974
|
#
|
975
975
|
# createOrder
|
976
976
|
#
|
@@ -1052,7 +1052,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1052
1052
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1053
1053
|
"""
|
1054
1054
|
await self.load_markets()
|
1055
|
-
request = {}
|
1055
|
+
request: dict = {}
|
1056
1056
|
clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
|
1057
1057
|
method = None
|
1058
1058
|
if clientOrderId is None:
|
@@ -1079,7 +1079,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1079
1079
|
market = None
|
1080
1080
|
if symbol is not None:
|
1081
1081
|
market = self.market(symbol)
|
1082
|
-
request = {
|
1082
|
+
request: dict = {
|
1083
1083
|
'order_id': id,
|
1084
1084
|
}
|
1085
1085
|
response = await self.privateGetFills(self.extend(request, params))
|
@@ -1096,7 +1096,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1096
1096
|
:param int [params.until]: the latest time in ms to fetch open orders for
|
1097
1097
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1098
1098
|
"""
|
1099
|
-
request = {
|
1099
|
+
request: dict = {
|
1100
1100
|
'status': 'all',
|
1101
1101
|
}
|
1102
1102
|
return await self.fetch_open_orders(symbol, since, limit, self.extend(request, params))
|
@@ -1118,7 +1118,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1118
1118
|
paginate, params = self.handle_option_and_params(params, 'fetchOpenOrders', 'paginate')
|
1119
1119
|
if paginate:
|
1120
1120
|
return await self.fetch_paginated_call_dynamic('fetchOpenOrders', symbol, since, limit, params, 100)
|
1121
|
-
request = {}
|
1121
|
+
request: dict = {}
|
1122
1122
|
market = None
|
1123
1123
|
if symbol is not None:
|
1124
1124
|
market = self.market(symbol)
|
@@ -1145,7 +1145,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1145
1145
|
:param int [params.until]: the latest time in ms to fetch open orders for
|
1146
1146
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1147
1147
|
"""
|
1148
|
-
request = {
|
1148
|
+
request: dict = {
|
1149
1149
|
'status': 'done',
|
1150
1150
|
}
|
1151
1151
|
return await self.fetch_open_orders(symbol, since, limit, self.extend(request, params))
|
@@ -1164,7 +1164,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1164
1164
|
"""
|
1165
1165
|
await self.load_markets()
|
1166
1166
|
market = self.market(symbol)
|
1167
|
-
request = {
|
1167
|
+
request: dict = {
|
1168
1168
|
# common params --------------------------------------------------
|
1169
1169
|
# 'client_oid': clientOrderId,
|
1170
1170
|
'type': type,
|
@@ -1243,7 +1243,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1243
1243
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1244
1244
|
"""
|
1245
1245
|
await self.load_markets()
|
1246
|
-
request = {
|
1246
|
+
request: dict = {
|
1247
1247
|
# 'product_id': market['id'], # the request will be more performant if you include it
|
1248
1248
|
}
|
1249
1249
|
clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
|
@@ -1270,7 +1270,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1270
1270
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1271
1271
|
"""
|
1272
1272
|
await self.load_markets()
|
1273
|
-
request = {}
|
1273
|
+
request: dict = {}
|
1274
1274
|
market = None
|
1275
1275
|
if symbol is not None:
|
1276
1276
|
market = self.market(symbol)
|
@@ -1296,7 +1296,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1296
1296
|
self.check_address(address)
|
1297
1297
|
await self.load_markets()
|
1298
1298
|
currency = self.currency(code)
|
1299
|
-
request = {
|
1299
|
+
request: dict = {
|
1300
1300
|
'currency': currency['id'],
|
1301
1301
|
'amount': amount,
|
1302
1302
|
}
|
@@ -1316,7 +1316,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1316
1316
|
return self.parse_transaction(response, currency)
|
1317
1317
|
|
1318
1318
|
def parse_ledger_entry_type(self, type):
|
1319
|
-
types = {
|
1319
|
+
types: dict = {
|
1320
1320
|
'transfer': 'transfer', # Funds moved between portfolios
|
1321
1321
|
'match': 'trade', # Funds moved result of a trade
|
1322
1322
|
'fee': 'fee', # Fee result of a trade
|
@@ -1325,7 +1325,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1325
1325
|
}
|
1326
1326
|
return self.safe_string(types, type, type)
|
1327
1327
|
|
1328
|
-
def parse_ledger_entry(self, item, currency: Currency = None):
|
1328
|
+
def parse_ledger_entry(self, item: dict, currency: Currency = None):
|
1329
1329
|
# {
|
1330
1330
|
# "id": "12087495079",
|
1331
1331
|
# "amount": "-0.0100000000000000",
|
@@ -1416,7 +1416,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1416
1416
|
account = self.safe_value(accountsByCurrencyCode, code)
|
1417
1417
|
if account is None:
|
1418
1418
|
raise ExchangeError(self.id + ' fetchLedger() could not find account id for ' + code)
|
1419
|
-
request = {
|
1419
|
+
request: dict = {
|
1420
1420
|
'id': account['id'],
|
1421
1421
|
# 'start_date': self.iso8601(since),
|
1422
1422
|
# 'end_date': self.iso8601(self.milliseconds()),
|
@@ -1462,7 +1462,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1462
1462
|
if account is None:
|
1463
1463
|
raise ExchangeError(self.id + ' fetchDepositsWithdrawals() could not find account id for ' + code)
|
1464
1464
|
id = account['id']
|
1465
|
-
request = {}
|
1465
|
+
request: dict = {}
|
1466
1466
|
if id is not None:
|
1467
1467
|
request['id'] = id
|
1468
1468
|
if limit is not None:
|
@@ -1574,7 +1574,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1574
1574
|
else:
|
1575
1575
|
return 'pending'
|
1576
1576
|
|
1577
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1577
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1578
1578
|
#
|
1579
1579
|
# privateGetTransfers
|
1580
1580
|
#
|
@@ -1671,7 +1671,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
|
|
1671
1671
|
if account is None:
|
1672
1672
|
# eslint-disable-next-line quotes
|
1673
1673
|
raise InvalidAddress(self.id + " createDepositAddress() could not find currency code " + code + " with id = " + currencyId + " in self.options['coinbaseAccountsByCurrencyId']")
|
1674
|
-
request = {
|
1674
|
+
request: dict = {
|
1675
1675
|
'id': account['id'],
|
1676
1676
|
}
|
1677
1677
|
response = await self.privatePostCoinbaseAccountsIdAddresses(self.extend(request, params))
|
@@ -373,7 +373,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
373
373
|
return await self.fetch_paginated_call_incremental('fetchFundingRateHistory', symbol, since, limit, params, pageKey, maxEntriesPerRequest)
|
374
374
|
market = self.market(symbol)
|
375
375
|
page = self.safe_integer(params, pageKey, 1) - 1
|
376
|
-
request = {
|
376
|
+
request: dict = {
|
377
377
|
'instrument': market['id'],
|
378
378
|
'result_offset': self.safe_integer_2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
|
379
379
|
}
|
@@ -449,7 +449,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
449
449
|
method, params = self.handle_option_and_params(params, 'createDepositAddress', 'method', 'v1PrivatePostTransfersAddress')
|
450
450
|
portfolio = None
|
451
451
|
portfolio, params = await self.handle_portfolio_and_params('createDepositAddress', params)
|
452
|
-
request = {
|
452
|
+
request: dict = {
|
453
453
|
'portfolio': portfolio,
|
454
454
|
}
|
455
455
|
if method == 'v1PrivatePostTransfersAddress':
|
@@ -495,7 +495,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
495
495
|
networks = self.safe_dict(currency, 'networks')
|
496
496
|
if networks is not None:
|
497
497
|
return
|
498
|
-
request = {
|
498
|
+
request: dict = {
|
499
499
|
'asset': currency['id'],
|
500
500
|
}
|
501
501
|
rawNetworks = await self.v1PublicGetAssetsAssetNetworks(request)
|
@@ -505,7 +505,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
505
505
|
# "asset_id" = self.parse_networks(rawNetworks)
|
506
506
|
|
507
507
|
def parse_networks(self, networks, params={}):
|
508
|
-
result = {}
|
508
|
+
result: dict = {}
|
509
509
|
for i in range(0, len(networks)):
|
510
510
|
network = self.extend(self.parse_network(networks[i]), params)
|
511
511
|
result[network['network']] = network
|
@@ -565,7 +565,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
565
565
|
portfolio, params = await self.handle_portfolio_and_params('setMargin', params)
|
566
566
|
if symbol is not None:
|
567
567
|
raise BadRequest(self.id + ' setMargin() only allows setting margin to full portfolio')
|
568
|
-
request = {
|
568
|
+
request: dict = {
|
569
569
|
'portfolio': portfolio,
|
570
570
|
'margin_override': amount,
|
571
571
|
}
|
@@ -595,7 +595,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
595
595
|
if paginate:
|
596
596
|
return await self.fetch_paginated_call_incremental('fetchDepositsWithdrawals', code, since, limit, params, pageKey, maxEntriesPerRequest)
|
597
597
|
page = self.safe_integer(params, pageKey, 1) - 1
|
598
|
-
request = {
|
598
|
+
request: dict = {
|
599
599
|
'result_offset': self.safe_integer_2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
|
600
600
|
}
|
601
601
|
if since is not None:
|
@@ -653,7 +653,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
653
653
|
symbol = self.symbol(symbol)
|
654
654
|
portfolio = None
|
655
655
|
portfolio, params = await self.handle_portfolio_and_params('fetchPosition', params)
|
656
|
-
request = {
|
656
|
+
request: dict = {
|
657
657
|
'portfolio': portfolio,
|
658
658
|
'instrument': self.market_id(symbol),
|
659
659
|
}
|
@@ -675,7 +675,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
675
675
|
#
|
676
676
|
return self.parse_position(position)
|
677
677
|
|
678
|
-
def parse_position(self, position, market: Market = None):
|
678
|
+
def parse_position(self, position: dict, market: Market = None):
|
679
679
|
#
|
680
680
|
# {
|
681
681
|
# "symbol":"BTC-PERP",
|
@@ -736,7 +736,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
736
736
|
await self.load_markets()
|
737
737
|
portfolio = None
|
738
738
|
portfolio, params = await self.handle_portfolio_and_params('fetchPositions', params)
|
739
|
-
request = {
|
739
|
+
request: dict = {
|
740
740
|
'portfolio': portfolio,
|
741
741
|
}
|
742
742
|
response = await self.v1PrivateGetPortfoliosPortfolioPositions(self.extend(request, params))
|
@@ -801,7 +801,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
801
801
|
return await self.fetch_deposits_withdrawals(code, since, limit, params)
|
802
802
|
|
803
803
|
def parse_transaction_status(self, status):
|
804
|
-
statuses = {
|
804
|
+
statuses: dict = {
|
805
805
|
'PROCESSED': 'ok',
|
806
806
|
'NEW': 'pending',
|
807
807
|
'STARTED': 'pending',
|
@@ -809,7 +809,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
809
809
|
}
|
810
810
|
return self.safe_string(statuses, status, status)
|
811
811
|
|
812
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
812
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
813
813
|
#
|
814
814
|
# {
|
815
815
|
# "idem":"8e471d77-4208-45a8-9e5b-f3bd8a2c1fc3"
|
@@ -844,7 +844,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
844
844
|
},
|
845
845
|
}
|
846
846
|
|
847
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
847
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
848
848
|
#
|
849
849
|
# {
|
850
850
|
# "portfolio_id":"1wp37qsc-1-0",
|
@@ -1090,13 +1090,13 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1090
1090
|
# ...
|
1091
1091
|
# ]
|
1092
1092
|
#
|
1093
|
-
result = {}
|
1093
|
+
result: dict = {}
|
1094
1094
|
for i in range(0, len(currencies)):
|
1095
1095
|
currency = self.parse_currency(currencies[i])
|
1096
1096
|
result[currency['code']] = currency
|
1097
1097
|
return result
|
1098
1098
|
|
1099
|
-
def parse_currency(self, currency):
|
1099
|
+
def parse_currency(self, currency: dict):
|
1100
1100
|
#
|
1101
1101
|
# {
|
1102
1102
|
# "asset_id":"1",
|
@@ -1136,7 +1136,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1136
1136
|
await self.load_markets()
|
1137
1137
|
symbols = self.market_symbols(symbols)
|
1138
1138
|
instruments = await self.v1PublicGetInstruments(params)
|
1139
|
-
tickers = {}
|
1139
|
+
tickers: dict = {}
|
1140
1140
|
for i in range(0, len(instruments)):
|
1141
1141
|
instrument = instruments[i]
|
1142
1142
|
marketId = self.safe_string(instrument, 'symbol')
|
@@ -1155,7 +1155,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1155
1155
|
"""
|
1156
1156
|
await self.load_markets()
|
1157
1157
|
market = self.market(symbol)
|
1158
|
-
request = {
|
1158
|
+
request: dict = {
|
1159
1159
|
'instrument': self.market_id(symbol),
|
1160
1160
|
}
|
1161
1161
|
ticker = await self.v1PublicGetInstrumentsInstrumentQuote(self.extend(request, params))
|
@@ -1214,7 +1214,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1214
1214
|
await self.load_markets()
|
1215
1215
|
portfolio = None
|
1216
1216
|
portfolio, params = await self.handle_portfolio_and_params('fetchBalance', params)
|
1217
|
-
request = {
|
1217
|
+
request: dict = {
|
1218
1218
|
'portfolio': portfolio,
|
1219
1219
|
}
|
1220
1220
|
balances = await self.v1PrivateGetPortfoliosPortfolioBalances(self.extend(request, params))
|
@@ -1253,7 +1253,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1253
1253
|
# "loan_collateral_requirement":"0.0"
|
1254
1254
|
# }
|
1255
1255
|
#
|
1256
|
-
result = {
|
1256
|
+
result: dict = {
|
1257
1257
|
'info': response,
|
1258
1258
|
}
|
1259
1259
|
for i in range(0, len(response)):
|
@@ -1279,7 +1279,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1279
1279
|
"""
|
1280
1280
|
await self.load_markets()
|
1281
1281
|
currency = self.currency(code)
|
1282
|
-
request = {
|
1282
|
+
request: dict = {
|
1283
1283
|
'asset': currency['id'],
|
1284
1284
|
'ammount': amount,
|
1285
1285
|
'from': fromAccount,
|
@@ -1325,7 +1325,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1325
1325
|
clientOrderIdprefix = self.safe_string(self.options, 'brokerId', 'nfqkvdjp')
|
1326
1326
|
clientOrderId = clientOrderIdprefix + '-' + self.uuid()
|
1327
1327
|
clientOrderId = clientOrderId[0:17]
|
1328
|
-
request = {
|
1328
|
+
request: dict = {
|
1329
1329
|
'client_order_id': clientOrderId,
|
1330
1330
|
'side': side.upper(),
|
1331
1331
|
'instrument': market['id'],
|
@@ -1385,7 +1385,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1385
1385
|
#
|
1386
1386
|
return self.parse_order(response, market)
|
1387
1387
|
|
1388
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1388
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1389
1389
|
#
|
1390
1390
|
# {
|
1391
1391
|
# "order_id":"1x96skvg-1-0",
|
@@ -1442,8 +1442,8 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1442
1442
|
'trades': None,
|
1443
1443
|
}, market)
|
1444
1444
|
|
1445
|
-
def parse_order_status(self, status):
|
1446
|
-
statuses = {
|
1445
|
+
def parse_order_status(self, status: Str):
|
1446
|
+
statuses: dict = {
|
1447
1447
|
'NEW': 'open',
|
1448
1448
|
'PARTIAL_FILLED': 'open',
|
1449
1449
|
'FILLED': 'closed',
|
@@ -1457,10 +1457,10 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1457
1457
|
}
|
1458
1458
|
return self.safe_string(statuses, status, status)
|
1459
1459
|
|
1460
|
-
def parse_order_type(self, type):
|
1460
|
+
def parse_order_type(self, type: Str):
|
1461
1461
|
if type == 'UNKNOWN_ORDER_TYPE':
|
1462
1462
|
return None
|
1463
|
-
types = {
|
1463
|
+
types: dict = {
|
1464
1464
|
'MARKET': 'market',
|
1465
1465
|
'LIMIT': 'limit',
|
1466
1466
|
'STOP': 'limit',
|
@@ -1480,7 +1480,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1480
1480
|
await self.load_markets()
|
1481
1481
|
portfolio = None
|
1482
1482
|
portfolio, params = await self.handle_portfolio_and_params('cancelOrder', params)
|
1483
|
-
request = {
|
1483
|
+
request: dict = {
|
1484
1484
|
'portfolio': portfolio,
|
1485
1485
|
'id': id,
|
1486
1486
|
}
|
@@ -1523,7 +1523,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1523
1523
|
await self.load_markets()
|
1524
1524
|
portfolio = None
|
1525
1525
|
portfolio, params = await self.handle_portfolio_and_params('cancelAllOrders', params)
|
1526
|
-
request = {
|
1526
|
+
request: dict = {
|
1527
1527
|
'portfolio': portfolio,
|
1528
1528
|
}
|
1529
1529
|
market = None
|
@@ -1549,7 +1549,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1549
1549
|
"""
|
1550
1550
|
await self.load_markets()
|
1551
1551
|
market = self.market(symbol)
|
1552
|
-
request = {
|
1552
|
+
request: dict = {
|
1553
1553
|
'id': id,
|
1554
1554
|
}
|
1555
1555
|
portfolio = None
|
@@ -1585,7 +1585,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1585
1585
|
market = self.market(symbol)
|
1586
1586
|
portfolio = None
|
1587
1587
|
portfolio, params = await self.handle_portfolio_and_params('fetchOrder', params)
|
1588
|
-
request = {
|
1588
|
+
request: dict = {
|
1589
1589
|
'id': id,
|
1590
1590
|
'portfolio': portfolio,
|
1591
1591
|
}
|
@@ -1641,7 +1641,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1641
1641
|
if paginate:
|
1642
1642
|
return await self.fetch_paginated_call_incremental('fetchOpenOrders', symbol, since, limit, params, pageKey, maxEntriesPerRequest)
|
1643
1643
|
page = self.safe_integer(params, pageKey, 1) - 1
|
1644
|
-
request = {
|
1644
|
+
request: dict = {
|
1645
1645
|
'portfolio': portfolio,
|
1646
1646
|
'result_offset': self.safe_integer_2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
|
1647
1647
|
}
|
@@ -1717,7 +1717,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1717
1717
|
if symbol is not None:
|
1718
1718
|
market = self.market(symbol)
|
1719
1719
|
page = self.safe_integer(params, pageKey, 1) - 1
|
1720
|
-
request = {
|
1720
|
+
request: dict = {
|
1721
1721
|
'result_offset': self.safe_integer_2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
|
1722
1722
|
}
|
1723
1723
|
if limit is not None:
|
@@ -1799,7 +1799,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1799
1799
|
method, params = self.handle_option_and_params(params, 'withdraw', 'method', 'v1PrivatePostTransfersWithdraw')
|
1800
1800
|
networkId = None
|
1801
1801
|
networkId, params = await self.handle_network_id_and_params(code, 'withdraw', params)
|
1802
|
-
request = {
|
1802
|
+
request: dict = {
|
1803
1803
|
'portfolio': portfolio,
|
1804
1804
|
'type': 'send',
|
1805
1805
|
'asset': currency['id'],
|
ccxt/async_support/coincheck.py
CHANGED
@@ -175,7 +175,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
175
175
|
})
|
176
176
|
|
177
177
|
def parse_balance(self, response) -> Balances:
|
178
|
-
result = {'info': response}
|
178
|
+
result: dict = {'info': response}
|
179
179
|
codes = list(self.currencies.keys())
|
180
180
|
for i in range(0, len(codes)):
|
181
181
|
code = codes[i]
|
@@ -223,7 +223,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
223
223
|
result.append(self.extend(parsedOrders[i], {'status': 'open'}))
|
224
224
|
return result
|
225
225
|
|
226
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
226
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
227
227
|
#
|
228
228
|
# fetchOpenOrders
|
229
229
|
#
|
@@ -283,7 +283,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
283
283
|
"""
|
284
284
|
await self.load_markets()
|
285
285
|
market = self.market(symbol)
|
286
|
-
request = {
|
286
|
+
request: dict = {
|
287
287
|
'pair': market['id'],
|
288
288
|
}
|
289
289
|
response = await self.publicGetOrderBooks(self.extend(request, params))
|
@@ -339,7 +339,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
339
339
|
raise BadSymbol(self.id + ' fetchTicker() supports BTC/JPY only')
|
340
340
|
await self.load_markets()
|
341
341
|
market = self.market(symbol)
|
342
|
-
request = {
|
342
|
+
request: dict = {
|
343
343
|
'pair': market['id'],
|
344
344
|
}
|
345
345
|
ticker = await self.publicGetTicker(self.extend(request, params))
|
@@ -356,7 +356,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
356
356
|
#
|
357
357
|
return self.parse_ticker(ticker, market)
|
358
358
|
|
359
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
359
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
360
360
|
#
|
361
361
|
# fetchTrades(public)
|
362
362
|
#
|
@@ -446,7 +446,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
446
446
|
"""
|
447
447
|
await self.load_markets()
|
448
448
|
market = self.market(symbol)
|
449
|
-
request = {}
|
449
|
+
request: dict = {}
|
450
450
|
if limit is not None:
|
451
451
|
request['limit'] = limit
|
452
452
|
response = await self.privateGetExchangeOrdersTransactionsPagination(self.extend(request, params))
|
@@ -487,7 +487,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
487
487
|
"""
|
488
488
|
await self.load_markets()
|
489
489
|
market = self.market(symbol)
|
490
|
-
request = {
|
490
|
+
request: dict = {
|
491
491
|
'pair': market['id'],
|
492
492
|
}
|
493
493
|
if limit is not None:
|
@@ -535,7 +535,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
535
535
|
# }
|
536
536
|
#
|
537
537
|
fees = self.safe_value(response, 'exchange_fees', {})
|
538
|
-
result = {}
|
538
|
+
result: dict = {}
|
539
539
|
for i in range(0, len(self.symbols)):
|
540
540
|
symbol = self.symbols[i]
|
541
541
|
market = self.market(symbol)
|
@@ -564,7 +564,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
564
564
|
"""
|
565
565
|
await self.load_markets()
|
566
566
|
market = self.market(symbol)
|
567
|
-
request = {
|
567
|
+
request: dict = {
|
568
568
|
'pair': market['id'],
|
569
569
|
}
|
570
570
|
if type == 'market':
|
@@ -592,7 +592,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
592
592
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
593
593
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
594
594
|
"""
|
595
|
-
request = {
|
595
|
+
request: dict = {
|
596
596
|
'id': id,
|
597
597
|
}
|
598
598
|
return await self.privateDeleteExchangeOrdersId(self.extend(request, params))
|
@@ -609,7 +609,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
609
609
|
"""
|
610
610
|
await self.load_markets()
|
611
611
|
currency = None
|
612
|
-
request = {}
|
612
|
+
request: dict = {}
|
613
613
|
if code is not None:
|
614
614
|
currency = self.currency(code)
|
615
615
|
request['currency'] = currency['id']
|
@@ -656,7 +656,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
656
656
|
currency = None
|
657
657
|
if code is not None:
|
658
658
|
currency = self.currency(code)
|
659
|
-
request = {}
|
659
|
+
request: dict = {}
|
660
660
|
if limit is not None:
|
661
661
|
request['limit'] = limit
|
662
662
|
response = await self.privateGetWithdraws(self.extend(request, params))
|
@@ -685,7 +685,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
685
685
|
return self.parse_transactions(data, currency, since, limit, {'type': 'withdrawal'})
|
686
686
|
|
687
687
|
def parse_transaction_status(self, status):
|
688
|
-
statuses = {
|
688
|
+
statuses: dict = {
|
689
689
|
# withdrawals
|
690
690
|
'pending': 'pending',
|
691
691
|
'processing': 'pending',
|
@@ -697,7 +697,7 @@ class coincheck(Exchange, ImplicitAPI):
|
|
697
697
|
}
|
698
698
|
return self.safe_string(statuses, status, status)
|
699
699
|
|
700
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
700
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
701
701
|
#
|
702
702
|
# fetchDeposits
|
703
703
|
#
|