@subwallet/extension-base 1.3.54-0 → 1.3.55-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/errors/BalanceError.js +4 -4
- package/background/errors/BitcoinProviderError.js +7 -7
- package/background/errors/EvmProviderError.js +8 -8
- package/background/errors/ProviderError.js +6 -5
- package/background/errors/SwapError.js +14 -13
- package/background/errors/TransactionError.js +22 -22
- package/background/warnings/TransactionWarning.js +2 -2
- package/cjs/background/errors/BalanceError.js +4 -4
- package/cjs/background/errors/BitcoinProviderError.js +7 -7
- package/cjs/background/errors/EvmProviderError.js +8 -8
- package/cjs/background/errors/ProviderError.js +6 -5
- package/cjs/background/errors/SwapError.js +14 -13
- package/cjs/background/errors/TransactionError.js +22 -22
- package/cjs/background/warnings/TransactionWarning.js +2 -2
- package/cjs/core/logic-validation/index.js +15 -3
- package/cjs/core/logic-validation/request.js +37 -37
- package/cjs/core/logic-validation/transfer.js +21 -17
- package/cjs/koni/api/dotsama/parseTransaction.js +1 -1
- package/cjs/koni/api/staking/bonding/relayChain.js +1 -1
- package/cjs/koni/api/staking/bonding/utils.js +16 -16
- package/cjs/koni/api/staking/paraChain.js +1 -1
- package/cjs/koni/background/handlers/Extension.js +28 -26
- package/cjs/koni/background/handlers/State.js +19 -14
- package/cjs/koni/background/handlers/Tabs.js +23 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/index.js +3 -3
- package/cjs/services/balance-service/transfer/smart-contract.js +1 -1
- package/cjs/services/balance-service/transfer/xcm/index.js +7 -1
- package/cjs/services/balance-service/transfer/xcm/utils.js +24 -18
- package/cjs/services/chain-service/constants.js +2 -2
- package/cjs/services/chain-service/handler/types.js +1 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +1 -2
- package/cjs/services/earning-service/handlers/base.js +2 -1
- package/cjs/services/earning-service/handlers/lending/base.js +3 -3
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +3 -3
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/tao.js +26 -6
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/cjs/services/earning-service/handlers/special.js +12 -9
- package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
- package/cjs/services/keyring-service/context/handlers/Json.js +11 -11
- package/cjs/services/keyring-service/context/handlers/Ledger.js +3 -3
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +10 -10
- package/cjs/services/keyring-service/context/handlers/Modify.js +3 -3
- package/cjs/services/keyring-service/context/handlers/Secret.js +7 -7
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
- package/cjs/services/migration-service/scripts/index.js +3 -3
- package/cjs/services/request-service/handler/BitcoinRequestHandler.js +1 -1
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +2 -2
- package/cjs/services/request-service/handler/EvmRequestHandler.js +5 -5
- package/cjs/services/request-service/handler/TonRequestHandler.js +2 -2
- package/cjs/services/setting-service/i18n/extend.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +123 -11
- package/cjs/services/swap-service/index.js +1 -1
- package/cjs/services/transaction-service/index.js +12 -12
- package/cjs/services/transaction-service/utils.js +4 -1
- package/cjs/types/account/error/common.js +5 -4
- package/cjs/types/account/error/derive.js +8 -7
- package/cjs/utils/account/derive/info/solo.js +2 -2
- package/cjs/utils/eth/parseTransaction/index.js +1 -1
- package/cjs/utils/fee/transfer.js +8 -3
- package/cjs/utils/index.js +1 -1
- package/core/logic-validation/index.js +15 -3
- package/core/logic-validation/request.js +37 -37
- package/core/logic-validation/transfer.js +21 -17
- package/koni/api/dotsama/parseTransaction.js +1 -1
- package/koni/api/staking/bonding/relayChain.js +1 -1
- package/koni/api/staking/bonding/utils.js +16 -16
- package/koni/api/staking/paraChain.js +1 -1
- package/koni/background/handlers/Extension.js +28 -26
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +19 -14
- package/koni/background/handlers/Tabs.js +23 -1
- package/package.json +6 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/index.js +3 -3
- package/services/balance-service/transfer/smart-contract.js +1 -1
- package/services/balance-service/transfer/xcm/index.js +7 -1
- package/services/balance-service/transfer/xcm/utils.d.ts +6 -0
- package/services/balance-service/transfer/xcm/utils.js +24 -18
- package/services/chain-service/constants.js +2 -2
- package/services/chain-service/handler/types.d.ts +2 -1
- package/services/chain-service/handler/types.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/constants/chains.d.ts +0 -1
- package/services/earning-service/constants/chains.js +1 -2
- package/services/earning-service/handlers/base.js +3 -2
- package/services/earning-service/handlers/lending/base.js +3 -3
- package/services/earning-service/handlers/liquid-staking/base.js +3 -3
- package/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/services/earning-service/handlers/native-staking/base-para.js +1 -1
- package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/services/earning-service/handlers/native-staking/tao.js +26 -6
- package/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/services/earning-service/handlers/special.js +12 -9
- package/services/keyring-service/context/handlers/Derive.js +1 -1
- package/services/keyring-service/context/handlers/Json.js +11 -11
- package/services/keyring-service/context/handlers/Ledger.js +3 -3
- package/services/keyring-service/context/handlers/Mnemonic.js +10 -10
- package/services/keyring-service/context/handlers/Modify.js +3 -3
- package/services/keyring-service/context/handlers/Secret.js +7 -7
- package/services/migration-service/scripts/DeleteEarningData.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
- package/services/migration-service/scripts/index.js +3 -3
- package/services/request-service/handler/BitcoinRequestHandler.js +1 -1
- package/services/request-service/handler/CardanoRequestHandler.js +2 -2
- package/services/request-service/handler/EvmRequestHandler.js +5 -5
- package/services/request-service/handler/TonRequestHandler.js +2 -2
- package/services/setting-service/i18n/extend.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +2 -1
- package/services/swap-service/handler/base-handler.js +124 -12
- package/services/swap-service/index.js +1 -1
- package/services/transaction-service/index.js +12 -12
- package/services/transaction-service/utils.js +4 -1
- package/types/account/error/common.js +5 -4
- package/types/account/error/derive.js +8 -7
- package/types/balance/transfer.d.ts +1 -0
- package/utils/account/derive/info/solo.js +2 -2
- package/utils/eth/parseTransaction/index.js +1 -1
- package/utils/fee/transfer.d.ts +3 -1
- package/utils/fee/transfer.js +5 -1
- package/utils/index.js +1 -1
|
@@ -139,7 +139,7 @@ export default class KoniExtension {
|
|
|
139
139
|
id
|
|
140
140
|
}) {
|
|
141
141
|
const queued = this.#koniState.getMetaRequest(id);
|
|
142
|
-
assert(queued, t('
|
|
142
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
143
143
|
const {
|
|
144
144
|
request,
|
|
145
145
|
resolve
|
|
@@ -158,7 +158,7 @@ export default class KoniExtension {
|
|
|
158
158
|
id
|
|
159
159
|
}) {
|
|
160
160
|
const queued = this.#koniState.getMetaRequest(id);
|
|
161
|
-
assert(queued, t('
|
|
161
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
162
162
|
const {
|
|
163
163
|
reject
|
|
164
164
|
} = queued;
|
|
@@ -182,7 +182,7 @@ export default class KoniExtension {
|
|
|
182
182
|
signedTransaction
|
|
183
183
|
}) {
|
|
184
184
|
const queued = this.#koniState.getSignRequest(id);
|
|
185
|
-
assert(queued, t('
|
|
185
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
186
186
|
const {
|
|
187
187
|
resolve
|
|
188
188
|
} = queued;
|
|
@@ -199,7 +199,7 @@ export default class KoniExtension {
|
|
|
199
199
|
id
|
|
200
200
|
}) {
|
|
201
201
|
const queued = this.#koniState.getSignRequest(id);
|
|
202
|
-
assert(queued, t('
|
|
202
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
203
203
|
const {
|
|
204
204
|
reject
|
|
205
205
|
} = queued;
|
|
@@ -427,7 +427,7 @@ export default class KoniExtension {
|
|
|
427
427
|
};
|
|
428
428
|
}
|
|
429
429
|
} else {
|
|
430
|
-
throw Error(t('
|
|
430
|
+
throw Error(t('bg.koni.handler.Extension.thisIsNotAnAddress'));
|
|
431
431
|
}
|
|
432
432
|
}
|
|
433
433
|
|
|
@@ -443,7 +443,7 @@ export default class KoniExtension {
|
|
|
443
443
|
keyring.saveAddress(_address, meta);
|
|
444
444
|
return true;
|
|
445
445
|
} else {
|
|
446
|
-
throw Error(t('
|
|
446
|
+
throw Error(t('bg.koni.handler.Extension.thisIsNotAnAddress'));
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
|
|
@@ -458,7 +458,7 @@ export default class KoniExtension {
|
|
|
458
458
|
keyring.forgetAddress(_address);
|
|
459
459
|
return true;
|
|
460
460
|
} else {
|
|
461
|
-
throw Error(t('
|
|
461
|
+
throw Error(t('bg.koni.handler.Extension.thisIsNotAnAddress'));
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
_getAuthListV2() {
|
|
@@ -506,7 +506,7 @@ export default class KoniExtension {
|
|
|
506
506
|
id
|
|
507
507
|
}) {
|
|
508
508
|
const queued = this.#koniState.getAuthRequestV2(id);
|
|
509
|
-
assert(queued, t('
|
|
509
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
510
510
|
const {
|
|
511
511
|
resolve
|
|
512
512
|
} = queued;
|
|
@@ -520,7 +520,7 @@ export default class KoniExtension {
|
|
|
520
520
|
id
|
|
521
521
|
}) {
|
|
522
522
|
const queued = this.#koniState.getAuthRequestV2(id);
|
|
523
|
-
assert(queued, t('
|
|
523
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
524
524
|
const {
|
|
525
525
|
reject
|
|
526
526
|
} = queued;
|
|
@@ -531,7 +531,7 @@ export default class KoniExtension {
|
|
|
531
531
|
id
|
|
532
532
|
}) {
|
|
533
533
|
const queued = this.#koniState.getAuthRequestV2(id);
|
|
534
|
-
assert(queued, t('
|
|
534
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
535
535
|
const {
|
|
536
536
|
reject
|
|
537
537
|
} = queued;
|
|
@@ -696,7 +696,7 @@ export default class KoniExtension {
|
|
|
696
696
|
};
|
|
697
697
|
const typeInfoKey = typeInfoMap[authSwitchNetworkType];
|
|
698
698
|
if (!typeInfoKey || !chainInfo[typeInfoKey]) {
|
|
699
|
-
throw new Error(t('
|
|
699
|
+
throw new Error(t('bg.koni.handler.Extension.networkNotAuthType', {
|
|
700
700
|
replace: {
|
|
701
701
|
networkKey,
|
|
702
702
|
authSwitchNetworkType
|
|
@@ -705,7 +705,7 @@ export default class KoniExtension {
|
|
|
705
705
|
}
|
|
706
706
|
const authUrl = authUrls[url];
|
|
707
707
|
if (!authUrl) {
|
|
708
|
-
throw new Error(t('
|
|
708
|
+
throw new Error(t('bg.koni.handler.Extension.urlNotFoundInAuthList', {
|
|
709
709
|
replace: {
|
|
710
710
|
url
|
|
711
711
|
}
|
|
@@ -718,7 +718,7 @@ export default class KoniExtension {
|
|
|
718
718
|
});
|
|
719
719
|
}
|
|
720
720
|
if (!authUrl.accountAuthTypes.includes(authSwitchNetworkType)) {
|
|
721
|
-
throw new Error(t('
|
|
721
|
+
throw new Error(t('bg.koni.handler.Extension.networkNotSupportedByAuthType', {
|
|
722
722
|
replace: {
|
|
723
723
|
networkKey,
|
|
724
724
|
authSwitchNetworkType
|
|
@@ -1400,7 +1400,7 @@ export default class KoniExtension {
|
|
|
1400
1400
|
} catch (e) {
|
|
1401
1401
|
const error = e;
|
|
1402
1402
|
if (error.message.includes('transfer amount exceeds balance')) {
|
|
1403
|
-
error.message = t('
|
|
1403
|
+
error.message = t('bg.koni.handler.Extension.insufficientBalance');
|
|
1404
1404
|
}
|
|
1405
1405
|
throw error;
|
|
1406
1406
|
}
|
|
@@ -1756,7 +1756,7 @@ export default class KoniExtension {
|
|
|
1756
1756
|
} catch (e) {
|
|
1757
1757
|
const error = e;
|
|
1758
1758
|
if (error.message.includes('transfer amount exceeds balance')) {
|
|
1759
|
-
error.message = t('
|
|
1759
|
+
error.message = t('bg.koni.handler.Extension.insufficientBalance');
|
|
1760
1760
|
}
|
|
1761
1761
|
throw error;
|
|
1762
1762
|
}
|
|
@@ -1852,7 +1852,7 @@ export default class KoniExtension {
|
|
|
1852
1852
|
token: tokenSlug
|
|
1853
1853
|
});
|
|
1854
1854
|
if (new BigN(freeBalance.value).lt(inputAmount)) {
|
|
1855
|
-
throw new Error(t('
|
|
1855
|
+
throw new Error(t('bg.koni.handler.Extension.insufficientBalance'));
|
|
1856
1856
|
}
|
|
1857
1857
|
const transferNativeAmount = isTransferNativeToken ? transferAmount.value : '0';
|
|
1858
1858
|
return this.#koniState.transactionService.handleTransactionAfterConfirmation({
|
|
@@ -2115,6 +2115,7 @@ export default class KoniExtension {
|
|
|
2115
2115
|
to,
|
|
2116
2116
|
token,
|
|
2117
2117
|
tokenPayFeeSlug,
|
|
2118
|
+
transferAll,
|
|
2118
2119
|
value
|
|
2119
2120
|
} = request;
|
|
2120
2121
|
const cb = createSubscription(id, port);
|
|
@@ -2151,7 +2152,8 @@ export default class KoniExtension {
|
|
|
2151
2152
|
bitcoinApi: this.#koniState.chainService.getBitcoinApi(chain),
|
|
2152
2153
|
isTransferLocalTokenAndPayThatTokenAsFee,
|
|
2153
2154
|
isTransferNativeTokenAndPayLocalTokenAsFee,
|
|
2154
|
-
nativeToken
|
|
2155
|
+
nativeToken,
|
|
2156
|
+
transferAll: transferAll
|
|
2155
2157
|
};
|
|
2156
2158
|
const subscription = combineLatest({
|
|
2157
2159
|
freeBalance: freeBalanceSubject,
|
|
@@ -2548,7 +2550,7 @@ export default class KoniExtension {
|
|
|
2548
2550
|
networkKey
|
|
2549
2551
|
}) {
|
|
2550
2552
|
const pair = keyring.getPair(address);
|
|
2551
|
-
assert(pair, t('
|
|
2553
|
+
assert(pair, t('bg.koni.handler.Extension.unableToFindAccount'));
|
|
2552
2554
|
if (pair.isLocked) {
|
|
2553
2555
|
keyring.unlockPair(pair.address);
|
|
2554
2556
|
}
|
|
@@ -2572,11 +2574,11 @@ export default class KoniExtension {
|
|
|
2572
2574
|
let signed;
|
|
2573
2575
|
const network = this.getNetworkJsonByChainId(chainId);
|
|
2574
2576
|
if (!network) {
|
|
2575
|
-
throw new Error(t('
|
|
2577
|
+
throw new Error(t('bg.koni.handler.Extension.cannotFindNetwork'));
|
|
2576
2578
|
}
|
|
2577
2579
|
const pair = keyring.getPair(address);
|
|
2578
2580
|
if (!pair) {
|
|
2579
|
-
throw Error(t('
|
|
2581
|
+
throw Error(t('bg.koni.handler.Extension.unableToFindAccount'));
|
|
2580
2582
|
}
|
|
2581
2583
|
if (pair.isLocked) {
|
|
2582
2584
|
keyring.unlockPair(pair.address);
|
|
@@ -2593,7 +2595,7 @@ export default class KoniExtension {
|
|
|
2593
2595
|
var _signedTranaction$r, _signedTranaction$s, _signedTranaction$v;
|
|
2594
2596
|
const tx = createTransactionFromRLP(message);
|
|
2595
2597
|
if (!tx) {
|
|
2596
|
-
throw new Error(t('
|
|
2598
|
+
throw new Error(t('bg.koni.handler.Extension.failedToDecodeQr'));
|
|
2597
2599
|
}
|
|
2598
2600
|
const txObject = {
|
|
2599
2601
|
gasPrice: new BigN(tx.gasPrice).toNumber(),
|
|
@@ -2682,7 +2684,7 @@ export default class KoniExtension {
|
|
|
2682
2684
|
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
2683
2685
|
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2684
2686
|
if (!chainStakingMetadata) {
|
|
2685
|
-
const errMessage = t('
|
|
2687
|
+
const errMessage = t('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
|
|
2686
2688
|
replace: {
|
|
2687
2689
|
chainName: chainInfo.name
|
|
2688
2690
|
}
|
|
@@ -2789,7 +2791,7 @@ export default class KoniExtension {
|
|
|
2789
2791
|
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
2790
2792
|
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2791
2793
|
if (!chainStakingMetadata) {
|
|
2792
|
-
const errMessage = t('
|
|
2794
|
+
const errMessage = t('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
|
|
2793
2795
|
replace: {
|
|
2794
2796
|
chainName: chainInfo.name
|
|
2795
2797
|
}
|
|
@@ -2821,7 +2823,7 @@ export default class KoniExtension {
|
|
|
2821
2823
|
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2822
2824
|
if (!chainStakingMetadata || !nominatorMetadata) {
|
|
2823
2825
|
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
2824
|
-
const errMessage = t('
|
|
2826
|
+
const errMessage = t('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
|
|
2825
2827
|
replace: {
|
|
2826
2828
|
chainName: chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.name
|
|
2827
2829
|
}
|
|
@@ -3017,7 +3019,7 @@ export default class KoniExtension {
|
|
|
3017
3019
|
id
|
|
3018
3020
|
}) {
|
|
3019
3021
|
const queued = this.#koniState.getSignRequest(id);
|
|
3020
|
-
assert(queued, t('
|
|
3022
|
+
assert(queued, t('bg.koni.handler.Extension.unableToProceed'));
|
|
3021
3023
|
const {
|
|
3022
3024
|
reject,
|
|
3023
3025
|
request,
|
|
@@ -3032,7 +3034,7 @@ export default class KoniExtension {
|
|
|
3032
3034
|
address
|
|
3033
3035
|
} = pair;
|
|
3034
3036
|
if (!pair) {
|
|
3035
|
-
reject(new Error(t('
|
|
3037
|
+
reject(new Error(t('bg.koni.handler.Extension.unableToFindAccount')));
|
|
3036
3038
|
return false;
|
|
3037
3039
|
}
|
|
3038
3040
|
if (pair.isLocked) {
|
|
@@ -143,6 +143,7 @@ export default class KoniState {
|
|
|
143
143
|
subscribeStakingReward(): Subject<StakingRewardJson>;
|
|
144
144
|
switchEvmNetworkByUrl(shortenUrl: string, networkKey: string): Promise<void>;
|
|
145
145
|
addNetworkConfirm(id: string, url: string, networkData: _NetworkUpsertParams): Promise<null>;
|
|
146
|
+
showUnsupportedNetworkSwitchConfirm(id: string, url: string, networkData: _NetworkUpsertParams): Promise<never>;
|
|
146
147
|
addTokenConfirm(id: string, url: string, tokenInfo: AddTokenRequestExternal): Promise<true>;
|
|
147
148
|
get metaSubject(): BehaviorSubject<import("@subwallet/extension-base/background/types").MetadataRequest[]>;
|
|
148
149
|
get signSubject(): BehaviorSubject<import("@subwallet/extension-base/background/types").SigningRequest[]>;
|
|
@@ -444,7 +444,7 @@ export default class KoniState {
|
|
|
444
444
|
authUrls[shortenUrl].currentNetworkMap.evm = networkKey;
|
|
445
445
|
this.setAuthorize(authUrls);
|
|
446
446
|
} else {
|
|
447
|
-
throw new EvmProviderError(EvmProviderErrorType.INTERNAL_ERROR, t('
|
|
447
|
+
throw new EvmProviderError(EvmProviderErrorType.INTERNAL_ERROR, t('bg.koni.handler.State.shortUrlNotFoundInAuthList', {
|
|
448
448
|
replace: {
|
|
449
449
|
shortenUrl
|
|
450
450
|
}
|
|
@@ -467,6 +467,11 @@ export default class KoniState {
|
|
|
467
467
|
}
|
|
468
468
|
});
|
|
469
469
|
}
|
|
470
|
+
async showUnsupportedNetworkSwitchConfirm(id, url, networkData) {
|
|
471
|
+
return this.requestService.addConfirmation(id, url, 'addNetworkRequest', networkData).then(() => {
|
|
472
|
+
throw new EvmProviderError(EvmProviderErrorType.NETWORK_NOT_SUPPORTED, 'This network is currently not supported');
|
|
473
|
+
});
|
|
474
|
+
}
|
|
470
475
|
async addTokenConfirm(id, url, tokenInfo) {
|
|
471
476
|
return this.requestService.addConfirmation(id, url, 'addTokenRequest', tokenInfo).then(async ({
|
|
472
477
|
isApproved
|
|
@@ -913,7 +918,7 @@ export default class KoniState {
|
|
|
913
918
|
if (payload) {
|
|
914
919
|
return payload;
|
|
915
920
|
} else {
|
|
916
|
-
throw new EvmProviderError(EvmProviderErrorType.INVALID_PARAMS, t('
|
|
921
|
+
throw new EvmProviderError(EvmProviderErrorType.INVALID_PARAMS, t('bg.koni.handler.State.notFoundSignature'));
|
|
917
922
|
}
|
|
918
923
|
} else {
|
|
919
924
|
throw new EvmProviderError(EvmProviderErrorType.USER_REJECTED_REQUEST);
|
|
@@ -1072,7 +1077,7 @@ export default class KoniState {
|
|
|
1072
1077
|
if (payload) {
|
|
1073
1078
|
return payload;
|
|
1074
1079
|
} else {
|
|
1075
|
-
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('
|
|
1080
|
+
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('bg.koni.handler.State.notFoundSignature'));
|
|
1076
1081
|
}
|
|
1077
1082
|
} else {
|
|
1078
1083
|
throw new CardanoProviderError(CardanoProviderErrorType.SIGN_DATA_DECLINED);
|
|
@@ -1093,7 +1098,7 @@ export default class KoniState {
|
|
|
1093
1098
|
const authInfoMap = await this.getAuthList();
|
|
1094
1099
|
const authInfo = authInfoMap[stripUrl(url)];
|
|
1095
1100
|
if (!authInfo) {
|
|
1096
|
-
throw new CardanoProviderError(CardanoProviderErrorType.REFUSED_REQUEST, t('
|
|
1101
|
+
throw new CardanoProviderError(CardanoProviderErrorType.REFUSED_REQUEST, t('bg.koni.handler.State.notFoundAuthInfo'));
|
|
1097
1102
|
}
|
|
1098
1103
|
let requireKeyHashes = [];
|
|
1099
1104
|
let networkKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap.cardano;
|
|
@@ -1145,7 +1150,7 @@ export default class KoniState {
|
|
|
1145
1150
|
};
|
|
1146
1151
|
if (isSameAddress(currentAddress, address)) {
|
|
1147
1152
|
if (!validateAddressNetwork(address, currentCardanoNetwork)) {
|
|
1148
|
-
throw new CardanoProviderError(CardanoProviderErrorType.ACCOUNT_CHANGED, t('
|
|
1153
|
+
throw new CardanoProviderError(CardanoProviderErrorType.ACCOUNT_CHANGED, t('bg.koni.handler.State.currentNetworkIsChanged'));
|
|
1149
1154
|
}
|
|
1150
1155
|
transactionValue = transactionValue.checked_add(amount);
|
|
1151
1156
|
addressInputAmountMap[address].isOwner = true;
|
|
@@ -1154,12 +1159,12 @@ export default class KoniState {
|
|
|
1154
1159
|
|
|
1155
1160
|
// Check if address is valid with current network
|
|
1156
1161
|
if (!validateAddressNetwork(address, currentCardanoNetwork)) {
|
|
1157
|
-
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('
|
|
1162
|
+
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('bg.koni.handler.State.networkNotMatchInputAddress'));
|
|
1158
1163
|
}
|
|
1159
1164
|
}
|
|
1160
1165
|
for (const address in addressOutputMap) {
|
|
1161
1166
|
if (!validateAddressNetwork(address, currentCardanoNetwork)) {
|
|
1162
|
-
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('
|
|
1167
|
+
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('bg.koni.handler.State.networkNotMatchOutputAddress'));
|
|
1163
1168
|
}
|
|
1164
1169
|
if (!addressInputAmountMap[address] && !addressOutputMap[address].is_zero()) {
|
|
1165
1170
|
addressOutputAmountMap[address] = {
|
|
@@ -1204,7 +1209,7 @@ export default class KoniState {
|
|
|
1204
1209
|
return false;
|
|
1205
1210
|
});
|
|
1206
1211
|
if (!needOwnerKeyHash) {
|
|
1207
|
-
throw new CardanoProviderError(CardanoProviderErrorType.PROOF_GENERATION_FAILED, t('
|
|
1212
|
+
throw new CardanoProviderError(CardanoProviderErrorType.PROOF_GENERATION_FAILED, t('bg.koni.handler.State.notFoundOwnerKeyHash'));
|
|
1208
1213
|
}
|
|
1209
1214
|
if (needForeignKeyHash && !partialSign) {
|
|
1210
1215
|
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, 'Not support foreign key hash yet');
|
|
@@ -1228,7 +1233,7 @@ export default class KoniState {
|
|
|
1228
1233
|
if (payload) {
|
|
1229
1234
|
return payload;
|
|
1230
1235
|
} else {
|
|
1231
|
-
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('
|
|
1236
|
+
throw new CardanoProviderError(CardanoProviderErrorType.INVALID_REQUEST, t('bg.koni.handler.State.notFoundSignature'));
|
|
1232
1237
|
}
|
|
1233
1238
|
} else {
|
|
1234
1239
|
throw new CardanoProviderError(CardanoProviderErrorType.SIGN_TRANSACTION_DECLINED);
|
|
@@ -1275,7 +1280,7 @@ export default class KoniState {
|
|
|
1275
1280
|
if (payload) {
|
|
1276
1281
|
return payload;
|
|
1277
1282
|
} else {
|
|
1278
|
-
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('
|
|
1283
|
+
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('bg.koni.handler.State.notFoundSignature'));
|
|
1279
1284
|
}
|
|
1280
1285
|
} else {
|
|
1281
1286
|
throw new BitcoinProviderError(BitcoinProviderErrorType.USER_REJECTED_REQUEST);
|
|
@@ -1342,8 +1347,8 @@ export default class KoniState {
|
|
|
1342
1347
|
}, []);
|
|
1343
1348
|
if (new BigN(totalBalance.value).lt(inputAmount)) {
|
|
1344
1349
|
payloadAfterValidated.errors = [{
|
|
1345
|
-
message: t('
|
|
1346
|
-
name: t('
|
|
1350
|
+
message: t('bg.koni.handler.State.insufficientBalance'),
|
|
1351
|
+
name: t('bg.koni.handler.State.unableToSignTransaction')
|
|
1347
1352
|
}];
|
|
1348
1353
|
}
|
|
1349
1354
|
const psbtOutputData = psbtGenerate.txOutputs.map(output => {
|
|
@@ -1383,7 +1388,7 @@ export default class KoniState {
|
|
|
1383
1388
|
if (payload) {
|
|
1384
1389
|
return payload;
|
|
1385
1390
|
} else {
|
|
1386
|
-
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('
|
|
1391
|
+
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('bg.koni.handler.State.notFoundSignature'));
|
|
1387
1392
|
}
|
|
1388
1393
|
} else {
|
|
1389
1394
|
throw new BitcoinProviderError(BitcoinProviderErrorType.USER_REJECTED_REQUEST);
|
|
@@ -1418,7 +1423,7 @@ export default class KoniState {
|
|
|
1418
1423
|
if (payload) {
|
|
1419
1424
|
return payload;
|
|
1420
1425
|
} else {
|
|
1421
|
-
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('
|
|
1426
|
+
throw new BitcoinProviderError(BitcoinProviderErrorType.INVALID_PARAMS, t('bg.koni.handler.State.notFoundSignature'));
|
|
1422
1427
|
}
|
|
1423
1428
|
} else {
|
|
1424
1429
|
throw new BitcoinProviderError(BitcoinProviderErrorType.USER_REJECTED_REQUEST);
|
|
@@ -556,8 +556,30 @@ export default class KoniTabs {
|
|
|
556
556
|
method: 'wallet_addEthereumChain',
|
|
557
557
|
params: [chainData]
|
|
558
558
|
});
|
|
559
|
+
const [networkKey] = this.#koniState.findNetworkKeyByChainId(chainIdDec);
|
|
560
|
+
if (networkKey) {
|
|
561
|
+
await this.#koniState.switchEvmNetworkByUrl(stripUrl(url), networkKey);
|
|
562
|
+
}
|
|
559
563
|
} else {
|
|
560
|
-
|
|
564
|
+
await this.#koniState.showUnsupportedNetworkSwitchConfirm(id, url, {
|
|
565
|
+
mode: 'insert',
|
|
566
|
+
chainSpec: {
|
|
567
|
+
genesisHash: '',
|
|
568
|
+
paraId: null,
|
|
569
|
+
addressPrefix: 0,
|
|
570
|
+
evmChainId: chainIdDec,
|
|
571
|
+
existentialDeposit: '',
|
|
572
|
+
decimals: 0
|
|
573
|
+
},
|
|
574
|
+
chainEditInfo: {
|
|
575
|
+
chainType: 'EVM',
|
|
576
|
+
currentProvider: '',
|
|
577
|
+
providers: {},
|
|
578
|
+
slug: ''
|
|
579
|
+
},
|
|
580
|
+
unconfirmed: true,
|
|
581
|
+
providerError: _CHAIN_VALIDATION_ERROR.UNSUPPORTED_CHAIN_CANNOT_ADD
|
|
582
|
+
});
|
|
561
583
|
}
|
|
562
584
|
}
|
|
563
585
|
return null;
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.3.
|
|
20
|
+
"version": "1.3.55-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -2873,11 +2873,11 @@
|
|
|
2873
2873
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
2874
2874
|
"@substrate/connect": "^0.8.9",
|
|
2875
2875
|
"@subwallet-monorepos/subwallet-services-sdk": "^0.1.8",
|
|
2876
|
-
"@subwallet/chain-list": "0.2.
|
|
2877
|
-
"@subwallet/extension-base": "^1.3.
|
|
2878
|
-
"@subwallet/extension-chains": "^1.3.
|
|
2879
|
-
"@subwallet/extension-dapp": "^1.3.
|
|
2880
|
-
"@subwallet/extension-inject": "^1.3.
|
|
2876
|
+
"@subwallet/chain-list": "0.2.113-beta.12",
|
|
2877
|
+
"@subwallet/extension-base": "^1.3.55-0",
|
|
2878
|
+
"@subwallet/extension-chains": "^1.3.55-0",
|
|
2879
|
+
"@subwallet/extension-dapp": "^1.3.55-0",
|
|
2880
|
+
"@subwallet/extension-inject": "^1.3.55-0",
|
|
2881
2881
|
"@subwallet/keyring": "^0.1.13",
|
|
2882
2882
|
"@subwallet/ui-keyring": "^0.1.13",
|
|
2883
2883
|
"@ton/core": "^0.56.3",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.3.
|
|
10
|
+
version: '1.3.55-0'
|
|
11
11
|
};
|
|
@@ -174,7 +174,7 @@ export class BalanceService {
|
|
|
174
174
|
const chainInfo = this.state.chainService.getChainInfoByKey(chain);
|
|
175
175
|
const chainState = this.state.chainService.getChainStateByKey(chain);
|
|
176
176
|
if (!chainInfo || !chainState || !chainState.active) {
|
|
177
|
-
return Promise.reject(new BalanceError(BalanceErrorType.NETWORK_ERROR, t('
|
|
177
|
+
return Promise.reject(new BalanceError(BalanceErrorType.NETWORK_ERROR, t('bg.BALANCE.services.service.balance.chainInactiveEnableNetwork', {
|
|
178
178
|
replace: {
|
|
179
179
|
chain: chainInfo.name
|
|
180
180
|
}
|
|
@@ -183,7 +183,7 @@ export class BalanceService {
|
|
|
183
183
|
const tSlug = tokenSlug || _getChainNativeTokenSlug(chainInfo);
|
|
184
184
|
const tokenInfo = this.state.chainService.getAssetBySlug(tSlug);
|
|
185
185
|
if (!tokenInfo) {
|
|
186
|
-
return Promise.reject(new BalanceError(BalanceErrorType.TOKEN_ERROR, t('
|
|
186
|
+
return Promise.reject(new BalanceError(BalanceErrorType.TOKEN_ERROR, t('bg.BALANCE.services.service.balance.transferNotAvailableForToken', {
|
|
187
187
|
replace: {
|
|
188
188
|
slug: tSlug
|
|
189
189
|
}
|
|
@@ -231,7 +231,7 @@ export class BalanceService {
|
|
|
231
231
|
if (hasError) {
|
|
232
232
|
var _unsub2;
|
|
233
233
|
(_unsub2 = unsub) === null || _unsub2 === void 0 ? void 0 : _unsub2();
|
|
234
|
-
reject(new Error(t('
|
|
234
|
+
reject(new Error(t('bg.BALANCE.services.service.balance.failedToGetBalance')));
|
|
235
235
|
}
|
|
236
236
|
}, 9999);
|
|
237
237
|
});
|
|
@@ -125,7 +125,7 @@ export async function getERC721Transaction(web3Api, chain, contractAddress, send
|
|
|
125
125
|
} catch (e) {
|
|
126
126
|
const error = e;
|
|
127
127
|
if (error.message.includes('transfer to non ERC721Receiver implementer')) {
|
|
128
|
-
error.message = t('
|
|
128
|
+
error.message = t('bg.BALANCE.services.service.balance.transfer.smartContract.nftNotSupportedOnRecipient');
|
|
129
129
|
}
|
|
130
130
|
throw error;
|
|
131
131
|
}
|
|
@@ -133,8 +133,14 @@ export const dryRunXcmExtrinsicV2 = async request => {
|
|
|
133
133
|
const {
|
|
134
134
|
assetHub,
|
|
135
135
|
bridgeHub,
|
|
136
|
-
destination
|
|
136
|
+
destination,
|
|
137
|
+
hops
|
|
137
138
|
} = dryRunResult;
|
|
139
|
+
for (const hop of hops) {
|
|
140
|
+
if (!hop.result.success) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
138
144
|
if ((assetHub === null || assetHub === void 0 ? void 0 : assetHub.success) === false || (bridgeHub === null || bridgeHub === void 0 ? void 0 : bridgeHub.success) === false || (destination === null || destination === void 0 ? void 0 : destination.success) === false) {
|
|
139
145
|
if ((destination === null || destination === void 0 ? void 0 : destination.success) === false) {
|
|
140
146
|
// pass dry-run in these cases
|
|
@@ -11,11 +11,17 @@ export declare type DryRunNodeSuccess = {
|
|
|
11
11
|
forwardedXcms: any;
|
|
12
12
|
};
|
|
13
13
|
export declare type DryRunNodeResult = DryRunNodeSuccess | DryRunNodeFailure;
|
|
14
|
+
export declare type THopInfo = {
|
|
15
|
+
result: DryRunNodeResult & {
|
|
16
|
+
currency?: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
14
19
|
export declare type DryRunResult = {
|
|
15
20
|
origin: DryRunNodeResult;
|
|
16
21
|
destination?: DryRunNodeResult;
|
|
17
22
|
assetHub?: DryRunNodeResult;
|
|
18
23
|
bridgeHub?: DryRunNodeResult;
|
|
24
|
+
hops: THopInfo[];
|
|
19
25
|
};
|
|
20
26
|
interface GetXcmFeeRequest {
|
|
21
27
|
sender: string;
|
|
@@ -5,7 +5,7 @@ import { fetchParaSpellChainMap } from '@subwallet/extension-base/constants/para
|
|
|
5
5
|
import { ProxyServiceRoute } from '@subwallet/extension-base/types/environment';
|
|
6
6
|
import { fetchFromProxyService } from '@subwallet/extension-base/utils';
|
|
7
7
|
import { assert, compactToU8a, isHex, u8aConcat, u8aEq } from '@polkadot/util';
|
|
8
|
-
const version = '/
|
|
8
|
+
const version = '/v4';
|
|
9
9
|
const paraSpellApi = {
|
|
10
10
|
buildXcm: `${version}/x-transfer`,
|
|
11
11
|
dryRunXcm: `${version}/dry-run`,
|
|
@@ -63,7 +63,7 @@ function txHexToSubmittableExtrinsic(api, hex) {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
export async function buildXcm(request) {
|
|
66
|
-
var _originTokenInfo$meta
|
|
66
|
+
var _originTokenInfo$meta;
|
|
67
67
|
const {
|
|
68
68
|
destinationChain,
|
|
69
69
|
originChain,
|
|
@@ -75,9 +75,8 @@ export async function buildXcm(request) {
|
|
|
75
75
|
if (!substrateApi) {
|
|
76
76
|
throw new Error('Substrate API is not available');
|
|
77
77
|
}
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
if (!psAssetType || !psAssetValue) {
|
|
78
|
+
const paraSpellIdentifyV4 = (_originTokenInfo$meta = originTokenInfo.metadata) === null || _originTokenInfo$meta === void 0 ? void 0 : _originTokenInfo$meta.paraSpellIdentifyV4;
|
|
79
|
+
if (!paraSpellIdentifyV4) {
|
|
81
80
|
throw new Error('Token is not support XCM at this time');
|
|
82
81
|
}
|
|
83
82
|
const paraSpellChainMap = await fetchParaSpellChainMap();
|
|
@@ -85,7 +84,10 @@ export async function buildXcm(request) {
|
|
|
85
84
|
address: recipient,
|
|
86
85
|
from: paraSpellChainMap[originChain.slug],
|
|
87
86
|
to: paraSpellChainMap[destinationChain.slug],
|
|
88
|
-
currency: createParaSpellCurrency(
|
|
87
|
+
currency: createParaSpellCurrency(paraSpellIdentifyV4, sendingValue),
|
|
88
|
+
options: {
|
|
89
|
+
abstractDecimals: false
|
|
90
|
+
}
|
|
89
91
|
};
|
|
90
92
|
const response = await fetchFromProxyService(ProxyServiceRoute.PARASPELL, paraSpellApi.buildXcm, {
|
|
91
93
|
method: 'POST',
|
|
@@ -104,7 +106,7 @@ export async function buildXcm(request) {
|
|
|
104
106
|
return txHexToSubmittableExtrinsic(chainApi.api, extrinsicHex);
|
|
105
107
|
}
|
|
106
108
|
export async function dryRunXcm(request) {
|
|
107
|
-
var _originTokenInfo$
|
|
109
|
+
var _originTokenInfo$meta2;
|
|
108
110
|
const {
|
|
109
111
|
destinationChain,
|
|
110
112
|
originChain,
|
|
@@ -114,9 +116,8 @@ export async function dryRunXcm(request) {
|
|
|
114
116
|
sendingValue
|
|
115
117
|
} = request;
|
|
116
118
|
const paraSpellChainMap = await fetchParaSpellChainMap();
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
if (!psAssetType || !psAssetValue) {
|
|
119
|
+
const paraSpellIdentifyV4 = (_originTokenInfo$meta2 = originTokenInfo.metadata) === null || _originTokenInfo$meta2 === void 0 ? void 0 : _originTokenInfo$meta2.paraSpellIdentifyV4;
|
|
120
|
+
if (!paraSpellIdentifyV4) {
|
|
120
121
|
throw new Error('Token is not support XCM at this time');
|
|
121
122
|
}
|
|
122
123
|
const bodyData = {
|
|
@@ -124,7 +125,10 @@ export async function dryRunXcm(request) {
|
|
|
124
125
|
address: recipient,
|
|
125
126
|
from: paraSpellChainMap[originChain.slug],
|
|
126
127
|
to: paraSpellChainMap[destinationChain.slug],
|
|
127
|
-
currency: createParaSpellCurrency(
|
|
128
|
+
currency: createParaSpellCurrency(paraSpellIdentifyV4, sendingValue),
|
|
129
|
+
options: {
|
|
130
|
+
abstractDecimals: false
|
|
131
|
+
}
|
|
128
132
|
};
|
|
129
133
|
const response = await fetchFromProxyService(ProxyServiceRoute.PARASPELL, paraSpellApi.dryRunXcm, {
|
|
130
134
|
method: 'POST',
|
|
@@ -146,7 +150,7 @@ export async function dryRunXcm(request) {
|
|
|
146
150
|
return await response.json();
|
|
147
151
|
}
|
|
148
152
|
export async function estimateXcmFee(request) {
|
|
149
|
-
var _fromTokenInfo$metada
|
|
153
|
+
var _fromTokenInfo$metada;
|
|
150
154
|
const {
|
|
151
155
|
fromChainInfo,
|
|
152
156
|
fromTokenInfo,
|
|
@@ -156,9 +160,8 @@ export async function estimateXcmFee(request) {
|
|
|
156
160
|
value
|
|
157
161
|
} = request;
|
|
158
162
|
const paraSpellChainMap = await fetchParaSpellChainMap();
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
if (!psAssetType || !psAssetValue) {
|
|
163
|
+
const paraSpellIdentifyV4 = (_fromTokenInfo$metada = fromTokenInfo.metadata) === null || _fromTokenInfo$metada === void 0 ? void 0 : _fromTokenInfo$metada.paraSpellIdentifyV4;
|
|
164
|
+
if (!paraSpellIdentifyV4) {
|
|
162
165
|
console.error('Lack of paraspell metadata');
|
|
163
166
|
return undefined;
|
|
164
167
|
}
|
|
@@ -167,7 +170,10 @@ export async function estimateXcmFee(request) {
|
|
|
167
170
|
address: recipient,
|
|
168
171
|
from: paraSpellChainMap[fromChainInfo.slug],
|
|
169
172
|
to: paraSpellChainMap[toChainInfo.slug],
|
|
170
|
-
currency: createParaSpellCurrency(
|
|
173
|
+
currency: createParaSpellCurrency(paraSpellIdentifyV4, value),
|
|
174
|
+
options: {
|
|
175
|
+
abstractDecimals: false
|
|
176
|
+
}
|
|
171
177
|
};
|
|
172
178
|
const response = await fetchFromProxyService(ProxyServiceRoute.PARASPELL, paraSpellApi.feeXcm, {
|
|
173
179
|
method: 'POST',
|
|
@@ -183,11 +189,11 @@ export async function estimateXcmFee(request) {
|
|
|
183
189
|
}
|
|
184
190
|
return await response.json();
|
|
185
191
|
}
|
|
186
|
-
function createParaSpellCurrency(
|
|
192
|
+
function createParaSpellCurrency(paraSpellIdentifyV4, amount) {
|
|
187
193
|
// todo: handle complex conditions for asset has same symbol in a chain: Id, Multi-location, ...
|
|
188
194
|
// todo: or update all asset to use multi-location
|
|
189
195
|
return {
|
|
190
|
-
|
|
196
|
+
...paraSpellIdentifyV4,
|
|
191
197
|
amount
|
|
192
198
|
};
|
|
193
199
|
}
|
|
@@ -30,7 +30,7 @@ export const _BALANCE_CHAIN_GROUP = {
|
|
|
30
30
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
31
31
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
32
32
|
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network', 'truth_network', 'jamton'],
|
|
33
|
-
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'],
|
|
33
|
+
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'],
|
|
34
34
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
35
35
|
// perhaps there are some runtime updates
|
|
36
36
|
centrifuge: ['centrifuge'],
|
|
@@ -255,7 +255,7 @@ export const _TRANSFER_CHAIN_GROUP = {
|
|
|
255
255
|
genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
|
|
256
256
|
// crab: ['crab', 'pangolin'],
|
|
257
257
|
bitcountry: ['pioneer', 'bitcountry'],
|
|
258
|
-
statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub'],
|
|
258
|
+
statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail'],
|
|
259
259
|
riochain: ['riochain'],
|
|
260
260
|
sora_substrate: ['sora_substrate'],
|
|
261
261
|
avail: ['kate', 'goldberg_testnet'],
|
|
@@ -32,5 +32,6 @@ export declare enum _CHAIN_VALIDATION_ERROR {
|
|
|
32
32
|
INVALID_PROVIDER = "invalidProvider",
|
|
33
33
|
NONE = "none",
|
|
34
34
|
CONNECTION_FAILURE = "connectionFailure",
|
|
35
|
-
PROVIDER_NOT_SAME_CHAIN = "providerNotSameChain"
|
|
35
|
+
PROVIDER_NOT_SAME_CHAIN = "providerNotSameChain",
|
|
36
|
+
UNSUPPORTED_CHAIN_CANNOT_ADD = "unsupportedChainCannotAdd"
|
|
36
37
|
}
|