@subwallet/extension-base 1.3.71-0 → 1.3.73-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 +13 -2
- package/background/KoniTypes.js +3 -1
- package/cjs/background/KoniTypes.js +3 -1
- package/cjs/core/logic-validation/recipientAddress.js +1 -1
- package/cjs/core/logic-validation/transfer.js +33 -10
- package/cjs/core/types.js +1 -0
- package/cjs/koni/background/handlers/Extension.js +81 -10
- package/cjs/koni/background/handlers/State.js +2 -4
- package/cjs/koni/background/subscription.js +2 -22
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +46 -2
- package/cjs/services/balance-service/transfer/token.js +13 -35
- package/cjs/services/balance-service/transfer/xcm/index.js +3 -8
- package/cjs/services/balance-service/transfer/xcm/utils.js +1 -1
- package/cjs/services/chain-service/constants.js +6 -5
- package/cjs/services/chain-service/index.js +1 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -2
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.js +55 -0
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting20251223.js +41 -0
- package/cjs/services/migration-service/scripts/index.js +17 -13
- package/cjs/services/substrate-proxy-service/constant.js +26 -0
- package/cjs/services/substrate-proxy-service/index.js +170 -0
- package/cjs/services/transaction-service/index.js +78 -10
- package/cjs/services/transaction-service/utils.js +8 -5
- package/cjs/types/index.js +11 -0
- package/cjs/types/substrateProxyAccount/actions/index.js +1 -0
- package/cjs/types/substrateProxyAccount/index.js +16 -0
- package/cjs/utils/account/transform.js +5 -4
- package/cjs/utils/fee/transfer.js +4 -2
- package/core/logic-validation/recipientAddress.js +1 -1
- package/core/logic-validation/transfer.d.ts +3 -3
- package/core/logic-validation/transfer.js +34 -11
- package/core/types.d.ts +2 -1
- package/core/types.js +1 -0
- package/koni/background/handlers/Extension.d.ts +3 -0
- package/koni/background/handlers/Extension.js +81 -10
- package/koni/background/handlers/State.d.ts +2 -1
- package/koni/background/handlers/State.js +2 -4
- package/koni/background/subscription.js +2 -22
- package/package.json +37 -7
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +47 -3
- package/services/balance-service/transfer/token.d.ts +0 -4
- package/services/balance-service/transfer/token.js +12 -33
- package/services/balance-service/transfer/xcm/index.js +3 -8
- package/services/balance-service/transfer/xcm/utils.d.ts +0 -2
- package/services/balance-service/transfer/xcm/utils.js +1 -1
- package/services/chain-service/constants.d.ts +1 -1
- package/services/chain-service/constants.js +4 -4
- package/services/chain-service/index.js +1 -0
- package/services/chain-service/utils/patch.d.ts +1 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/native-staking/para-chain.js +17 -2
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.d.ts +4 -0
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.js +46 -0
- package/services/migration-service/scripts/databases/MigrateAssetSetting20251223.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateAssetSetting20251223.js +33 -0
- package/services/migration-service/scripts/index.js +8 -4
- package/services/open-gov/interface.d.ts +4 -3
- package/services/substrate-proxy-service/constant.d.ts +3 -0
- package/services/substrate-proxy-service/constant.js +19 -0
- package/services/substrate-proxy-service/index.d.ts +13 -0
- package/services/substrate-proxy-service/index.js +159 -0
- package/services/transaction-service/index.js +79 -11
- package/services/transaction-service/types.d.ts +2 -2
- package/services/transaction-service/utils.js +8 -5
- package/types/balance/transfer.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/types/substrateProxyAccount/actions/index.d.ts +17 -0
- package/types/substrateProxyAccount/actions/index.js +1 -0
- package/types/substrateProxyAccount/index.d.ts +23 -0
- package/types/substrateProxyAccount/index.js +8 -0
- package/types/transaction/request.d.ts +1 -0
- package/types/yield/actions/join/submit.d.ts +1 -1
- package/types/yield/info/pallet.d.ts +1 -1
- package/utils/account/transform.js +5 -4
- package/utils/fee/transfer.js +4 -2
|
@@ -4,9 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getTransferMockTxFee = exports.
|
|
7
|
+
exports.getTransferMockTxFee = exports.createSubstrateExtrinsic = void 0;
|
|
8
8
|
var _api = require("@gear-js/api");
|
|
9
9
|
var _types = require("@subwallet/chain-list/types");
|
|
10
|
+
var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
|
|
10
11
|
var _wasm = require("@subwallet/extension-base/koni/api/contract-handler/wasm");
|
|
11
12
|
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/wasm/utils");
|
|
12
13
|
var _utils2 = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
|
|
@@ -24,7 +25,7 @@ var _utilCrypto = require("@polkadot/util-crypto");
|
|
|
24
25
|
// SPDX-License-Identifier: Apache-2.0
|
|
25
26
|
|
|
26
27
|
const createSubstrateExtrinsic = async _ref => {
|
|
27
|
-
var _tokenInfo$metadata
|
|
28
|
+
var _tokenInfo$metadata;
|
|
28
29
|
let {
|
|
29
30
|
from,
|
|
30
31
|
networkKey,
|
|
@@ -102,7 +103,15 @@ const createSubstrateExtrinsic = async _ref => {
|
|
|
102
103
|
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils3._isNativeToken)(tokenInfo)) {
|
|
103
104
|
transfer = api.tx.currencies.transfer(to, (0, _utils3._getTokenOnChainInfo)(tokenInfo), value);
|
|
104
105
|
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils3._isNativeToken)(tokenInfo)) {
|
|
105
|
-
|
|
106
|
+
if (_constants.USE_MULTILOCATION_INDEX.includes(networkKey)) {
|
|
107
|
+
const version = ['statemint', 'statemine', 'westend_assethub'].includes(networkKey) ? 4 : 3;
|
|
108
|
+
const multilocationIndex = (0, _xcmParser._adaptX1Interior)((0, _utils3._getXcmAssetMultilocation)(tokenInfo), version);
|
|
109
|
+
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
transfer = api.tx.assets.transfer(multilocationIndex, to, value);
|
|
112
|
+
} else {
|
|
113
|
+
transfer = api.tx.assets.transfer((0, _utils3._getTokenOnChainAssetId)(tokenInfo), to, value);
|
|
114
|
+
}
|
|
106
115
|
} else if (_constants._TRANSFER_CHAIN_GROUP.sora_substrate.includes(networkKey) && isTxAssetsSupported) {
|
|
107
116
|
transfer = api.tx.assets.transfer((0, _utils3._getTokenOnChainAssetId)(tokenInfo), to, value);
|
|
108
117
|
} else if (isTxBalancesSupported && (0, _utils3._isNativeToken)(tokenInfo)) {
|
|
@@ -120,18 +129,6 @@ const createSubstrateExtrinsic = async _ref => {
|
|
|
120
129
|
}
|
|
121
130
|
} else if (_constants._TRANSFER_CHAIN_GROUP.truth.includes(networkKey)) {
|
|
122
131
|
transfer = api.tx.assetManager.transfer(to, (0, _utils3._getTokenOnChainInfo)(tokenInfo), value);
|
|
123
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.bittensor.includes(networkKey) && (_tokenInfo$metadata2 = tokenInfo.metadata) !== null && _tokenInfo$metadata2 !== void 0 && _tokenInfo$metadata2.netuid) {
|
|
124
|
-
var _tokenInfo$metadata3;
|
|
125
|
-
const {
|
|
126
|
-
accountHotKey,
|
|
127
|
-
isEnableTransferSubnet
|
|
128
|
-
} = await getAccountNetuidTokenInfo(from, tokenInfo, substrateApi);
|
|
129
|
-
const tokenNetuid = (_tokenInfo$metadata3 = tokenInfo.metadata) === null || _tokenInfo$metadata3 === void 0 ? void 0 : _tokenInfo$metadata3.netuid;
|
|
130
|
-
if (isEnableTransferSubnet && accountHotKey) {
|
|
131
|
-
transfer = api.tx.subtensorModule.transferStake(from, accountHotKey, tokenNetuid, tokenNetuid, value);
|
|
132
|
-
} else {
|
|
133
|
-
return [null, value];
|
|
134
|
-
}
|
|
135
132
|
}
|
|
136
133
|
return [transfer, transferAmount || value];
|
|
137
134
|
};
|
|
@@ -190,23 +187,4 @@ const getTransferMockTxFee = async (address, chainInfo, tokenInfo, api) => {
|
|
|
190
187
|
return new _bignumber.default(0);
|
|
191
188
|
}
|
|
192
189
|
};
|
|
193
|
-
exports.getTransferMockTxFee = getTransferMockTxFee;
|
|
194
|
-
const getAccountNetuidTokenInfo = async (address, tokenInfo, substrateApi) => {
|
|
195
|
-
var _tokenInfo$metadata4;
|
|
196
|
-
const tokenNetuid = (_tokenInfo$metadata4 = tokenInfo.metadata) === null || _tokenInfo$metadata4 === void 0 ? void 0 : _tokenInfo$metadata4.netuid;
|
|
197
|
-
if (!tokenNetuid) {
|
|
198
|
-
return {
|
|
199
|
-
isEnableTransferSubnet: false,
|
|
200
|
-
accountHotKey: undefined
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
const [isTransferToggle, rawStakeInfoForColdKey] = await Promise.all([substrateApi.api.query.subtensorModule.transferToggle(tokenNetuid), substrateApi.api.call.stakeInfoRuntimeApi.getStakeInfoForColdkey(address)]);
|
|
204
|
-
const isEnableTransferSubnet = isTransferToggle.toPrimitive();
|
|
205
|
-
const taoStakeInfos = rawStakeInfoForColdKey.toPrimitive();
|
|
206
|
-
const accountHotKey = taoStakeInfos.find(value => value.netuid === tokenNetuid);
|
|
207
|
-
return {
|
|
208
|
-
isEnableTransferSubnet,
|
|
209
|
-
accountHotKey: accountHotKey === null || accountHotKey === void 0 ? void 0 : accountHotKey.hotkey
|
|
210
|
-
};
|
|
211
|
-
};
|
|
212
|
-
exports.getAccountNetuidTokenInfo = getAccountNetuidTokenInfo;
|
|
190
|
+
exports.getTransferMockTxFee = getTransferMockTxFee;
|
|
@@ -119,8 +119,6 @@ const dryRunXcmExtrinsicV2 = async function (request) {
|
|
|
119
119
|
const originDryRunRs = dryRunResult.origin;
|
|
120
120
|
if (originDryRunRs.success) {
|
|
121
121
|
const {
|
|
122
|
-
assetHub,
|
|
123
|
-
bridgeHub,
|
|
124
122
|
destination,
|
|
125
123
|
hops
|
|
126
124
|
} = dryRunResult;
|
|
@@ -129,12 +127,9 @@ const dryRunXcmExtrinsicV2 = async function (request) {
|
|
|
129
127
|
return false;
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
|
-
if ((
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return (0, _utils.isChainNotSupportDryRun)(destination.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(destination.failureReason);
|
|
136
|
-
}
|
|
137
|
-
return false;
|
|
130
|
+
if ((destination === null || destination === void 0 ? void 0 : destination.success) === false) {
|
|
131
|
+
// pass dry-run in these cases
|
|
132
|
+
return (0, _utils.isChainNotSupportDryRun)(destination.failureReason) || (0, _utils.isChainNotSupportPolkadotApi)(destination.failureReason);
|
|
138
133
|
}
|
|
139
134
|
return true;
|
|
140
135
|
}
|
|
@@ -18,7 +18,7 @@ var _util = require("@polkadot/util");
|
|
|
18
18
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
19
19
|
// SPDX-License-Identifier: Apache-2.0
|
|
20
20
|
|
|
21
|
-
const version = '/
|
|
21
|
+
const version = '/v5';
|
|
22
22
|
const paraSpellApi = {
|
|
23
23
|
buildXcm: `${version}/x-transfer`,
|
|
24
24
|
feeXcm: `${version}/xcm-fee`,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._ZK_ASSET_PREFIX = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._GOVERNANCE_CHAIN_GROUP = exports._EXPECTED_BLOCK_TIME = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._BTC_SERVICE_TOKEN = exports._BITCOIN_TESTNET_NAME = exports._BITCOIN_TESTNET_CHAIN_SLUG = exports._BITCOIN_NAME = exports._BITCOIN_CHAIN_SLUG = exports._BALANCE_LOCKED_ID_GROUP = exports._BALANCE_CHAIN_GROUP = exports._API_OPTIONS_CHAIN_GROUP = exports.LATEST_CHAIN_DATA_FETCHING_INTERVAL = exports.EVM_REFORMAT_DECIMALS = exports.EVM_PASS_CONNECT_STATUS = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
|
|
6
|
+
exports._ZK_ASSET_PREFIX = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._GOVERNANCE_CHAIN_GROUP = exports._EXPECTED_BLOCK_TIME = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._BTC_SERVICE_TOKEN = exports._BITCOIN_TESTNET_NAME = exports._BITCOIN_TESTNET_CHAIN_SLUG = exports._BITCOIN_NAME = exports._BITCOIN_CHAIN_SLUG = exports._BALANCE_LOCKED_ID_GROUP = exports._BALANCE_CHAIN_GROUP = exports._API_OPTIONS_CHAIN_GROUP = exports.USE_MULTILOCATION_INDEX = exports.LATEST_CHAIN_DATA_FETCHING_INTERVAL = exports.EVM_REFORMAT_DECIMALS = exports.EVM_PASS_CONNECT_STATUS = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
|
|
7
7
|
var _chainList = require("@subwallet/chain-list");
|
|
8
8
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -47,7 +47,7 @@ const _BALANCE_CHAIN_GROUP = {
|
|
|
47
47
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
48
48
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
49
49
|
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network', 'truth_network', 'jamton', 'hydradx_hollarnet'],
|
|
50
|
-
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail', 'xode', 'paseo_assethub'],
|
|
50
|
+
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail', 'xode', 'paseo_assethub', 'energy_web_x'],
|
|
51
51
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
52
52
|
// perhaps there are some runtime updates
|
|
53
53
|
centrifuge: ['centrifuge'],
|
|
@@ -306,17 +306,18 @@ const _TRANSFER_CHAIN_GROUP = {
|
|
|
306
306
|
kintsugi: ['kintsugi', 'kintsugi_test', 'interlay', 'mangatax_para'],
|
|
307
307
|
genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
|
|
308
308
|
bitcountry: ['pioneer', 'bitcountry'],
|
|
309
|
-
statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail', 'xode', 'paseo_assethub'],
|
|
309
|
+
statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail', 'xode', 'paseo_assethub', 'energy_web_x'],
|
|
310
310
|
riochain: ['riochain'],
|
|
311
311
|
sora_substrate: ['sora_substrate'],
|
|
312
312
|
avail: ['kate', 'goldberg_testnet'],
|
|
313
313
|
pendulum: ['pendulum', 'amplitude', 'amplitude_test', 'hydradx_main', 'bifrost', 'bifrost_dot', 'jamton', 'hydradx_hollarnet'],
|
|
314
314
|
centrifuge: ['centrifuge'],
|
|
315
315
|
disable_transfer: ['crab', 'pangolin'],
|
|
316
|
-
truth: ['truth_network']
|
|
317
|
-
bittensor: ['bittensor']
|
|
316
|
+
truth: ['truth_network']
|
|
318
317
|
};
|
|
319
318
|
exports._TRANSFER_CHAIN_GROUP = _TRANSFER_CHAIN_GROUP;
|
|
319
|
+
const USE_MULTILOCATION_INDEX = ['energy_web_x'];
|
|
320
|
+
exports.USE_MULTILOCATION_INDEX = USE_MULTILOCATION_INDEX;
|
|
320
321
|
const _MANTA_ZK_CHAIN_GROUP = ['calamari'];
|
|
321
322
|
exports._MANTA_ZK_CHAIN_GROUP = _MANTA_ZK_CHAIN_GROUP;
|
|
322
323
|
const _ZK_ASSET_PREFIX = 'zk';
|
|
@@ -12,7 +12,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
|
12
12
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
13
13
|
const fetchDomain = process.env.PATCH_CHAIN_LIST_URL || (PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev');
|
|
14
14
|
const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
|
|
15
|
-
const ChainListVersion = '0.2.
|
|
15
|
+
const ChainListVersion = '0.2.123'; // update this when build chain-list
|
|
16
16
|
|
|
17
17
|
// todo: move this interface to chainlist
|
|
18
18
|
exports.ChainListVersion = ChainListVersion;
|
|
@@ -19,6 +19,17 @@ var _basePara = _interopRequireDefault(require("./base-para"));
|
|
|
19
19
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
20
20
|
// SPDX-License-Identifier: Apache-2.0
|
|
21
21
|
|
|
22
|
+
async function queryDelegationScheduledRequestsFallback(api, delegator, collator) {
|
|
23
|
+
const query = api.query.parachainStaking.delegationScheduledRequests;
|
|
24
|
+
const key = await query.keys();
|
|
25
|
+
if (key[0].args.length === 1) {
|
|
26
|
+
return await query(collator);
|
|
27
|
+
} else if (key[0].args.length === 2) {
|
|
28
|
+
return await query(collator, delegator);
|
|
29
|
+
} else {
|
|
30
|
+
throw new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, 'More args than 2 and 1');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
22
33
|
function calculateMantaNominatorReturn(decimal, commission, totalActiveCollators, bnAnnualInflation, blocksPreviousRound, bnCollatorExpectedBlocksPerRound, bnCollatorTotalStaked, isCountCommission) {
|
|
23
34
|
const MIN_DELEGATION = new _bignumber.default(_constants2.MANTA_MIN_DELEGATION);
|
|
24
35
|
const factor = new _bignumber.default(10).pow(decimal);
|
|
@@ -148,7 +159,10 @@ class ParaNativeStakingPoolHandler extends _basePara.default {
|
|
|
148
159
|
const roundInfo = _roundInfo.toPrimitive();
|
|
149
160
|
const currentRound = roundInfo.current;
|
|
150
161
|
await Promise.all(delegatorState.delegations.map(async delegation => {
|
|
151
|
-
const [_delegationScheduledRequests, [identity], _collatorInfo, _currentBlock, _currentTimestamp] = await Promise.all([
|
|
162
|
+
const [_delegationScheduledRequests, [identity], _collatorInfo, _currentBlock, _currentTimestamp] = await Promise.all([queryDelegationScheduledRequestsFallback(substrateApi.api, address,
|
|
163
|
+
// delegator
|
|
164
|
+
delegation.owner // collator
|
|
165
|
+
), (0, _utils2.parseIdentity)(substrateIdentityApi, delegation.owner), substrateApi.api.query.parachainStaking.candidateInfo(delegation.owner), substrateApi.api.query.system.number(), substrateApi.api.query.timestamp.now()]);
|
|
152
166
|
const currentBlock = _currentBlock.toPrimitive();
|
|
153
167
|
const currentTimestamp = _currentTimestamp.toPrimitive();
|
|
154
168
|
const collatorInfo = _collatorInfo.toPrimitive();
|
|
@@ -160,7 +174,8 @@ class ParaNativeStakingPoolHandler extends _basePara.default {
|
|
|
160
174
|
// parse unstaking info
|
|
161
175
|
if (delegationScheduledRequests) {
|
|
162
176
|
for (const scheduledRequest of delegationScheduledRequests) {
|
|
163
|
-
|
|
177
|
+
const requestDelegator = scheduledRequest.delegator ? scheduledRequest.delegator : address;
|
|
178
|
+
if ((0, _utils3.reformatAddress)(requestDelegator, 0) === (0, _utils3.reformatAddress)(address, 0)) {
|
|
164
179
|
// add network prefix
|
|
165
180
|
const isClaimable = scheduledRequest.whenExecutable - parseInt(currentRound) <= 0;
|
|
166
181
|
const remainingEra = scheduledRequest.whenExecutable - parseInt(currentRound);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class MigrateTransactionHistoryBySymbol20251223 extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
const state = this.state;
|
|
15
|
+
try {
|
|
16
|
+
const changeSlugsMap = {
|
|
17
|
+
'gnosis-NATIVE-xDAI': 'gnosis-NATIVE-XDAI',
|
|
18
|
+
'stable-ERC20-USD₮0-0x779Ded0c9e1022225f8E0630b35a9b54bE713736': 'stable-ERC20-USDT0-0x779Ded0c9e1022225f8E0630b35a9b54bE713736',
|
|
19
|
+
'polygon-ERC20-USD₮0-0xc2132D05D31c914a87C6611C10748AEb04B58e8F': 'polygon-ERC20-USDT0-0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
|
|
20
|
+
'ethereum-ERC20-TON-0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1': 'ethereum-ERC20-TONCOIN-0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1',
|
|
21
|
+
'moonbeam-ERC20-USDC.axl-0xCa01a1D0993565291051daFF390892518ACfAD3A': 'moonbeam-ERC20-axlUSDC-0xCa01a1D0993565291051daFF390892518ACfAD3A'
|
|
22
|
+
};
|
|
23
|
+
const allTxs = [];
|
|
24
|
+
await Promise.all(Object.entries(changeSlugsMap).map(async (_ref, i) => {
|
|
25
|
+
let [oldSlug, newSlug] = _ref;
|
|
26
|
+
const oldSlugSplit = oldSlug.split('-');
|
|
27
|
+
const oldChainSlug = oldSlugSplit[0];
|
|
28
|
+
const oldSymbolSlug = oldSlugSplit[2];
|
|
29
|
+
const newSlugSplit = newSlug.split('-');
|
|
30
|
+
const newSymbolSlug = newSlugSplit[2];
|
|
31
|
+
const filterTransactions = await state.dbService.stores.transaction.table.where({
|
|
32
|
+
chain: oldChainSlug
|
|
33
|
+
}).and(tx => {
|
|
34
|
+
var _tx$amount;
|
|
35
|
+
return ((_tx$amount = tx.amount) === null || _tx$amount === void 0 ? void 0 : _tx$amount.symbol) === oldSymbolSlug;
|
|
36
|
+
}).toArray();
|
|
37
|
+
if (filterTransactions.length > 0) {
|
|
38
|
+
for (const transaction of filterTransactions) {
|
|
39
|
+
if (transaction.amount && transaction.amount.symbol === oldSymbolSlug) {
|
|
40
|
+
transaction.amount.symbol = newSymbolSlug;
|
|
41
|
+
}
|
|
42
|
+
if (transaction.fee && transaction.fee.symbol === oldSymbolSlug) {
|
|
43
|
+
transaction.fee.symbol = newSymbolSlug;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
allTxs.push(...filterTransactions);
|
|
48
|
+
}));
|
|
49
|
+
await state.dbService.stores.transaction.table.bulkPut(allTxs);
|
|
50
|
+
} catch (e) {
|
|
51
|
+
this.logger.error(e);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.default = MigrateTransactionHistoryBySymbol20251223;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class MigrateAssetSetting20251223 extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
try {
|
|
15
|
+
const changeSlugsMap = {
|
|
16
|
+
'gnosis-NATIVE-xDAI': 'gnosis-NATIVE-XDAI',
|
|
17
|
+
'stable-ERC20-USD₮0-0x779Ded0c9e1022225f8E0630b35a9b54bE713736': 'stable-ERC20-USDT0-0x779Ded0c9e1022225f8E0630b35a9b54bE713736',
|
|
18
|
+
'polygon-ERC20-USD₮0-0xc2132D05D31c914a87C6611C10748AEb04B58e8F': 'polygon-ERC20-USDT0-0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
|
|
19
|
+
'ethereum-ERC20-TON-0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1': 'ethereum-ERC20-TONCOIN-0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1',
|
|
20
|
+
'moonbeam-ERC20-USDC.axl-0xCa01a1D0993565291051daFF390892518ACfAD3A': 'moonbeam-ERC20-axlUSDC-0xCa01a1D0993565291051daFF390892518ACfAD3A'
|
|
21
|
+
};
|
|
22
|
+
const assetSetting = await this.state.chainService.getAssetSettings();
|
|
23
|
+
const migratedAssetSetting = {};
|
|
24
|
+
for (const [oldSlug, newSlug] of Object.entries(changeSlugsMap)) {
|
|
25
|
+
if (Object.keys(assetSetting).includes(oldSlug)) {
|
|
26
|
+
const isVisible = assetSetting[oldSlug].visible;
|
|
27
|
+
migratedAssetSetting[newSlug] = {
|
|
28
|
+
visible: isVisible
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.state.chainService.setAssetSettings({
|
|
33
|
+
...assetSetting,
|
|
34
|
+
...migratedAssetSetting
|
|
35
|
+
});
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.default = MigrateAssetSetting20251223;
|
|
@@ -5,13 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.MYTHOS_MIGRATION_KEY = exports.EVERYTIME = void 0;
|
|
8
|
-
var _MigrateAssetSetting = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/databases/MigrateAssetSetting20251107"));
|
|
9
|
-
var _MigrateChainPatrol = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateChainPatrol"));
|
|
10
|
-
var _MigrateTransactionHistoryBySymbol = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251107"));
|
|
11
8
|
var _ClearMetadataDatabase = _interopRequireDefault(require("./databases/ClearMetadataDatabase"));
|
|
12
9
|
var _ClearMetadataForMythos = _interopRequireDefault(require("./databases/ClearMetadataForMythos"));
|
|
13
|
-
var
|
|
14
|
-
var
|
|
10
|
+
var _MigrateAssetSetting = _interopRequireDefault(require("./databases/MigrateAssetSetting"));
|
|
11
|
+
var _MigrateAssetSetting2 = _interopRequireDefault(require("./databases/MigrateAssetSetting20251027"));
|
|
12
|
+
var _MigrateAssetSetting3 = _interopRequireDefault(require("./databases/MigrateAssetSetting20251107"));
|
|
13
|
+
var _MigrateAssetSetting4 = _interopRequireDefault(require("./databases/MigrateAssetSetting20251223"));
|
|
15
14
|
var _MigrateEarningVersion = _interopRequireDefault(require("./databases/MigrateEarningVersion"));
|
|
16
15
|
var _ReloadMetadata = _interopRequireDefault(require("./databases/ReloadMetadata"));
|
|
17
16
|
var _MigrateLedgerAccount = _interopRequireDefault(require("./keyring/MigrateLedgerAccount"));
|
|
@@ -30,14 +29,17 @@ var _DeleteEarningData3 = _interopRequireDefault(require("./DeleteEarningData202
|
|
|
30
29
|
var _DisableZeroBalanceTokens = _interopRequireDefault(require("./DisableZeroBalanceTokens"));
|
|
31
30
|
var _EnableVaraChain = _interopRequireDefault(require("./EnableVaraChain"));
|
|
32
31
|
var _MigrateAuthUrls = _interopRequireDefault(require("./MigrateAuthUrls"));
|
|
32
|
+
var _MigrateChainPatrol = _interopRequireDefault(require("./MigrateChainPatrol"));
|
|
33
33
|
var _MigrateImportedToken = _interopRequireDefault(require("./MigrateImportedToken"));
|
|
34
34
|
var _MigrateNetworkSettings = _interopRequireDefault(require("./MigrateNetworkSettings"));
|
|
35
35
|
var _MigrateNewUnifiedAccount = _interopRequireDefault(require("./MigrateNewUnifiedAccount"));
|
|
36
36
|
var _MigrateTokenDecimals = _interopRequireDefault(require("./MigrateTokenDecimals"));
|
|
37
37
|
var _MigrateTransactionHistory = _interopRequireDefault(require("./MigrateTransactionHistory"));
|
|
38
38
|
var _MigrateTransactionHistoryBridge = _interopRequireDefault(require("./MigrateTransactionHistoryBridge"));
|
|
39
|
-
var
|
|
40
|
-
var
|
|
39
|
+
var _MigrateTransactionHistoryBySymbol = _interopRequireDefault(require("./MigrateTransactionHistoryBySymbol"));
|
|
40
|
+
var _MigrateTransactionHistoryBySymbol2 = _interopRequireDefault(require("./MigrateTransactionHistoryBySymbol20251027"));
|
|
41
|
+
var _MigrateTransactionHistoryBySymbol3 = _interopRequireDefault(require("./MigrateTransactionHistoryBySymbol20251107"));
|
|
42
|
+
var _MigrateTransactionHistoryBySymbol4 = _interopRequireDefault(require("./MigrateTransactionHistoryBySymbol20251223"));
|
|
41
43
|
var _MigrateWalletReference = _interopRequireDefault(require("./MigrateWalletReference"));
|
|
42
44
|
var _OptimizeEnableToken = _interopRequireDefault(require("./OptimizeEnableToken"));
|
|
43
45
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -71,8 +73,8 @@ var _default = {
|
|
|
71
73
|
'1.1.33-01': _MigrateLedgerAccountV.default,
|
|
72
74
|
'1.1.41-01': _DeleteChainStaking.default,
|
|
73
75
|
// '1.1.46-01': AutoEnableSomeTokens,
|
|
74
|
-
'1.3.55-01':
|
|
75
|
-
'1.3.55-02':
|
|
76
|
+
'1.3.55-01': _MigrateAssetSetting.default,
|
|
77
|
+
'1.3.55-02': _MigrateTransactionHistoryBySymbol.default,
|
|
76
78
|
'1.2.69-01': _MigrateRemoveGenesisHash.default,
|
|
77
79
|
'1.2.13-01': _ReloadMetadata.default,
|
|
78
80
|
'1.2.32-01': _MigratePairData.default,
|
|
@@ -86,10 +88,12 @@ var _default = {
|
|
|
86
88
|
'1.3.54-01': _MigrateChainPatrol.default,
|
|
87
89
|
'1.3.62-01': _DeleteEarningData2.default,
|
|
88
90
|
'1.3.58-01': _OptimizeEnableToken.default,
|
|
89
|
-
'1.3.64-01':
|
|
90
|
-
'1.3.64-02':
|
|
91
|
+
'1.3.64-01': _MigrateAssetSetting2.default,
|
|
92
|
+
'1.3.64-02': _MigrateTransactionHistoryBySymbol2.default,
|
|
91
93
|
'1.3.65-01': _DeleteEarningData3.default,
|
|
92
|
-
'1.3.66-01':
|
|
93
|
-
'1.3.66-02':
|
|
94
|
+
'1.3.66-01': _MigrateAssetSetting3.default,
|
|
95
|
+
'1.3.66-02': _MigrateTransactionHistoryBySymbol3.default,
|
|
96
|
+
'1.3.72-01': _MigrateAssetSetting4.default,
|
|
97
|
+
'1.3.72-02': _MigrateTransactionHistoryBySymbol4.default
|
|
94
98
|
};
|
|
95
99
|
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.txTypeToSubstrateProxyMap = void 0;
|
|
7
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
const SUBSTRATE_PROXY_ACCOUNT_EXTRINSIC_GROUPS = {
|
|
12
|
+
STAKING: [_KoniTypes.ExtrinsicType.STAKING_BOND, _KoniTypes.ExtrinsicType.STAKING_UNBOND, _KoniTypes.ExtrinsicType.STAKING_WITHDRAW, _KoniTypes.ExtrinsicType.STAKING_JOIN_POOL, _KoniTypes.ExtrinsicType.STAKING_LEAVE_POOL, _KoniTypes.ExtrinsicType.CHANGE_EARNING_VALIDATOR, _KoniTypes.ExtrinsicType.STAKING_CANCEL_UNSTAKE, _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD],
|
|
13
|
+
GOV: [_KoniTypes.ExtrinsicType.GOV_VOTE, _KoniTypes.ExtrinsicType.GOV_UNVOTE, _KoniTypes.ExtrinsicType.GOV_UNLOCK_VOTE],
|
|
14
|
+
PROXY: [
|
|
15
|
+
// only type any can add proxy
|
|
16
|
+
_KoniTypes.ExtrinsicType.REMOVE_SUBSTRATE_PROXY_ACCOUNT]
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// Map extrinsic type to possible substrate proxy types that can be used
|
|
20
|
+
// The governance proxy type will be support later
|
|
21
|
+
const txTypeToSubstrateProxyMap = {
|
|
22
|
+
...Object.fromEntries(SUBSTRATE_PROXY_ACCOUNT_EXTRINSIC_GROUPS.STAKING.map(t => [t, ['Staking', 'NonTransfer']])),
|
|
23
|
+
...Object.fromEntries(SUBSTRATE_PROXY_ACCOUNT_EXTRINSIC_GROUPS.GOV.map(t => [t, ['Governance', 'NonTransfer']])),
|
|
24
|
+
...Object.fromEntries(SUBSTRATE_PROXY_ACCOUNT_EXTRINSIC_GROUPS.PROXY.map(t => [t, ['NonTransfer']]))
|
|
25
|
+
};
|
|
26
|
+
exports.txTypeToSubstrateProxyMap = txTypeToSubstrateProxyMap;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
|
+
var _types = require("@subwallet/extension-base/types");
|
|
10
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
11
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
12
|
+
var _constant = require("./constant");
|
|
13
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
14
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
|
|
16
|
+
class SubstrateProxyAccountService {
|
|
17
|
+
constructor(state) {
|
|
18
|
+
this.state = state;
|
|
19
|
+
}
|
|
20
|
+
getSubstrateApi(chain) {
|
|
21
|
+
return this.state.getSubstrateApi(chain);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Get proxied accounts for a main account
|
|
25
|
+
// Get when view details or perform transaction
|
|
26
|
+
async getSubstrateProxyAccountGroup(request) {
|
|
27
|
+
var _substrateApi$api$con, _substrateApi$api$con2;
|
|
28
|
+
const {
|
|
29
|
+
address,
|
|
30
|
+
chain,
|
|
31
|
+
excludedSubstrateProxyAccounts,
|
|
32
|
+
type
|
|
33
|
+
} = request;
|
|
34
|
+
const substrateApi = this.getSubstrateApi(chain);
|
|
35
|
+
await substrateApi.isReady;
|
|
36
|
+
|
|
37
|
+
// Get proxied accounts from on-chain data
|
|
38
|
+
const result = await substrateApi.api.query.proxy.proxies(address);
|
|
39
|
+
const baseDeposit = ((_substrateApi$api$con = substrateApi.api.consts.proxy.proxyDepositBase) === null || _substrateApi$api$con === void 0 ? void 0 : _substrateApi$api$con.toString()) || '0';
|
|
40
|
+
const factorDeposit = ((_substrateApi$api$con2 = substrateApi.api.consts.proxy.proxyDepositFactor) === null || _substrateApi$api$con2 === void 0 ? void 0 : _substrateApi$api$con2.toString()) || '0';
|
|
41
|
+
const deposit = new _bignumber.default(baseDeposit).plus(factorDeposit);
|
|
42
|
+
const [_substrateProxyAccounts, currentSubstrateProxyDeposit] = result.toPrimitive();
|
|
43
|
+
|
|
44
|
+
// Mapping on-chain data to our defined type
|
|
45
|
+
let substrateProxyAccounts = (_substrateProxyAccounts || []).map(account => {
|
|
46
|
+
const proxyId = this.state.keyringService.context.belongUnifiedAccount(account.delegate) || (0, _utils.reformatAddress)(account.delegate);
|
|
47
|
+
return {
|
|
48
|
+
substrateProxyAddress: account.delegate,
|
|
49
|
+
substrateProxyType: account.proxyType,
|
|
50
|
+
delay: account.delay,
|
|
51
|
+
proxyId
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
if (type) {
|
|
55
|
+
const allowedSet = new Set([...(_constant.txTypeToSubstrateProxyMap[type] || []), 'Any']);
|
|
56
|
+
substrateProxyAccounts = substrateProxyAccounts.filter(p => allowedSet.has(p.substrateProxyType));
|
|
57
|
+
}
|
|
58
|
+
if (excludedSubstrateProxyAccounts && excludedSubstrateProxyAccounts.length > 0) {
|
|
59
|
+
substrateProxyAccounts = substrateProxyAccounts.filter(p => {
|
|
60
|
+
return !excludedSubstrateProxyAccounts.some(excluded => excluded.address === p.substrateProxyAddress && excluded.substrateProxyType === p.substrateProxyType);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const estimateSubstrateProxyDeposit = new _bignumber.default(currentSubstrateProxyDeposit).plus(factorDeposit);
|
|
64
|
+
return {
|
|
65
|
+
substrateProxyAccounts,
|
|
66
|
+
substrateProxyDeposit: new _bignumber.default(currentSubstrateProxyDeposit).gt(0) ? estimateSubstrateProxyDeposit.toFixed() : deposit.toFixed()
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Linking proxy account with main account
|
|
71
|
+
async addSubstrateProxyAccounts(data) {
|
|
72
|
+
const {
|
|
73
|
+
address,
|
|
74
|
+
chain,
|
|
75
|
+
substrateProxyAddress,
|
|
76
|
+
substrateProxyType
|
|
77
|
+
} = data;
|
|
78
|
+
if (address === substrateProxyAddress) {
|
|
79
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS));
|
|
80
|
+
}
|
|
81
|
+
const substrateApi = this.getSubstrateApi(chain);
|
|
82
|
+
await substrateApi.isReady;
|
|
83
|
+
|
|
84
|
+
// Currently we not support delay time
|
|
85
|
+
return substrateApi.api.tx.proxy.addProxy(substrateProxyAddress, substrateProxyType, 0);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Validate adding proxy account
|
|
89
|
+
async validateAddSubstrateProxyAccount(params, signerSubstrateProxyAddress) {
|
|
90
|
+
var _substrateApi$api$con3, _substrateApi$api$con4, _substrateApi$api$con5, _substrateApi$api$con6;
|
|
91
|
+
const {
|
|
92
|
+
address,
|
|
93
|
+
chain,
|
|
94
|
+
substrateProxyType
|
|
95
|
+
} = params;
|
|
96
|
+
const substrateApi = this.getSubstrateApi(chain);
|
|
97
|
+
await substrateApi.isReady;
|
|
98
|
+
const addProxyTx = substrateApi.api.tx.proxy.addProxy;
|
|
99
|
+
const proxyTypeArg = addProxyTx.meta.args.find(arg => arg.name.toString() === 'proxyType');
|
|
100
|
+
if (proxyTypeArg) {
|
|
101
|
+
const typeName = proxyTypeArg.type.toString();
|
|
102
|
+
const proxyTypeEnum = substrateApi.api.registry.createType(typeName);
|
|
103
|
+
const variants = proxyTypeEnum.defKeys;
|
|
104
|
+
if (!variants.includes(substrateProxyType)) {
|
|
105
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, 'This proxy type is not supported on the chosen network. Select another one and try again')];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!substrateApi.api.tx.proxy || !substrateApi.api.tx.proxy.addProxy) {
|
|
109
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED)];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Validate max proxies accounts limit
|
|
113
|
+
const maxSubstrateProxies = ((_substrateApi$api$con3 = substrateApi.api.consts.proxy.maxProxies) === null || _substrateApi$api$con3 === void 0 ? void 0 : (_substrateApi$api$con4 = _substrateApi$api$con3.toNumber) === null || _substrateApi$api$con4 === void 0 ? void 0 : _substrateApi$api$con4.call(_substrateApi$api$con3)) || 0;
|
|
114
|
+
const currentProxiesRaw = await substrateApi.api.query.proxy.proxies(address);
|
|
115
|
+
const [proxyList] = currentProxiesRaw.toPrimitive();
|
|
116
|
+
if (proxyList.length >= maxSubstrateProxies) {
|
|
117
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, `Maximum number of proxies reached: ${maxSubstrateProxies}`)];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Ensure enough balance for deposit + fee
|
|
121
|
+
const transferableBalance = await this.state.balanceService.getTransferableBalance(address, chain);
|
|
122
|
+
const bnTransferableBalance = new _bignumber.default(transferableBalance.value);
|
|
123
|
+
const feeInfo = await substrateApi.api.tx.proxy.addProxy(params.substrateProxyAddress, params.substrateProxyType, 0).paymentInfo(address);
|
|
124
|
+
const estimatedFee = new _bignumber.default(feeInfo.partialFee.toString());
|
|
125
|
+
const baseDeposit = ((_substrateApi$api$con5 = substrateApi.api.consts.proxy.proxyDepositBase) === null || _substrateApi$api$con5 === void 0 ? void 0 : _substrateApi$api$con5.toString()) || '0';
|
|
126
|
+
const factorDeposit = ((_substrateApi$api$con6 = substrateApi.api.consts.proxy.proxyDepositFactor) === null || _substrateApi$api$con6 === void 0 ? void 0 : _substrateApi$api$con6.toString()) || '0';
|
|
127
|
+
const requiredDeposit = proxyList.length === 0 ? new _bignumber.default(baseDeposit).plus(factorDeposit) : new _bignumber.default(factorDeposit);
|
|
128
|
+
const totalRequired = new _bignumber.default(requiredDeposit).plus(!signerSubstrateProxyAddress ? estimatedFee : 0);
|
|
129
|
+
if (bnTransferableBalance.lt(totalRequired)) {
|
|
130
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE)];
|
|
131
|
+
}
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Removing linked proxy accounts from main account
|
|
136
|
+
async removeSubstrateProxyAccounts(data) {
|
|
137
|
+
const {
|
|
138
|
+
chain,
|
|
139
|
+
isRemoveAll,
|
|
140
|
+
selectedSubstrateProxyAccounts
|
|
141
|
+
} = data;
|
|
142
|
+
const substrateApi = this.getSubstrateApi(chain);
|
|
143
|
+
await substrateApi.isReady;
|
|
144
|
+
const api = substrateApi.api;
|
|
145
|
+
if (isRemoveAll) {
|
|
146
|
+
return api.tx.proxy.removeProxies();
|
|
147
|
+
}
|
|
148
|
+
if (!selectedSubstrateProxyAccounts.length) {
|
|
149
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS));
|
|
150
|
+
}
|
|
151
|
+
if (selectedSubstrateProxyAccounts.length === 1) {
|
|
152
|
+
const {
|
|
153
|
+
delay,
|
|
154
|
+
substrateProxyAddress,
|
|
155
|
+
substrateProxyType
|
|
156
|
+
} = selectedSubstrateProxyAccounts[0];
|
|
157
|
+
return api.tx.proxy.removeProxy(substrateProxyAddress, substrateProxyType, delay);
|
|
158
|
+
}
|
|
159
|
+
const removeProxies = selectedSubstrateProxyAccounts.map(_ref => {
|
|
160
|
+
let {
|
|
161
|
+
delay,
|
|
162
|
+
substrateProxyAddress,
|
|
163
|
+
substrateProxyType
|
|
164
|
+
} = _ref;
|
|
165
|
+
return api.tx.proxy.removeProxy(substrateProxyAddress, substrateProxyType, delay);
|
|
166
|
+
});
|
|
167
|
+
return api.tx.utility.batchAll(removeProxies);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.default = SubstrateProxyAccountService;
|