ccxt 4.3.44__py2.py3-none-any.whl → 4.3.45__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 +3 -1
- ccxt/abstract/bitstamp.py +18 -2
- ccxt/abstract/kucoin.py +14 -0
- ccxt/abstract/kucoinfutures.py +14 -0
- ccxt/abstract/oxfun.py +34 -0
- ccxt/async_support/__init__.py +3 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bitstamp.py +18 -2
- ccxt/async_support/kucoin.py +27 -1
- ccxt/async_support/luno.py +9 -1
- ccxt/async_support/oxfun.py +2773 -0
- ccxt/async_support/wavesexchange.py +118 -105
- ccxt/async_support/xt.py +1 -1
- ccxt/base/exchange.py +1 -1
- ccxt/bitstamp.py +18 -2
- ccxt/kucoin.py +27 -1
- ccxt/luno.py +9 -1
- ccxt/oxfun.py +2772 -0
- ccxt/pro/__init__.py +3 -1
- ccxt/pro/oxfun.py +950 -0
- ccxt/test/test_async.py +17 -1
- ccxt/test/test_sync.py +17 -1
- ccxt/wavesexchange.py +118 -105
- ccxt/xt.py +1 -1
- {ccxt-4.3.44.dist-info → ccxt-4.3.45.dist-info}/METADATA +8 -8
- {ccxt-4.3.44.dist-info → ccxt-4.3.45.dist-info}/RECORD +28 -24
- {ccxt-4.3.44.dist-info → ccxt-4.3.45.dist-info}/WHEEL +0 -0
- {ccxt-4.3.44.dist-info → ccxt-4.3.45.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
# ----------------------------------------------------------------------------
|
24
24
|
|
25
|
-
__version__ = '4.3.
|
25
|
+
__version__ = '4.3.45'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -167,6 +167,7 @@ from ccxt.oceanex import oceanex # noqa: F4
|
|
167
167
|
from ccxt.okcoin import okcoin # noqa: F401
|
168
168
|
from ccxt.okx import okx # noqa: F401
|
169
169
|
from ccxt.onetrading import onetrading # noqa: F401
|
170
|
+
from ccxt.oxfun import oxfun # noqa: F401
|
170
171
|
from ccxt.p2b import p2b # noqa: F401
|
171
172
|
from ccxt.paymium import paymium # noqa: F401
|
172
173
|
from ccxt.phemex import phemex # noqa: F401
|
@@ -275,6 +276,7 @@ exchanges = [
|
|
275
276
|
'okcoin',
|
276
277
|
'okx',
|
277
278
|
'onetrading',
|
279
|
+
'oxfun',
|
278
280
|
'p2b',
|
279
281
|
'paymium',
|
280
282
|
'phemex',
|
ccxt/abstract/bitstamp.py
CHANGED
@@ -93,7 +93,7 @@ class ImplicitAPI:
|
|
93
93
|
private_post_uni_withdrawal = privatePostUniWithdrawal = Entry('uni_withdrawal/', 'private', 'POST', {'cost': 1})
|
94
94
|
private_post_uni_address = privatePostUniAddress = Entry('uni_address/', 'private', 'POST', {'cost': 1})
|
95
95
|
private_post_yfi_withdrawal = privatePostYfiWithdrawal = Entry('yfi_withdrawal/', 'private', 'POST', {'cost': 1})
|
96
|
-
private_post_yfi_address = privatePostYfiAddress = Entry('yfi_address', 'private', 'POST', {'cost': 1})
|
96
|
+
private_post_yfi_address = privatePostYfiAddress = Entry('yfi_address/', 'private', 'POST', {'cost': 1})
|
97
97
|
private_post_audio_withdrawal = privatePostAudioWithdrawal = Entry('audio_withdrawal/', 'private', 'POST', {'cost': 1})
|
98
98
|
private_post_audio_address = privatePostAudioAddress = Entry('audio_address/', 'private', 'POST', {'cost': 1})
|
99
99
|
private_post_crv_withdrawal = privatePostCrvWithdrawal = Entry('crv_withdrawal/', 'private', 'POST', {'cost': 1})
|
@@ -102,7 +102,7 @@ class ImplicitAPI:
|
|
102
102
|
private_post_algo_address = privatePostAlgoAddress = Entry('algo_address/', 'private', 'POST', {'cost': 1})
|
103
103
|
private_post_comp_withdrawal = privatePostCompWithdrawal = Entry('comp_withdrawal/', 'private', 'POST', {'cost': 1})
|
104
104
|
private_post_comp_address = privatePostCompAddress = Entry('comp_address/', 'private', 'POST', {'cost': 1})
|
105
|
-
private_post_grt_withdrawal = privatePostGrtWithdrawal = Entry('grt_withdrawal', 'private', 'POST', {'cost': 1})
|
105
|
+
private_post_grt_withdrawal = privatePostGrtWithdrawal = Entry('grt_withdrawal/', 'private', 'POST', {'cost': 1})
|
106
106
|
private_post_grt_address = privatePostGrtAddress = Entry('grt_address/', 'private', 'POST', {'cost': 1})
|
107
107
|
private_post_usdt_withdrawal = privatePostUsdtWithdrawal = Entry('usdt_withdrawal/', 'private', 'POST', {'cost': 1})
|
108
108
|
private_post_usdt_address = privatePostUsdtAddress = Entry('usdt_address/', 'private', 'POST', {'cost': 1})
|
@@ -240,3 +240,19 @@ class ImplicitAPI:
|
|
240
240
|
private_post_vchf_address = privatePostVchfAddress = Entry('vchf_address/', 'private', 'POST', {'cost': 1})
|
241
241
|
private_post_veur_withdrawal = privatePostVeurWithdrawal = Entry('veur_withdrawal/', 'private', 'POST', {'cost': 1})
|
242
242
|
private_post_veur_address = privatePostVeurAddress = Entry('veur_address/', 'private', 'POST', {'cost': 1})
|
243
|
+
private_post_truf_withdrawal = privatePostTrufWithdrawal = Entry('truf_withdrawal/', 'private', 'POST', {'cost': 1})
|
244
|
+
private_post_truf_address = privatePostTrufAddress = Entry('truf_address/', 'private', 'POST', {'cost': 1})
|
245
|
+
private_post_wif_withdrawal = privatePostWifWithdrawal = Entry('wif_withdrawal/', 'private', 'POST', {'cost': 1})
|
246
|
+
private_post_wif_address = privatePostWifAddress = Entry('wif_address/', 'private', 'POST', {'cost': 1})
|
247
|
+
private_post_smt_withdrawal = privatePostSmtWithdrawal = Entry('smt_withdrawal/', 'private', 'POST', {'cost': 1})
|
248
|
+
private_post_smt_address = privatePostSmtAddress = Entry('smt_address/', 'private', 'POST', {'cost': 1})
|
249
|
+
private_post_sui_withdrawal = privatePostSuiWithdrawal = Entry('sui_withdrawal/', 'private', 'POST', {'cost': 1})
|
250
|
+
private_post_sui_address = privatePostSuiAddress = Entry('sui_address/', 'private', 'POST', {'cost': 1})
|
251
|
+
private_post_jup_withdrawal = privatePostJupWithdrawal = Entry('jup_withdrawal/', 'private', 'POST', {'cost': 1})
|
252
|
+
private_post_jup_address = privatePostJupAddress = Entry('jup_address/', 'private', 'POST', {'cost': 1})
|
253
|
+
private_post_ondo_withdrawal = privatePostOndoWithdrawal = Entry('ondo_withdrawal/', 'private', 'POST', {'cost': 1})
|
254
|
+
private_post_ondo_address = privatePostOndoAddress = Entry('ondo_address/', 'private', 'POST', {'cost': 1})
|
255
|
+
private_post_boba_withdrawal = privatePostBobaWithdrawal = Entry('boba_withdrawal/', 'private', 'POST', {'cost': 1})
|
256
|
+
private_post_boba_address = privatePostBobaAddress = Entry('boba_address/', 'private', 'POST', {'cost': 1})
|
257
|
+
private_post_pyth_withdrawal = privatePostPythWithdrawal = Entry('pyth_withdrawal/', 'private', 'POST', {'cost': 1})
|
258
|
+
private_post_pyth_address = privatePostPythAddress = Entry('pyth_address/', 'private', 'POST', {'cost': 1})
|
ccxt/abstract/kucoin.py
CHANGED
@@ -193,8 +193,22 @@ class ImplicitAPI:
|
|
193
193
|
broker_get_broker_nd_account = brokerGetBrokerNdAccount = Entry('broker/nd/account', 'broker', 'GET', {'cost': 2})
|
194
194
|
broker_get_broker_nd_account_apikey = brokerGetBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'GET', {'cost': 2})
|
195
195
|
broker_get_broker_nd_rebase_download = brokerGetBrokerNdRebaseDownload = Entry('broker/nd/rebase/download', 'broker', 'GET', {'cost': 3})
|
196
|
+
broker_get_broker_nd_transfer_detail = brokerGetBrokerNdTransferDetail = Entry('broker/nd/transfer/detail', 'broker', 'GET', {'cost': 1})
|
197
|
+
broker_get_broker_nd_deposit_detail = brokerGetBrokerNdDepositDetail = Entry('broker/nd/deposit/detail', 'broker', 'GET', {'cost': 1})
|
198
|
+
broker_get_broker_nd_withdraw_detail = brokerGetBrokerNdWithdrawDetail = Entry('broker/nd/withdraw/detail', 'broker', 'GET', {'cost': 1})
|
196
199
|
broker_post_broker_nd_transfer = brokerPostBrokerNdTransfer = Entry('broker/nd/transfer', 'broker', 'POST', {'cost': 1})
|
197
200
|
broker_post_broker_nd_account = brokerPostBrokerNdAccount = Entry('broker/nd/account', 'broker', 'POST', {'cost': 3})
|
198
201
|
broker_post_broker_nd_account_apikey = brokerPostBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'POST', {'cost': 3})
|
199
202
|
broker_post_broker_nd_account_update_apikey = brokerPostBrokerNdAccountUpdateApikey = Entry('broker/nd/account/update-apikey', 'broker', 'POST', {'cost': 3})
|
200
203
|
broker_delete_broker_nd_account_apikey = brokerDeleteBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'DELETE', {'cost': 3})
|
204
|
+
earn_get_otc_loan_loan = earnGetOtcLoanLoan = Entry('otc-loan/loan', 'earn', 'GET', {'cost': 1})
|
205
|
+
earn_get_otc_loan_accounts = earnGetOtcLoanAccounts = Entry('otc-loan/accounts', 'earn', 'GET', {'cost': 1})
|
206
|
+
earn_get_earn_redeem_preview = earnGetEarnRedeemPreview = Entry('earn/redeem-preview', 'earn', 'GET', {'cost': 7.5})
|
207
|
+
earn_get_earn_saving_products = earnGetEarnSavingProducts = Entry('earn/saving/products', 'earn', 'GET', {'cost': 7.5})
|
208
|
+
earn_get_earn_hold_assets = earnGetEarnHoldAssets = Entry('earn/hold-assets', 'earn', 'GET', {'cost': 7.5})
|
209
|
+
earn_get_earn_promotion_products = earnGetEarnPromotionProducts = Entry('earn/promotion/products', 'earn', 'GET', {'cost': 7.5})
|
210
|
+
earn_get_earn_kcs_staking_products = earnGetEarnKcsStakingProducts = Entry('earn/kcs-staking/products', 'earn', 'GET', {'cost': 7.5})
|
211
|
+
earn_get_earn_staking_products = earnGetEarnStakingProducts = Entry('earn/staking/products', 'earn', 'GET', {'cost': 7.5})
|
212
|
+
earn_get_earn_eth_staking_products = earnGetEarnEthStakingProducts = Entry('earn/eth-staking/products', 'earn', 'GET', {'cost': 7.5})
|
213
|
+
earn_post_earn_orders = earnPostEarnOrders = Entry('earn/orders', 'earn', 'POST', {'cost': 7.5})
|
214
|
+
earn_delete_earn_orders = earnDeleteEarnOrders = Entry('earn/orders', 'earn', 'DELETE', {'cost': 7.5})
|
ccxt/abstract/kucoinfutures.py
CHANGED
@@ -212,8 +212,22 @@ class ImplicitAPI:
|
|
212
212
|
broker_get_broker_nd_account = brokerGetBrokerNdAccount = Entry('broker/nd/account', 'broker', 'GET', {'cost': 2})
|
213
213
|
broker_get_broker_nd_account_apikey = brokerGetBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'GET', {'cost': 2})
|
214
214
|
broker_get_broker_nd_rebase_download = brokerGetBrokerNdRebaseDownload = Entry('broker/nd/rebase/download', 'broker', 'GET', {'cost': 3})
|
215
|
+
broker_get_broker_nd_transfer_detail = brokerGetBrokerNdTransferDetail = Entry('broker/nd/transfer/detail', 'broker', 'GET', {'cost': 1})
|
216
|
+
broker_get_broker_nd_deposit_detail = brokerGetBrokerNdDepositDetail = Entry('broker/nd/deposit/detail', 'broker', 'GET', {'cost': 1})
|
217
|
+
broker_get_broker_nd_withdraw_detail = brokerGetBrokerNdWithdrawDetail = Entry('broker/nd/withdraw/detail', 'broker', 'GET', {'cost': 1})
|
215
218
|
broker_post_broker_nd_transfer = brokerPostBrokerNdTransfer = Entry('broker/nd/transfer', 'broker', 'POST', {'cost': 1})
|
216
219
|
broker_post_broker_nd_account = brokerPostBrokerNdAccount = Entry('broker/nd/account', 'broker', 'POST', {'cost': 3})
|
217
220
|
broker_post_broker_nd_account_apikey = brokerPostBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'POST', {'cost': 3})
|
218
221
|
broker_post_broker_nd_account_update_apikey = brokerPostBrokerNdAccountUpdateApikey = Entry('broker/nd/account/update-apikey', 'broker', 'POST', {'cost': 3})
|
219
222
|
broker_delete_broker_nd_account_apikey = brokerDeleteBrokerNdAccountApikey = Entry('broker/nd/account/apikey', 'broker', 'DELETE', {'cost': 3})
|
223
|
+
earn_get_otc_loan_loan = earnGetOtcLoanLoan = Entry('otc-loan/loan', 'earn', 'GET', {'cost': 1})
|
224
|
+
earn_get_otc_loan_accounts = earnGetOtcLoanAccounts = Entry('otc-loan/accounts', 'earn', 'GET', {'cost': 1})
|
225
|
+
earn_get_earn_redeem_preview = earnGetEarnRedeemPreview = Entry('earn/redeem-preview', 'earn', 'GET', {'cost': 7.5})
|
226
|
+
earn_get_earn_saving_products = earnGetEarnSavingProducts = Entry('earn/saving/products', 'earn', 'GET', {'cost': 7.5})
|
227
|
+
earn_get_earn_hold_assets = earnGetEarnHoldAssets = Entry('earn/hold-assets', 'earn', 'GET', {'cost': 7.5})
|
228
|
+
earn_get_earn_promotion_products = earnGetEarnPromotionProducts = Entry('earn/promotion/products', 'earn', 'GET', {'cost': 7.5})
|
229
|
+
earn_get_earn_kcs_staking_products = earnGetEarnKcsStakingProducts = Entry('earn/kcs-staking/products', 'earn', 'GET', {'cost': 7.5})
|
230
|
+
earn_get_earn_staking_products = earnGetEarnStakingProducts = Entry('earn/staking/products', 'earn', 'GET', {'cost': 7.5})
|
231
|
+
earn_get_earn_eth_staking_products = earnGetEarnEthStakingProducts = Entry('earn/eth-staking/products', 'earn', 'GET', {'cost': 7.5})
|
232
|
+
earn_post_earn_orders = earnPostEarnOrders = Entry('earn/orders', 'earn', 'POST', {'cost': 7.5})
|
233
|
+
earn_delete_earn_orders = earnDeleteEarnOrders = Entry('earn/orders', 'earn', 'DELETE', {'cost': 7.5})
|
ccxt/abstract/oxfun.py
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
public_get_v3_markets = publicGetV3Markets = Entry('v3/markets', 'public', 'GET', {'cost': 1})
|
6
|
+
public_get_v3_assets = publicGetV3Assets = Entry('v3/assets', 'public', 'GET', {'cost': 1})
|
7
|
+
public_get_v3_tickers = publicGetV3Tickers = Entry('v3/tickers', 'public', 'GET', {'cost': 1})
|
8
|
+
public_get_v3_funding_estimates = publicGetV3FundingEstimates = Entry('v3/funding/estimates', 'public', 'GET', {'cost': 1})
|
9
|
+
public_get_v3_candles = publicGetV3Candles = Entry('v3/candles', 'public', 'GET', {'cost': 1})
|
10
|
+
public_get_v3_depth = publicGetV3Depth = Entry('v3/depth', 'public', 'GET', {'cost': 1})
|
11
|
+
public_get_v3_markets_operational = publicGetV3MarketsOperational = Entry('v3/markets/operational', 'public', 'GET', {'cost': 1})
|
12
|
+
public_get_v3_exchange_trades = publicGetV3ExchangeTrades = Entry('v3/exchange-trades', 'public', 'GET', {'cost': 1})
|
13
|
+
public_get_v3_funding_rates = publicGetV3FundingRates = Entry('v3/funding/rates', 'public', 'GET', {'cost': 1})
|
14
|
+
public_get_v3_leverage_tiers = publicGetV3LeverageTiers = Entry('v3/leverage/tiers', 'public', 'GET', {'cost': 1})
|
15
|
+
private_get_v3_account = privateGetV3Account = Entry('v3/account', 'private', 'GET', {'cost': 1})
|
16
|
+
private_get_v3_account_names = privateGetV3AccountNames = Entry('v3/account/names', 'private', 'GET', {'cost': 1})
|
17
|
+
private_get_v3_wallet = privateGetV3Wallet = Entry('v3/wallet', 'private', 'GET', {'cost': 1})
|
18
|
+
private_get_v3_transfer = privateGetV3Transfer = Entry('v3/transfer', 'private', 'GET', {'cost': 1})
|
19
|
+
private_get_v3_balances = privateGetV3Balances = Entry('v3/balances', 'private', 'GET', {'cost': 1})
|
20
|
+
private_get_v3_positions = privateGetV3Positions = Entry('v3/positions', 'private', 'GET', {'cost': 1})
|
21
|
+
private_get_v3_funding = privateGetV3Funding = Entry('v3/funding', 'private', 'GET', {'cost': 1})
|
22
|
+
private_get_v3_deposit_addresses = privateGetV3DepositAddresses = Entry('v3/deposit-addresses', 'private', 'GET', {'cost': 1})
|
23
|
+
private_get_v3_deposit = privateGetV3Deposit = Entry('v3/deposit', 'private', 'GET', {'cost': 1})
|
24
|
+
private_get_v3_withdrawal_addresses = privateGetV3WithdrawalAddresses = Entry('v3/withdrawal-addresses', 'private', 'GET', {'cost': 1})
|
25
|
+
private_get_v3_withdrawal = privateGetV3Withdrawal = Entry('v3/withdrawal', 'private', 'GET', {'cost': 1})
|
26
|
+
private_get_v3_withdrawal_fees = privateGetV3WithdrawalFees = Entry('v3/withdrawal-fees', 'private', 'GET', {'cost': 1})
|
27
|
+
private_get_v3_orders_status = privateGetV3OrdersStatus = Entry('v3/orders/status', 'private', 'GET', {'cost': 1})
|
28
|
+
private_get_v3_orders_working = privateGetV3OrdersWorking = Entry('v3/orders/working', 'private', 'GET', {'cost': 1})
|
29
|
+
private_get_v3_trades = privateGetV3Trades = Entry('v3/trades', 'private', 'GET', {'cost': 1})
|
30
|
+
private_post_v3_transfer = privatePostV3Transfer = Entry('v3/transfer', 'private', 'POST', {'cost': 1})
|
31
|
+
private_post_v3_withdrawal = privatePostV3Withdrawal = Entry('v3/withdrawal', 'private', 'POST', {'cost': 1})
|
32
|
+
private_post_v3_orders_place = privatePostV3OrdersPlace = Entry('v3/orders/place', 'private', 'POST', {'cost': 1})
|
33
|
+
private_delete_v3_orders_cancel = privateDeleteV3OrdersCancel = Entry('v3/orders/cancel', 'private', 'DELETE', {'cost': 1})
|
34
|
+
private_delete_v3_orders_cancel_all = privateDeleteV3OrdersCancelAll = Entry('v3/orders/cancel-all', 'private', 'DELETE', {'cost': 1})
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.45'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -147,6 +147,7 @@ from ccxt.async_support.oceanex import oceanex
|
|
147
147
|
from ccxt.async_support.okcoin import okcoin # noqa: F401
|
148
148
|
from ccxt.async_support.okx import okx # noqa: F401
|
149
149
|
from ccxt.async_support.onetrading import onetrading # noqa: F401
|
150
|
+
from ccxt.async_support.oxfun import oxfun # noqa: F401
|
150
151
|
from ccxt.async_support.p2b import p2b # noqa: F401
|
151
152
|
from ccxt.async_support.paymium import paymium # noqa: F401
|
152
153
|
from ccxt.async_support.phemex import phemex # noqa: F401
|
@@ -255,6 +256,7 @@ exchanges = [
|
|
255
256
|
'okcoin',
|
256
257
|
'okx',
|
257
258
|
'onetrading',
|
259
|
+
'oxfun',
|
258
260
|
'p2b',
|
259
261
|
'paymium',
|
260
262
|
'phemex',
|
ccxt/async_support/bitstamp.py
CHANGED
@@ -232,7 +232,7 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
232
232
|
'uni_withdrawal/': 1,
|
233
233
|
'uni_address/': 1,
|
234
234
|
'yfi_withdrawal/': 1,
|
235
|
-
'yfi_address': 1,
|
235
|
+
'yfi_address/': 1,
|
236
236
|
'audio_withdrawal/': 1,
|
237
237
|
'audio_address/': 1,
|
238
238
|
'crv_withdrawal/': 1,
|
@@ -241,7 +241,7 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
241
241
|
'algo_address/': 1,
|
242
242
|
'comp_withdrawal/': 1,
|
243
243
|
'comp_address/': 1,
|
244
|
-
'grt_withdrawal': 1,
|
244
|
+
'grt_withdrawal/': 1,
|
245
245
|
'grt_address/': 1,
|
246
246
|
'usdt_withdrawal/': 1,
|
247
247
|
'usdt_address/': 1,
|
@@ -379,6 +379,22 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
379
379
|
'vchf_address/': 1,
|
380
380
|
'veur_withdrawal/': 1,
|
381
381
|
'veur_address/': 1,
|
382
|
+
'truf_withdrawal/': 1,
|
383
|
+
'truf_address/': 1,
|
384
|
+
'wif_withdrawal/': 1,
|
385
|
+
'wif_address/': 1,
|
386
|
+
'smt_withdrawal/': 1,
|
387
|
+
'smt_address/': 1,
|
388
|
+
'sui_withdrawal/': 1,
|
389
|
+
'sui_address/': 1,
|
390
|
+
'jup_withdrawal/': 1,
|
391
|
+
'jup_address/': 1,
|
392
|
+
'ondo_withdrawal/': 1,
|
393
|
+
'ondo_address/': 1,
|
394
|
+
'boba_withdrawal/': 1,
|
395
|
+
'boba_address/': 1,
|
396
|
+
'pyth_withdrawal/': 1,
|
397
|
+
'pyth_address/': 1,
|
382
398
|
},
|
383
399
|
},
|
384
400
|
},
|
ccxt/async_support/kucoin.py
CHANGED
@@ -141,6 +141,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
141
141
|
'futuresPublic': 'https://api-futures.kucoin.com',
|
142
142
|
'webExchange': 'https://kucoin.com/_api',
|
143
143
|
'broker': 'https://api-broker.kucoin.com',
|
144
|
+
'earn': 'https://api.kucoin.com',
|
144
145
|
},
|
145
146
|
'www': 'https://www.kucoin.com',
|
146
147
|
'doc': [
|
@@ -408,6 +409,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
408
409
|
'broker/nd/account': 2,
|
409
410
|
'broker/nd/account/apikey': 2,
|
410
411
|
'broker/nd/rebase/download': 3,
|
412
|
+
'broker/nd/transfer/detail': 1,
|
413
|
+
'broker/nd/deposit/detail': 1,
|
414
|
+
'broker/nd/withdraw/detail': 1,
|
411
415
|
},
|
412
416
|
'post': {
|
413
417
|
'broker/nd/transfer': 1,
|
@@ -419,6 +423,25 @@ class kucoin(Exchange, ImplicitAPI):
|
|
419
423
|
'broker/nd/account/apikey': 3,
|
420
424
|
},
|
421
425
|
},
|
426
|
+
'earn': {
|
427
|
+
'get': {
|
428
|
+
'otc-loan/loan': 1,
|
429
|
+
'otc-loan/accounts': 1,
|
430
|
+
'earn/redeem-preview': 7.5, # 5EW
|
431
|
+
'earn/saving/products': 7.5, # 5EW
|
432
|
+
'earn/hold-assets': 7.5, # 5EW
|
433
|
+
'earn/promotion/products': 7.5, # 5EW
|
434
|
+
'earn/kcs-staking/products': 7.5, # 5EW
|
435
|
+
'earn/staking/products': 7.5, # 5EW
|
436
|
+
'earn/eth-staking/products': 7.5, # 5EW
|
437
|
+
},
|
438
|
+
'post': {
|
439
|
+
'earn/orders': 7.5, # 5EW
|
440
|
+
},
|
441
|
+
'delete': {
|
442
|
+
'earn/orders': 7.5, # 5EW
|
443
|
+
},
|
444
|
+
},
|
422
445
|
},
|
423
446
|
'timeframes': {
|
424
447
|
'1m': '1min',
|
@@ -4507,6 +4530,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4507
4530
|
endpoint = '/api/' + version + '/' + self.implode_params(path, params)
|
4508
4531
|
if api == 'webExchange':
|
4509
4532
|
endpoint = '/' + self.implode_params(path, params)
|
4533
|
+
if api == 'earn':
|
4534
|
+
endpoint = '/api/v1/' + self.implode_params(path, params)
|
4510
4535
|
query = self.omit(params, self.extract_params(path))
|
4511
4536
|
endpart = ''
|
4512
4537
|
headers = headers if (headers is not None) else {}
|
@@ -4522,7 +4547,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4522
4547
|
isFuturePrivate = (api == 'futuresPrivate')
|
4523
4548
|
isPrivate = (api == 'private')
|
4524
4549
|
isBroker = (api == 'broker')
|
4525
|
-
|
4550
|
+
isEarn = (api == 'earn')
|
4551
|
+
if isPrivate or isFuturePrivate or isBroker or isEarn:
|
4526
4552
|
self.check_required_credentials()
|
4527
4553
|
timestamp = str(self.nonce())
|
4528
4554
|
headers = self.extend({
|
ccxt/async_support/luno.py
CHANGED
@@ -897,7 +897,15 @@ class luno(Exchange, ImplicitAPI):
|
|
897
897
|
request: dict = {
|
898
898
|
'order_id': id,
|
899
899
|
}
|
900
|
-
|
900
|
+
response = await self.privatePostStoporder(self.extend(request, params))
|
901
|
+
#
|
902
|
+
# {
|
903
|
+
# "success": True
|
904
|
+
# }
|
905
|
+
#
|
906
|
+
return self.safe_order({
|
907
|
+
'info': response,
|
908
|
+
})
|
901
909
|
|
902
910
|
async def fetch_ledger_by_entries(self, code: Str = None, entry=None, limit=None, params={}):
|
903
911
|
# by default without entry number or limit number, return most recent entry
|