@subwallet/extension-base 1.3.54-1 → 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.
Files changed (129) hide show
  1. package/background/errors/BalanceError.js +4 -4
  2. package/background/errors/BitcoinProviderError.js +7 -7
  3. package/background/errors/EvmProviderError.js +8 -8
  4. package/background/errors/ProviderError.js +6 -5
  5. package/background/errors/SwapError.js +14 -13
  6. package/background/errors/TransactionError.js +22 -22
  7. package/background/warnings/TransactionWarning.js +2 -2
  8. package/cjs/background/errors/BalanceError.js +4 -4
  9. package/cjs/background/errors/BitcoinProviderError.js +7 -7
  10. package/cjs/background/errors/EvmProviderError.js +8 -8
  11. package/cjs/background/errors/ProviderError.js +6 -5
  12. package/cjs/background/errors/SwapError.js +14 -13
  13. package/cjs/background/errors/TransactionError.js +22 -22
  14. package/cjs/background/warnings/TransactionWarning.js +2 -2
  15. package/cjs/core/logic-validation/index.js +15 -3
  16. package/cjs/core/logic-validation/request.js +37 -37
  17. package/cjs/core/logic-validation/transfer.js +21 -17
  18. package/cjs/koni/api/dotsama/parseTransaction.js +1 -1
  19. package/cjs/koni/api/staking/bonding/relayChain.js +1 -1
  20. package/cjs/koni/api/staking/bonding/utils.js +16 -16
  21. package/cjs/koni/api/staking/paraChain.js +1 -1
  22. package/cjs/koni/background/handlers/Extension.js +28 -26
  23. package/cjs/koni/background/handlers/State.js +19 -14
  24. package/cjs/koni/background/handlers/Tabs.js +23 -1
  25. package/cjs/packageInfo.js +1 -1
  26. package/cjs/services/balance-service/index.js +3 -3
  27. package/cjs/services/balance-service/transfer/smart-contract.js +1 -1
  28. package/cjs/services/balance-service/transfer/xcm/index.js +7 -1
  29. package/cjs/services/balance-service/transfer/xcm/utils.js +24 -18
  30. package/cjs/services/chain-service/constants.js +2 -2
  31. package/cjs/services/chain-service/handler/types.js +1 -0
  32. package/cjs/services/chain-service/utils/patch.js +1 -1
  33. package/cjs/services/earning-service/constants/chains.js +1 -2
  34. package/cjs/services/earning-service/handlers/base.js +2 -1
  35. package/cjs/services/earning-service/handlers/lending/base.js +3 -3
  36. package/cjs/services/earning-service/handlers/liquid-staking/base.js +3 -3
  37. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
  38. package/cjs/services/earning-service/handlers/native-staking/base-para.js +1 -1
  39. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
  40. package/cjs/services/earning-service/handlers/native-staking/tao.js +26 -6
  41. package/cjs/services/earning-service/handlers/nomination-pool/index.js +2 -2
  42. package/cjs/services/earning-service/handlers/special.js +12 -9
  43. package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
  44. package/cjs/services/keyring-service/context/handlers/Json.js +11 -11
  45. package/cjs/services/keyring-service/context/handlers/Ledger.js +3 -3
  46. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +10 -10
  47. package/cjs/services/keyring-service/context/handlers/Modify.js +3 -3
  48. package/cjs/services/keyring-service/context/handlers/Secret.js +7 -7
  49. package/cjs/services/migration-service/scripts/DeleteEarningData.js +1 -1
  50. package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
  51. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
  52. package/cjs/services/migration-service/scripts/index.js +3 -3
  53. package/cjs/services/request-service/handler/BitcoinRequestHandler.js +1 -1
  54. package/cjs/services/request-service/handler/CardanoRequestHandler.js +2 -2
  55. package/cjs/services/request-service/handler/EvmRequestHandler.js +5 -5
  56. package/cjs/services/request-service/handler/TonRequestHandler.js +2 -2
  57. package/cjs/services/setting-service/i18n/extend.js +1 -1
  58. package/cjs/services/swap-service/handler/base-handler.js +123 -11
  59. package/cjs/services/swap-service/index.js +1 -1
  60. package/cjs/services/transaction-service/index.js +12 -12
  61. package/cjs/services/transaction-service/utils.js +4 -1
  62. package/cjs/types/account/error/common.js +5 -4
  63. package/cjs/types/account/error/derive.js +8 -7
  64. package/cjs/utils/account/derive/info/solo.js +2 -2
  65. package/cjs/utils/eth/parseTransaction/index.js +1 -1
  66. package/cjs/utils/fee/transfer.js +8 -3
  67. package/cjs/utils/index.js +1 -1
  68. package/core/logic-validation/index.js +15 -3
  69. package/core/logic-validation/request.js +37 -37
  70. package/core/logic-validation/transfer.js +21 -17
  71. package/koni/api/dotsama/parseTransaction.js +1 -1
  72. package/koni/api/staking/bonding/relayChain.js +1 -1
  73. package/koni/api/staking/bonding/utils.js +16 -16
  74. package/koni/api/staking/paraChain.js +1 -1
  75. package/koni/background/handlers/Extension.js +28 -26
  76. package/koni/background/handlers/State.d.ts +1 -0
  77. package/koni/background/handlers/State.js +19 -14
  78. package/koni/background/handlers/Tabs.js +23 -1
  79. package/package.json +6 -6
  80. package/packageInfo.js +1 -1
  81. package/services/balance-service/index.js +3 -3
  82. package/services/balance-service/transfer/smart-contract.js +1 -1
  83. package/services/balance-service/transfer/xcm/index.js +7 -1
  84. package/services/balance-service/transfer/xcm/utils.d.ts +6 -0
  85. package/services/balance-service/transfer/xcm/utils.js +24 -18
  86. package/services/chain-service/constants.js +2 -2
  87. package/services/chain-service/handler/types.d.ts +2 -1
  88. package/services/chain-service/handler/types.js +1 -0
  89. package/services/chain-service/utils/patch.d.ts +1 -1
  90. package/services/chain-service/utils/patch.js +1 -1
  91. package/services/earning-service/constants/chains.d.ts +0 -1
  92. package/services/earning-service/constants/chains.js +1 -2
  93. package/services/earning-service/handlers/base.js +3 -2
  94. package/services/earning-service/handlers/lending/base.js +3 -3
  95. package/services/earning-service/handlers/liquid-staking/base.js +3 -3
  96. package/services/earning-service/handlers/native-staking/amplitude.js +1 -1
  97. package/services/earning-service/handlers/native-staking/base-para.js +1 -1
  98. package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
  99. package/services/earning-service/handlers/native-staking/tao.js +26 -6
  100. package/services/earning-service/handlers/nomination-pool/index.js +2 -2
  101. package/services/earning-service/handlers/special.js +12 -9
  102. package/services/keyring-service/context/handlers/Derive.js +1 -1
  103. package/services/keyring-service/context/handlers/Json.js +11 -11
  104. package/services/keyring-service/context/handlers/Ledger.js +3 -3
  105. package/services/keyring-service/context/handlers/Mnemonic.js +10 -10
  106. package/services/keyring-service/context/handlers/Modify.js +3 -3
  107. package/services/keyring-service/context/handlers/Secret.js +7 -7
  108. package/services/migration-service/scripts/DeleteEarningData.js +1 -1
  109. package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
  110. package/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
  111. package/services/migration-service/scripts/index.js +3 -3
  112. package/services/request-service/handler/BitcoinRequestHandler.js +1 -1
  113. package/services/request-service/handler/CardanoRequestHandler.js +2 -2
  114. package/services/request-service/handler/EvmRequestHandler.js +5 -5
  115. package/services/request-service/handler/TonRequestHandler.js +2 -2
  116. package/services/setting-service/i18n/extend.js +1 -1
  117. package/services/swap-service/handler/base-handler.d.ts +2 -1
  118. package/services/swap-service/handler/base-handler.js +124 -12
  119. package/services/swap-service/index.js +1 -1
  120. package/services/transaction-service/index.js +12 -12
  121. package/services/transaction-service/utils.js +4 -1
  122. package/types/account/error/common.js +5 -4
  123. package/types/account/error/derive.js +8 -7
  124. package/types/balance/transfer.d.ts +1 -0
  125. package/utils/account/derive/info/solo.js +2 -2
  126. package/utils/eth/parseTransaction/index.js +1 -1
  127. package/utils/fee/transfer.d.ts +3 -1
  128. package/utils/fee/transfer.js +5 -1
  129. package/utils/index.js +1 -1
@@ -151,7 +151,7 @@ class KoniExtension {
151
151
  id
152
152
  } = _ref2;
153
153
  const queued = this.#koniState.getMetaRequest(id);
154
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
154
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
155
155
  const {
156
156
  request,
157
157
  resolve
@@ -171,7 +171,7 @@ class KoniExtension {
171
171
  id
172
172
  } = _ref3;
173
173
  const queued = this.#koniState.getMetaRequest(id);
174
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
174
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
175
175
  const {
176
176
  reject
177
177
  } = queued;
@@ -196,7 +196,7 @@ class KoniExtension {
196
196
  signedTransaction
197
197
  } = _ref4;
198
198
  const queued = this.#koniState.getSignRequest(id);
199
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
199
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
200
200
  const {
201
201
  resolve
202
202
  } = queued;
@@ -214,7 +214,7 @@ class KoniExtension {
214
214
  id
215
215
  } = _ref5;
216
216
  const queued = this.#koniState.getSignRequest(id);
217
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
217
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
218
218
  const {
219
219
  reject
220
220
  } = queued;
@@ -446,7 +446,7 @@ class KoniExtension {
446
446
  };
447
447
  }
448
448
  } else {
449
- throw Error((0, _i18next.t)('This is not an address'));
449
+ throw Error((0, _i18next.t)('bg.koni.handler.Extension.thisIsNotAnAddress'));
450
450
  }
451
451
  }
452
452
 
@@ -463,7 +463,7 @@ class KoniExtension {
463
463
  _uiKeyring.keyring.saveAddress(_address, meta);
464
464
  return true;
465
465
  } else {
466
- throw Error((0, _i18next.t)('This is not an address'));
466
+ throw Error((0, _i18next.t)('bg.koni.handler.Extension.thisIsNotAnAddress'));
467
467
  }
468
468
  }
469
469
 
@@ -479,7 +479,7 @@ class KoniExtension {
479
479
  _uiKeyring.keyring.forgetAddress(_address);
480
480
  return true;
481
481
  } else {
482
- throw Error((0, _i18next.t)('This is not an address'));
482
+ throw Error((0, _i18next.t)('bg.koni.handler.Extension.thisIsNotAnAddress'));
483
483
  }
484
484
  }
485
485
  _getAuthListV2() {
@@ -528,7 +528,7 @@ class KoniExtension {
528
528
  id
529
529
  } = _ref12;
530
530
  const queued = this.#koniState.getAuthRequestV2(id);
531
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
531
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
532
532
  const {
533
533
  resolve
534
534
  } = queued;
@@ -543,7 +543,7 @@ class KoniExtension {
543
543
  id
544
544
  } = _ref13;
545
545
  const queued = this.#koniState.getAuthRequestV2(id);
546
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
546
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
547
547
  const {
548
548
  reject
549
549
  } = queued;
@@ -555,7 +555,7 @@ class KoniExtension {
555
555
  id
556
556
  } = _ref14;
557
557
  const queued = this.#koniState.getAuthRequestV2(id);
558
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
558
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
559
559
  const {
560
560
  reject
561
561
  } = queued;
@@ -733,7 +733,7 @@ class KoniExtension {
733
733
  };
734
734
  const typeInfoKey = typeInfoMap[authSwitchNetworkType];
735
735
  if (!typeInfoKey || !chainInfo[typeInfoKey]) {
736
- throw new Error((0, _i18next.t)('Network {{networkKey}} is not {{authSwitchNetworkType}}', {
736
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.networkNotAuthType', {
737
737
  replace: {
738
738
  networkKey,
739
739
  authSwitchNetworkType
@@ -742,7 +742,7 @@ class KoniExtension {
742
742
  }
743
743
  const authUrl = authUrls[url];
744
744
  if (!authUrl) {
745
- throw new Error((0, _i18next.t)('Not found {{url}} in auth list', {
745
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.urlNotFoundInAuthList', {
746
746
  replace: {
747
747
  url
748
748
  }
@@ -755,7 +755,7 @@ class KoniExtension {
755
755
  });
756
756
  }
757
757
  if (!authUrl.accountAuthTypes.includes(authSwitchNetworkType)) {
758
- throw new Error((0, _i18next.t)('Network {{networkKey}} is not supported by {{authSwitchNetworkType}}', {
758
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.networkNotSupportedByAuthType', {
759
759
  replace: {
760
760
  networkKey,
761
761
  authSwitchNetworkType
@@ -1450,7 +1450,7 @@ class KoniExtension {
1450
1450
  } catch (e) {
1451
1451
  const error = e;
1452
1452
  if (error.message.includes('transfer amount exceeds balance')) {
1453
- error.message = (0, _i18next.t)('Insufficient balance');
1453
+ error.message = (0, _i18next.t)('bg.koni.handler.Extension.insufficientBalance');
1454
1454
  }
1455
1455
  throw error;
1456
1456
  }
@@ -1806,7 +1806,7 @@ class KoniExtension {
1806
1806
  } catch (e) {
1807
1807
  const error = e;
1808
1808
  if (error.message.includes('transfer amount exceeds balance')) {
1809
- error.message = (0, _i18next.t)('Insufficient balance');
1809
+ error.message = (0, _i18next.t)('bg.koni.handler.Extension.insufficientBalance');
1810
1810
  }
1811
1811
  throw error;
1812
1812
  }
@@ -1904,7 +1904,7 @@ class KoniExtension {
1904
1904
  token: tokenSlug
1905
1905
  });
1906
1906
  if (new _bignumber.default(freeBalance.value).lt(inputAmount)) {
1907
- throw new Error((0, _i18next.t)('Insufficient balance'));
1907
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.insufficientBalance'));
1908
1908
  }
1909
1909
  const transferNativeAmount = isTransferNativeToken ? transferAmount.value : '0';
1910
1910
  return this.#koniState.transactionService.handleTransactionAfterConfirmation({
@@ -2172,6 +2172,7 @@ class KoniExtension {
2172
2172
  to,
2173
2173
  token,
2174
2174
  tokenPayFeeSlug,
2175
+ transferAll,
2175
2176
  value
2176
2177
  } = request;
2177
2178
  const cb = (0, _subscriptions.createSubscription)(id, port);
@@ -2208,7 +2209,8 @@ class KoniExtension {
2208
2209
  bitcoinApi: this.#koniState.chainService.getBitcoinApi(chain),
2209
2210
  isTransferLocalTokenAndPayThatTokenAsFee,
2210
2211
  isTransferNativeTokenAndPayLocalTokenAsFee,
2211
- nativeToken
2212
+ nativeToken,
2213
+ transferAll: transferAll
2212
2214
  };
2213
2215
  const subscription = (0, _rxjs.combineLatest)({
2214
2216
  freeBalance: freeBalanceSubject,
@@ -2613,7 +2615,7 @@ class KoniExtension {
2613
2615
  networkKey
2614
2616
  } = _ref47;
2615
2617
  const pair = _uiKeyring.keyring.getPair(address);
2616
- (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
2618
+ (0, _util.assert)(pair, (0, _i18next.t)('bg.koni.handler.Extension.unableToFindAccount'));
2617
2619
  if (pair.isLocked) {
2618
2620
  _uiKeyring.keyring.unlockPair(pair.address);
2619
2621
  }
@@ -2638,11 +2640,11 @@ class KoniExtension {
2638
2640
  let signed;
2639
2641
  const network = this.getNetworkJsonByChainId(chainId);
2640
2642
  if (!network) {
2641
- throw new Error((0, _i18next.t)('Cannot find network'));
2643
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.cannotFindNetwork'));
2642
2644
  }
2643
2645
  const pair = _uiKeyring.keyring.getPair(address);
2644
2646
  if (!pair) {
2645
- throw Error((0, _i18next.t)('Unable to find account'));
2647
+ throw Error((0, _i18next.t)('bg.koni.handler.Extension.unableToFindAccount'));
2646
2648
  }
2647
2649
  if (pair.isLocked) {
2648
2650
  _uiKeyring.keyring.unlockPair(pair.address);
@@ -2659,7 +2661,7 @@ class KoniExtension {
2659
2661
  var _signedTranaction$r, _signedTranaction$s, _signedTranaction$v;
2660
2662
  const tx = (0, _utils8.createTransactionFromRLP)(message);
2661
2663
  if (!tx) {
2662
- throw new Error((0, _i18next.t)('Failed to decode data. Please use a valid QR code'));
2664
+ throw new Error((0, _i18next.t)('bg.koni.handler.Extension.failedToDecodeQr'));
2663
2665
  }
2664
2666
  const txObject = {
2665
2667
  gasPrice: new _bignumber.default(tx.gasPrice).toNumber(),
@@ -2749,7 +2751,7 @@ class KoniExtension {
2749
2751
  const chainInfo = this.#koniState.getChainInfo(chain);
2750
2752
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
2751
2753
  if (!chainStakingMetadata) {
2752
- const errMessage = (0, _i18next.t)('Unable to fetch staking data. Re-enable "{{chainName}}" and try again.', {
2754
+ const errMessage = (0, _i18next.t)('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
2753
2755
  replace: {
2754
2756
  chainName: chainInfo.name
2755
2757
  }
@@ -2856,7 +2858,7 @@ class KoniExtension {
2856
2858
  const chainInfo = this.#koniState.getChainInfo(chain);
2857
2859
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
2858
2860
  if (!chainStakingMetadata) {
2859
- const errMessage = (0, _i18next.t)('Unable to fetch staking data. Re-enable "{{chainName}}" and try again.', {
2861
+ const errMessage = (0, _i18next.t)('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
2860
2862
  replace: {
2861
2863
  chainName: chainInfo.name
2862
2864
  }
@@ -2888,7 +2890,7 @@ class KoniExtension {
2888
2890
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
2889
2891
  if (!chainStakingMetadata || !nominatorMetadata) {
2890
2892
  const chainInfo = this.#koniState.getChainInfo(chain);
2891
- const errMessage = (0, _i18next.t)('Unable to fetch staking data. Re-enable "{{chainName}}" and try again.', {
2893
+ const errMessage = (0, _i18next.t)('bg.koni.handler.Extension.unableToFetchStakingDataReEnable', {
2892
2894
  replace: {
2893
2895
  chainName: chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.name
2894
2896
  }
@@ -3089,7 +3091,7 @@ class KoniExtension {
3089
3091
  id
3090
3092
  } = _ref54;
3091
3093
  const queued = this.#koniState.getSignRequest(id);
3092
- (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
3094
+ (0, _util.assert)(queued, (0, _i18next.t)('bg.koni.handler.Extension.unableToProceed'));
3093
3095
  const {
3094
3096
  reject,
3095
3097
  request,
@@ -3104,7 +3106,7 @@ class KoniExtension {
3104
3106
  address
3105
3107
  } = pair;
3106
3108
  if (!pair) {
3107
- reject(new Error((0, _i18next.t)('Unable to find account')));
3109
+ reject(new Error((0, _i18next.t)('bg.koni.handler.Extension.unableToFindAccount')));
3108
3110
  return false;
3109
3111
  }
3110
3112
  if (pair.isLocked) {
@@ -456,7 +456,7 @@ class KoniState {
456
456
  authUrls[shortenUrl].currentNetworkMap.evm = networkKey;
457
457
  this.setAuthorize(authUrls);
458
458
  } else {
459
- throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INTERNAL_ERROR, (0, _i18next.t)('Not found {{shortenUrl}} in auth list', {
459
+ throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INTERNAL_ERROR, (0, _i18next.t)('bg.koni.handler.State.shortUrlNotFoundInAuthList', {
460
460
  replace: {
461
461
  shortenUrl
462
462
  }
@@ -480,6 +480,11 @@ class KoniState {
480
480
  }
481
481
  });
482
482
  }
483
+ async showUnsupportedNetworkSwitchConfirm(id, url, networkData) {
484
+ return this.requestService.addConfirmation(id, url, 'addNetworkRequest', networkData).then(() => {
485
+ throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.NETWORK_NOT_SUPPORTED, 'This network is currently not supported');
486
+ });
487
+ }
483
488
  async addTokenConfirm(id, url, tokenInfo) {
484
489
  return this.requestService.addConfirmation(id, url, 'addTokenRequest', tokenInfo).then(async _ref3 => {
485
490
  let {
@@ -934,7 +939,7 @@ class KoniState {
934
939
  if (payload) {
935
940
  return payload;
936
941
  } else {
937
- throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found signature'));
942
+ throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
938
943
  }
939
944
  } else {
940
945
  throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.USER_REJECTED_REQUEST);
@@ -1095,7 +1100,7 @@ class KoniState {
1095
1100
  if (payload) {
1096
1101
  return payload;
1097
1102
  } else {
1098
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Not found signature'));
1103
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
1099
1104
  }
1100
1105
  } else {
1101
1106
  throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.SIGN_DATA_DECLINED);
@@ -1116,7 +1121,7 @@ class KoniState {
1116
1121
  const authInfoMap = await this.getAuthList();
1117
1122
  const authInfo = authInfoMap[(0, _utils3.stripUrl)(url)];
1118
1123
  if (!authInfo) {
1119
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.REFUSED_REQUEST, (0, _i18next.t)('Not found auth info'));
1124
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.REFUSED_REQUEST, (0, _i18next.t)('bg.koni.handler.State.notFoundAuthInfo'));
1120
1125
  }
1121
1126
  let requireKeyHashes = [];
1122
1127
  let networkKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap.cardano;
@@ -1168,7 +1173,7 @@ class KoniState {
1168
1173
  };
1169
1174
  if ((0, _utils3.isSameAddress)(currentAddress, address)) {
1170
1175
  if (!(0, _cardano.validateAddressNetwork)(address, currentCardanoNetwork)) {
1171
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.ACCOUNT_CHANGED, (0, _i18next.t)('Current network is changed'));
1176
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.ACCOUNT_CHANGED, (0, _i18next.t)('bg.koni.handler.State.currentNetworkIsChanged'));
1172
1177
  }
1173
1178
  transactionValue = transactionValue.checked_add(amount);
1174
1179
  addressInputAmountMap[address].isOwner = true;
@@ -1177,12 +1182,12 @@ class KoniState {
1177
1182
 
1178
1183
  // Check if address is valid with current network
1179
1184
  if (!(0, _cardano.validateAddressNetwork)(address, currentCardanoNetwork)) {
1180
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Current network is not match with input address'));
1185
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('bg.koni.handler.State.networkNotMatchInputAddress'));
1181
1186
  }
1182
1187
  }
1183
1188
  for (const address in addressOutputMap) {
1184
1189
  if (!(0, _cardano.validateAddressNetwork)(address, currentCardanoNetwork)) {
1185
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Current network is not match with output address'));
1190
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('bg.koni.handler.State.networkNotMatchOutputAddress'));
1186
1191
  }
1187
1192
  if (!addressInputAmountMap[address] && !addressOutputMap[address].is_zero()) {
1188
1193
  addressOutputAmountMap[address] = {
@@ -1227,7 +1232,7 @@ class KoniState {
1227
1232
  return false;
1228
1233
  });
1229
1234
  if (!needOwnerKeyHash) {
1230
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.PROOF_GENERATION_FAILED, (0, _i18next.t)('Not found owner key hash'));
1235
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.PROOF_GENERATION_FAILED, (0, _i18next.t)('bg.koni.handler.State.notFoundOwnerKeyHash'));
1231
1236
  }
1232
1237
  if (needForeignKeyHash && !partialSign) {
1233
1238
  throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, 'Not support foreign key hash yet');
@@ -1252,7 +1257,7 @@ class KoniState {
1252
1257
  if (payload) {
1253
1258
  return payload;
1254
1259
  } else {
1255
- throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Not found signature'));
1260
+ throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
1256
1261
  }
1257
1262
  } else {
1258
1263
  throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.SIGN_TRANSACTION_DECLINED);
@@ -1300,7 +1305,7 @@ class KoniState {
1300
1305
  if (payload) {
1301
1306
  return payload;
1302
1307
  } else {
1303
- throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found signature'));
1308
+ throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
1304
1309
  }
1305
1310
  } else {
1306
1311
  throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.USER_REJECTED_REQUEST);
@@ -1371,8 +1376,8 @@ class KoniState {
1371
1376
  }, []);
1372
1377
  if (new _bignumber.default(totalBalance.value).lt(inputAmount)) {
1373
1378
  payloadAfterValidated.errors = [{
1374
- message: (0, _i18next.t)('Insufficient balance'),
1375
- name: (0, _i18next.t)('Unable to sign transaction')
1379
+ message: (0, _i18next.t)('bg.koni.handler.State.insufficientBalance'),
1380
+ name: (0, _i18next.t)('bg.koni.handler.State.unableToSignTransaction')
1376
1381
  }];
1377
1382
  }
1378
1383
  const psbtOutputData = psbtGenerate.txOutputs.map(output => {
@@ -1413,7 +1418,7 @@ class KoniState {
1413
1418
  if (payload) {
1414
1419
  return payload;
1415
1420
  } else {
1416
- throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found signature'));
1421
+ throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
1417
1422
  }
1418
1423
  } else {
1419
1424
  throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.USER_REJECTED_REQUEST);
@@ -1449,7 +1454,7 @@ class KoniState {
1449
1454
  if (payload) {
1450
1455
  return payload;
1451
1456
  } else {
1452
- throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found signature'));
1457
+ throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.koni.handler.State.notFoundSignature'));
1453
1458
  }
1454
1459
  } else {
1455
1460
  throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.USER_REJECTED_REQUEST);
@@ -592,8 +592,30 @@ class KoniTabs {
592
592
  method: 'wallet_addEthereumChain',
593
593
  params: [chainData]
594
594
  });
595
+ const [networkKey] = this.#koniState.findNetworkKeyByChainId(chainIdDec);
596
+ if (networkKey) {
597
+ await this.#koniState.switchEvmNetworkByUrl((0, _utils2.stripUrl)(url), networkKey);
598
+ }
595
599
  } else {
596
- throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.NETWORK_NOT_SUPPORTED, 'This network is currently not supported');
600
+ await this.#koniState.showUnsupportedNetworkSwitchConfirm(id, url, {
601
+ mode: 'insert',
602
+ chainSpec: {
603
+ genesisHash: '',
604
+ paraId: null,
605
+ addressPrefix: 0,
606
+ evmChainId: chainIdDec,
607
+ existentialDeposit: '',
608
+ decimals: 0
609
+ },
610
+ chainEditInfo: {
611
+ chainType: 'EVM',
612
+ currentProvider: '',
613
+ providers: {},
614
+ slug: ''
615
+ },
616
+ unconfirmed: true,
617
+ providerError: _types2._CHAIN_VALIDATION_ERROR.UNSUPPORTED_CHAIN_CANNOT_ADD
618
+ });
597
619
  }
598
620
  }
599
621
  return null;
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.3.54-1'
16
+ version: '1.3.55-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -183,7 +183,7 @@ class BalanceService {
183
183
  const chainInfo = this.state.chainService.getChainInfoByKey(chain);
184
184
  const chainState = this.state.chainService.getChainStateByKey(chain);
185
185
  if (!chainInfo || !chainState || !chainState.active) {
186
- return Promise.reject(new _BalanceError.BalanceError(_KoniTypes.BalanceErrorType.NETWORK_ERROR, (0, _i18next.t)('{{chain}} is inactive. Please enable network', {
186
+ return Promise.reject(new _BalanceError.BalanceError(_KoniTypes.BalanceErrorType.NETWORK_ERROR, (0, _i18next.t)('bg.BALANCE.services.service.balance.chainInactiveEnableNetwork', {
187
187
  replace: {
188
188
  chain: chainInfo.name
189
189
  }
@@ -192,7 +192,7 @@ class BalanceService {
192
192
  const tSlug = tokenSlug || (0, _utils._getChainNativeTokenSlug)(chainInfo);
193
193
  const tokenInfo = this.state.chainService.getAssetBySlug(tSlug);
194
194
  if (!tokenInfo) {
195
- return Promise.reject(new _BalanceError.BalanceError(_KoniTypes.BalanceErrorType.TOKEN_ERROR, (0, _i18next.t)('Transfer is currently not available for this token: {{tSlug}}', {
195
+ return Promise.reject(new _BalanceError.BalanceError(_KoniTypes.BalanceErrorType.TOKEN_ERROR, (0, _i18next.t)('bg.BALANCE.services.service.balance.transferNotAvailableForToken', {
196
196
  replace: {
197
197
  slug: tSlug
198
198
  }
@@ -240,7 +240,7 @@ class BalanceService {
240
240
  if (hasError) {
241
241
  var _unsub2;
242
242
  (_unsub2 = unsub) === null || _unsub2 === void 0 ? void 0 : _unsub2();
243
- reject(new Error((0, _i18next.t)('Failed to get balance. Please check your internet connection or change your network endpoint')));
243
+ reject(new Error((0, _i18next.t)('bg.BALANCE.services.service.balance.failedToGetBalance')));
244
244
  }
245
245
  }, 9999);
246
246
  });
@@ -137,7 +137,7 @@ async function getERC721Transaction(web3Api, chain, contractAddress, senderAddre
137
137
  } catch (e) {
138
138
  const error = e;
139
139
  if (error.message.includes('transfer to non ERC721Receiver implementer')) {
140
- error.message = (0, _i18next.t)('Unable to send. NFT not supported on recipient address');
140
+ error.message = (0, _i18next.t)('bg.BALANCE.services.service.balance.transfer.smartContract.nftNotSupportedOnRecipient');
141
141
  }
142
142
  throw error;
143
143
  }
@@ -151,8 +151,14 @@ const dryRunXcmExtrinsicV2 = async request => {
151
151
  const {
152
152
  assetHub,
153
153
  bridgeHub,
154
- destination
154
+ destination,
155
+ hops
155
156
  } = dryRunResult;
157
+ for (const hop of hops) {
158
+ if (!hop.result.success) {
159
+ return false;
160
+ }
161
+ }
156
162
  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) {
157
163
  if ((destination === null || destination === void 0 ? void 0 : destination.success) === false) {
158
164
  // pass dry-run in these cases
@@ -17,7 +17,7 @@ var _util = require("@polkadot/util");
17
17
  // Copyright 2019-2022 @subwallet/extension-base
18
18
  // SPDX-License-Identifier: Apache-2.0
19
19
 
20
- const version = '/v3';
20
+ const version = '/v4';
21
21
  const paraSpellApi = {
22
22
  buildXcm: `${version}/x-transfer`,
23
23
  dryRunXcm: `${version}/dry-run`,
@@ -75,7 +75,7 @@ function txHexToSubmittableExtrinsic(api, hex) {
75
75
  }
76
76
  }
77
77
  async function buildXcm(request) {
78
- var _originTokenInfo$meta, _originTokenInfo$meta2;
78
+ var _originTokenInfo$meta;
79
79
  const {
80
80
  destinationChain,
81
81
  originChain,
@@ -87,9 +87,8 @@ async function buildXcm(request) {
87
87
  if (!substrateApi) {
88
88
  throw new Error('Substrate API is not available');
89
89
  }
90
- const psAssetType = (_originTokenInfo$meta = originTokenInfo.metadata) === null || _originTokenInfo$meta === void 0 ? void 0 : _originTokenInfo$meta.paraSpellAssetType;
91
- const psAssetValue = (_originTokenInfo$meta2 = originTokenInfo.metadata) === null || _originTokenInfo$meta2 === void 0 ? void 0 : _originTokenInfo$meta2.paraSpellValue;
92
- if (!psAssetType || !psAssetValue) {
90
+ const paraSpellIdentifyV4 = (_originTokenInfo$meta = originTokenInfo.metadata) === null || _originTokenInfo$meta === void 0 ? void 0 : _originTokenInfo$meta.paraSpellIdentifyV4;
91
+ if (!paraSpellIdentifyV4) {
93
92
  throw new Error('Token is not support XCM at this time');
94
93
  }
95
94
  const paraSpellChainMap = await (0, _paraspellChainMap.fetchParaSpellChainMap)();
@@ -97,7 +96,10 @@ async function buildXcm(request) {
97
96
  address: recipient,
98
97
  from: paraSpellChainMap[originChain.slug],
99
98
  to: paraSpellChainMap[destinationChain.slug],
100
- currency: createParaSpellCurrency(psAssetType, psAssetValue, sendingValue)
99
+ currency: createParaSpellCurrency(paraSpellIdentifyV4, sendingValue),
100
+ options: {
101
+ abstractDecimals: false
102
+ }
101
103
  };
102
104
  const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.buildXcm, {
103
105
  method: 'POST',
@@ -116,7 +118,7 @@ async function buildXcm(request) {
116
118
  return txHexToSubmittableExtrinsic(chainApi.api, extrinsicHex);
117
119
  }
118
120
  async function dryRunXcm(request) {
119
- var _originTokenInfo$meta3, _originTokenInfo$meta4;
121
+ var _originTokenInfo$meta2;
120
122
  const {
121
123
  destinationChain,
122
124
  originChain,
@@ -126,9 +128,8 @@ async function dryRunXcm(request) {
126
128
  sendingValue
127
129
  } = request;
128
130
  const paraSpellChainMap = await (0, _paraspellChainMap.fetchParaSpellChainMap)();
129
- const psAssetType = (_originTokenInfo$meta3 = originTokenInfo.metadata) === null || _originTokenInfo$meta3 === void 0 ? void 0 : _originTokenInfo$meta3.paraSpellAssetType;
130
- const psAssetValue = (_originTokenInfo$meta4 = originTokenInfo.metadata) === null || _originTokenInfo$meta4 === void 0 ? void 0 : _originTokenInfo$meta4.paraSpellValue;
131
- if (!psAssetType || !psAssetValue) {
131
+ const paraSpellIdentifyV4 = (_originTokenInfo$meta2 = originTokenInfo.metadata) === null || _originTokenInfo$meta2 === void 0 ? void 0 : _originTokenInfo$meta2.paraSpellIdentifyV4;
132
+ if (!paraSpellIdentifyV4) {
132
133
  throw new Error('Token is not support XCM at this time');
133
134
  }
134
135
  const bodyData = {
@@ -136,7 +137,10 @@ async function dryRunXcm(request) {
136
137
  address: recipient,
137
138
  from: paraSpellChainMap[originChain.slug],
138
139
  to: paraSpellChainMap[destinationChain.slug],
139
- currency: createParaSpellCurrency(psAssetType, psAssetValue, sendingValue)
140
+ currency: createParaSpellCurrency(paraSpellIdentifyV4, sendingValue),
141
+ options: {
142
+ abstractDecimals: false
143
+ }
140
144
  };
141
145
  const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.dryRunXcm, {
142
146
  method: 'POST',
@@ -158,7 +162,7 @@ async function dryRunXcm(request) {
158
162
  return await response.json();
159
163
  }
160
164
  async function estimateXcmFee(request) {
161
- var _fromTokenInfo$metada, _fromTokenInfo$metada2;
165
+ var _fromTokenInfo$metada;
162
166
  const {
163
167
  fromChainInfo,
164
168
  fromTokenInfo,
@@ -168,9 +172,8 @@ async function estimateXcmFee(request) {
168
172
  value
169
173
  } = request;
170
174
  const paraSpellChainMap = await (0, _paraspellChainMap.fetchParaSpellChainMap)();
171
- const psAssetType = (_fromTokenInfo$metada = fromTokenInfo.metadata) === null || _fromTokenInfo$metada === void 0 ? void 0 : _fromTokenInfo$metada.paraSpellAssetType;
172
- const psAssetValue = (_fromTokenInfo$metada2 = fromTokenInfo.metadata) === null || _fromTokenInfo$metada2 === void 0 ? void 0 : _fromTokenInfo$metada2.paraSpellValue;
173
- if (!psAssetType || !psAssetValue) {
175
+ const paraSpellIdentifyV4 = (_fromTokenInfo$metada = fromTokenInfo.metadata) === null || _fromTokenInfo$metada === void 0 ? void 0 : _fromTokenInfo$metada.paraSpellIdentifyV4;
176
+ if (!paraSpellIdentifyV4) {
174
177
  console.error('Lack of paraspell metadata');
175
178
  return undefined;
176
179
  }
@@ -179,7 +182,10 @@ async function estimateXcmFee(request) {
179
182
  address: recipient,
180
183
  from: paraSpellChainMap[fromChainInfo.slug],
181
184
  to: paraSpellChainMap[toChainInfo.slug],
182
- currency: createParaSpellCurrency(psAssetType, psAssetValue, value)
185
+ currency: createParaSpellCurrency(paraSpellIdentifyV4, value),
186
+ options: {
187
+ abstractDecimals: false
188
+ }
183
189
  };
184
190
  const response = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.PARASPELL, paraSpellApi.feeXcm, {
185
191
  method: 'POST',
@@ -195,11 +201,11 @@ async function estimateXcmFee(request) {
195
201
  }
196
202
  return await response.json();
197
203
  }
198
- function createParaSpellCurrency(assetType, assetValue, amount) {
204
+ function createParaSpellCurrency(paraSpellIdentifyV4, amount) {
199
205
  // todo: handle complex conditions for asset has same symbol in a chain: Id, Multi-location, ...
200
206
  // todo: or update all asset to use multi-location
201
207
  return {
202
- [assetType]: assetValue,
208
+ ...paraSpellIdentifyV4,
203
209
  amount
204
210
  };
205
211
  }
@@ -41,7 +41,7 @@ const _BALANCE_CHAIN_GROUP = {
41
41
  genshiro: ['genshiro_testnet', 'genshiro'],
42
42
  equilibrium_parachain: ['equilibrium_parachain'],
43
43
  bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network', 'truth_network', 'jamton'],
44
- 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'],
44
+ 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'],
45
45
  kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
46
46
  // perhaps there are some runtime updates
47
47
  centrifuge: ['centrifuge'],
@@ -273,7 +273,7 @@ const _TRANSFER_CHAIN_GROUP = {
273
273
  genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
274
274
  // crab: ['crab', 'pangolin'],
275
275
  bitcountry: ['pioneer', 'bitcountry'],
276
- statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub'],
276
+ statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet', 'dbcchain', 'westend_assethub', 'chainflip_assethub', 'origintrail'],
277
277
  riochain: ['riochain'],
278
278
  sora_substrate: ['sora_substrate'],
279
279
  avail: ['kate', 'goldberg_testnet'],
@@ -17,4 +17,5 @@ exports._CHAIN_VALIDATION_ERROR = _CHAIN_VALIDATION_ERROR;
17
17
  _CHAIN_VALIDATION_ERROR["NONE"] = "none";
18
18
  _CHAIN_VALIDATION_ERROR["CONNECTION_FAILURE"] = "connectionFailure";
19
19
  _CHAIN_VALIDATION_ERROR["PROVIDER_NOT_SAME_CHAIN"] = "providerNotSameChain";
20
+ _CHAIN_VALIDATION_ERROR["UNSUPPORTED_CHAIN_CANNOT_ADD"] = "unsupportedChainCannotAdd";
20
21
  })(_CHAIN_VALIDATION_ERROR || (exports._CHAIN_VALIDATION_ERROR = _CHAIN_VALIDATION_ERROR = {}));
@@ -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.112'; // update this when build chain-list
15
+ const ChainListVersion = '0.2.113'; // update this when build chain-list
16
16
 
17
17
  // todo: move this interface to chainlist
18
18
  exports.ChainListVersion = ChainListVersion;
@@ -12,9 +12,8 @@ const _STAKING_CHAIN_GROUP = {
12
12
  assetHub: ['statemine', 'statemint', 'westend_assethub'],
13
13
  para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network', 'polimec'],
14
14
  astar: ['astar', 'shiden', 'shibuya'],
15
- amplitude: ['amplitude', 'amplitude_test', 'kilt', 'kilt_peregrine', 'pendulum', 'krest_network'],
15
+ amplitude: ['amplitude', 'amplitude_test', 'pendulum', 'krest_network'],
16
16
  // amplitude and kilt only share some common logic
17
- kilt: ['kilt', 'kilt_peregrine'],
18
17
  nominationPool: ['polkadot', 'kusama', 'westend', 'alephTest', 'aleph', 'kate', 'vara_network', 'goldberg_testnet', 'availTuringTest', 'avail_mainnet', 'vara_testnet', 'cere', 'analog_timechain'],
19
18
  bifrost: ['bifrost', 'bifrost_testnet'],
20
19
  aleph: ['aleph', 'alephTest'],
@@ -161,7 +161,8 @@ class BasePoolHandler {
161
161
  };
162
162
  }
163
163
  const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(this.chain);
164
- const nativeTokenBalance = await this.state.balanceService.getTransferableBalance(request.address, this.chain);
164
+ // Use TRANSFER_BALANCE extrinsic in order to get transferable balanace without minus ED
165
+ const nativeTokenBalance = await this.state.balanceService.getTransferableBalance(request.address, this.chain, undefined, _KoniTypes.ExtrinsicType.TRANSFER_BALANCE);
165
166
  const bnNativeTokenBalance = new _util.BN(nativeTokenBalance.value);
166
167
  const bnMinBalanceToJoin = new _util.BN(((_poolInfo$statistic2 = poolInfo.statistic) === null || _poolInfo$statistic2 === void 0 ? void 0 : (_poolInfo$statistic2$ = _poolInfo$statistic2.earningThreshold) === null || _poolInfo$statistic2$ === void 0 ? void 0 : _poolInfo$statistic2$.join) || '0').add(new _util.BN(poolInfo.metadata.maintainBalance));
167
168
  if (bnNativeTokenBalance.lte(bnMinBalanceToJoin)) {