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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.44'
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})
@@ -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})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.44'
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',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.44'
5
+ __version__ = '4.3.45'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -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
  },
@@ -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
- if isPrivate or isFuturePrivate or isBroker:
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({
@@ -897,7 +897,15 @@ class luno(Exchange, ImplicitAPI):
897
897
  request: dict = {
898
898
  'order_id': id,
899
899
  }
900
- return await self.privatePostStoporder(self.extend(request, params))
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