@subwallet/extension-base 1.1.33-beta.2 → 1.1.33-beta.3
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.
- package/background/KoniTypes.d.ts +0 -9
- package/background/KoniTypes.js +0 -3
- package/cjs/background/KoniTypes.js +0 -3
- package/cjs/koni/api/yield/helper/utils.js +3 -6
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +1 -2
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -2
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -7
- package/cjs/services/earning-service/handlers/special.js +3 -7
- package/cjs/services/earning-service/service.js +0 -1
- package/cjs/services/transaction-service/index.js +0 -3
- package/cjs/types/yield/actions/join/step.js +0 -1
- package/koni/api/yield/helper/utils.d.ts +1 -1
- package/koni/api/yield/helper/utils.js +3 -5
- package/package.json +2 -7
- package/services/earning-service/handlers/liquid-staking/base.d.ts +1 -1
- package/services/earning-service/handlers/liquid-staking/base.js +1 -2
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +3 -3
- package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -2
- package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -1
- package/services/earning-service/handlers/liquid-staking/index.js +0 -1
- package/services/earning-service/handlers/special.js +3 -7
- package/services/earning-service/service.js +1 -2
- package/services/transaction-service/index.js +0 -3
- package/types/yield/actions/join/step.d.ts +0 -1
- package/types/yield/actions/join/step.js +0 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +0 -37
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -132
|
@@ -371,19 +371,16 @@ export declare enum ExtrinsicType {
|
|
|
371
371
|
MINT_SDOT = "earn.mint_sdot",
|
|
372
372
|
MINT_QDOT = "earn.mint_qdot",
|
|
373
373
|
MINT_STDOT = "earn.mint_stdot",
|
|
374
|
-
MINT_VMANTA = "earn.mint_vmanta",
|
|
375
374
|
REDEEM_QDOT = "earn.redeem_qdot",
|
|
376
375
|
REDEEM_VDOT = "earn.redeem_vdot",
|
|
377
376
|
REDEEM_LDOT = "earn.redeem_ldot",
|
|
378
377
|
REDEEM_SDOT = "earn.redeem_sdot",
|
|
379
378
|
REDEEM_STDOT = "earn.redeem_stdot",
|
|
380
|
-
REDEEM_VMANTA = "earn.redeem_vmanta",
|
|
381
379
|
UNSTAKE_QDOT = "earn.unstake_qdot",
|
|
382
380
|
UNSTAKE_VDOT = "earn.unstake_vdot",
|
|
383
381
|
UNSTAKE_LDOT = "earn.unstake_ldot",
|
|
384
382
|
UNSTAKE_SDOT = "earn.unstake_sdot",
|
|
385
383
|
UNSTAKE_STDOT = "earn.unstake_stdot",
|
|
386
|
-
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
387
384
|
TOKEN_APPROVE = "evm.token_approve",
|
|
388
385
|
EVM_EXECUTE = "evm.execute",
|
|
389
386
|
UNKNOWN = "unknown"
|
|
@@ -410,19 +407,16 @@ export interface ExtrinsicDataTypeMap {
|
|
|
410
407
|
[ExtrinsicType.MINT_QDOT]: SubmitYieldStepData;
|
|
411
408
|
[ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
|
|
412
409
|
[ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
|
|
413
|
-
[ExtrinsicType.MINT_VMANTA]: SubmitYieldStepData;
|
|
414
410
|
[ExtrinsicType.UNSTAKE_VDOT]: RequestYieldLeave;
|
|
415
411
|
[ExtrinsicType.UNSTAKE_QDOT]: RequestYieldLeave;
|
|
416
412
|
[ExtrinsicType.UNSTAKE_LDOT]: RequestYieldLeave;
|
|
417
413
|
[ExtrinsicType.UNSTAKE_SDOT]: RequestYieldLeave;
|
|
418
414
|
[ExtrinsicType.UNSTAKE_STDOT]: RequestYieldLeave;
|
|
419
|
-
[ExtrinsicType.UNSTAKE_VMANTA]: RequestYieldLeave;
|
|
420
415
|
[ExtrinsicType.REDEEM_VDOT]: RequestYieldLeave;
|
|
421
416
|
[ExtrinsicType.REDEEM_QDOT]: RequestYieldLeave;
|
|
422
417
|
[ExtrinsicType.REDEEM_LDOT]: RequestYieldLeave;
|
|
423
418
|
[ExtrinsicType.REDEEM_SDOT]: RequestYieldLeave;
|
|
424
419
|
[ExtrinsicType.REDEEM_STDOT]: RequestYieldLeave;
|
|
425
|
-
[ExtrinsicType.REDEEM_VMANTA]: RequestYieldLeave;
|
|
426
420
|
[ExtrinsicType.TOKEN_APPROVE]: TokenApproveData;
|
|
427
421
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
428
422
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
@@ -476,19 +470,16 @@ export declare type TransactionAdditionalInfo = {
|
|
|
476
470
|
[ExtrinsicType.TRANSFER_XCM]: XCMTransactionAdditionalInfo;
|
|
477
471
|
[ExtrinsicType.SEND_NFT]: NFTTransactionAdditionalInfo;
|
|
478
472
|
[ExtrinsicType.MINT_VDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
479
|
-
[ExtrinsicType.MINT_VMANTA]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
480
473
|
[ExtrinsicType.MINT_QDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
481
474
|
[ExtrinsicType.MINT_SDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
482
475
|
[ExtrinsicType.MINT_LDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
483
476
|
[ExtrinsicType.MINT_STDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
|
|
484
477
|
[ExtrinsicType.REDEEM_VDOT]: LeavePoolAdditionalData;
|
|
485
|
-
[ExtrinsicType.REDEEM_VMANTA]: LeavePoolAdditionalData;
|
|
486
478
|
[ExtrinsicType.REDEEM_QDOT]: LeavePoolAdditionalData;
|
|
487
479
|
[ExtrinsicType.REDEEM_SDOT]: LeavePoolAdditionalData;
|
|
488
480
|
[ExtrinsicType.REDEEM_LDOT]: LeavePoolAdditionalData;
|
|
489
481
|
[ExtrinsicType.REDEEM_STDOT]: LeavePoolAdditionalData;
|
|
490
482
|
[ExtrinsicType.UNSTAKE_VDOT]: LeavePoolAdditionalData;
|
|
491
|
-
[ExtrinsicType.UNSTAKE_VMANTA]: LeavePoolAdditionalData;
|
|
492
483
|
[ExtrinsicType.UNSTAKE_QDOT]: LeavePoolAdditionalData;
|
|
493
484
|
[ExtrinsicType.UNSTAKE_SDOT]: LeavePoolAdditionalData;
|
|
494
485
|
[ExtrinsicType.UNSTAKE_LDOT]: LeavePoolAdditionalData;
|
package/background/KoniTypes.js
CHANGED
|
@@ -81,19 +81,16 @@ export let ExtrinsicType;
|
|
|
81
81
|
ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
|
|
82
82
|
ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
|
|
83
83
|
ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
|
|
84
|
-
ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
|
|
85
84
|
ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
|
|
86
85
|
ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
|
|
87
86
|
ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
|
|
88
87
|
ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
|
|
89
88
|
ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
|
|
90
|
-
ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
|
|
91
89
|
ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
|
|
92
90
|
ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
|
|
93
91
|
ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
|
|
94
92
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
95
93
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
96
|
-
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
97
94
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
98
95
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
99
96
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
@@ -95,19 +95,16 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
95
95
|
ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
|
|
96
96
|
ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
|
|
97
97
|
ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
|
|
98
|
-
ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
|
|
99
98
|
ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
|
|
100
99
|
ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
|
|
101
100
|
ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
|
|
102
101
|
ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
|
|
103
102
|
ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
|
|
104
|
-
ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
|
|
105
103
|
ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
|
|
106
104
|
ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
|
|
107
105
|
ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
|
|
108
106
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
109
107
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
110
|
-
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
111
108
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
112
109
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
113
110
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -11,8 +10,6 @@ exports.syntheticSelectedValidators = void 0;
|
|
|
11
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
12
11
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
12
|
var _types = require("@subwallet/extension-base/types");
|
|
14
|
-
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
|
-
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
16
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
17
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
18
15
|
|
|
@@ -43,7 +40,7 @@ function convertDerivativeToOriginToken(amount, poolInfo, derivativeTokenInfo, o
|
|
|
43
40
|
const derivativeDecimals = (0, _utils._getAssetDecimals)(derivativeTokenInfo);
|
|
44
41
|
const originDecimals = (0, _utils._getAssetDecimals)(originTokenInfo);
|
|
45
42
|
const exchangeRate = ((_poolInfo$statistic = poolInfo.statistic) === null || _poolInfo$statistic === void 0 ? void 0 : (_poolInfo$statistic$a = _poolInfo$statistic.assetEarning) === null || _poolInfo$statistic$a === void 0 ? void 0 : _poolInfo$statistic$a[0].exchangeRate) || 1;
|
|
46
|
-
const formattedAmount =
|
|
47
|
-
const minAmount = formattedAmount
|
|
48
|
-
return
|
|
43
|
+
const formattedAmount = parseInt(amount) / 10 ** derivativeDecimals; // TODO: decimals
|
|
44
|
+
const minAmount = formattedAmount * exchangeRate;
|
|
45
|
+
return Math.floor(minAmount * 10 ** originDecimals);
|
|
49
46
|
}
|
|
@@ -10,7 +10,6 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
10
10
|
var _utils = require("@subwallet/extension-base/koni/api/yield/helper/utils");
|
|
11
11
|
var _types = require("@subwallet/extension-base/types");
|
|
12
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
13
|
-
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
14
13
|
var _i18next = require("i18next");
|
|
15
14
|
var _util = require("@polkadot/util");
|
|
16
15
|
var _special = _interopRequireDefault(require("../special"));
|
|
@@ -39,7 +38,7 @@ class BaseLiquidStakingPoolHandler extends _special.default {
|
|
|
39
38
|
return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS));
|
|
40
39
|
}
|
|
41
40
|
const formattedMinAmount = (0, _utils.convertDerivativeToOriginToken)(amount, poolInfo, derivativeTokenInfo, originTokenInfo);
|
|
42
|
-
return
|
|
41
|
+
return Math.floor(this.minAmountPercent * formattedMinAmount);
|
|
43
42
|
}
|
|
44
43
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget) {
|
|
45
44
|
const poolInfo = await this.getPoolInfo();
|
|
@@ -41,7 +41,7 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
|
|
|
41
41
|
super(state, chain);
|
|
42
42
|
const chainInfo = this.chainInfo;
|
|
43
43
|
this.slug = `DOT___liquid_staking___${chain}`;
|
|
44
|
-
this.name = `${chainInfo.name} Liquid Staking
|
|
44
|
+
this.name = `${chainInfo.name} Liquid Staking`;
|
|
45
45
|
this.shortName = chainInfo.name.replaceAll(' Relay Chain', '');
|
|
46
46
|
}
|
|
47
47
|
getDescription() {
|
|
@@ -100,7 +100,6 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
|
|
|
100
100
|
unstakingPeriod: 24 * 28,
|
|
101
101
|
maxCandidatePerFarmer: 1,
|
|
102
102
|
maxWithdrawalRequestPerFarmer: 1,
|
|
103
|
-
farmerCount: vDOTStats.holders,
|
|
104
103
|
earningThreshold: {
|
|
105
104
|
join: minimumMint,
|
|
106
105
|
defaultUnstake: minimumRedeem,
|
|
@@ -16,12 +16,6 @@ Object.defineProperty(exports, "BifrostLiquidStakingPoolHandler", {
|
|
|
16
16
|
return _bifrost.default;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
Object.defineProperty(exports, "BifrostMantaLiquidStakingPoolHandler", {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () {
|
|
22
|
-
return _bifrostManta.default;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
19
|
Object.defineProperty(exports, "ParallelLiquidStakingPoolHandler", {
|
|
26
20
|
enumerable: true,
|
|
27
21
|
get: function () {
|
|
@@ -36,6 +30,5 @@ Object.defineProperty(exports, "StellaSwapLiquidStakingPoolHandler", {
|
|
|
36
30
|
});
|
|
37
31
|
var _acala = _interopRequireDefault(require("./acala"));
|
|
38
32
|
var _bifrost = _interopRequireDefault(require("./bifrost"));
|
|
39
|
-
var _bifrostManta = _interopRequireDefault(require("./bifrost-manta"));
|
|
40
33
|
var _parallel = _interopRequireDefault(require("./parallel"));
|
|
41
34
|
var _stellaSwap = _interopRequireDefault(require("./stella-swap"));
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _chainList = require("@subwallet/chain-list");
|
|
8
9
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
11
|
var _constants = require("@subwallet/extension-base/constants");
|
|
@@ -207,16 +208,13 @@ class BaseSpecialStakingPoolHandler extends _base.default {
|
|
|
207
208
|
const altInputTokenBalance = await this.state.balanceService.getTokenFreeBalance(address, altInputTokenInfo.originChain, altInputTokenSlug);
|
|
208
209
|
const bnAltInputTokenBalance = new _util.BN(altInputTokenBalance.value || '0');
|
|
209
210
|
if (bnAltInputTokenBalance.gt(_util.BN_ZERO)) {
|
|
210
|
-
const altChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
211
|
-
const symbol = altInputTokenInfo.symbol;
|
|
212
|
-
const networkName = altChainInfo.name;
|
|
213
211
|
const step = {
|
|
214
212
|
metadata: {
|
|
215
213
|
sendingValue: bnAmount.toString(),
|
|
216
214
|
originTokenInfo: altInputTokenInfo,
|
|
217
215
|
destinationTokenInfo: inputTokenInfo
|
|
218
216
|
},
|
|
219
|
-
name:
|
|
217
|
+
name: 'Transfer DOT from Polkadot',
|
|
220
218
|
type: _types.YieldStepType.XCM
|
|
221
219
|
};
|
|
222
220
|
const xcmOriginSubstrateApi = await this.state.getSubstrateApi(altInputTokenInfo.originChain).isReady;
|
|
@@ -413,9 +411,7 @@ class BaseSpecialStakingPoolHandler extends _base.default {
|
|
|
413
411
|
amount
|
|
414
412
|
} = data;
|
|
415
413
|
const destinationTokenSlug = this.inputAsset;
|
|
416
|
-
const
|
|
417
|
-
const altInputTokenInfo = this.state.getAssetBySlug(altInputTokenSlug);
|
|
418
|
-
const originChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
414
|
+
const originChainInfo = this.state.getChainInfo(_chainList.COMMON_CHAIN_SLUGS.POLKADOT);
|
|
419
415
|
const originTokenSlug = (0, _utils2._getChainNativeTokenSlug)(originChainInfo);
|
|
420
416
|
const originTokenInfo = this.state.getAssetBySlug(originTokenSlug);
|
|
421
417
|
const destinationTokenInfo = this.state.getAssetBySlug(destinationTokenSlug);
|
|
@@ -77,7 +77,6 @@ class EarningService {
|
|
|
77
77
|
if (_constants2._STAKING_CHAIN_GROUP.liquidStaking.includes(chain)) {
|
|
78
78
|
if (chain === 'bifrost_dot') {
|
|
79
79
|
handlers.push(new _handlers.BifrostLiquidStakingPoolHandler(this.state, chain));
|
|
80
|
-
handlers.push(new _handlers.BifrostMantaLiquidStakingPoolHandler(this.state, chain));
|
|
81
80
|
}
|
|
82
81
|
if (chain === 'acala') {
|
|
83
82
|
handlers.push(new _handlers.AcalaLiquidStakingPoolHandler(this.state, chain));
|
|
@@ -529,7 +529,6 @@ class TransactionService {
|
|
|
529
529
|
case _KoniTypes.ExtrinsicType.MINT_QDOT:
|
|
530
530
|
case _KoniTypes.ExtrinsicType.MINT_LDOT:
|
|
531
531
|
case _KoniTypes.ExtrinsicType.MINT_SDOT:
|
|
532
|
-
case _KoniTypes.ExtrinsicType.MINT_VMANTA:
|
|
533
532
|
|
|
534
533
|
// eslint-disable-next-line no-fallthrough
|
|
535
534
|
case _KoniTypes.ExtrinsicType.MINT_VDOT:
|
|
@@ -583,14 +582,12 @@ class TransactionService {
|
|
|
583
582
|
break;
|
|
584
583
|
}
|
|
585
584
|
case _KoniTypes.ExtrinsicType.UNSTAKE_VDOT:
|
|
586
|
-
case _KoniTypes.ExtrinsicType.UNSTAKE_VMANTA:
|
|
587
585
|
case _KoniTypes.ExtrinsicType.UNSTAKE_LDOT:
|
|
588
586
|
case _KoniTypes.ExtrinsicType.UNSTAKE_SDOT:
|
|
589
587
|
case _KoniTypes.ExtrinsicType.UNSTAKE_STDOT:
|
|
590
588
|
case _KoniTypes.ExtrinsicType.REDEEM_STDOT:
|
|
591
589
|
case _KoniTypes.ExtrinsicType.REDEEM_LDOT:
|
|
592
590
|
case _KoniTypes.ExtrinsicType.REDEEM_SDOT:
|
|
593
|
-
case _KoniTypes.ExtrinsicType.REDEEM_VMANTA:
|
|
594
591
|
|
|
595
592
|
// eslint-disable-next-line no-fallthrough
|
|
596
593
|
case _KoniTypes.ExtrinsicType.REDEEM_VDOT:
|
|
@@ -39,7 +39,6 @@ exports.YieldStepType = YieldStepType;
|
|
|
39
39
|
YieldStepType["NOMINATE"] = "NOMINATE";
|
|
40
40
|
YieldStepType["JOIN_NOMINATION_POOL"] = "JOIN_NOMINATION_POOL";
|
|
41
41
|
YieldStepType["MINT_VDOT"] = "MINT_VDOT";
|
|
42
|
-
YieldStepType["MINT_VMANTA"] = "MINT_VMANTA";
|
|
43
42
|
YieldStepType["MINT_LDOT"] = "MINT_LDOT";
|
|
44
43
|
YieldStepType["MINT_QDOT"] = "MINT_QDOT";
|
|
45
44
|
YieldStepType["MINT_SDOT"] = "MINT_SDOT";
|
|
@@ -7,4 +7,4 @@ export declare const DEFAULT_YIELD_FIRST_STEP: YieldStepDetail;
|
|
|
7
7
|
export declare const YIELD_EXTRINSIC_TYPES: ExtrinsicType[];
|
|
8
8
|
export declare const YIELD_POOL_STAT_REFRESH_INTERVAL = 90000;
|
|
9
9
|
export declare const YIELD_POOL_MIN_AMOUNT_PERCENT: Record<string, number>;
|
|
10
|
-
export declare function convertDerivativeToOriginToken(amount: string, poolInfo: SpecialYieldPoolInfo, derivativeTokenInfo: _ChainAsset, originTokenInfo: _ChainAsset):
|
|
10
|
+
export declare function convertDerivativeToOriginToken(amount: string, poolInfo: SpecialYieldPoolInfo, derivativeTokenInfo: _ChainAsset, originTokenInfo: _ChainAsset): number;
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
5
|
import { _getAssetDecimals } from '@subwallet/extension-base/services/chain-service/utils';
|
|
6
6
|
import { YieldStepType } from '@subwallet/extension-base/types';
|
|
7
|
-
import { BN_TEN } from '@subwallet/extension-base/utils';
|
|
8
|
-
import BigN from 'bignumber.js';
|
|
9
7
|
export const syntheticSelectedValidators = ['15MLn9YQaHZ4GMkhK3qXqR5iGGSdULyJ995ctjeBgFRseyi6', '1REAJ1k691g5Eqqg9gL7vvZCBG7FCCZ8zgQkZWd4va5ESih', '1yGJ3h7TQuJWLYSsUVPZbM8aR8UsQXCqMvrFx5Fn1ktiAmq', '16GDRhRYxk42paoK6TfHAqWej8PdDDUwdDazjv4bAn4KGNeb', '13Ybj8CPEArUee78DxUAP9yX3ABmFNVQME1ZH4w8HVncHGzc', '14yx4vPAACZRhoDQm1dyvXD3QdRQyCRRCe5tj1zPomhhS29a', '14Vh8S1DzzycngbAB9vqEgPFR9JpSvmF1ezihTUES1EaHAV', '153YD8ZHD9dRh82U419bSCB5SzWhbdAFzjj4NtA5pMazR2yC', '1LUckyocmz9YzeQZHVpBvYYRGXb3rnSm2tvfz79h3G3JDgP', '14oRE62MB1SWR6h5RTx3GY5HK2oZipi1Gp3zdiLwVYLfEyRZ', '1cFsLn7o74nmjbRyDtMAnMpQMc5ZLsjgCSz9Np2mcejUK83', '15ZvLonEseaWZNy8LDkXXj3Y8bmAjxCjwvpy4pXWSL4nGSBs', '1NebF2xZHb4TJJpiqZZ3reeTo8dZov6LZ49qZqcHHbsmHfo', '1HmAqbBRrWvsqbLkvpiVDkdA2PcctUE5JUe3qokEh1FN455', '15tfUt4iQNjMyhZiJGBf4EpETE2KqtW1nfJwbBT1MvWjvcK9', '12RXTLiaYh59PokjZVhQvKzcfBEB5CvDnjKKUmDUotzcTH3S'];
|
|
10
8
|
export function calculateAlternativeFee(feeInfo) {
|
|
11
9
|
return feeInfo.partialFee;
|
|
@@ -28,7 +26,7 @@ export function convertDerivativeToOriginToken(amount, poolInfo, derivativeToken
|
|
|
28
26
|
const derivativeDecimals = _getAssetDecimals(derivativeTokenInfo);
|
|
29
27
|
const originDecimals = _getAssetDecimals(originTokenInfo);
|
|
30
28
|
const exchangeRate = ((_poolInfo$statistic = poolInfo.statistic) === null || _poolInfo$statistic === void 0 ? void 0 : (_poolInfo$statistic$a = _poolInfo$statistic.assetEarning) === null || _poolInfo$statistic$a === void 0 ? void 0 : _poolInfo$statistic$a[0].exchangeRate) || 1;
|
|
31
|
-
const formattedAmount =
|
|
32
|
-
const minAmount = formattedAmount
|
|
33
|
-
return
|
|
29
|
+
const formattedAmount = parseInt(amount) / 10 ** derivativeDecimals; // TODO: decimals
|
|
30
|
+
const minAmount = formattedAmount * exchangeRate;
|
|
31
|
+
return Math.floor(minAmount * 10 ** originDecimals);
|
|
34
32
|
}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.1.33-beta.
|
|
20
|
+
"version": "1.1.33-beta.3",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -755,11 +755,6 @@
|
|
|
755
755
|
"require": "./cjs/services/earning-service/handlers/liquid-staking/bifrost.js",
|
|
756
756
|
"default": "./services/earning-service/handlers/liquid-staking/bifrost.js"
|
|
757
757
|
},
|
|
758
|
-
"./services/earning-service/handlers/liquid-staking/bifrost-manta": {
|
|
759
|
-
"types": "./services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts",
|
|
760
|
-
"require": "./cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js",
|
|
761
|
-
"default": "./services/earning-service/handlers/liquid-staking/bifrost-manta.js"
|
|
762
|
-
},
|
|
763
758
|
"./services/earning-service/handlers/liquid-staking/parallel": {
|
|
764
759
|
"types": "./services/earning-service/handlers/liquid-staking/parallel.d.ts",
|
|
765
760
|
"require": "./cjs/services/earning-service/handlers/liquid-staking/parallel.js",
|
|
@@ -1721,7 +1716,7 @@
|
|
|
1721
1716
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1722
1717
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1723
1718
|
"@substrate/connect": "^0.7.26",
|
|
1724
|
-
"@subwallet/chain-list": "0.2.
|
|
1719
|
+
"@subwallet/chain-list": "0.2.39",
|
|
1725
1720
|
"@subwallet/extension-base": "^1.1.33-0",
|
|
1726
1721
|
"@subwallet/extension-chains": "^1.1.33-0",
|
|
1727
1722
|
"@subwallet/extension-dapp": "^1.1.33-0",
|
|
@@ -6,6 +6,6 @@ export default abstract class BaseLiquidStakingPoolHandler extends BaseSpecialSt
|
|
|
6
6
|
/** Rate convert token when redeem */
|
|
7
7
|
readonly minAmountPercent: number;
|
|
8
8
|
static get defaultMinAmountPercent(): number;
|
|
9
|
-
createParamToRedeem(amount: string, address: string): Promise<
|
|
9
|
+
createParamToRedeem(amount: string, address: string): Promise<number>;
|
|
10
10
|
validateYieldLeave(amount: string, address: string, fastLeave: boolean, selectedTarget?: string): Promise<TransactionError[]>;
|
|
11
11
|
}
|
|
@@ -6,7 +6,6 @@ import { BasicTxErrorType, StakingTxErrorType } from '@subwallet/extension-base/
|
|
|
6
6
|
import { convertDerivativeToOriginToken } from '@subwallet/extension-base/koni/api/yield/helper/utils';
|
|
7
7
|
import { YieldPoolType } from '@subwallet/extension-base/types';
|
|
8
8
|
import { formatNumber } from '@subwallet/extension-base/utils';
|
|
9
|
-
import BigN from 'bignumber.js';
|
|
10
9
|
import { t } from 'i18next';
|
|
11
10
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
12
11
|
import BaseSpecialStakingPoolHandler from "../special.js";
|
|
@@ -32,7 +31,7 @@ export default class BaseLiquidStakingPoolHandler extends BaseSpecialStakingPool
|
|
|
32
31
|
return Promise.reject(new TransactionError(BasicTxErrorType.INVALID_PARAMS));
|
|
33
32
|
}
|
|
34
33
|
const formattedMinAmount = convertDerivativeToOriginToken(amount, poolInfo, derivativeTokenInfo, originTokenInfo);
|
|
35
|
-
return
|
|
34
|
+
return Math.floor(this.minAmountPercent * formattedMinAmount);
|
|
36
35
|
}
|
|
37
36
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget) {
|
|
38
37
|
const poolInfo = await this.getPoolInfo();
|
|
@@ -24,14 +24,14 @@ export interface BifrostVtokenExchangeRate {
|
|
|
24
24
|
}
|
|
25
25
|
export default class BifrostLiquidStakingPoolHandler extends BaseLiquidStakingPoolHandler {
|
|
26
26
|
slug: string;
|
|
27
|
-
protected name: string;
|
|
28
|
-
protected shortName: string;
|
|
27
|
+
protected readonly name: string;
|
|
28
|
+
protected readonly shortName: string;
|
|
29
29
|
protected readonly altInputAsset: string;
|
|
30
30
|
protected readonly derivativeAssets: string[];
|
|
31
31
|
protected readonly inputAsset: string;
|
|
32
32
|
protected readonly rewardAssets: string[];
|
|
33
33
|
protected readonly feeAssets: string[];
|
|
34
|
-
readonly minAmountPercent
|
|
34
|
+
readonly minAmountPercent = 0.99;
|
|
35
35
|
protected readonly availableMethod: YieldPoolMethodInfo;
|
|
36
36
|
protected readonly rateDecimals = 0;
|
|
37
37
|
constructor(state: KoniState, chain: string);
|
|
@@ -34,7 +34,7 @@ export default class BifrostLiquidStakingPoolHandler extends BaseLiquidStakingPo
|
|
|
34
34
|
super(state, chain);
|
|
35
35
|
const chainInfo = this.chainInfo;
|
|
36
36
|
this.slug = `DOT___liquid_staking___${chain}`;
|
|
37
|
-
this.name = `${chainInfo.name} Liquid Staking
|
|
37
|
+
this.name = `${chainInfo.name} Liquid Staking`;
|
|
38
38
|
this.shortName = chainInfo.name.replaceAll(' Relay Chain', '');
|
|
39
39
|
}
|
|
40
40
|
getDescription() {
|
|
@@ -93,7 +93,6 @@ export default class BifrostLiquidStakingPoolHandler extends BaseLiquidStakingPo
|
|
|
93
93
|
unstakingPeriod: 24 * 28,
|
|
94
94
|
maxCandidatePerFarmer: 1,
|
|
95
95
|
maxWithdrawalRequestPerFarmer: 1,
|
|
96
|
-
farmerCount: vDOTStats.holders,
|
|
97
96
|
earningThreshold: {
|
|
98
97
|
join: minimumMint,
|
|
99
98
|
defaultUnstake: minimumRedeem,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { default as AcalaLiquidStakingPoolHandler } from './acala';
|
|
2
2
|
export { default as BifrostLiquidStakingPoolHandler } from './bifrost';
|
|
3
|
-
export { default as BifrostMantaLiquidStakingPoolHandler } from './bifrost-manta';
|
|
4
3
|
export { default as ParallelLiquidStakingPoolHandler } from './parallel';
|
|
5
4
|
export { default as StellaSwapLiquidStakingPoolHandler } from './stella-swap';
|
|
@@ -3,6 +3,5 @@
|
|
|
3
3
|
|
|
4
4
|
export { default as AcalaLiquidStakingPoolHandler } from "./acala.js";
|
|
5
5
|
export { default as BifrostLiquidStakingPoolHandler } from "./bifrost.js";
|
|
6
|
-
export { default as BifrostMantaLiquidStakingPoolHandler } from "./bifrost-manta.js";
|
|
7
6
|
export { default as ParallelLiquidStakingPoolHandler } from "./parallel.js";
|
|
8
7
|
export { default as StellaSwapLiquidStakingPoolHandler } from "./stella-swap.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
|
|
4
5
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
6
|
import { BasicTxErrorType, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
7
|
import { ALL_ACCOUNT_KEY } from '@subwallet/extension-base/constants';
|
|
@@ -200,16 +201,13 @@ export default class BaseSpecialStakingPoolHandler extends BasePoolHandler {
|
|
|
200
201
|
const altInputTokenBalance = await this.state.balanceService.getTokenFreeBalance(address, altInputTokenInfo.originChain, altInputTokenSlug);
|
|
201
202
|
const bnAltInputTokenBalance = new BN(altInputTokenBalance.value || '0');
|
|
202
203
|
if (bnAltInputTokenBalance.gt(BN_ZERO)) {
|
|
203
|
-
const altChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
204
|
-
const symbol = altInputTokenInfo.symbol;
|
|
205
|
-
const networkName = altChainInfo.name;
|
|
206
204
|
const step = {
|
|
207
205
|
metadata: {
|
|
208
206
|
sendingValue: bnAmount.toString(),
|
|
209
207
|
originTokenInfo: altInputTokenInfo,
|
|
210
208
|
destinationTokenInfo: inputTokenInfo
|
|
211
209
|
},
|
|
212
|
-
name:
|
|
210
|
+
name: 'Transfer DOT from Polkadot',
|
|
213
211
|
type: YieldStepType.XCM
|
|
214
212
|
};
|
|
215
213
|
const xcmOriginSubstrateApi = await this.state.getSubstrateApi(altInputTokenInfo.originChain).isReady;
|
|
@@ -406,9 +404,7 @@ export default class BaseSpecialStakingPoolHandler extends BasePoolHandler {
|
|
|
406
404
|
amount
|
|
407
405
|
} = data;
|
|
408
406
|
const destinationTokenSlug = this.inputAsset;
|
|
409
|
-
const
|
|
410
|
-
const altInputTokenInfo = this.state.getAssetBySlug(altInputTokenSlug);
|
|
411
|
-
const originChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
407
|
+
const originChainInfo = this.state.getChainInfo(COMMON_CHAIN_SLUGS.POLKADOT);
|
|
412
408
|
const originTokenSlug = _getChainNativeTokenSlug(originChainInfo);
|
|
413
409
|
const originTokenInfo = this.state.getAssetBySlug(originTokenSlug);
|
|
414
410
|
const destinationTokenInfo = this.state.getAssetBySlug(destinationTokenSlug);
|
|
@@ -12,7 +12,7 @@ import { YieldPoolType } from '@subwallet/extension-base/types';
|
|
|
12
12
|
import { addLazy, categoryAddresses, createPromiseHandler } from '@subwallet/extension-base/utils';
|
|
13
13
|
import fetch from 'cross-fetch';
|
|
14
14
|
import { BehaviorSubject } from 'rxjs';
|
|
15
|
-
import { AcalaLiquidStakingPoolHandler, AmplitudeNativeStakingPoolHandler, AstarNativeStakingPoolHandler, BifrostLiquidStakingPoolHandler,
|
|
15
|
+
import { AcalaLiquidStakingPoolHandler, AmplitudeNativeStakingPoolHandler, AstarNativeStakingPoolHandler, BifrostLiquidStakingPoolHandler, InterlayLendingPoolHandler, NominationPoolHandler, ParallelLiquidStakingPoolHandler, ParaNativeStakingPoolHandler, RelayNativeStakingPoolHandler, StellaSwapLiquidStakingPoolHandler } from "./handlers/index.js";
|
|
16
16
|
const POOLS_DATA_URLS = 'https://sw-static-cache.pages.dev/earning/yield-pools.json';
|
|
17
17
|
const fetchPoolsData = async () => {
|
|
18
18
|
const res = await fetch(POOLS_DATA_URLS);
|
|
@@ -70,7 +70,6 @@ export default class EarningService {
|
|
|
70
70
|
if (_STAKING_CHAIN_GROUP.liquidStaking.includes(chain)) {
|
|
71
71
|
if (chain === 'bifrost_dot') {
|
|
72
72
|
handlers.push(new BifrostLiquidStakingPoolHandler(this.state, chain));
|
|
73
|
-
handlers.push(new BifrostMantaLiquidStakingPoolHandler(this.state, chain));
|
|
74
73
|
}
|
|
75
74
|
if (chain === 'acala') {
|
|
76
75
|
handlers.push(new AcalaLiquidStakingPoolHandler(this.state, chain));
|
|
@@ -522,7 +522,6 @@ export default class TransactionService {
|
|
|
522
522
|
case ExtrinsicType.MINT_QDOT:
|
|
523
523
|
case ExtrinsicType.MINT_LDOT:
|
|
524
524
|
case ExtrinsicType.MINT_SDOT:
|
|
525
|
-
case ExtrinsicType.MINT_VMANTA:
|
|
526
525
|
|
|
527
526
|
// eslint-disable-next-line no-fallthrough
|
|
528
527
|
case ExtrinsicType.MINT_VDOT:
|
|
@@ -576,14 +575,12 @@ export default class TransactionService {
|
|
|
576
575
|
break;
|
|
577
576
|
}
|
|
578
577
|
case ExtrinsicType.UNSTAKE_VDOT:
|
|
579
|
-
case ExtrinsicType.UNSTAKE_VMANTA:
|
|
580
578
|
case ExtrinsicType.UNSTAKE_LDOT:
|
|
581
579
|
case ExtrinsicType.UNSTAKE_SDOT:
|
|
582
580
|
case ExtrinsicType.UNSTAKE_STDOT:
|
|
583
581
|
case ExtrinsicType.REDEEM_STDOT:
|
|
584
582
|
case ExtrinsicType.REDEEM_LDOT:
|
|
585
583
|
case ExtrinsicType.REDEEM_SDOT:
|
|
586
|
-
case ExtrinsicType.REDEEM_VMANTA:
|
|
587
584
|
|
|
588
585
|
// eslint-disable-next-line no-fallthrough
|
|
589
586
|
case ExtrinsicType.REDEEM_VDOT:
|
|
@@ -38,7 +38,6 @@ export let YieldStepType;
|
|
|
38
38
|
YieldStepType["NOMINATE"] = "NOMINATE";
|
|
39
39
|
YieldStepType["JOIN_NOMINATION_POOL"] = "JOIN_NOMINATION_POOL";
|
|
40
40
|
YieldStepType["MINT_VDOT"] = "MINT_VDOT";
|
|
41
|
-
YieldStepType["MINT_VMANTA"] = "MINT_VMANTA";
|
|
42
41
|
YieldStepType["MINT_LDOT"] = "MINT_LDOT";
|
|
43
42
|
YieldStepType["MINT_QDOT"] = "MINT_QDOT";
|
|
44
43
|
YieldStepType["MINT_SDOT"] = "MINT_SDOT";
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
|
-
import KoniState from '@subwallet/extension-base/koni/background/handlers/State';
|
|
3
|
-
import { BaseYieldStepDetail, HandleYieldStepData, LiquidYieldPoolInfo, OptimalYieldPath, SubmitYieldJoinData, TransactionData } from '@subwallet/extension-base/types';
|
|
4
|
-
import BifrostLiquidStakingPoolHandler from './bifrost';
|
|
5
|
-
export interface BifrostLiquidStakingMeta {
|
|
6
|
-
apy: string;
|
|
7
|
-
apyBase: string;
|
|
8
|
-
apyReward: string;
|
|
9
|
-
tvl: number;
|
|
10
|
-
tvm: number;
|
|
11
|
-
holders: number;
|
|
12
|
-
}
|
|
13
|
-
export interface BifrostVtokenExchangeRateResp {
|
|
14
|
-
ratio: BifrostVtokenExchangeRate[];
|
|
15
|
-
}
|
|
16
|
-
export interface BifrostVtokenExchangeRate {
|
|
17
|
-
ratio: string;
|
|
18
|
-
key: string;
|
|
19
|
-
timestamp: string;
|
|
20
|
-
total_issuance: number;
|
|
21
|
-
token_pool: number;
|
|
22
|
-
}
|
|
23
|
-
export default class BifrostMantaLiquidStakingPoolHandler extends BifrostLiquidStakingPoolHandler {
|
|
24
|
-
protected readonly altInputAsset: string;
|
|
25
|
-
protected readonly derivativeAssets: string[];
|
|
26
|
-
protected readonly inputAsset: string;
|
|
27
|
-
protected readonly rewardAssets: string[];
|
|
28
|
-
protected readonly feeAssets: string[];
|
|
29
|
-
readonly minAmountPercent: number;
|
|
30
|
-
constructor(state: KoniState, chain: string);
|
|
31
|
-
protected getDescription(): string;
|
|
32
|
-
getPoolStat(): Promise<LiquidYieldPoolInfo>;
|
|
33
|
-
get submitJoinStepInfo(): BaseYieldStepDetail;
|
|
34
|
-
handleSubmitStep(data: SubmitYieldJoinData, path: OptimalYieldPath): Promise<HandleYieldStepData>;
|
|
35
|
-
handleYieldRedeem(amount: string, address: string, selectedTarget?: string): Promise<[ExtrinsicType, TransactionData]>;
|
|
36
|
-
handleYieldUnstake(amount: string, address: string, selectedTarget?: string): Promise<[ExtrinsicType, TransactionData]>;
|
|
37
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
-
import { _getAssetDecimals, _getTokenOnChainInfo } from '@subwallet/extension-base/services/chain-service/utils';
|
|
6
|
-
import { YieldStepType } from '@subwallet/extension-base/types';
|
|
7
|
-
import fetch from 'cross-fetch';
|
|
8
|
-
import BifrostLiquidStakingPoolHandler from "./bifrost.js";
|
|
9
|
-
const STATS_URL = 'https://api.bifrost.app/api/site';
|
|
10
|
-
const RATIO_URL = 'https://api.bifrost.app/api/omni/MANTA';
|
|
11
|
-
export default class BifrostMantaLiquidStakingPoolHandler extends BifrostLiquidStakingPoolHandler {
|
|
12
|
-
altInputAsset = 'manta_network-NATIVE-MANTA';
|
|
13
|
-
derivativeAssets = ['bifrost_dot-LOCAL-vMANTA'];
|
|
14
|
-
inputAsset = 'bifrost_dot-LOCAL-MANTA';
|
|
15
|
-
rewardAssets = ['bifrost_dot-LOCAL-MANTA'];
|
|
16
|
-
feeAssets = ['bifrost_dot-NATIVE-BNC', 'bifrost_dot-LOCAL-MANTA'];
|
|
17
|
-
minAmountPercent = 0.985;
|
|
18
|
-
constructor(state, chain) {
|
|
19
|
-
super(state, chain);
|
|
20
|
-
const chainInfo = this.chainInfo;
|
|
21
|
-
this.slug = `MANTA___liquid_staking___${chain}`;
|
|
22
|
-
this.name = `${chainInfo.name} Liquid Staking Manta`;
|
|
23
|
-
this.shortName = chainInfo.name.replaceAll(' Relay Chain', '');
|
|
24
|
-
}
|
|
25
|
-
getDescription() {
|
|
26
|
-
return 'Stake MANTA to earn yield on vMANTA';
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/* Subscribe pool info */
|
|
30
|
-
|
|
31
|
-
async getPoolStat() {
|
|
32
|
-
const substrateApi = await this.substrateApi.isReady;
|
|
33
|
-
const stakingMetaPromise = new Promise(function (resolve) {
|
|
34
|
-
fetch(STATS_URL, {
|
|
35
|
-
method: 'GET'
|
|
36
|
-
}).then(res => {
|
|
37
|
-
resolve(res.json());
|
|
38
|
-
}).catch(console.error);
|
|
39
|
-
});
|
|
40
|
-
const exchangeRatePromise = new Promise(function (resolve) {
|
|
41
|
-
fetch(RATIO_URL, {
|
|
42
|
-
method: 'GET'
|
|
43
|
-
}).then(resp => {
|
|
44
|
-
resolve(resp.json());
|
|
45
|
-
}).catch(console.error);
|
|
46
|
-
});
|
|
47
|
-
const derivativeTokenInfo = this.state.getAssetBySlug(this.derivativeAssets[0]);
|
|
48
|
-
const inputTokenInfo = this.state.getAssetBySlug(this.inputAsset);
|
|
49
|
-
const [_stakingMeta, _exchangeRate, _minimumRedeem, _minimumMint] = await Promise.all([stakingMetaPromise, exchangeRatePromise, substrateApi.api.query.vtokenMinting.minimumRedeem(_getTokenOnChainInfo(derivativeTokenInfo)), substrateApi.api.query.vtokenMinting.minimumMint(_getTokenOnChainInfo(inputTokenInfo))]);
|
|
50
|
-
const minimumRedeem = _minimumRedeem.toString();
|
|
51
|
-
const minimumMint = _minimumMint.toString();
|
|
52
|
-
const stakingMeta = _stakingMeta;
|
|
53
|
-
const exchangeRate = _exchangeRate;
|
|
54
|
-
const vMANTAStats = stakingMeta.vMANTA;
|
|
55
|
-
const assetInfo = this.state.getAssetBySlug(this.inputAsset);
|
|
56
|
-
const assetDecimals = 10 ** _getAssetDecimals(assetInfo);
|
|
57
|
-
const rate = parseFloat(exchangeRate.ratio[exchangeRate.ratio.length - 1].ratio); // TODO
|
|
58
|
-
|
|
59
|
-
this.updateExchangeRate(rate);
|
|
60
|
-
return {
|
|
61
|
-
...this.baseInfo,
|
|
62
|
-
type: this.type,
|
|
63
|
-
metadata: {
|
|
64
|
-
...this.metadataInfo,
|
|
65
|
-
description: this.getDescription()
|
|
66
|
-
},
|
|
67
|
-
statistic: {
|
|
68
|
-
assetEarning: [{
|
|
69
|
-
slug: this.rewardAssets[0],
|
|
70
|
-
apy: parseFloat(vMANTAStats.apyBase),
|
|
71
|
-
exchangeRate: rate
|
|
72
|
-
}],
|
|
73
|
-
farmerCount: vMANTAStats.holders,
|
|
74
|
-
unstakingPeriod: 24 * 7,
|
|
75
|
-
maxCandidatePerFarmer: 1,
|
|
76
|
-
maxWithdrawalRequestPerFarmer: 1,
|
|
77
|
-
earningThreshold: {
|
|
78
|
-
join: minimumMint,
|
|
79
|
-
defaultUnstake: minimumRedeem,
|
|
80
|
-
fastUnstake: '0'
|
|
81
|
-
},
|
|
82
|
-
totalApy: parseFloat(vMANTAStats.apyBase),
|
|
83
|
-
tvl: (vMANTAStats.tvm * assetDecimals).toString()
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/* Subscribe pool info */
|
|
89
|
-
|
|
90
|
-
/* Join pool action */
|
|
91
|
-
|
|
92
|
-
get submitJoinStepInfo() {
|
|
93
|
-
return {
|
|
94
|
-
name: 'Mint vMANTA',
|
|
95
|
-
type: YieldStepType.MINT_VMANTA
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
async handleSubmitStep(data, path) {
|
|
99
|
-
const substrateApi = await this.substrateApi.isReady;
|
|
100
|
-
const inputTokenSlug = this.inputAsset;
|
|
101
|
-
const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
|
|
102
|
-
const extrinsic = substrateApi.api.tx.vtokenMinting.mint(_getTokenOnChainInfo(inputTokenInfo), data.amount, undefined, undefined);
|
|
103
|
-
return {
|
|
104
|
-
txChain: this.chain,
|
|
105
|
-
extrinsicType: ExtrinsicType.MINT_VMANTA,
|
|
106
|
-
extrinsic,
|
|
107
|
-
txData: data,
|
|
108
|
-
transferNativeAmount: '0',
|
|
109
|
-
chainType: ChainType.SUBSTRATE
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/* Join pool action */
|
|
114
|
-
|
|
115
|
-
/* Leave pool action */
|
|
116
|
-
|
|
117
|
-
async handleYieldRedeem(amount, address, selectedTarget) {
|
|
118
|
-
const substrateApi = await this.substrateApi.isReady;
|
|
119
|
-
const weightedMinAmount = await this.createParamToRedeem(amount, address);
|
|
120
|
-
const extrinsic = substrateApi.api.tx.stablePool.swap(5, 1, 0, amount, weightedMinAmount);
|
|
121
|
-
return [ExtrinsicType.REDEEM_VMANTA, extrinsic];
|
|
122
|
-
}
|
|
123
|
-
async handleYieldUnstake(amount, address, selectedTarget) {
|
|
124
|
-
const chainApi = await this.substrateApi.isReady;
|
|
125
|
-
const derivativeTokenSlug = this.derivativeAssets[0];
|
|
126
|
-
const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
|
|
127
|
-
const extrinsic = chainApi.api.tx.vtokenMinting.redeem(_getTokenOnChainInfo(derivativeTokenInfo), amount);
|
|
128
|
-
return [ExtrinsicType.UNSTAKE_VMANTA, extrinsic];
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/* Leave pool action */
|
|
132
|
-
}
|