@subwallet/extension-base 1.3.31-0 → 1.3.32-0
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 +70 -3
- package/background/KoniTypes.js +14 -0
- package/background/errors/CardanoProviderError.d.ts +6 -0
- package/background/errors/CardanoProviderError.js +61 -0
- package/background/types.d.ts +2 -2
- package/cjs/background/KoniTypes.js +16 -1
- package/cjs/background/errors/CardanoProviderError.js +67 -0
- package/cjs/constants/index.js +4 -1
- package/cjs/core/logic-validation/request.js +50 -3
- package/cjs/koni/api/contract-handler/evm/web3.js +21 -0
- package/cjs/koni/api/staking/bonding/utils.js +24 -3
- package/cjs/koni/background/handlers/Extension.js +115 -107
- package/cjs/koni/background/handlers/State.js +228 -5
- package/cjs/koni/background/handlers/Tabs.js +277 -55
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/cardano/cips/cip30.js +63 -0
- package/cjs/page/cardano/cips/index.js +20 -0
- package/cjs/page/cardano/index.js +41 -0
- package/cjs/page/{SubWalleEvmProvider.js → evm/index.js} +2 -2
- package/cjs/page/index.js +9 -4
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +33 -1
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +6 -2
- package/cjs/services/balance-service/transfer/xcm/index.js +2 -0
- package/cjs/services/chain-service/handler/CardanoApi.js +33 -0
- package/cjs/services/chain-service/index.js +31 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +13 -13
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/cjs/services/request-service/constants.js +3 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +38 -5
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/cjs/services/request-service/helper/index.js +419 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +81 -21
- package/cjs/services/swap-service/handler/hydradx-handler.js +1 -1
- package/cjs/services/swap-service/handler/uniswap-handler.js +274 -45
- package/cjs/services/swap-service/index.js +33 -11
- package/cjs/services/swap-service/utils.js +15 -2
- package/cjs/utils/auth.js +2 -1
- package/cjs/utils/cardano.js +20 -0
- package/cjs/utils/index.js +4 -4
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/core/logic-validation/request.d.ts +6 -2
- package/core/logic-validation/request.js +51 -5
- package/koni/api/contract-handler/evm/web3.d.ts +2 -0
- package/koni/api/contract-handler/evm/web3.js +19 -0
- package/koni/api/staking/bonding/utils.d.ts +2 -1
- package/koni/api/staking/bonding/utils.js +23 -3
- package/koni/background/handlers/Extension.js +7 -2
- package/koni/background/handlers/State.d.ts +6 -1
- package/koni/background/handlers/State.js +223 -4
- package/koni/background/handlers/Tabs.d.ts +11 -1
- package/koni/background/handlers/Tabs.js +242 -19
- package/package.json +62 -42
- package/packageInfo.js +1 -1
- package/page/cardano/cips/cip30.d.ts +22 -0
- package/page/cardano/cips/cip30.js +55 -0
- package/page/cardano/cips/index.d.ts +3 -0
- package/page/cardano/cips/index.js +7 -0
- package/page/cardano/index.d.ts +13 -0
- package/page/cardano/index.js +34 -0
- package/page/{SubWalleEvmProvider.d.ts → evm/index.d.ts} +3 -2
- package/page/{SubWalleEvmProvider.js → evm/index.js} +1 -1
- package/page/index.d.ts +3 -2
- package/page/index.js +6 -2
- package/page/{Accounts.d.ts → substrate/Accounts.d.ts} +1 -1
- package/page/{Metadata.d.ts → substrate/Metadata.d.ts} +1 -1
- package/page/{PostMessageProvider.d.ts → substrate/PostMessageProvider.d.ts} +1 -1
- package/page/{Signer.d.ts → substrate/Signer.d.ts} +1 -1
- package/page/{Injected.d.ts → substrate/index.d.ts} +1 -1
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +14 -0
- package/services/balance-service/helpers/subscribe/substrate/index.js +34 -2
- package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +4 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +4 -1
- package/services/balance-service/transfer/xcm/index.js +2 -0
- package/services/chain-service/handler/CardanoApi.d.ts +3 -1
- package/services/chain-service/handler/CardanoApi.js +33 -0
- package/services/chain-service/index.d.ts +5 -1
- package/services/chain-service/index.js +32 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/services/earning-service/handlers/native-staking/tao.js +14 -14
- package/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/services/request-service/constants.js +3 -1
- package/services/request-service/handler/AuthRequestHandler.js +40 -7
- package/services/request-service/handler/CardanoRequestHandler.d.ts +2 -0
- package/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/services/request-service/helper/index.d.ts +54 -0
- package/services/request-service/helper/index.js +406 -1
- package/services/request-service/types.d.ts +3 -1
- package/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +3 -1
- package/services/swap-service/handler/base-handler.js +82 -22
- package/services/swap-service/handler/hydradx-handler.js +1 -1
- package/services/swap-service/handler/uniswap-handler.d.ts +5 -0
- package/services/swap-service/handler/uniswap-handler.js +275 -46
- package/services/swap-service/index.js +34 -12
- package/services/swap-service/utils.d.ts +3 -2
- package/services/swap-service/utils.js +13 -1
- package/types/swap/index.d.ts +1 -0
- package/types/transaction/process.d.ts +2 -0
- package/utils/auth.js +3 -2
- package/utils/cardano.d.ts +2 -0
- package/utils/cardano.js +12 -0
- package/utils/index.d.ts +1 -1
- package/utils/index.js +1 -1
- package/cjs/utils/canDerive.js +0 -12
- package/utils/canDerive.d.ts +0 -2
- package/utils/canDerive.js +0 -6
- /package/cjs/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/cjs/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/cjs/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/cjs/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/cjs/page/{Injected.js → substrate/index.js} +0 -0
- /package/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/page/{Injected.js → substrate/index.js} +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CIP30Api = void 0;
|
|
7
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
8
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
|
|
10
|
+
class CIP30Api {
|
|
11
|
+
constructor(sendMessage) {
|
|
12
|
+
this.sendMessage = sendMessage;
|
|
13
|
+
}
|
|
14
|
+
getExtension() {
|
|
15
|
+
return [{
|
|
16
|
+
cip: 30
|
|
17
|
+
}];
|
|
18
|
+
}
|
|
19
|
+
async getNetworkId() {
|
|
20
|
+
return await this.sendMessage('cardano(network.get.current)');
|
|
21
|
+
}
|
|
22
|
+
async getCollateral(payload) {
|
|
23
|
+
return await this.sendMessage('cardano(account.get.collateral)', payload);
|
|
24
|
+
}
|
|
25
|
+
async getUtxos(amount, paginate) {
|
|
26
|
+
return await this.sendMessage('cardano(account.get.utxos)', {
|
|
27
|
+
amount,
|
|
28
|
+
paginate
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async getUsedAddresses() {
|
|
32
|
+
return await this.sendMessage('cardano(account.get.address)');
|
|
33
|
+
}
|
|
34
|
+
async getChangeAddress() {
|
|
35
|
+
return await this.sendMessage('cardano(account.get.change.address)');
|
|
36
|
+
}
|
|
37
|
+
async getUnusedAddresses() {
|
|
38
|
+
return new Promise(resolve => resolve([]));
|
|
39
|
+
}
|
|
40
|
+
async getRewardAddresses() {
|
|
41
|
+
return new Promise(resolve => resolve([]));
|
|
42
|
+
}
|
|
43
|
+
async signTx(tx) {
|
|
44
|
+
let partialSign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
45
|
+
return await this.sendMessage('cardano(transaction.sign)', {
|
|
46
|
+
tx,
|
|
47
|
+
partialSign
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async signData(address, payload) {
|
|
51
|
+
return await this.sendMessage('cardano(data.sign)', {
|
|
52
|
+
address,
|
|
53
|
+
payload
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async submitTx(tx) {
|
|
57
|
+
return await this.sendMessage('cardano(transaction.submit)', tx);
|
|
58
|
+
}
|
|
59
|
+
async getBalance() {
|
|
60
|
+
return await this.sendMessage('cardano(account.get.balance)');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.CIP30Api = CIP30Api;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "CIP30Api", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _cip.CIP30Api;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.ExtensionCIPsSupported = void 0;
|
|
13
|
+
var _cip = require("./cip30");
|
|
14
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
15
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
|
|
17
|
+
const ExtensionCIPsSupported = [{
|
|
18
|
+
cip: 30
|
|
19
|
+
}];
|
|
20
|
+
exports.ExtensionCIPsSupported = ExtensionCIPsSupported;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _cips = require("@subwallet/extension-base/page/cardano/cips");
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
const WALLET_NAME = 'SubWallet';
|
|
12
|
+
const WALLET_VERSION = process.env.PKG_VERSION;
|
|
13
|
+
const WALLET_ICON = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODAgNGM1Ny42MyAwIDc2IDE4LjM3IDc2IDc2IDAgNTcuNjMtMTguMzcgNzYtNzYgNzYtNTcuNjMgMC03Ni0xOC4zNy03Ni03NkM0IDIyLjM3IDIyLjM3IDQgODAgNFoiIGZpbGw9InVybCgjYSkiLz48ZyBjbGlwLXBhdGg9InVybCgjYikiPjxwYXRoIGQ9Ik0xMTIuNjE1IDY2LjcyVjUzLjM5OEw1OC43NiAzMiA0OCAzNy40MTJsLjA1NyA0MS40NjQgNDAuMjkyIDE2LjA3LTIxLjUyIDkuMDc1di03LjAxOEw1Ni45NSA5My4wM2wtOC44OTMgNC4xNjN2MjUuMzk1TDU4Ljc2OSAxMjhsNTMuODQ2LTI0LjA2MlY4Ni44NjlMNjQuMTU0IDY3LjY1N1Y1NmwzOC40NDkgMTUuMjE2IDEwLjAxMi00LjQ5NloiIGZpbGw9IiNmZmYiLz48L2c+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iODAiIHkxPSI0IiB4Mj0iODAiIHkyPSIxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjMDA0QkZGIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNENFQUFDIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGZpbGw9IiNmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4IDMyKSIgZD0iTTAgMGg2NC42MTV2OTZIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=';
|
|
14
|
+
class SubWalletCardanoProvider {
|
|
15
|
+
apiVersion = WALLET_VERSION;
|
|
16
|
+
icon = WALLET_ICON;
|
|
17
|
+
name = WALLET_NAME;
|
|
18
|
+
supportedExtensions = [..._cips.ExtensionCIPsSupported];
|
|
19
|
+
constructor(sendMessage) {
|
|
20
|
+
this.icon = WALLET_ICON;
|
|
21
|
+
this.sendMessage = sendMessage;
|
|
22
|
+
}
|
|
23
|
+
async enable() {
|
|
24
|
+
const isEnabled = await this.sendMessage('pub(authorize.tabV2)', {
|
|
25
|
+
origin,
|
|
26
|
+
accountAuthTypes: ['cardano']
|
|
27
|
+
});
|
|
28
|
+
if (!isEnabled) {
|
|
29
|
+
throw new Error('Access to the wallet is denied');
|
|
30
|
+
}
|
|
31
|
+
const CIP30 = new _cips.CIP30Api(this.sendMessage);
|
|
32
|
+
return Object.freeze(CIP30);
|
|
33
|
+
}
|
|
34
|
+
async isEnable() {
|
|
35
|
+
const accountList = await this.sendMessage('pub(accounts.list)', {
|
|
36
|
+
accountAuthType: 'cardano'
|
|
37
|
+
});
|
|
38
|
+
return accountList.length > 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.default = SubWalletCardanoProvider;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.default = void 0;
|
|
8
8
|
var _safeEventEmitter = _interopRequireDefault(require("@metamask/safe-event-emitter"));
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -156,4 +156,4 @@ class SubWalletEvmProvider extends _safeEventEmitter.default {
|
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
exports.
|
|
159
|
+
exports.default = SubWalletEvmProvider;
|
package/cjs/page/index.js
CHANGED
|
@@ -6,14 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.enable = enable;
|
|
8
8
|
exports.handleResponse = handleResponse;
|
|
9
|
+
exports.initCardanoProvider = initCardanoProvider;
|
|
9
10
|
exports.initEvmProvider = initEvmProvider;
|
|
10
11
|
exports.sendMessage = sendMessage;
|
|
11
12
|
var _ProviderError = require("@subwallet/extension-base/background/errors/ProviderError");
|
|
12
13
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
13
|
-
var
|
|
14
|
+
var _cardano = _interopRequireDefault(require("@subwallet/extension-base/page/cardano"));
|
|
15
|
+
var _evm = _interopRequireDefault(require("@subwallet/extension-base/page/evm"));
|
|
16
|
+
var _substrate = _interopRequireDefault(require("@subwallet/extension-base/page/substrate"));
|
|
14
17
|
var _defaults = require("../defaults");
|
|
15
18
|
var _getId = require("../utils/getId");
|
|
16
|
-
var _Injected = _interopRequireDefault(require("./Injected"));
|
|
17
19
|
// Copyright 2019-2022 @polkadot/extension authors & contributors
|
|
18
20
|
// SPDX-License-Identifier: Apache-2.0
|
|
19
21
|
|
|
@@ -48,7 +50,7 @@ async function enable(origin, opt) {
|
|
|
48
50
|
origin,
|
|
49
51
|
accountAuthTypes
|
|
50
52
|
});
|
|
51
|
-
return new
|
|
53
|
+
return new _substrate.default(sendMessage);
|
|
52
54
|
}
|
|
53
55
|
function handleResponse(data) {
|
|
54
56
|
const handler = handlers[data.id];
|
|
@@ -70,5 +72,8 @@ function handleResponse(data) {
|
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
function initEvmProvider(version) {
|
|
73
|
-
return new
|
|
75
|
+
return new _evm.default(sendMessage, version);
|
|
76
|
+
}
|
|
77
|
+
function initCardanoProvider() {
|
|
78
|
+
return new _cardano.default(sendMessage);
|
|
74
79
|
}
|
|
@@ -21,6 +21,7 @@ var _constants2 = require("@subwallet/extension-base/services/chain-service/cons
|
|
|
21
21
|
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
22
22
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
23
23
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
24
|
+
var _rxjs = require("rxjs");
|
|
24
25
|
var _evm = require("../evm");
|
|
25
26
|
var _equilibrium = require("./equilibrium");
|
|
26
27
|
var _gear = require("./gear");
|
|
@@ -337,7 +338,19 @@ const subscribeTokensAccountsPallet = async _ref6 => {
|
|
|
337
338
|
const tokensAccountsKey = 'query_tokens_accounts';
|
|
338
339
|
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
339
340
|
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, tokenTypes);
|
|
341
|
+
|
|
342
|
+
// Hotfix balance for gdot
|
|
343
|
+
const getGdotBalance = async () => {
|
|
344
|
+
const gdotBalances = await queryGdotBalance(substrateApi, addresses, assetMap[gdotSlug], extrinsicType);
|
|
345
|
+
callback(gdotBalances);
|
|
346
|
+
};
|
|
340
347
|
const unsubList = await Promise.all(Object.values(tokenMap).map(tokenInfo => {
|
|
348
|
+
// Hotfix balance for gdot
|
|
349
|
+
if (tokenInfo.slug === gdotSlug) {
|
|
350
|
+
return (0, _rxjs.timer)(0, _constants.CRON_REFRESH_PRICE_INTERVAL).subscribe(() => {
|
|
351
|
+
getGdotBalance().catch(console.error);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
341
354
|
try {
|
|
342
355
|
const params = [{
|
|
343
356
|
section: 'query',
|
|
@@ -547,4 +560,23 @@ const subscribeSubnetAlphaPallet = async _ref9 => {
|
|
|
547
560
|
cancel = true;
|
|
548
561
|
clearInterval(interval);
|
|
549
562
|
};
|
|
550
|
-
};
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
// Hot fix for gdot balance
|
|
566
|
+
|
|
567
|
+
const gdotSlug = 'hydradx_main-LOCAL-GDOT';
|
|
568
|
+
async function queryGdotBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
|
|
569
|
+
return await Promise.all(addresses.map(async address => {
|
|
570
|
+
const _balanceInfo = await substrateApi.api.call.currenciesApi.account((0, _utils2._getTokenOnChainAssetId)(tokenInfo), address);
|
|
571
|
+
const balanceInfo = _balanceInfo.toPrimitive();
|
|
572
|
+
const transferableBalance = (0, _tokensPallet._getTokensPalletTransferable)(balanceInfo, (0, _utils2._getAssetExistentialDeposit)(tokenInfo), extrinsicType);
|
|
573
|
+
const totalLockedFromTransfer = (0, _tokensPallet._getTokensPalletLocked)(balanceInfo);
|
|
574
|
+
return {
|
|
575
|
+
address,
|
|
576
|
+
tokenSlug: tokenInfo.slug,
|
|
577
|
+
state: _KoniTypes.APIItemState.READY,
|
|
578
|
+
free: transferableBalance.toString(),
|
|
579
|
+
locked: totalLockedFromTransfer.toString()
|
|
580
|
+
};
|
|
581
|
+
}));
|
|
582
|
+
}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.SpokePoolMapping = void 0;
|
|
7
|
+
exports.SpokePoolMapping = exports.AcrossErrorMsg = void 0;
|
|
8
8
|
exports._isAcrossChainBridge = _isAcrossChainBridge;
|
|
9
9
|
exports._isAcrossTestnetBridge = _isAcrossTestnetBridge;
|
|
10
10
|
exports.getAcrossQuote = void 0;
|
|
@@ -196,6 +196,11 @@ const SpokePoolMapping = {
|
|
|
196
196
|
}
|
|
197
197
|
};
|
|
198
198
|
exports.SpokePoolMapping = SpokePoolMapping;
|
|
199
|
+
const AcrossErrorMsg = {
|
|
200
|
+
AMOUNT_TOO_LOW: 'amount too low',
|
|
201
|
+
AMOUNT_TOO_HIGH: 'amount too high'
|
|
202
|
+
};
|
|
203
|
+
exports.AcrossErrorMsg = AcrossErrorMsg;
|
|
199
204
|
// Calculate fee for across bridge transfer
|
|
200
205
|
const getAcrossQuote = async _ref => {
|
|
201
206
|
let {
|
|
@@ -208,7 +213,6 @@ const getAcrossQuote = async _ref => {
|
|
|
208
213
|
sendingValue
|
|
209
214
|
} = _ref;
|
|
210
215
|
const isAcrossBridgeXcm = (0, _xcmParser._isAcrossBridgeXcm)(originChain, destinationChain);
|
|
211
|
-
console.log('sendingValue', sendingValue);
|
|
212
216
|
if (!isAcrossBridgeXcm) {
|
|
213
217
|
throw new Error('This is not a valid AcrossBridge transfer');
|
|
214
218
|
}
|
|
@@ -202,6 +202,8 @@ const createAcrossBridgeExtrinsic = async _ref6 => {
|
|
|
202
202
|
const data = await ((_subwalletApiSdk$xcmA = _subwalletApiSdk.default.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
|
|
203
203
|
const _feeCustom = feeCustom;
|
|
204
204
|
const feeCombine = (0, _utils3.combineEthFee)(feeInfo, feeOption, _feeCustom);
|
|
205
|
+
|
|
206
|
+
// todo: validate data before sending
|
|
205
207
|
const transactionConfig = {
|
|
206
208
|
from: data === null || data === void 0 ? void 0 : data.sender,
|
|
207
209
|
to: data === null || data === void 0 ? void 0 : data.to,
|
|
@@ -129,6 +129,39 @@ class CardanoApi {
|
|
|
129
129
|
return [];
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
+
async getUtxos(address, page, limit) {
|
|
133
|
+
try {
|
|
134
|
+
let url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/addresses/${address}/utxos` : `https://cardano-mainnet.blockfrost.io/api/v0/addresses/${address}/utxos`;
|
|
135
|
+
url += `?page=${page}&count=${limit}`;
|
|
136
|
+
const response = await fetch(url, {
|
|
137
|
+
method: 'GET',
|
|
138
|
+
headers: {
|
|
139
|
+
Project_id: this.projectId
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
const utxos = await response.json();
|
|
143
|
+
return utxos;
|
|
144
|
+
} catch (e) {
|
|
145
|
+
console.error('Error on getting account balance', e);
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async getSpecificUtxo(txHash) {
|
|
150
|
+
try {
|
|
151
|
+
const url = this.isTestnet ? `https://cardano-preprod.blockfrost.io/api/v0/txs/${txHash}/utxos` : `https://cardano-mainnet.blockfrost.io/api/v0/txs/${txHash}/utxos`;
|
|
152
|
+
const response = await fetch(url, {
|
|
153
|
+
method: 'GET',
|
|
154
|
+
headers: {
|
|
155
|
+
Project_id: this.projectId
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
const utxo = await response.json();
|
|
159
|
+
return utxo;
|
|
160
|
+
} catch (e) {
|
|
161
|
+
console.error('Error on getting account balance', e);
|
|
162
|
+
return {};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
132
165
|
async sendCardanoTxReturnHash(tx) {
|
|
133
166
|
try {
|
|
134
167
|
const url = this.isTestnet ? 'https://cardano-preprod.blockfrost.io/api/v0/tx/submit' : 'https://cardano-mainnet.blockfrost.io/api/v0/tx/submit';
|
|
@@ -17,10 +17,12 @@ var _types2 = require("@subwallet/extension-base/services/chain-service/handler/
|
|
|
17
17
|
var _types3 = require("@subwallet/extension-base/services/chain-service/types");
|
|
18
18
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
19
19
|
var _scripts = require("@subwallet/extension-base/services/migration-service/scripts");
|
|
20
|
+
var _helper = require("@subwallet/extension-base/services/request-service/helper");
|
|
20
21
|
var _AssetSetting = _interopRequireDefault(require("@subwallet/extension-base/stores/AssetSetting"));
|
|
21
22
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
22
23
|
var _rxjs = require("rxjs");
|
|
23
24
|
var _web = _interopRequireDefault(require("web3"));
|
|
25
|
+
var _util = require("@polkadot/util");
|
|
24
26
|
var _logger = require("@polkadot/util/logger");
|
|
25
27
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
26
28
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -171,6 +173,35 @@ class ChainService {
|
|
|
171
173
|
getCardanoApi(slug) {
|
|
172
174
|
return this.cardanoChainHandler.getCardanoApiByChain(slug);
|
|
173
175
|
}
|
|
176
|
+
async getUtxosByAddress(address, slug, paginate) {
|
|
177
|
+
const cardanoApi = this.getCardanoApi(slug);
|
|
178
|
+
const isTestnet = slug === 'cardano_preproduction';
|
|
179
|
+
const formattedAddress = isTestnet ? (0, _utils2.reformatAddress)(address, 0) : address;
|
|
180
|
+
const limit = (paginate === null || paginate === void 0 ? void 0 : paginate.limit) || 100;
|
|
181
|
+
const utxos = [];
|
|
182
|
+
let needStop = false;
|
|
183
|
+
let page = ((paginate === null || paginate === void 0 ? void 0 : paginate.page) || 0) + 1;
|
|
184
|
+
while (!needStop) {
|
|
185
|
+
const utxoRaw = await cardanoApi.getUtxos(formattedAddress, page, limit);
|
|
186
|
+
if (utxoRaw.length === 0 || !(0, _util.isArray)(utxoRaw)) {
|
|
187
|
+
needStop = true;
|
|
188
|
+
} else {
|
|
189
|
+
utxos.push(...utxoRaw);
|
|
190
|
+
page++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return (0, _helper.convertUtxoRawToUtxo)(utxos);
|
|
194
|
+
}
|
|
195
|
+
getSpecificUtxo(slug) {
|
|
196
|
+
const cardanoApi = this.getCardanoApi(slug);
|
|
197
|
+
return async (txHash, txId) => {
|
|
198
|
+
const utxoRaw = await cardanoApi.getSpecificUtxo(txHash);
|
|
199
|
+
if (!(utxoRaw !== null && utxoRaw !== void 0 && utxoRaw.outputs)) {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
return utxoRaw.outputs[txId];
|
|
203
|
+
};
|
|
204
|
+
}
|
|
174
205
|
getCardanoApiMap() {
|
|
175
206
|
return this.cardanoChainHandler.getCardanoApiMap();
|
|
176
207
|
}
|
|
@@ -11,7 +11,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
|
11
11
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
12
12
|
const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
|
|
13
13
|
const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
|
|
14
|
-
const ChainListVersion = '0.2.
|
|
14
|
+
const ChainListVersion = '0.2.104'; // update this when build chainlist
|
|
15
15
|
|
|
16
16
|
// todo: move this interface to chainlist
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ const getStellaswapLiquidStakingContract = function (networkKey, assetAddress, e
|
|
|
25
25
|
return new evmApi.api.eth.Contract(_constants.ST_LIQUID_TOKEN_ABI, assetAddress, options);
|
|
26
26
|
};
|
|
27
27
|
exports.getStellaswapLiquidStakingContract = getStellaswapLiquidStakingContract;
|
|
28
|
-
const APR_STATS_URL = 'https://apr
|
|
28
|
+
const APR_STATS_URL = 'https://stdot-apr.stellaswap.com/';
|
|
29
29
|
const SUBWALLET_REFERRAL = '0x7e6815f45E624768548d085231f2d453f16FD7DD';
|
|
30
30
|
const TOP_HOLDER = '0x4300e09284e3bB4d9044DdAB31EfAF5f3301DABa';
|
|
31
31
|
class StellaSwapLiquidStakingPoolHandler extends _base.default {
|
|
@@ -95,7 +95,7 @@ class StellaSwapLiquidStakingPoolHandler extends _base.default {
|
|
|
95
95
|
statistic: {
|
|
96
96
|
assetEarning: [{
|
|
97
97
|
slug: this.rewardAssets[0],
|
|
98
|
-
apr: aprObject.
|
|
98
|
+
apr: aprObject.stDOTAPR,
|
|
99
99
|
exchangeRate: exchangeRate
|
|
100
100
|
}],
|
|
101
101
|
unstakingPeriod: 24 * 28,
|
|
@@ -106,7 +106,7 @@ class StellaSwapLiquidStakingPoolHandler extends _base.default {
|
|
|
106
106
|
defaultUnstake: '0',
|
|
107
107
|
fastUnstake: '0'
|
|
108
108
|
},
|
|
109
|
-
totalApr: aprObject.
|
|
109
|
+
totalApr: aprObject.stDOTAPR,
|
|
110
110
|
tvl: tvl.toString()
|
|
111
111
|
}
|
|
112
112
|
};
|
|
@@ -462,7 +462,7 @@ class SubnetTaoStakingPoolHandler extends _basePara.default {
|
|
|
462
462
|
const BNlimitPrice = new _bignumber.default(limitPrice.integerValue(_bignumber.default.ROUND_CEIL).toFixed());
|
|
463
463
|
const selectedValidatorInfo = targetValidators[0];
|
|
464
464
|
const hotkey = selectedValidatorInfo.address;
|
|
465
|
-
const extrinsic = chainApi.api.tx.subtensorModule.addStakeLimit(hotkey, netuid, binaryAmount, BNlimitPrice, false);
|
|
465
|
+
const extrinsic = chainApi.api.tx.subtensorModule.addStakeLimit(hotkey, netuid, binaryAmount.toFixed(), BNlimitPrice.toFixed(), false);
|
|
466
466
|
return [extrinsic, {
|
|
467
467
|
slug: this.nativeToken.slug,
|
|
468
468
|
amount: '0'
|
|
@@ -495,7 +495,7 @@ class SubnetTaoStakingPoolHandler extends _basePara.default {
|
|
|
495
495
|
const alphaToTaoPrice = new _bignumber.default(await getAlphaToTaoRate(this.substrateApi, netuid || 0));
|
|
496
496
|
const limitPrice = alphaToTaoPrice.multipliedBy(10 ** (0, _utils2._getAssetDecimals)(this.nativeToken)).multipliedBy(1 - (slippage || DEFAULT_BITTENSOR_SLIPPAGE));
|
|
497
497
|
const BNlimitPrice = new _bignumber.default(limitPrice.integerValue(_bignumber.default.ROUND_CEIL).toFixed());
|
|
498
|
-
const extrinsic = apiPromise.api.tx.subtensorModule.removeStakeLimit(selectedTarget, netuid, binaryAmount, BNlimitPrice, false);
|
|
498
|
+
const extrinsic = apiPromise.api.tx.subtensorModule.removeStakeLimit(selectedTarget, netuid, binaryAmount.toFixed(), BNlimitPrice.toFixed(), false);
|
|
499
499
|
return [_KoniTypes.ExtrinsicType.STAKING_UNBOND, extrinsic];
|
|
500
500
|
}
|
|
501
501
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget, slug, poolInfo) {
|
|
@@ -12,9 +12,24 @@ var _constants = require("@subwallet/extension-base/services/chain-service/const
|
|
|
12
12
|
var _basePara = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/handlers/native-staking/base-para"));
|
|
13
13
|
var _types = require("@subwallet/extension-base/types");
|
|
14
14
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
15
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
16
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
18
|
|
|
19
|
+
const FIXED_DAY_REWARD = '123287670000000000000000';
|
|
20
|
+
const COMMISSION = 0.1;
|
|
21
|
+
const DAYS_PER_YEAR = 365;
|
|
22
|
+
function calculateCollatorApy(numberOfCollators, totalStakeStr) {
|
|
23
|
+
const totalStake = new _bignumber.default(totalStakeStr);
|
|
24
|
+
const collatorRewardPerDay = new _bignumber.default(FIXED_DAY_REWARD).div(numberOfCollators);
|
|
25
|
+
const dayRate = collatorRewardPerDay.div(totalStake);
|
|
26
|
+
const finalTokens = totalStake.multipliedBy(dayRate.multipliedBy(DAYS_PER_YEAR).plus(1));
|
|
27
|
+
const yearReward = finalTokens.minus(totalStake).multipliedBy(1 - COMMISSION);
|
|
28
|
+
return yearReward.div(totalStake).multipliedBy(100).toNumber();
|
|
29
|
+
}
|
|
30
|
+
function calculateNetworkApy(totalStake) {
|
|
31
|
+
return new _bignumber.default(FIXED_DAY_REWARD).multipliedBy(DAYS_PER_YEAR).multipliedBy(1 - COMMISSION).div(totalStake).multipliedBy(100).toNumber();
|
|
32
|
+
}
|
|
18
33
|
class MythosNativeStakingPoolHandler extends _basePara.default {
|
|
19
34
|
availableMethod = {
|
|
20
35
|
join: true,
|
|
@@ -63,7 +78,12 @@ class MythosNativeStakingPoolHandler extends _basePara.default {
|
|
|
63
78
|
const sessionTime = _constants._STAKING_ERA_LENGTH_MAP[this.chain] || _constants._STAKING_ERA_LENGTH_MAP.default; // in hours
|
|
64
79
|
const blockTime = _constants._EXPECTED_BLOCK_TIME[this.chain];
|
|
65
80
|
const unstakingPeriod = parseInt(unstakeDelay) * blockTime / 60 / 60;
|
|
66
|
-
const _minStake = await substrateApi.api.query.collatorStaking.minStake();
|
|
81
|
+
const [_minStake, _candidates] = await Promise.all([substrateApi.api.query.collatorStaking.minStake(), substrateApi.api.query.collatorStaking.candidates.entries()]);
|
|
82
|
+
const bnTotalChainStake = _candidates.reduce((total, _candidate) => {
|
|
83
|
+
const collatorInfo = _candidate[1].toPrimitive();
|
|
84
|
+
const collatorTotalStake = new _bignumber.default(collatorInfo.stake);
|
|
85
|
+
return total.plus(collatorTotalStake);
|
|
86
|
+
}, new _bignumber.default(0));
|
|
67
87
|
const minStake = _minStake.toString();
|
|
68
88
|
const minStakeToHuman = (0, _utils2.formatNumber)(minStake, nativeToken.decimals || 0, _utils2.balanceFormatter);
|
|
69
89
|
const data = {
|
|
@@ -87,7 +107,7 @@ class MythosNativeStakingPoolHandler extends _basePara.default {
|
|
|
87
107
|
era: parseInt(currentSession),
|
|
88
108
|
eraTime: sessionTime,
|
|
89
109
|
unstakingPeriod: unstakingPeriod,
|
|
90
|
-
totalApy:
|
|
110
|
+
totalApy: calculateNetworkApy(bnTotalChainStake)
|
|
91
111
|
// tvl: totalStake.toString(),
|
|
92
112
|
// inflation
|
|
93
113
|
},
|
|
@@ -215,27 +235,41 @@ class MythosNativeStakingPoolHandler extends _basePara.default {
|
|
|
215
235
|
|
|
216
236
|
async getPoolTargets() {
|
|
217
237
|
const substrateApi = await this.substrateApi.isReady;
|
|
218
|
-
const [_allCollators, _minStake, _commission] = await Promise.all([substrateApi.api.query.collatorStaking.candidates.entries(), substrateApi.api.query.collatorStaking.minStake(), substrateApi.api.query.collatorStaking.collatorRewardPercentage()]);
|
|
238
|
+
const [_allCollators, _minStake, _commission, _desiredCandidates] = await Promise.all([substrateApi.api.query.collatorStaking.candidates.entries(), substrateApi.api.query.collatorStaking.minStake(), substrateApi.api.query.collatorStaking.collatorRewardPercentage(), substrateApi.api.query.collatorStaking.desiredCandidates()]);
|
|
219
239
|
const maxStakersPerCollator = substrateApi.api.consts.collatorStaking.maxStakers.toPrimitive();
|
|
220
|
-
|
|
240
|
+
const numberOfRewardCollators = parseInt(_desiredCandidates.toString());
|
|
241
|
+
const numberOfCollators = _allCollators.length;
|
|
242
|
+
const allTargets = _allCollators.map(_collator => {
|
|
221
243
|
const _collatorAddress = _collator[0].toHuman();
|
|
222
244
|
const collatorAddress = _collatorAddress[0];
|
|
223
245
|
const collatorInfo = _collator[1].toPrimitive();
|
|
224
|
-
const
|
|
246
|
+
const totalStake = collatorInfo.stake;
|
|
225
247
|
const numOfStakers = parseInt(collatorInfo.stakers);
|
|
226
248
|
const isCrowded = numOfStakers >= maxStakersPerCollator;
|
|
227
249
|
return {
|
|
228
250
|
address: collatorAddress,
|
|
229
251
|
chain: this.chain,
|
|
230
|
-
totalStake:
|
|
252
|
+
totalStake: totalStake,
|
|
231
253
|
ownStake: '0',
|
|
232
|
-
otherStake:
|
|
254
|
+
otherStake: totalStake,
|
|
233
255
|
minBond: _minStake.toPrimitive(),
|
|
234
256
|
nominatorCount: numOfStakers,
|
|
235
257
|
commission: (0, _utils.getCommission)(_commission.toString()),
|
|
236
258
|
blocked: false,
|
|
237
259
|
isVerified: false,
|
|
238
|
-
isCrowded
|
|
260
|
+
isCrowded,
|
|
261
|
+
expectedReturn: calculateCollatorApy(numberOfCollators, totalStake)
|
|
262
|
+
};
|
|
263
|
+
});
|
|
264
|
+
const sortTargetsByStake = allTargets.sort((a, b) => (0, _bignumber.default)(b.totalStake).minus((0, _bignumber.default)(a.totalStake)).toNumber());
|
|
265
|
+
return sortTargetsByStake.map((target, rank) => {
|
|
266
|
+
let expectedReturn = target.expectedReturn;
|
|
267
|
+
if (rank >= numberOfRewardCollators) {
|
|
268
|
+
expectedReturn = 0.000000000000001;
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
...target,
|
|
272
|
+
expectedReturn
|
|
239
273
|
};
|
|
240
274
|
});
|
|
241
275
|
}
|
|
@@ -82,7 +82,7 @@ class RelayNativeStakingPoolHandler extends _base.default {
|
|
|
82
82
|
const bnTotalEraStake = new _util.BN(rawTotalEraStake);
|
|
83
83
|
const bnTotalIssuance = new _util.BN(rawTotalIssuance);
|
|
84
84
|
const inflation = (0, _utils.calculateInflation)(bnTotalEraStake, bnTotalIssuance, numAuctions, chainInfo.slug);
|
|
85
|
-
const expectedReturn = (0, _utils.calculateChainStakedReturnV2)(chainInfo, rawTotalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, new _bignumber.default(inflation), true);
|
|
85
|
+
const expectedReturn = await (0, _utils.calculateChainStakedReturnV2)(chainInfo, rawTotalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, new _bignumber.default(inflation), true);
|
|
86
86
|
const eraTime = _constants._STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _constants._STAKING_ERA_LENGTH_MAP.default; // in hours
|
|
87
87
|
const unlockingPeriod = parseInt(unlockingEras) * eraTime; // in hours
|
|
88
88
|
const farmerCount = _counterForNominators.toPrimitive();
|
|
@@ -175,8 +175,8 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
175
175
|
/* Unimplemented function */
|
|
176
176
|
|
|
177
177
|
get maintainBalance() {
|
|
178
|
-
const ed = new
|
|
179
|
-
const calculateMaintainBalance = new
|
|
178
|
+
const ed = new _bignumber.default(this.nativeToken.minAmount || '0');
|
|
179
|
+
const calculateMaintainBalance = new _bignumber.default(15).multipliedBy(ed).dividedBy(10);
|
|
180
180
|
const maintainBalance = calculateMaintainBalance;
|
|
181
181
|
return maintainBalance.toString();
|
|
182
182
|
}
|
|
@@ -202,7 +202,7 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
202
202
|
highestApr = validators[i];
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
const bnTaoIn = new
|
|
205
|
+
const bnTaoIn = new _bignumber.default(taoIn);
|
|
206
206
|
const BNminDelegatorStake = new _bignumber.default(minDelegatorStake.toString());
|
|
207
207
|
const apr = this.chain === 'bittensor' ? Number(highestApr.apr) * 100 : 0;
|
|
208
208
|
const data = {
|
|
@@ -430,7 +430,7 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
430
430
|
const testnetDelegate = (await this.substrateApi.api.call.delegateInfoRuntimeApi.getDelegates()).toJSON();
|
|
431
431
|
const getNominatorMinRequiredStake = this.substrateApi.api.query.subtensorModule.nominatorMinRequiredStake();
|
|
432
432
|
const nominatorMinRequiredStake = (await getNominatorMinRequiredStake).toString();
|
|
433
|
-
const bnMinBond = new
|
|
433
|
+
const bnMinBond = new _bignumber.default(nominatorMinRequiredStake);
|
|
434
434
|
return testnetDelegate.map(delegate => ({
|
|
435
435
|
address: delegate.delegateSs58,
|
|
436
436
|
totalStake: '0',
|
|
@@ -450,14 +450,14 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
450
450
|
const topValidator = _topValidator;
|
|
451
451
|
const getNominatorMinRequiredStake = this.substrateApi.api.query.subtensorModule.nominatorMinRequiredStake();
|
|
452
452
|
const nominatorMinRequiredStake = (await getNominatorMinRequiredStake).toString();
|
|
453
|
-
const bnMinBond = new
|
|
453
|
+
const bnMinBond = new _bignumber.default(nominatorMinRequiredStake);
|
|
454
454
|
const validatorList = topValidator.data;
|
|
455
455
|
const validatorAddresses = Object.keys(validatorList);
|
|
456
456
|
const results = await Promise.all(validatorAddresses.map(i => {
|
|
457
457
|
const address = validatorList[i].hotkey.ss58;
|
|
458
|
-
const bnTotalStake = new
|
|
459
|
-
const bnOwnStake = new
|
|
460
|
-
const otherStake = bnTotalStake.
|
|
458
|
+
const bnTotalStake = new _bignumber.default(validatorList[i].stake);
|
|
459
|
+
const bnOwnStake = new _bignumber.default(validatorList[i].validator_stake);
|
|
460
|
+
const otherStake = bnTotalStake.minus(bnOwnStake);
|
|
461
461
|
const nominatorCount = validatorList[i].nominators;
|
|
462
462
|
const commission = validatorList[i].take;
|
|
463
463
|
const roundedCommission = (parseFloat(commission) * 100).toFixed(0);
|
|
@@ -501,10 +501,10 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
501
501
|
selectedValidators: targetValidators
|
|
502
502
|
} = data;
|
|
503
503
|
const chainApi = await this.substrateApi.isReady;
|
|
504
|
-
const binaryAmount = new
|
|
504
|
+
const binaryAmount = new _bignumber.default(amount);
|
|
505
505
|
const selectedValidatorInfo = targetValidators[0];
|
|
506
506
|
const hotkey = selectedValidatorInfo.address;
|
|
507
|
-
const extrinsic = chainApi.api.tx.subtensorModule.addStake(hotkey, 0, binaryAmount);
|
|
507
|
+
const extrinsic = chainApi.api.tx.subtensorModule.addStake(hotkey, 0, binaryAmount.toFixed());
|
|
508
508
|
return [extrinsic, {
|
|
509
509
|
slug: this.nativeToken.slug,
|
|
510
510
|
amount: '0'
|
|
@@ -518,7 +518,7 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
518
518
|
const {
|
|
519
519
|
amount
|
|
520
520
|
} = data;
|
|
521
|
-
if (new
|
|
521
|
+
if (new _bignumber.default(amount).lt(new _bignumber.default(_dtao.DEFAULT_DTAO_MINBOND))) {
|
|
522
522
|
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)(`Insufficient stake. You need to stake at least ${(0, _utils3.formatNumber)(_dtao.DEFAULT_DTAO_MINBOND, (0, _utils2._getAssetDecimals)(this.nativeToken))} ${(0, _utils2._getAssetSymbol)(this.nativeToken)} to earn rewards`))];
|
|
523
523
|
}
|
|
524
524
|
return baseErrors;
|
|
@@ -530,12 +530,12 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
530
530
|
|
|
531
531
|
async handleYieldUnstake(amount, address, selectedTarget) {
|
|
532
532
|
const apiPromise = await this.substrateApi.isReady;
|
|
533
|
-
const binaryAmount = new
|
|
533
|
+
const binaryAmount = new _bignumber.default(amount);
|
|
534
534
|
const poolPosition = await this.getPoolPosition(address);
|
|
535
535
|
if (!selectedTarget || !poolPosition) {
|
|
536
536
|
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS));
|
|
537
537
|
}
|
|
538
|
-
const extrinsic = apiPromise.api.tx.subtensorModule.removeStake(selectedTarget, 0, binaryAmount);
|
|
538
|
+
const extrinsic = apiPromise.api.tx.subtensorModule.removeStake(selectedTarget, 0, binaryAmount.toFixed());
|
|
539
539
|
return [_KoniTypes.ExtrinsicType.STAKING_UNBOND, extrinsic];
|
|
540
540
|
}
|
|
541
541
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget, slug, poolInfo) {
|
|
@@ -103,7 +103,7 @@ class NominationPoolHandler extends _base.default {
|
|
|
103
103
|
const bnTotalIssuance = new _util.BN(rawTotalIssuance);
|
|
104
104
|
const inflation = (0, _utils.calculateInflation)(bnTotalEraStake, bnTotalIssuance, numAuctions, chainInfo.slug);
|
|
105
105
|
const minPoolJoin = (_minPoolJoin === null || _minPoolJoin === void 0 ? void 0 : _minPoolJoin.toString()) || undefined;
|
|
106
|
-
const expectedReturn = (0, _utils.calculateChainStakedReturnV2)(chainInfo, rawTotalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, new _bignumber.default(inflation), true);
|
|
106
|
+
const expectedReturn = await (0, _utils.calculateChainStakedReturnV2)(chainInfo, rawTotalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, new _bignumber.default(inflation), true);
|
|
107
107
|
const eraTime = _constants._STAKING_ERA_LENGTH_MAP[this.chain] || _constants._STAKING_ERA_LENGTH_MAP.default; // in hours
|
|
108
108
|
const unlockingPeriod = parseInt(unlockingEras) * eraTime; // in hours
|
|
109
109
|
|
|
@@ -18,7 +18,7 @@ class MigrateSettings extends _Base.default {
|
|
|
18
18
|
const key = 'app.stellaswap.com';
|
|
19
19
|
const stellaSwap = value[key];
|
|
20
20
|
if (stellaSwap) {
|
|
21
|
-
stellaSwap.
|
|
21
|
+
stellaSwap.currentNetworkMap.evm = 'moonbeam';
|
|
22
22
|
value[key] = stellaSwap;
|
|
23
23
|
this.state.setAuthorize(value, () => {
|
|
24
24
|
resolve();
|
|
@@ -12,7 +12,9 @@ exports.EXTENSION_REQUEST_URL = EXTENSION_REQUEST_URL;
|
|
|
12
12
|
const PREDEFINED_CHAIN_DAPP_CHAIN_MAP = {
|
|
13
13
|
'portal.astar.network': ['astar', 'astarEvm'],
|
|
14
14
|
'apps.moonbeam.network': ['moonbeam', 'moonriver'],
|
|
15
|
-
'app.stellaswap.com': ['moonbeam']
|
|
15
|
+
'app.stellaswap.com': ['moonbeam'],
|
|
16
|
+
'testnet-preprod.minswap.org': ['cardano_preproduction'],
|
|
17
|
+
'localhost:7777': ['cardano_preproduction']
|
|
16
18
|
};
|
|
17
19
|
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = PREDEFINED_CHAIN_DAPP_CHAIN_MAP;
|
|
18
20
|
const WEB_APP_URL = [
|