@subwallet/extension-base 1.0.1 → 1.0.2-1b
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 +25 -36
- package/background/KoniTypes.js +12 -7
- package/background/errors/TransactionError.js +21 -1
- package/cjs/background/KoniTypes.js +14 -8
- package/cjs/background/errors/TransactionError.js +20 -0
- package/cjs/constants/index.js +13 -28
- package/cjs/koni/api/dotsama/balance.js +60 -224
- package/cjs/koni/api/dotsama/transfer.js +30 -29
- package/cjs/koni/api/nft/acala_nft/index.js +4 -1
- package/cjs/koni/api/nft/bit.country/index.js +4 -1
- package/cjs/koni/api/nft/evm_nft/index.js +7 -3
- package/cjs/koni/api/nft/index.js +3 -6
- package/cjs/koni/api/nft/karura_nft/index.js +4 -1
- package/cjs/koni/api/nft/rmrk_nft/index.js +8 -1
- package/cjs/koni/api/nft/statemine_nft/index.js +4 -1
- package/cjs/koni/api/nft/unique_nft/index.js +6 -1
- package/cjs/koni/api/nft/wasm_nft/index.js +169 -111
- package/cjs/koni/api/nft/wasm_nft/utils.js +11 -7
- package/cjs/koni/api/staking/bonding/amplitude.js +18 -10
- package/cjs/koni/api/staking/bonding/astar.js +37 -238
- package/cjs/koni/api/staking/bonding/index.js +26 -14
- package/cjs/koni/api/staking/bonding/paraChain.js +100 -11
- package/cjs/koni/api/staking/bonding/relayChain.js +174 -16
- package/cjs/koni/api/staking/bonding/utils.js +55 -10
- package/cjs/koni/api/tokens/wasm/index.js +5 -4
- package/cjs/koni/api/tokens/wasm/utils.js +63 -0
- package/cjs/koni/api/xcm/index.js +0 -111
- package/cjs/koni/api/xcm/polkadotXcm.js +2 -2
- package/cjs/koni/api/xcm/utils.js +18 -13
- package/cjs/koni/api/xcm/xTokens.js +3 -5
- package/cjs/koni/api/xcm/xcmPallet.js +9 -6
- package/cjs/koni/background/cron.js +179 -77
- package/cjs/koni/background/handlers/Extension.js +231 -195
- package/cjs/koni/background/handlers/State.js +147 -111
- package/cjs/koni/background/handlers/Tabs.js +48 -39
- package/cjs/koni/background/subscription.js +64 -56
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/index.js +5 -0
- package/cjs/services/chain-service/constants.js +1 -11
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +13 -8
- package/cjs/services/chain-service/handler/light-client/index.js +2 -0
- package/cjs/services/chain-service/index.js +39 -6
- package/cjs/services/chain-service/utils.js +4 -0
- package/cjs/services/event-service/index.js +75 -0
- package/cjs/services/event-service/types.js +11 -0
- package/cjs/services/history-service/index.js +46 -21
- package/cjs/services/history-service/subsquid-multi-chain-history.js +19 -11
- package/cjs/services/keyring-service/index.js +101 -0
- package/cjs/services/migration-service/index.js +13 -10
- package/cjs/{koni/migration/scripts/RemoveWrongCrowdloan.js → services/migration-service/scripts/AutoEnableChainsTokens.js} +11 -6
- package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +39 -19
- package/cjs/services/migration-service/scripts/MigrateSettings.js +31 -0
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +72 -0
- package/cjs/services/migration-service/scripts/index.js +13 -4
- package/cjs/services/price-service/coingecko.js +15 -3
- package/cjs/services/price-service/index.js +15 -18
- package/cjs/services/request-service/constants.js +8 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +43 -12
- package/cjs/services/request-service/index.js +3 -0
- package/cjs/services/storage-service/DatabaseService.js +53 -34
- package/cjs/services/storage-service/databases/index.js +1 -1
- package/cjs/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
- package/cjs/services/storage-service/db-stores/Nft.js +8 -18
- package/cjs/services/storage-service/db-stores/Transaction.js +10 -7
- package/cjs/services/subscan-service/index.js +107 -0
- package/cjs/services/subscan-service/subscan-chain-map.js +74 -0
- package/cjs/services/subscan-service/types.js +1 -0
- package/cjs/services/transaction-service/event-parser/index.js +20 -48
- package/cjs/services/transaction-service/index.js +66 -22
- package/cjs/services/transaction-service/utils.js +4 -6
- package/cjs/utils/address.js +9 -1
- package/cjs/utils/index.js +30 -26
- package/constants/index.d.ts +8 -13
- package/constants/index.js +8 -13
- package/koni/api/dotsama/balance.d.ts +0 -1
- package/koni/api/dotsama/balance.js +33 -197
- package/koni/api/dotsama/transfer.js +5 -4
- package/koni/api/nft/acala_nft/index.js +3 -1
- package/koni/api/nft/bit.country/index.js +3 -1
- package/koni/api/nft/evm_nft/index.js +6 -3
- package/koni/api/nft/index.d.ts +1 -2
- package/koni/api/nft/index.js +3 -6
- package/koni/api/nft/karura_nft/index.js +3 -1
- package/koni/api/nft/nft.d.ts +1 -0
- package/koni/api/nft/rmrk_nft/index.js +8 -1
- package/koni/api/nft/statemine_nft/index.js +3 -1
- package/koni/api/nft/unique_nft/index.js +5 -1
- package/koni/api/nft/wasm_nft/index.d.ts +0 -2
- package/koni/api/nft/wasm_nft/index.js +167 -109
- package/koni/api/nft/wasm_nft/utils.d.ts +7 -5
- package/koni/api/nft/wasm_nft/utils.js +7 -5
- package/koni/api/staking/bonding/amplitude.d.ts +1 -2
- package/koni/api/staking/bonding/amplitude.js +22 -13
- package/koni/api/staking/bonding/astar.d.ts +2 -11
- package/koni/api/staking/bonding/astar.js +39 -231
- package/koni/api/staking/bonding/index.d.ts +5 -2
- package/koni/api/staking/bonding/index.js +27 -17
- package/koni/api/staking/bonding/paraChain.d.ts +4 -1
- package/koni/api/staking/bonding/paraChain.js +101 -14
- package/koni/api/staking/bonding/relayChain.d.ts +6 -2
- package/koni/api/staking/bonding/relayChain.js +172 -17
- package/koni/api/staking/bonding/utils.d.ts +15 -2
- package/koni/api/staking/bonding/utils.js +53 -11
- package/koni/api/tokens/wasm/index.js +5 -4
- package/koni/api/tokens/wasm/utils.d.ts +6 -0
- package/koni/api/tokens/wasm/utils.js +54 -0
- package/koni/api/xcm/index.js +1 -112
- package/koni/api/xcm/polkadotXcm.js +3 -3
- package/koni/api/xcm/utils.d.ts +5 -6
- package/koni/api/xcm/utils.js +15 -10
- package/koni/api/xcm/xTokens.js +5 -7
- package/koni/api/xcm/xcmPallet.js +10 -9
- package/koni/background/cron.d.ts +6 -1
- package/koni/background/cron.js +179 -76
- package/koni/background/handlers/Extension.d.ts +2 -2
- package/koni/background/handlers/Extension.js +161 -125
- package/koni/background/handlers/State.d.ts +21 -20
- package/koni/background/handlers/State.js +144 -111
- package/koni/background/handlers/Tabs.js +30 -20
- package/koni/background/subscription.d.ts +1 -1
- package/koni/background/subscription.js +64 -58
- package/package.json +63 -18
- package/packageInfo.js +1 -1
- package/page/index.d.ts +2 -0
- package/page/index.js +4 -0
- package/services/chain-service/constants.d.ts +0 -1
- package/services/chain-service/constants.js +0 -9
- package/services/chain-service/handler/SubstrateChainHandler.js +14 -9
- package/services/chain-service/handler/light-client/index.d.ts +17 -1
- package/services/chain-service/handler/light-client/index.js +1 -1
- package/services/chain-service/helper/psp22_abi.json +1041 -881
- package/services/chain-service/helper/psp34_abi.json +2963 -1807
- package/services/chain-service/index.d.ts +6 -4
- package/services/chain-service/index.js +40 -9
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +3 -0
- package/services/event-service/index.d.ts +22 -0
- package/services/event-service/index.js +63 -0
- package/services/event-service/types.d.ts +28 -0
- package/services/event-service/types.js +4 -0
- package/services/history-service/index.d.ts +5 -3
- package/services/history-service/index.js +46 -21
- package/services/history-service/subsquid-multi-chain-history.js +22 -13
- package/services/keyring-service/index.d.ts +19 -0
- package/services/keyring-service/index.js +93 -0
- package/services/migration-service/index.js +11 -9
- package/services/migration-service/scripts/AutoEnableChainsTokens.d.ts +4 -0
- package/services/migration-service/scripts/AutoEnableChainsTokens.js +13 -0
- package/services/migration-service/scripts/MigrateNetworkSettings.js +37 -18
- package/services/migration-service/scripts/MigrateSettings.d.ts +4 -0
- package/services/migration-service/scripts/MigrateSettings.js +23 -0
- package/services/migration-service/scripts/MigrateTransactionHistory.d.ts +4 -0
- package/services/migration-service/scripts/MigrateTransactionHistory.js +64 -0
- package/services/migration-service/scripts/index.d.ts +1 -0
- package/services/migration-service/scripts/index.js +10 -3
- package/services/price-service/coingecko.js +15 -3
- package/services/price-service/index.d.ts +5 -3
- package/services/price-service/index.js +15 -18
- package/services/request-service/constants.d.ts +1 -0
- package/services/request-service/constants.js +6 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +8 -1
- package/services/request-service/handler/AuthRequestHandler.js +44 -13
- package/services/request-service/index.d.ts +7 -1
- package/services/request-service/index.js +3 -0
- package/services/storage-service/DatabaseService.d.ts +1 -0
- package/services/storage-service/DatabaseService.js +53 -34
- package/services/storage-service/databases/index.js +1 -1
- package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.d.ts +1 -1
- package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
- package/services/storage-service/db-stores/Nft.d.ts +3 -3
- package/services/storage-service/db-stores/Nft.js +8 -17
- package/services/storage-service/db-stores/Transaction.js +10 -7
- package/services/subscan-service/index.d.ts +20 -0
- package/services/subscan-service/index.js +99 -0
- package/services/subscan-service/subscan-chain-map.d.ts +5 -0
- package/services/subscan-service/subscan-chain-map.js +63 -0
- package/services/subscan-service/types.d.ts +27 -0
- package/services/subscan-service/types.js +1 -0
- package/services/transaction-service/event-parser/index.d.ts +2 -2
- package/services/transaction-service/event-parser/index.js +21 -49
- package/services/transaction-service/index.d.ts +4 -2
- package/services/transaction-service/index.js +66 -22
- package/services/transaction-service/utils.js +5 -6
- package/utils/address.d.ts +1 -0
- package/utils/address.js +9 -2
- package/utils/index.d.ts +2 -1
- package/utils/index.js +26 -23
- package/cjs/background/errors/EvmRpcError.js +0 -21
- package/cjs/background/errors/SubWalletProviderError.js +0 -17
- package/cjs/constants/ethereum.js +0 -19
- package/cjs/errors/SubWalletProviderError.js +0 -17
- package/cjs/koni/api/xcm/astar.js +0 -160
- package/cjs/koni/api/xcm/moonbeamXcm.js +0 -80
- package/cjs/koni/api/xcm/statemintXcm.js +0 -197
- package/cjs/koni/api/xcm/substrateXcm.js +0 -213
- package/cjs/koni/migration/Base.js +0 -20
- package/cjs/koni/migration/index.js +0 -45
- package/cjs/koni/migration/scripts/ChangeRouteToHome.js +0 -22
- package/cjs/koni/migration/scripts/ClearOldStorage.js +0 -24
- package/cjs/koni/migration/scripts/RemoveWrongTransactionHistoriesFromStore.js +0 -36
- package/cjs/koni/migration/scripts/ResetTransactionHistoryEventIdx.js +0 -21
- package/cjs/koni/migration/scripts/index.js +0 -22
- package/cjs/koni/page/index.js +0 -16
- package/cjs/services/asset-service/index.js +0 -91
- package/cjs/services/storage-service/db-stores/ExtraDelegationInfo.js +0 -17
- package/cjs/stores/Balance.js +0 -18
- package/cjs/stores/Crowdloan.js +0 -18
- package/cjs/stores/CustomEvmToken.js +0 -18
- package/cjs/stores/NetworkMap.js +0 -18
- package/cjs/stores/Nft.js +0 -18
- package/cjs/stores/NftCollection.js +0 -18
- package/cjs/stores/Price.js +0 -18
- package/cjs/stores/Staking.js +0 -18
- package/cjs/stores/StakingReward.js +0 -18
- package/cjs/utils/eth/parseTransactionData.js +0 -284
- package/koni/page/index.d.ts +0 -2
- package/koni/page/index.js +0 -9
- /package/cjs/{koni/page → page}/SubWalleEvmProvider.js +0 -0
- /package/{koni/page → page}/SubWalleEvmProvider.d.ts +0 -0
- /package/{koni/page → page}/SubWalleEvmProvider.js +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
-
import {
|
|
4
|
+
import { StakingStatus, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
+
import { getStakingStatusByNominations } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
|
|
6
6
|
import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
7
|
-
import {
|
|
8
|
-
import { isUrl, parseNumberToDisplay, parseRawNumber } from '@subwallet/extension-base/utils';
|
|
7
|
+
import { isUrl, parseRawNumber } from '@subwallet/extension-base/utils';
|
|
9
8
|
import fetch from 'cross-fetch';
|
|
10
9
|
import { BN, BN_ZERO } from '@polkadot/util';
|
|
11
10
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
@@ -62,6 +61,7 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
62
61
|
const [_ledger, _era, _stakerInfo] = await Promise.all([chainApi.api.query.dappsStaking.ledger(address), chainApi.api.query.dappsStaking.currentEra(), chainApi.api.query.dappsStaking.generalStakerInfo.entries(address)]);
|
|
63
62
|
const ledger = _ledger.toPrimitive();
|
|
64
63
|
const currentEra = _era.toString();
|
|
64
|
+
const minDelegatorStake = chainApi.api.consts.dappsStaking.minimumStakingAmount.toString();
|
|
65
65
|
let bnTotalActiveStake = BN_ZERO;
|
|
66
66
|
if (_stakerInfo.length > 0) {
|
|
67
67
|
const dAppInfoMap = {};
|
|
@@ -78,11 +78,13 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
78
78
|
const currentStake = stakeList.slice(-1)[0].staked.toString() || '0';
|
|
79
79
|
const bnCurrentStake = new BN(currentStake);
|
|
80
80
|
if (bnCurrentStake.gt(BN_ZERO)) {
|
|
81
|
+
const dappStakingStatus = bnCurrentStake.gt(BN_ZERO) && bnCurrentStake.gte(new BN(minDelegatorStake)) ? StakingStatus.EARNING_REWARD : StakingStatus.NOT_EARNING;
|
|
81
82
|
bnTotalActiveStake = bnTotalActiveStake.add(bnCurrentStake);
|
|
82
83
|
const dappInfo = dAppInfoMap[dappAddress];
|
|
83
84
|
nominationList.push({
|
|
85
|
+
status: dappStakingStatus,
|
|
84
86
|
chain,
|
|
85
|
-
validatorAddress: dappAddress,
|
|
87
|
+
validatorAddress: dappAddress.toLowerCase(),
|
|
86
88
|
activeStake: currentStake,
|
|
87
89
|
validatorMinStake: '0',
|
|
88
90
|
validatorIdentity: dappInfo === null || dappInfo === void 0 ? void 0 : dappInfo.name,
|
|
@@ -109,13 +111,15 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
109
111
|
if (nominationList.length === 0 && unstakingList.length === 0) {
|
|
110
112
|
return;
|
|
111
113
|
}
|
|
114
|
+
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
112
115
|
return {
|
|
113
116
|
chain,
|
|
114
117
|
type: StakingType.NOMINATED,
|
|
115
118
|
address: address,
|
|
116
119
|
activeStake: bnTotalActiveStake.toString(),
|
|
117
120
|
nominations: nominationList,
|
|
118
|
-
unstakings: unstakingList
|
|
121
|
+
unstakings: unstakingList,
|
|
122
|
+
status: stakingStatus
|
|
119
123
|
};
|
|
120
124
|
}
|
|
121
125
|
export async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
@@ -137,21 +141,26 @@ export async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
|
137
141
|
const dappName = dapp.name;
|
|
138
142
|
const dappAddress = dapp.address;
|
|
139
143
|
const dappIcon = isUrl(dapp.iconUrl) ? dapp.iconUrl : undefined;
|
|
140
|
-
const
|
|
144
|
+
const contractParam = isEthereumAddress(dappAddress) ? {
|
|
141
145
|
Evm: dappAddress
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
|
|
146
|
+
} : {
|
|
147
|
+
Wasm: dappAddress
|
|
148
|
+
};
|
|
149
|
+
const _contractInfo = await chainApi.api.query.dappsStaking.contractEraStake(contractParam, era);
|
|
150
|
+
const contractInfo = _contractInfo.toPrimitive();
|
|
151
|
+
let totalStake = '0';
|
|
145
152
|
let stakerCount = 0;
|
|
146
153
|
if (contractInfo !== null) {
|
|
147
|
-
|
|
148
|
-
|
|
154
|
+
var _contractInfo$total;
|
|
155
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
156
|
+
totalStake = contractInfo === null || contractInfo === void 0 ? void 0 : (_contractInfo$total = contractInfo.total) === null || _contractInfo$total === void 0 ? void 0 : _contractInfo$total.toString();
|
|
157
|
+
stakerCount = contractInfo.numberOfStakers;
|
|
149
158
|
}
|
|
150
159
|
allDappsInfo.push({
|
|
151
160
|
commission: 0,
|
|
152
161
|
expectedReturn: 0,
|
|
153
|
-
address: dappAddress,
|
|
154
|
-
totalStake: totalStake
|
|
162
|
+
address: dappAddress.toLowerCase(),
|
|
163
|
+
totalStake: totalStake,
|
|
155
164
|
ownStake: '0',
|
|
156
165
|
otherStake: totalStake.toString(),
|
|
157
166
|
nominatorCount: stakerCount,
|
|
@@ -166,172 +175,31 @@ export async function getAstarDappsInfo(networkKey, substrateApi) {
|
|
|
166
175
|
}));
|
|
167
176
|
return allDappsInfo;
|
|
168
177
|
}
|
|
169
|
-
export async function getAstarBondingTxInfo(chainInfo, substrateApi, stakerAddress, amount, dappInfo) {
|
|
170
|
-
const apiPromise = await substrateApi.isReady;
|
|
171
|
-
const {
|
|
172
|
-
decimals
|
|
173
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
174
|
-
const parsedAmount = amount * 10 ** decimals;
|
|
175
|
-
const binaryAmount = new BN(parsedAmount.toString());
|
|
176
|
-
const extrinsic = apiPromise.api.tx.dappsStaking.bondAndStake({
|
|
177
|
-
Evm: dappInfo.address
|
|
178
|
-
}, binaryAmount);
|
|
179
|
-
return extrinsic.paymentInfo(stakerAddress);
|
|
180
|
-
}
|
|
181
|
-
export async function handleAstarBondingTxInfo(chainInfo, amount, networkKey, stakerAddress, dappInfo, substrateApiMap, evmApiMap) {
|
|
182
|
-
const {
|
|
183
|
-
decimals,
|
|
184
|
-
symbol
|
|
185
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
186
|
-
try {
|
|
187
|
-
const [txInfo, balance] = await Promise.all([getAstarBondingTxInfo(chainInfo, substrateApiMap[networkKey], stakerAddress, amount, dappInfo), getFreeBalance(networkKey, stakerAddress, substrateApiMap, evmApiMap)]);
|
|
188
|
-
const feeString = parseNumberToDisplay(txInfo.partialFee, decimals) + ` ${symbol}`;
|
|
189
|
-
const rawFee = parseRawNumber(txInfo.partialFee.toString());
|
|
190
|
-
const binaryBalance = new BN(balance);
|
|
191
|
-
const sumAmount = txInfo.partialFee.addn(amount);
|
|
192
|
-
const balanceError = sumAmount.gt(binaryBalance);
|
|
193
|
-
return {
|
|
194
|
-
rawFee,
|
|
195
|
-
fee: feeString,
|
|
196
|
-
balanceError
|
|
197
|
-
};
|
|
198
|
-
} catch (e) {
|
|
199
|
-
return {
|
|
200
|
-
fee: `0.0000 ${symbol}`,
|
|
201
|
-
balanceError: false
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
178
|
export async function getAstarBondingExtrinsic(substrateApi, amount, dappInfo) {
|
|
206
179
|
const chainApi = await substrateApi.isReady;
|
|
207
180
|
const binaryAmount = new BN(amount);
|
|
208
|
-
|
|
181
|
+
const dappParam = isEthereumAddress(dappInfo.address) ? {
|
|
209
182
|
Evm: dappInfo.address
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
const {
|
|
215
|
-
decimals
|
|
216
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
217
|
-
const parsedAmount = amount * 10 ** decimals;
|
|
218
|
-
const binaryAmount = new BN(parsedAmount.toString());
|
|
219
|
-
const extrinsic = apiPromise.api.tx.dappsStaking.unbondAndUnstake({
|
|
220
|
-
Evm: dappAddress
|
|
221
|
-
}, binaryAmount);
|
|
222
|
-
return extrinsic.paymentInfo(stakerAddress);
|
|
223
|
-
}
|
|
224
|
-
export async function handleAstarUnbondingTxInfo(chainInfo, amount, networkKey, stakerAddress, dappAddress, substrateApiMap, evmApiMap) {
|
|
225
|
-
const {
|
|
226
|
-
decimals,
|
|
227
|
-
symbol
|
|
228
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
229
|
-
try {
|
|
230
|
-
const [txInfo, balance] = await Promise.all([getAstarUnbondingTxInfo(chainInfo, substrateApiMap[networkKey], stakerAddress, amount, dappAddress), getFreeBalance(networkKey, stakerAddress, substrateApiMap, evmApiMap)]);
|
|
231
|
-
const feeString = parseNumberToDisplay(txInfo.partialFee, decimals) + ` ${symbol}`;
|
|
232
|
-
const rawFee = parseRawNumber(txInfo.partialFee.toString());
|
|
233
|
-
const binaryBalance = new BN(balance);
|
|
234
|
-
const balanceError = txInfo.partialFee.gt(binaryBalance);
|
|
235
|
-
return {
|
|
236
|
-
rawFee,
|
|
237
|
-
fee: feeString,
|
|
238
|
-
balanceError
|
|
239
|
-
};
|
|
240
|
-
} catch (e) {
|
|
241
|
-
return {
|
|
242
|
-
fee: `0.0000 ${symbol}`,
|
|
243
|
-
balanceError: false
|
|
244
|
-
};
|
|
245
|
-
}
|
|
183
|
+
} : {
|
|
184
|
+
Wasm: dappInfo.address
|
|
185
|
+
};
|
|
186
|
+
return chainApi.api.tx.dappsStaking.bondAndStake(dappParam, binaryAmount);
|
|
246
187
|
}
|
|
247
188
|
export async function getAstarUnbondingExtrinsic(substrateApi, amount, dappAddress) {
|
|
248
189
|
const apiPromise = await substrateApi.isReady;
|
|
249
190
|
const binaryAmount = new BN(amount);
|
|
250
|
-
|
|
191
|
+
const dappParam = isEthereumAddress(dappAddress) ? {
|
|
251
192
|
Evm: dappAddress
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
async function getAstarUnlockingInfo(substrateApi, address, networkKey) {
|
|
255
|
-
const chainApi = await substrateApi.isReady;
|
|
256
|
-
const [_stakingInfo, _era] = await Promise.all([chainApi.api.query.dappsStaking.ledger(address), chainApi.api.query.dappsStaking.currentEra()]);
|
|
257
|
-
const currentEra = parseRawNumber(_era.toHuman());
|
|
258
|
-
const stakingInfo = _stakingInfo.toHuman();
|
|
259
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
260
|
-
const unlockingChunks = stakingInfo.unbondingInfo.unlockingChunks;
|
|
261
|
-
let nextWithdrawalEra = -1;
|
|
262
|
-
let nextWithdrawalAmount = 0;
|
|
263
|
-
let redeemable = 0;
|
|
264
|
-
for (const chunk of unlockingChunks) {
|
|
265
|
-
const unlockEra = parseRawNumber(chunk.unlockEra);
|
|
266
|
-
const amount = parseRawNumber(chunk.amount);
|
|
267
|
-
|
|
268
|
-
// Find next withdrawal
|
|
269
|
-
if (nextWithdrawalEra === -1) {
|
|
270
|
-
nextWithdrawalEra = unlockEra;
|
|
271
|
-
nextWithdrawalAmount = amount;
|
|
272
|
-
} else if (unlockEra <= nextWithdrawalEra) {
|
|
273
|
-
nextWithdrawalEra = unlockEra;
|
|
274
|
-
nextWithdrawalAmount += amount;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// Find redeemable
|
|
278
|
-
if (unlockEra - currentEra <= 0) {
|
|
279
|
-
redeemable += amount;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
const nextWithdrawal = (nextWithdrawalEra - currentEra) * _STAKING_ERA_LENGTH_MAP[networkKey];
|
|
283
|
-
return {
|
|
284
|
-
nextWithdrawal,
|
|
285
|
-
nextWithdrawalAmount,
|
|
286
|
-
redeemable
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
export async function handleAstarUnlockingInfo(substrateApi, chainInfo, networkKey, address, type) {
|
|
290
|
-
const {
|
|
291
|
-
nextWithdrawal,
|
|
292
|
-
nextWithdrawalAmount,
|
|
293
|
-
redeemable
|
|
294
|
-
} = await getAstarUnlockingInfo(substrateApi, address, networkKey);
|
|
295
|
-
const {
|
|
296
|
-
decimals
|
|
297
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
298
|
-
const parsedRedeemable = redeemable / 10 ** decimals;
|
|
299
|
-
const parsedNextWithdrawalAmount = nextWithdrawalAmount / 10 ** decimals;
|
|
300
|
-
return {
|
|
301
|
-
address,
|
|
302
|
-
type,
|
|
303
|
-
chain: networkKey,
|
|
304
|
-
nextWithdrawal: nextWithdrawal,
|
|
305
|
-
redeemable: parsedRedeemable,
|
|
306
|
-
nextWithdrawalAmount: parsedNextWithdrawalAmount
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
export async function getAstarWithdrawalTxInfo(substrateApi, address) {
|
|
310
|
-
const apiPromise = await substrateApi.isReady;
|
|
311
|
-
const extrinsic = apiPromise.api.tx.dappsStaking.withdrawUnbonded();
|
|
312
|
-
return extrinsic.paymentInfo(address);
|
|
313
|
-
}
|
|
314
|
-
export async function handleAstarWithdrawalTxInfo(networkKey, chainInfo, substrateApiMap, evmApiMap, address) {
|
|
315
|
-
const [txInfo, balance] = await Promise.all([getAstarWithdrawalTxInfo(substrateApiMap[networkKey], address), getFreeBalance(networkKey, address, substrateApiMap, evmApiMap)]);
|
|
316
|
-
const {
|
|
317
|
-
decimals,
|
|
318
|
-
symbol
|
|
319
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
320
|
-
const feeString = parseNumberToDisplay(txInfo.partialFee, decimals) + ` ${symbol}`;
|
|
321
|
-
const rawFee = parseRawNumber(txInfo.partialFee.toString());
|
|
322
|
-
const binaryBalance = new BN(balance);
|
|
323
|
-
const balanceError = txInfo.partialFee.gt(binaryBalance);
|
|
324
|
-
return {
|
|
325
|
-
rawFee,
|
|
326
|
-
fee: feeString,
|
|
327
|
-
balanceError
|
|
193
|
+
} : {
|
|
194
|
+
Wasm: dappAddress
|
|
328
195
|
};
|
|
196
|
+
return apiPromise.api.tx.dappsStaking.unbondAndUnstake(dappParam, binaryAmount);
|
|
329
197
|
}
|
|
330
198
|
export async function getAstarWithdrawalExtrinsic(substrateApi) {
|
|
331
199
|
const chainApi = await substrateApi.isReady;
|
|
332
200
|
return chainApi.api.tx.dappsStaking.withdrawUnbonded();
|
|
333
201
|
}
|
|
334
|
-
export async function
|
|
202
|
+
export async function getAstarClaimRewardExtrinsic(substrateApi, address) {
|
|
335
203
|
const apiPromise = await substrateApi.isReady;
|
|
336
204
|
const [_stakedDapps, _currentEra] = await Promise.all([apiPromise.api.query.dappsStaking.generalStakerInfo.entries(address), apiPromise.api.query.dappsStaking.currentEra()]);
|
|
337
205
|
const currentEra = parseRawNumber(_currentEra.toHuman());
|
|
@@ -343,6 +211,7 @@ export async function getAstarClaimRewardTxInfo(substrateApi, address) {
|
|
|
343
211
|
const stakes = stakeData.stakes;
|
|
344
212
|
const dappAddress = stakedDapp.Evm.toLowerCase();
|
|
345
213
|
let numberOfUnclaimedEra = 0;
|
|
214
|
+
const maxTx = 50;
|
|
346
215
|
for (let i = 0; i < stakes.length; i++) {
|
|
347
216
|
var _stakes;
|
|
348
217
|
const {
|
|
@@ -360,74 +229,13 @@ export async function getAstarClaimRewardTxInfo(substrateApi, address) {
|
|
|
360
229
|
const eraToClaim = isLastEra ? currentEra - parsedEra : nextEra - parsedEra;
|
|
361
230
|
numberOfUnclaimedEra += eraToClaim;
|
|
362
231
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
transactions.push(tx);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
console.log('no of tx: ', transactions.length);
|
|
371
|
-
const extrinsic = apiPromise.api.tx.utility.batch(transactions);
|
|
372
|
-
return extrinsic.paymentInfo(address);
|
|
373
|
-
}
|
|
374
|
-
export async function handleAstarClaimRewardTxInfo(address, networkKey, chainInfo, substrateApiMap, evmApiMap) {
|
|
375
|
-
const {
|
|
376
|
-
decimals,
|
|
377
|
-
symbol
|
|
378
|
-
} = _getChainNativeTokenBasicInfo(chainInfo);
|
|
379
|
-
try {
|
|
380
|
-
const [txInfo, balance] = await Promise.all([getAstarClaimRewardTxInfo(substrateApiMap[networkKey], address), getFreeBalance(networkKey, address, substrateApiMap, evmApiMap)]);
|
|
381
|
-
const feeString = parseNumberToDisplay(txInfo.partialFee, decimals) + ` ${symbol}`;
|
|
382
|
-
const rawFee = parseRawNumber(txInfo.partialFee.toString());
|
|
383
|
-
const binaryBalance = new BN(balance);
|
|
384
|
-
const balanceError = txInfo.partialFee.gt(binaryBalance);
|
|
385
|
-
return {
|
|
386
|
-
rawFee,
|
|
387
|
-
fee: feeString,
|
|
388
|
-
balanceError
|
|
389
|
-
};
|
|
390
|
-
} catch (e) {
|
|
391
|
-
return {
|
|
392
|
-
fee: `0.0000 ${symbol}`,
|
|
393
|
-
balanceError: false
|
|
232
|
+
const dappParam = isEthereumAddress(dappAddress) ? {
|
|
233
|
+
Evm: dappAddress
|
|
234
|
+
} : {
|
|
235
|
+
Wasm: dappAddress
|
|
394
236
|
};
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
export async function getAstarClaimRewardExtrinsic(substrateApi, address) {
|
|
398
|
-
const apiPromise = await substrateApi.isReady;
|
|
399
|
-
const [_stakedDapps, _currentEra] = await Promise.all([apiPromise.api.query.dappsStaking.generalStakerInfo.entries(address), apiPromise.api.query.dappsStaking.currentEra()]);
|
|
400
|
-
const currentEra = parseRawNumber(_currentEra.toHuman());
|
|
401
|
-
const transactions = [];
|
|
402
|
-
for (const item of _stakedDapps) {
|
|
403
|
-
const data = item[0].toHuman();
|
|
404
|
-
const stakedDapp = data[1];
|
|
405
|
-
const stakeData = item[1].toHuman();
|
|
406
|
-
const stakes = stakeData.stakes;
|
|
407
|
-
const dappAddress = stakedDapp.Evm.toLowerCase();
|
|
408
|
-
let numberOfUnclaimedEra = 0;
|
|
409
|
-
const maxTx = 50;
|
|
410
|
-
for (let i = 0; i < stakes.length; i++) {
|
|
411
|
-
var _stakes2;
|
|
412
|
-
const {
|
|
413
|
-
era,
|
|
414
|
-
staked
|
|
415
|
-
} = stakes[i];
|
|
416
|
-
const bnStaked = new BN(staked.replaceAll(',', ''));
|
|
417
|
-
const parsedEra = parseRawNumber(era);
|
|
418
|
-
if (bnStaked.eq(new BN(0))) {
|
|
419
|
-
continue;
|
|
420
|
-
}
|
|
421
|
-
const nextEraData = (_stakes2 = stakes[i + 1]) !== null && _stakes2 !== void 0 ? _stakes2 : null;
|
|
422
|
-
const nextEra = nextEraData && parseRawNumber(nextEraData.era);
|
|
423
|
-
const isLastEra = i === stakes.length - 1;
|
|
424
|
-
const eraToClaim = isLastEra ? currentEra - parsedEra : nextEra - parsedEra;
|
|
425
|
-
numberOfUnclaimedEra += eraToClaim;
|
|
426
|
-
}
|
|
427
237
|
for (let i = 0; i < Math.min(numberOfUnclaimedEra, maxTx); i++) {
|
|
428
|
-
const tx = apiPromise.api.tx.dappsStaking.claimStaker(
|
|
429
|
-
Evm: dappAddress
|
|
430
|
-
});
|
|
238
|
+
const tx = apiPromise.api.tx.dappsStaking.claimStaker(dappParam);
|
|
431
239
|
transactions.push(tx);
|
|
432
240
|
}
|
|
433
241
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
|
+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
2
3
|
import { ChainStakingMetadata, NominatorMetadata, StakingType, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
4
|
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
4
|
-
export declare function
|
|
5
|
+
export declare function validateUnbondingCondition(nominatorMetadata: NominatorMetadata, amount: string, chain: string, chainStakingMetadata: ChainStakingMetadata, selectedValidator?: string): TransactionError[];
|
|
6
|
+
export declare function validateBondingCondition(chainInfo: _ChainInfo, amount: string, selectedValidators: ValidatorInfo[], address: string, chainStakingMetadata: ChainStakingMetadata, nominatorMetadata?: NominatorMetadata): TransactionError[];
|
|
7
|
+
export declare function getChainStakingMetadata(chainInfo: _ChainInfo, substrateApi: _SubstrateApi): Promise<ChainStakingMetadata>;
|
|
5
8
|
export declare function getNominatorMetadata(chainInfo: _ChainInfo, address: string, substrateApi: _SubstrateApi): Promise<NominatorMetadata | undefined>;
|
|
6
9
|
export declare function getValidatorsInfo(networkKey: string, substrateApi: _SubstrateApi, decimals: number, chainStakingMetadata: ChainStakingMetadata): Promise<ValidatorInfo[]>;
|
|
7
10
|
export declare function getNominationPoolsInfo(chain: string, substrateApi: _SubstrateApi): Promise<import("@subwallet/extension-base/background/KoniTypes").NominationPoolInfo[]>;
|
|
8
|
-
export declare function getBondingExtrinsic(chainInfo: _ChainInfo, amount: string,
|
|
11
|
+
export declare function getBondingExtrinsic(chainInfo: _ChainInfo, amount: string, selectedValidators: ValidatorInfo[], substrateApi: _SubstrateApi, address: string, nominatorMetadata?: NominatorMetadata): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
9
12
|
export declare function getUnbondingExtrinsic(nominatorMetadata: NominatorMetadata, amount: string, chain: string, substrateApi: _SubstrateApi, selectedValidator?: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
10
13
|
export declare function getWithdrawalExtrinsic(substrateApi: _SubstrateApi, chain: string, nominatorMetadata: NominatorMetadata, validatorAddress?: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
11
14
|
export declare function getClaimRewardExtrinsic(substrateApi: _SubstrateApi, chain: string, address: string, stakingType: StakingType, bondReward?: boolean): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
@@ -2,22 +2,34 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
-
import { getAmplitudeBondingExtrinsic,
|
|
5
|
+
import { getAmplitudeBondingExtrinsic, getAmplitudeClaimRewardExtrinsic, getAmplitudeCollatorsInfo, getAmplitudeNominatorMetadata, getAmplitudeStakingMetadata, getAmplitudeUnbondingExtrinsic, getAmplitudeWithdrawalExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/amplitude';
|
|
6
6
|
import { getAstarBondingExtrinsic, getAstarClaimRewardExtrinsic, getAstarDappsInfo, getAstarNominatorMetadata, getAstarStakingMetadata, getAstarUnbondingExtrinsic, getAstarWithdrawalExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/astar';
|
|
7
|
-
import { getParaBondingExtrinsic, getParaCancelWithdrawalExtrinsic, getParachainCollatorsInfo, getParaChainNominatorMetadata, getParaChainStakingMetadata, getParaUnbondingExtrinsic, getParaWithdrawalExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/paraChain';
|
|
8
|
-
import { getPoolingClaimRewardExtrinsic, getPoolingWithdrawalExtrinsic, getRelayBondingExtrinsic, getRelayCancelWithdrawalExtrinsic, getRelayChainNominatorMetadata, getRelayChainStakingMetadata, getRelayPoolsInfo, getRelayUnbondingExtrinsic, getRelayValidatorsInfo, getRelayWithdrawalExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
|
|
7
|
+
import { getParaBondingExtrinsic, getParaCancelWithdrawalExtrinsic, getParachainCollatorsInfo, getParaChainNominatorMetadata, getParaChainStakingMetadata, getParaUnbondingExtrinsic, getParaWithdrawalExtrinsic, validateParaChainBondingCondition, validateParaChainUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/paraChain';
|
|
8
|
+
import { getPoolingClaimRewardExtrinsic, getPoolingWithdrawalExtrinsic, getRelayBondingExtrinsic, getRelayCancelWithdrawalExtrinsic, getRelayChainNominatorMetadata, getRelayChainStakingMetadata, getRelayPoolsInfo, getRelayUnbondingExtrinsic, getRelayValidatorsInfo, getRelayWithdrawalExtrinsic, validateRelayBondingCondition, validateRelayUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
|
|
9
9
|
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
10
10
|
// all addresses must be converted to its chain format
|
|
11
11
|
|
|
12
|
-
export
|
|
13
|
-
if (_STAKING_CHAIN_GROUP.
|
|
14
|
-
return
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
export function validateUnbondingCondition(nominatorMetadata, amount, chain, chainStakingMetadata, selectedValidator) {
|
|
13
|
+
if (_STAKING_CHAIN_GROUP.relay.includes(chain)) {
|
|
14
|
+
return validateRelayUnbondingCondition(amount, chainStakingMetadata, nominatorMetadata);
|
|
15
|
+
}
|
|
16
|
+
return validateParaChainUnbondingCondition(amount, nominatorMetadata, chainStakingMetadata, selectedValidator);
|
|
17
|
+
}
|
|
18
|
+
export function validateBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata) {
|
|
19
|
+
if (_STAKING_CHAIN_GROUP.relay.includes(chainInfo.slug)) {
|
|
20
|
+
return validateRelayBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
19
21
|
}
|
|
20
|
-
return
|
|
22
|
+
return validateParaChainBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
23
|
+
}
|
|
24
|
+
export async function getChainStakingMetadata(chainInfo, substrateApi) {
|
|
25
|
+
if (_STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
26
|
+
return getAstarStakingMetadata(chainInfo.slug, substrateApi);
|
|
27
|
+
} else if (_STAKING_CHAIN_GROUP.para.includes(chainInfo.slug)) {
|
|
28
|
+
return getParaChainStakingMetadata(chainInfo.slug, substrateApi);
|
|
29
|
+
} else if (_STAKING_CHAIN_GROUP.amplitude.includes(chainInfo.slug)) {
|
|
30
|
+
return getAmplitudeStakingMetadata(chainInfo.slug, substrateApi);
|
|
31
|
+
}
|
|
32
|
+
return getRelayChainStakingMetadata(chainInfo, substrateApi);
|
|
21
33
|
}
|
|
22
34
|
export async function getNominatorMetadata(chainInfo, address, substrateApi) {
|
|
23
35
|
if (_STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
@@ -42,15 +54,15 @@ export async function getValidatorsInfo(networkKey, substrateApi, decimals, chai
|
|
|
42
54
|
export async function getNominationPoolsInfo(chain, substrateApi) {
|
|
43
55
|
return getRelayPoolsInfo(chain, substrateApi);
|
|
44
56
|
}
|
|
45
|
-
export async function getBondingExtrinsic(chainInfo, amount,
|
|
57
|
+
export async function getBondingExtrinsic(chainInfo, amount, selectedValidators, substrateApi, address, nominatorMetadata) {
|
|
46
58
|
if (_STAKING_CHAIN_GROUP.para.includes(chainInfo.slug)) {
|
|
47
|
-
return getParaBondingExtrinsic(
|
|
59
|
+
return getParaBondingExtrinsic(chainInfo, substrateApi, amount, selectedValidators[0], nominatorMetadata); // only select 1 validator at a time
|
|
48
60
|
} else if (_STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
|
|
49
61
|
return getAstarBondingExtrinsic(substrateApi, amount, selectedValidators[0]);
|
|
50
62
|
} else if (_STAKING_CHAIN_GROUP.amplitude.includes(chainInfo.slug)) {
|
|
51
|
-
return getAmplitudeBondingExtrinsic(
|
|
63
|
+
return getAmplitudeBondingExtrinsic(substrateApi, amount, selectedValidators[0], nominatorMetadata);
|
|
52
64
|
}
|
|
53
|
-
return getRelayBondingExtrinsic(substrateApi, amount, selectedValidators,
|
|
65
|
+
return getRelayBondingExtrinsic(substrateApi, amount, selectedValidators, chainInfo, address, nominatorMetadata);
|
|
54
66
|
}
|
|
55
67
|
export async function getUnbondingExtrinsic(nominatorMetadata, amount, chain, substrateApi, selectedValidator) {
|
|
56
68
|
if (_STAKING_CHAIN_GROUP.para.includes(chain)) {
|
|
@@ -86,8 +98,6 @@ export async function getClaimRewardExtrinsic(substrateApi, chain, address, stak
|
|
|
86
98
|
export async function getCancelWithdrawalExtrinsic(substrateApi, chain, selectedUnstaking) {
|
|
87
99
|
if (_STAKING_CHAIN_GROUP.para.includes(chain)) {
|
|
88
100
|
return getParaCancelWithdrawalExtrinsic(substrateApi, selectedUnstaking);
|
|
89
|
-
} else if (_STAKING_CHAIN_GROUP.amplitude.includes(chain)) {
|
|
90
|
-
return getAmplitudeCancelWithdrawalExtrinsic(substrateApi);
|
|
91
101
|
}
|
|
92
102
|
return getRelayCancelWithdrawalExtrinsic(substrateApi, selectedUnstaking);
|
|
93
103
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
|
+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
2
3
|
import { ChainStakingMetadata, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
4
|
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
5
|
+
export declare function validateParaChainUnbondingCondition(amount: string, nominatorMetadata: NominatorMetadata, chainStakingMetadata: ChainStakingMetadata, selectedCollator: string): TransactionError[];
|
|
6
|
+
export declare function validateParaChainBondingCondition(chainInfo: _ChainInfo, amount: string, selectedCollators: ValidatorInfo[], address: string, chainStakingMetadata: ChainStakingMetadata, nominatorMetadata?: NominatorMetadata): TransactionError[];
|
|
4
7
|
export declare function getParaChainStakingMetadata(chain: string, substrateApi: _SubstrateApi): Promise<ChainStakingMetadata>;
|
|
5
8
|
export declare function getParaChainNominatorMetadata(chainInfo: _ChainInfo, address: string, substrateApi: _SubstrateApi): Promise<NominatorMetadata | undefined>;
|
|
6
9
|
export declare function getParachainCollatorsInfo(chain: string, substrateApi: _SubstrateApi): Promise<ValidatorInfo[]>;
|
|
7
|
-
export declare function getParaBondingExtrinsic(
|
|
10
|
+
export declare function getParaBondingExtrinsic(chainInfo: _ChainInfo, substrateApi: _SubstrateApi, amount: string, selectedCollatorInfo: ValidatorInfo, nominatorMetadata?: NominatorMetadata): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
8
11
|
export declare function getParaUnbondingExtrinsic(substrateApi: _SubstrateApi, amount: string, nominatorMetadata: NominatorMetadata, selectedValidator: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
9
12
|
export declare function getParaWithdrawalExtrinsic(substrateApi: _SubstrateApi, address: string, collatorAddress: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|
|
10
13
|
export declare function getTuringCompoundExtrinsic(substrateApi: _SubstrateApi, address: string, collatorAddress: string, accountMinimum: string, bondedAmount: string): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
|