@subwallet/extension-base 1.3.45-1 → 1.3.47-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 (128) hide show
  1. package/background/KoniTypes.d.ts +5 -0
  2. package/background/KoniTypes.js +5 -0
  3. package/background/types.d.ts +2 -0
  4. package/cjs/background/KoniTypes.js +7 -1
  5. package/cjs/core/logic-validation/request.js +55 -28
  6. package/cjs/core/utils.js +22 -0
  7. package/cjs/koni/api/nft/ordinal_nft/index.js +3 -2
  8. package/cjs/koni/background/handlers/Extension.js +84 -61
  9. package/cjs/koni/background/handlers/State.js +3 -0
  10. package/cjs/koni/background/handlers/Tabs.js +11 -3
  11. package/cjs/packageInfo.js +1 -1
  12. package/cjs/page/evm/index.js +64 -105
  13. package/cjs/page/index.js +5 -3
  14. package/cjs/page/substrate/Accounts.js +2 -1
  15. package/cjs/services/balance-service/helpers/subscribe/index.js +3 -76
  16. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  17. package/cjs/services/buy-service/index.js +2 -0
  18. package/cjs/services/chain-service/index.js +3 -0
  19. package/cjs/services/chain-service/utils/index.js +34 -1
  20. package/cjs/services/chain-service/utils/patch.js +1 -1
  21. package/cjs/services/earning-service/constants/chains.js +2 -1
  22. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +32 -0
  23. package/cjs/services/earning-service/handlers/native-staking/astar.js +18 -0
  24. package/cjs/services/earning-service/handlers/native-staking/base.js +40 -29
  25. package/cjs/services/earning-service/handlers/native-staking/dtao.js +5 -0
  26. package/cjs/services/earning-service/handlers/native-staking/mythos.js +28 -0
  27. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -0
  28. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
  29. package/cjs/services/earning-service/handlers/native-staking/tao.js +5 -0
  30. package/cjs/services/earning-service/handlers/nomination-pool/index.js +6 -3
  31. package/cjs/services/earning-service/service.js +65 -22
  32. package/cjs/services/history-service/index.js +12 -7
  33. package/cjs/services/keyring-service/context/handlers/Json.js +2 -1
  34. package/cjs/services/keyring-service/context/handlers/Ledger.js +7 -2
  35. package/cjs/services/request-service/handler/AuthRequestHandler.js +30 -6
  36. package/cjs/services/subscan-service/index.js +35 -104
  37. package/cjs/services/transaction-service/utils.js +10 -1
  38. package/cjs/strategy/api-request-strategy/index.js +1 -0
  39. package/cjs/strategy/api-request-strategy/utils/index.js +2 -2
  40. package/cjs/strategy/api-request-strategy-v2/index.js +138 -0
  41. package/cjs/strategy/api-request-strategy-v2/types.js +1 -0
  42. package/cjs/types/account/info/keyring.js +1 -0
  43. package/cjs/utils/account/analyze.js +5 -2
  44. package/cjs/utils/account/common.js +93 -2
  45. package/cjs/utils/account/transform.js +10 -0
  46. package/cjs/utils/asset.js +9 -2
  47. package/cjs/utils/gear/combine.js +4 -3
  48. package/cjs/utils/gear/vft.js +104 -135
  49. package/cjs/utils/staticData/index.js +7 -2
  50. package/core/logic-validation/request.js +31 -4
  51. package/core/types.d.ts +3 -2
  52. package/core/utils.js +24 -2
  53. package/koni/api/nft/ordinal_nft/index.js +3 -2
  54. package/koni/background/handlers/Extension.js +31 -8
  55. package/koni/background/handlers/State.js +4 -1
  56. package/koni/background/handlers/Tabs.js +11 -4
  57. package/package.json +21 -9
  58. package/packageInfo.js +1 -1
  59. package/page/evm/index.d.ts +9 -18
  60. package/page/evm/index.js +62 -101
  61. package/page/index.js +5 -3
  62. package/page/substrate/Accounts.js +2 -1
  63. package/services/balance-service/helpers/subscribe/index.d.ts +1 -11
  64. package/services/balance-service/helpers/subscribe/index.js +3 -74
  65. package/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  66. package/services/buy-service/index.js +2 -0
  67. package/services/chain-service/index.d.ts +1 -0
  68. package/services/chain-service/index.js +3 -0
  69. package/services/chain-service/utils/index.d.ts +10 -2
  70. package/services/chain-service/utils/index.js +29 -2
  71. package/services/chain-service/utils/patch.js +1 -1
  72. package/services/earning-service/constants/chains.d.ts +1 -0
  73. package/services/earning-service/constants/chains.js +2 -1
  74. package/services/earning-service/handlers/native-staking/amplitude.d.ts +1 -0
  75. package/services/earning-service/handlers/native-staking/amplitude.js +32 -0
  76. package/services/earning-service/handlers/native-staking/astar.d.ts +1 -0
  77. package/services/earning-service/handlers/native-staking/astar.js +18 -0
  78. package/services/earning-service/handlers/native-staking/base.d.ts +2 -0
  79. package/services/earning-service/handlers/native-staking/base.js +40 -29
  80. package/services/earning-service/handlers/native-staking/dtao.d.ts +1 -0
  81. package/services/earning-service/handlers/native-staking/dtao.js +5 -0
  82. package/services/earning-service/handlers/native-staking/mythos.d.ts +1 -0
  83. package/services/earning-service/handlers/native-staking/mythos.js +28 -0
  84. package/services/earning-service/handlers/native-staking/para-chain.d.ts +1 -0
  85. package/services/earning-service/handlers/native-staking/para-chain.js +17 -0
  86. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -0
  87. package/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
  88. package/services/earning-service/handlers/native-staking/tao.d.ts +1 -0
  89. package/services/earning-service/handlers/native-staking/tao.js +5 -0
  90. package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -0
  91. package/services/earning-service/handlers/nomination-pool/index.js +6 -3
  92. package/services/earning-service/service.d.ts +3 -0
  93. package/services/earning-service/service.js +68 -25
  94. package/services/history-service/index.js +12 -7
  95. package/services/keyring-service/context/handlers/Json.js +2 -1
  96. package/services/keyring-service/context/handlers/Ledger.js +7 -2
  97. package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
  98. package/services/request-service/handler/AuthRequestHandler.js +30 -6
  99. package/services/request-service/types.d.ts +1 -0
  100. package/services/subscan-service/index.d.ts +13 -27
  101. package/services/subscan-service/index.js +26 -95
  102. package/services/transaction-service/utils.js +11 -2
  103. package/strategy/api-request-strategy/context/base.d.ts +2 -6
  104. package/strategy/api-request-strategy/index.js +1 -0
  105. package/strategy/api-request-strategy/types.d.ts +4 -2
  106. package/strategy/api-request-strategy/utils/index.js +2 -2
  107. package/strategy/api-request-strategy-v2/index.d.ts +22 -0
  108. package/strategy/api-request-strategy-v2/index.js +128 -0
  109. package/strategy/api-request-strategy-v2/types.d.ts +11 -0
  110. package/strategy/api-request-strategy-v2/types.js +1 -0
  111. package/types/account/action/subscribe.d.ts +3 -0
  112. package/types/account/info/keyring.d.ts +3 -0
  113. package/types/account/info/keyring.js +1 -0
  114. package/types/balance/transfer.d.ts +1 -0
  115. package/types/buy.d.ts +1 -1
  116. package/utils/account/analyze.js +5 -2
  117. package/utils/account/common.d.ts +13 -1
  118. package/utils/account/common.js +91 -2
  119. package/utils/account/transform.js +10 -0
  120. package/utils/asset.d.ts +2 -1
  121. package/utils/asset.js +7 -1
  122. package/utils/gear/combine.d.ts +2 -1
  123. package/utils/gear/combine.js +4 -4
  124. package/utils/gear/vft.d.ts +20 -9
  125. package/utils/gear/vft.js +104 -135
  126. package/utils/staticData/assetHubStaking.json +1 -0
  127. package/utils/staticData/index.d.ts +4 -1
  128. package/utils/staticData/index.js +5 -1
@@ -16,6 +16,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
16
16
  var _constants = require("@subwallet/extension-base/constants");
17
17
  var _transfer = require("@subwallet/extension-base/core/logic-validation/transfer");
18
18
  var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
19
+ var _types2 = require("@subwallet/extension-base/core/types");
19
20
  var _utils = require("@subwallet/extension-base/core/utils");
20
21
  var _defaults = require("@subwallet/extension-base/defaults");
21
22
  var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
@@ -42,7 +43,7 @@ var _polygonBridge = require("@subwallet/extension-base/services/balance-service
42
43
  var _posBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge");
43
44
  var _utils5 = require("@subwallet/extension-base/services/balance-service/transfer/xcm/utils");
44
45
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
45
- var _types2 = require("@subwallet/extension-base/services/chain-service/types");
46
+ var _types3 = require("@subwallet/extension-base/services/chain-service/types");
46
47
  var _utils6 = require("@subwallet/extension-base/services/chain-service/utils");
47
48
  var _utils7 = require("@subwallet/extension-base/services/fee-service/utils");
48
49
  var _tokenPayFee = require("@subwallet/extension-base/services/fee-service/utils/tokenPayFee");
@@ -51,12 +52,12 @@ var _constants4 = require("@subwallet/extension-base/services/setting-service/co
51
52
  var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
52
53
  var _storage = require("@subwallet/extension-base/storage");
53
54
  var _stores = require("@subwallet/extension-base/stores");
54
- var _types3 = require("@subwallet/extension-base/types");
55
+ var _types4 = require("@subwallet/extension-base/types");
55
56
  var _utils8 = require("@subwallet/extension-base/utils");
56
57
  var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTransaction");
57
58
  var _getId = require("@subwallet/extension-base/utils/getId");
58
59
  var _keyring = require("@subwallet/keyring");
59
- var _types4 = require("@subwallet/keyring/types");
60
+ var _types5 = require("@subwallet/keyring/types");
60
61
  var _utils9 = require("@subwallet/keyring/utils");
61
62
  var _validate = require("@subwallet/keyring/utils/address/validate");
62
63
  var _uiKeyring = require("@subwallet/ui-keyring");
@@ -65,7 +66,7 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
65
66
  var bitcoin = _interopRequireWildcard(require("bitcoinjs-lib"));
66
67
  var _i18next = require("i18next");
67
68
  var _rxjs = require("rxjs");
68
- var _types5 = require("@polkadot/types");
69
+ var _types6 = require("@polkadot/types");
69
70
  var _util = require("@polkadot/util");
70
71
  var _utilCrypto = require("@polkadot/util-crypto");
71
72
  var _utils11 = require("../utils");
@@ -217,7 +218,7 @@ class KoniExtension {
217
218
  const {
218
219
  reject
219
220
  } = queued;
220
- reject(new _TransactionError.TransactionError(_types3.BasicTxErrorType.USER_REJECT_REQUEST));
221
+ reject(new _TransactionError.TransactionError(_types4.BasicTxErrorType.USER_REJECT_REQUEST));
221
222
  return true;
222
223
  }
223
224
 
@@ -313,16 +314,32 @@ class KoniExtension {
313
314
  }
314
315
  async subscribeInputAddressData(request, id, port) {
315
316
  const {
317
+ actionType,
316
318
  chain,
317
- data
319
+ data,
320
+ token
318
321
  } = request;
319
322
  const cb = (0, _subscriptions.createSubscription)(id, port);
320
- const combineFunction = async (chainInfoMap, accountProxyMap, _contacts) => {
323
+ const combineFunction = async (chainInfoMap, tokenInfoMap, accountProxyMap, _contacts) => {
321
324
  const accountProxies = Object.values(accountProxyMap);
322
325
  const contacts = (0, _utils8.transformAddresses)(_contacts);
323
326
  const chainInfo = chainInfoMap[chain];
327
+ const tokenInfo = tokenInfoMap[token || ''];
324
328
  const substrateApi = this.#koniState.chainService.getSubstrateApi(chain);
325
- const rs = await (0, _utils8._analyzeAddress)(data, accountProxies, contacts, chainInfo, substrateApi);
329
+ const accountProxiesFiltered = accountProxies.filter(accountProxy => {
330
+ var _accountProxy$account;
331
+ const signMode = (_accountProxy$account = accountProxy.accounts[0]) === null || _accountProxy$account === void 0 ? void 0 : _accountProxy$account.signMode;
332
+ if (signMode === _types4.AccountSignMode.ECDSA_SUBSTRATE_LEDGER) {
333
+ if (actionType === _types2.ActionType.SEND_NFT) {
334
+ return false;
335
+ }
336
+ if (tokenInfo) {
337
+ return (0, _utils8.isSubstrateEcdsaLedgerAssetSupported)(tokenInfo, chainInfo);
338
+ }
339
+ }
340
+ return true;
341
+ });
342
+ const rs = await (0, _utils8._analyzeAddress)(data, accountProxiesFiltered, contacts, chainInfo, substrateApi);
326
343
  return {
327
344
  id,
328
345
  ...rs
@@ -331,17 +348,20 @@ class KoniExtension {
331
348
  const accountObservable = this.#koniState.keyringService.context.observable.accounts;
332
349
  const contactObservable = this.#koniState.keyringService.context.observable.contacts;
333
350
  const chainInfoMapObservable = this.#koniState.chainService.subscribeChainInfoMap().asObservable();
351
+ const tokenInfoMapObservable = this.#koniState.chainService.subscribeAssetRegistry().asObservable();
334
352
  const subscription = (0, _rxjs.combineLatest)({
335
353
  chainInfoMap: chainInfoMapObservable,
354
+ tokenInfoMap: tokenInfoMapObservable,
336
355
  accountProxies: accountObservable,
337
356
  contacts: contactObservable
338
357
  }).subscribe(_ref8 => {
339
358
  let {
340
359
  accountProxies,
341
360
  chainInfoMap,
342
- contacts
361
+ contacts,
362
+ tokenInfoMap
343
363
  } = _ref8;
344
- combineFunction(chainInfoMap, accountProxies, contacts).then(rs => cb(rs)).catch(console.error);
364
+ combineFunction(chainInfoMap, tokenInfoMap, accountProxies, contacts).then(rs => cb(rs)).catch(console.error);
345
365
  });
346
366
  this.createUnsubscriptionHandle(id, () => {
347
367
  subscription.unsubscribe();
@@ -352,7 +372,8 @@ class KoniExtension {
352
372
  const accountProxyMap = this.#koniState.keyringService.context.value.accounts;
353
373
  const contacts = this.#koniState.keyringService.context.value.contacts;
354
374
  const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
355
- return combineFunction(chainInfoMap, accountProxyMap, contacts);
375
+ const tokenInfoMap = this.#koniState.chainService.getAssetRegistry();
376
+ return combineFunction(chainInfoMap, tokenInfoMap, accountProxyMap, contacts);
356
377
  }
357
378
 
358
379
  /**
@@ -588,11 +609,11 @@ class KoniExtension {
588
609
  isAddressValidWithAuthType(address, accountAuthTypes) {
589
610
  const type = (0, _keyring.getKeypairTypeByAddress)(address);
590
611
  const validTypes = {
591
- evm: _types4.EthereumKeypairTypes,
592
- substrate: _types4.SubstrateKeypairTypes,
593
- ton: _types4.TonKeypairTypes,
594
- cardano: _types4.CardanoKeypairTypes,
595
- bitcoin: _types4.BitcoinKeypairTypes
612
+ evm: _types5.EthereumKeypairTypes,
613
+ substrate: _types5.SubstrateKeypairTypes,
614
+ ton: _types5.TonKeypairTypes,
615
+ cardano: _types5.CardanoKeypairTypes,
616
+ bitcoin: _types5.BitcoinKeypairTypes
596
617
  };
597
618
  return !!accountAuthTypes && accountAuthTypes.some(authType => {
598
619
  var _validTypes$authType;
@@ -1292,6 +1313,8 @@ class KoniExtension {
1292
1313
  const isTransferLocalTokenAndPayThatTokenAsFee = !isTransferNativeToken && tokenPayFeeSlug === tokenSlug;
1293
1314
  const isCustomTokenPayFeeAssetHub = tokenPayFeeSlug && !(0, _utils6._isNativeTokenBySlug)(tokenPayFeeSlug) && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.assetHub.includes(chain);
1294
1315
  const isCustomTokenPayFeeHydration = tokenPayFeeSlug && !(0, _utils6._isNativeTokenBySlug)(tokenPayFeeSlug) && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.hydration.includes(chain);
1316
+ const pairFrom = _uiKeyring.keyring.getPair(from);
1317
+ const isSubstrateECDSATransaction = pairFrom.meta.isSubstrateECDSA;
1295
1318
  const extrinsicType = isTransferNativeToken ? _KoniTypes.ExtrinsicType.TRANSFER_BALANCE : _KoniTypes.ExtrinsicType.TRANSFER_TOKEN;
1296
1319
  let chainType = _KoniTypes.ChainType.SUBSTRATE;
1297
1320
  const transferAmount = {
@@ -1308,7 +1331,7 @@ class KoniExtension {
1308
1331
  extrinsicType
1309
1332
  });
1310
1333
  try {
1311
- if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils6._isTokenTransferredByEvm)(transferTokenInfo)) {
1334
+ if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils6._isTokenTransferredByEvm)(transferTokenInfo) && !isSubstrateECDSATransaction) {
1312
1335
  chainType = _KoniTypes.ChainType.EVM;
1313
1336
  const txVal = transferAll ? transferTokenAvailable.value : value || '0';
1314
1337
  const evmApi = this.#koniState.getEvmApi(chain);
@@ -1446,7 +1469,7 @@ class KoniExtension {
1446
1469
  const nonNativeTokenPayFeeInfo = await this.#koniState.balanceService.getTokensHasBalance((0, _utils8.reformatAddress)(from), chain, tokenPayFeeSlug);
1447
1470
  const nonNativeTokenPayFeeBalance = BigInt(((_nonNativeTokenPayFee = nonNativeTokenPayFeeInfo[tokenPayFeeSlug]) === null || _nonNativeTokenPayFee === void 0 ? void 0 : _nonNativeTokenPayFee.free) || '0');
1448
1471
  if (nonNativeFee > nonNativeTokenPayFeeBalance) {
1449
- inputTransaction.errors.push(new _TransactionError.TransactionError(_types3.BasicTxErrorType.NOT_ENOUGH_BALANCE));
1472
+ inputTransaction.errors.push(new _TransactionError.TransactionError(_types4.BasicTxErrorType.NOT_ENOUGH_BALANCE));
1450
1473
  }
1451
1474
  }
1452
1475
 
@@ -1485,10 +1508,10 @@ class KoniExtension {
1485
1508
  };
1486
1509
  const ignoreWarnings = [];
1487
1510
  if (transferAll) {
1488
- ignoreWarnings.push(_types3.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1511
+ ignoreWarnings.push(_types4.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1489
1512
  }
1490
1513
  if (transferBounceable) {
1491
- ignoreWarnings.push(_types3.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1514
+ ignoreWarnings.push(_types4.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1492
1515
  }
1493
1516
  return this.#koniState.transactionService.handleTransaction({
1494
1517
  errors,
@@ -1668,7 +1691,7 @@ class KoniExtension {
1668
1691
  if (isSubstrateXcm) {
1669
1692
  const isDryRunSuccess = await (0, _xcm.dryRunXcmExtrinsicV2)(params);
1670
1693
  if (!isDryRunSuccess) {
1671
- inputTransaction.errors.push(new _TransactionError.TransactionError(_types3.BasicTxErrorType.UNABLE_TO_SEND, 'Unable to perform transaction. Select another token or destination chain and try again'));
1694
+ inputTransaction.errors.push(new _TransactionError.TransactionError(_types4.BasicTxErrorType.UNABLE_TO_SEND, 'Unable to perform transaction. Select another token or destination chain and try again'));
1672
1695
  }
1673
1696
  }
1674
1697
  };
@@ -1691,10 +1714,10 @@ class KoniExtension {
1691
1714
  }
1692
1715
  const ignoreWarnings = [];
1693
1716
  if (transferAll) {
1694
- ignoreWarnings.push(_types3.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1717
+ ignoreWarnings.push(_types4.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1695
1718
  }
1696
1719
  if (transferBounceable) {
1697
- ignoreWarnings.push(_types3.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1720
+ ignoreWarnings.push(_types4.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1698
1721
  }
1699
1722
  return await this.#koniState.transactionService.handleTransaction({
1700
1723
  url: _constants3.EXTENSION_REQUEST_URL,
@@ -2730,7 +2753,7 @@ class KoniExtension {
2730
2753
  chainName: chainInfo.name
2731
2754
  }
2732
2755
  });
2733
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2756
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2734
2757
  }
2735
2758
  const bondingValidation = (0, _bonding.validateBondingCondition)(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
2736
2759
  if (!amount || !selectedValidators || bondingValidation.length > 0) {
@@ -2758,7 +2781,7 @@ class KoniExtension {
2758
2781
  } = inputData;
2759
2782
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
2760
2783
  if (!chainStakingMetadata || !nominatorMetadata) {
2761
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
2784
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INTERNAL_ERROR)]);
2762
2785
  }
2763
2786
  const unbondingValidation = (0, _bonding.validateUnbondingCondition)(nominatorMetadata, amount, chain, chainStakingMetadata, validatorAddress);
2764
2787
  if (!amount || unbondingValidation.length > 0) {
@@ -2783,10 +2806,10 @@ class KoniExtension {
2783
2806
  } = inputData;
2784
2807
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
2785
2808
  if (!address || !poolHandler) {
2786
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
2809
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
2787
2810
  }
2788
2811
  const chain = poolHandler.chain;
2789
- const stakingType = poolHandler.type === _types3.YieldPoolType.NOMINATION_POOL ? _KoniTypes.StakingType.POOLED : _KoniTypes.StakingType.NOMINATED;
2812
+ const stakingType = poolHandler.type === _types4.YieldPoolType.NOMINATION_POOL ? _KoniTypes.StakingType.POOLED : _KoniTypes.StakingType.NOMINATED;
2790
2813
  const substrateApi = this.#koniState.getSubstrateApi(chain);
2791
2814
  const extrinsic = await (0, _bonding.getClaimRewardExtrinsic)(substrateApi, chain, address, stakingType, bondReward);
2792
2815
  return await this.#koniState.transactionService.handleTransaction({
@@ -2807,7 +2830,7 @@ class KoniExtension {
2807
2830
  } = inputData;
2808
2831
  const chain = (_this$koniState$earni = this.#koniState.earningService.getPoolHandler(slug)) === null || _this$koniState$earni === void 0 ? void 0 : _this$koniState$earni.chain;
2809
2832
  if (!chain || !selectedUnstaking) {
2810
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
2833
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
2811
2834
  }
2812
2835
  const substrateApi = this.#koniState.getSubstrateApi(chain);
2813
2836
  // @ts-ignore
@@ -2837,7 +2860,7 @@ class KoniExtension {
2837
2860
  chainName: chainInfo.name
2838
2861
  }
2839
2862
  });
2840
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2863
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2841
2864
  }
2842
2865
  const bondingValidation = (0, _relayChain.validatePoolBondingCondition)(chainInfo, amount, selectedPool, address, chainStakingMetadata, nominatorMetadata);
2843
2866
  if (!amount || bondingValidation.length > 0) {
@@ -2869,7 +2892,7 @@ class KoniExtension {
2869
2892
  chainName: chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.name
2870
2893
  }
2871
2894
  });
2872
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2895
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2873
2896
  }
2874
2897
  const unbondingValidation = (0, _relayChain.validateRelayUnbondingCondition)(amount, chainStakingMetadata, nominatorMetadata);
2875
2898
  if (!amount || unbondingValidation.length > 0) {
@@ -2906,7 +2929,7 @@ class KoniExtension {
2906
2929
  networkKey
2907
2930
  } = inputData;
2908
2931
  if (!address) {
2909
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
2932
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
2910
2933
  }
2911
2934
  const dotSamaApi = this.#koniState.getSubstrateApi(networkKey);
2912
2935
  const chainInfo = this.#koniState.getChainInfo(networkKey);
@@ -3089,7 +3112,7 @@ class KoniExtension {
3089
3112
  const {
3090
3113
  payload
3091
3114
  } = request;
3092
- let registry = new _types5.TypeRegistry();
3115
+ let registry = new _types6.TypeRegistry();
3093
3116
  if (isJsonPayload(payload)) {
3094
3117
  const [, chainInfo] = this.#koniState.findNetworkKeyByGenesisHash(payload.genesisHash);
3095
3118
  const registries = await Promise.all([(0, _utils11.setupApiRegistry)(chainInfo, this.#koniState), (0, _utils11.setupDatabaseRegistry)(chainInfo, payload, this.#koniState), (0, _utils11.setupDappRegistry)(payload, this.#koniState)]);
@@ -3534,7 +3557,7 @@ class KoniExtension {
3534
3557
  const {
3535
3558
  connectionStatus
3536
3559
  } = this.#koniState.chainService.getChainStatusByKey(_constants2._DEFAULT_MANTA_ZK_CHAIN);
3537
- if (connectionStatus !== _types2._ChainConnectionStatus.CONNECTED) {
3560
+ if (connectionStatus !== _types3._ChainConnectionStatus.CONNECTED) {
3538
3561
  // TODO: do better
3539
3562
  await timeout();
3540
3563
  }
@@ -3758,10 +3781,10 @@ class KoniExtension {
3758
3781
  if (!data) {
3759
3782
  if (step) {
3760
3783
  this.#koniState.transactionService.updateProcessStepStatus(step, {
3761
- status: _types3.StepStatus.FAILED
3784
+ status: _types4.StepStatus.FAILED
3762
3785
  });
3763
3786
  }
3764
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
3787
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INTERNAL_ERROR)]);
3765
3788
  }
3766
3789
  const isLastStep = inputData.currentStep + 1 === path.steps.length;
3767
3790
  const yieldValidation = await this.#koniState.earningService.validateYieldJoin({
@@ -3772,7 +3795,7 @@ class KoniExtension {
3772
3795
  if (yieldValidation.length > 0) {
3773
3796
  if (step) {
3774
3797
  this.#koniState.transactionService.updateProcessStepStatus(step, {
3775
- status: _types3.StepStatus.FAILED
3798
+ status: _types4.StepStatus.FAILED
3776
3799
  });
3777
3800
  }
3778
3801
  return this.#koniState.transactionService.generateBeforeHandleResponseErrors(yieldValidation);
@@ -3783,7 +3806,7 @@ class KoniExtension {
3783
3806
  } catch (e) {
3784
3807
  if (step) {
3785
3808
  this.#koniState.transactionService.updateProcessStepStatus(step, {
3786
- status: _types3.StepStatus.FAILED
3809
+ status: _types4.StepStatus.FAILED
3787
3810
  });
3788
3811
  }
3789
3812
  throw e;
@@ -3812,7 +3835,7 @@ class KoniExtension {
3812
3835
  feeComponent: [{
3813
3836
  amount: fee.amount || '0',
3814
3837
  // TODO: Add fee type
3815
- feeType: _types3.SwapFeeType.NETWORK_FEE,
3838
+ feeType: _types4.SwapFeeType.NETWORK_FEE,
3816
3839
  tokenSlug: fee.slug
3817
3840
  }],
3818
3841
  defaultFeeToken: fee.slug,
@@ -3823,7 +3846,7 @@ class KoniExtension {
3823
3846
  const lastStep = path.steps[path.steps.length - 1];
3824
3847
  const combineInfo = {
3825
3848
  // In real case, only `YIELD` have multiple steps
3826
- type: lastStep.type === _types3.YieldStepType.JOIN_NOMINATION_POOL ? _types3.EarningProcessType.NOMINATION_POOL : lastStep.type === _types3.YieldStepType.NOMINATE ? _types3.EarningProcessType.NATIVE_STAKING : _types3.EarningProcessType.YIELD,
3849
+ type: lastStep.type === _types4.YieldStepType.JOIN_NOMINATION_POOL ? _types4.EarningProcessType.NOMINATION_POOL : lastStep.type === _types4.YieldStepType.NOMINATE ? _types4.EarningProcessType.NATIVE_STAKING : _types4.EarningProcessType.YIELD,
3827
3850
  data,
3828
3851
  brief: {
3829
3852
  amount: data.amount,
@@ -3835,16 +3858,16 @@ class KoniExtension {
3835
3858
  await this.#koniState.transactionService.createProcessIfNeed({
3836
3859
  id: processId,
3837
3860
  address: (0, _utils8.reformatAddress)(address),
3838
- type: _types3.ProcessType.EARNING,
3861
+ type: _types4.ProcessType.EARNING,
3839
3862
  combineInfo,
3840
3863
  currentStepId: step.stepId,
3841
3864
  steps: path.steps.map((step, index) => {
3842
3865
  const fee = convertFee(path.totalFee[index]);
3843
- if (![_types3.YieldStepType.XCM, _types3.YieldStepType.DEFAULT, _types3.YieldStepType.TOKEN_APPROVAL].includes(step.type)) {
3866
+ if (![_types4.YieldStepType.XCM, _types4.YieldStepType.DEFAULT, _types4.YieldStepType.TOKEN_APPROVAL].includes(step.type)) {
3844
3867
  const metadata = data;
3845
3868
  return {
3846
3869
  ...step,
3847
- status: _types3.StepStatus.QUEUED,
3870
+ status: _types4.StepStatus.QUEUED,
3848
3871
  fee,
3849
3872
  metadata: metadata
3850
3873
  };
@@ -3852,10 +3875,10 @@ class KoniExtension {
3852
3875
  return {
3853
3876
  ...step,
3854
3877
  fee,
3855
- status: _types3.StepStatus.QUEUED
3878
+ status: _types4.StepStatus.QUEUED
3856
3879
  };
3857
- }).filter(step => step.type !== _types3.YieldStepType.DEFAULT),
3858
- status: _types3.StepStatus.QUEUED
3880
+ }).filter(step => step.type !== _types4.YieldStepType.DEFAULT),
3881
+ status: _types4.StepStatus.QUEUED
3859
3882
  });
3860
3883
  }
3861
3884
  }
@@ -3975,7 +3998,7 @@ class KoniExtension {
3975
3998
  } = params;
3976
3999
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3977
4000
  if (!poolHandler) {
3978
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
4001
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
3979
4002
  }
3980
4003
  const extrinsic = await this.#koniState.earningService.handleYieldWithdraw(params);
3981
4004
  return await this.#koniState.transactionService.handleTransaction({
@@ -3995,7 +4018,7 @@ class KoniExtension {
3995
4018
  } = params;
3996
4019
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3997
4020
  if (!poolHandler || !selectedUnstaking) {
3998
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
4021
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
3999
4022
  }
4000
4023
  const chain = poolHandler.chain;
4001
4024
  const extrinsic = await this.#koniState.earningService.handleYieldCancelUnstake(params);
@@ -4015,7 +4038,7 @@ class KoniExtension {
4015
4038
  } = params;
4016
4039
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
4017
4040
  if (!address || !poolHandler) {
4018
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
4041
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
4019
4042
  }
4020
4043
  const extrinsic = await this.#koniState.earningService.handleYieldClaimReward(params);
4021
4044
  return await this.#koniState.transactionService.handleTransaction({
@@ -4033,7 +4056,7 @@ class KoniExtension {
4033
4056
  } = params;
4034
4057
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
4035
4058
  if (!poolHandler) {
4036
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
4059
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
4037
4060
  }
4038
4061
  const slippage = await this.#koniState.earningService.yieldGetEarningSlippage(params);
4039
4062
  return slippage;
@@ -4258,10 +4281,10 @@ class KoniExtension {
4258
4281
  if (!quote || !address || !process) {
4259
4282
  if (step) {
4260
4283
  this.#koniState.transactionService.updateProcessStepStatus(step, {
4261
- status: _types3.StepStatus.FAILED
4284
+ status: _types4.StepStatus.FAILED
4262
4285
  });
4263
4286
  }
4264
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
4287
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INTERNAL_ERROR)]);
4265
4288
  }
4266
4289
  const isLastStep = inputData.currentStep + 1 === process.steps.length;
4267
4290
  const swapValidations = await this.#koniState.swapService.validateSwapProcessV2({
@@ -4274,7 +4297,7 @@ class KoniExtension {
4274
4297
  if (swapValidations.length > 0) {
4275
4298
  if (step) {
4276
4299
  this.#koniState.transactionService.updateProcessStepStatus(step, {
4277
- status: _types3.StepStatus.FAILED
4300
+ status: _types4.StepStatus.FAILED
4278
4301
  });
4279
4302
  }
4280
4303
  return this.#koniState.transactionService.generateBeforeHandleResponseErrors(swapValidations);
@@ -4285,7 +4308,7 @@ class KoniExtension {
4285
4308
  } catch (e) {
4286
4309
  if (step) {
4287
4310
  this.#koniState.transactionService.updateProcessStepStatus(step, {
4288
- status: _types3.StepStatus.FAILED
4311
+ status: _types4.StepStatus.FAILED
4289
4312
  });
4290
4313
  }
4291
4314
  console.log('Error handling process step', e);
@@ -4321,7 +4344,7 @@ class KoniExtension {
4321
4344
  await this.#koniState.transactionService.createProcessIfNeed({
4322
4345
  id: processId,
4323
4346
  address: (0, _utils8.reformatAddress)(address),
4324
- type: _types3.ProcessType.SWAP,
4347
+ type: _types4.ProcessType.SWAP,
4325
4348
  currentStepId: step.stepId,
4326
4349
  combineInfo,
4327
4350
  steps: inputData.process.steps.map((step, index) => {
@@ -4329,10 +4352,10 @@ class KoniExtension {
4329
4352
  return {
4330
4353
  ...step,
4331
4354
  fee,
4332
- status: _types3.StepStatus.QUEUED
4355
+ status: _types4.StepStatus.QUEUED
4333
4356
  };
4334
- }).filter(step => step.type !== _types3.CommonStepType.DEFAULT),
4335
- status: _types3.StepStatus.QUEUED
4357
+ }).filter(step => step.type !== _types4.CommonStepType.DEFAULT),
4358
+ status: _types4.StepStatus.QUEUED
4336
4359
  });
4337
4360
  }
4338
4361
  }
@@ -4529,7 +4552,7 @@ class KoniExtension {
4529
4552
  throw new Error('Pair not found');
4530
4553
  }
4531
4554
  const signMode = (0, _utils8.getAccountSignMode)(address, pair.meta);
4532
- if (signMode !== _types3.AccountSignMode.PASSWORD) {
4555
+ if (signMode !== _types4.AccountSignMode.PASSWORD) {
4533
4556
  throw new Error('Account can not use this feature');
4534
4557
  }
4535
4558
  const setting = await new Promise(resolve => this.#koniState.settingService.getSettings(resolve));
@@ -4537,16 +4560,16 @@ class KoniExtension {
4537
4560
  throw new Error('Wallet not enable this feature');
4538
4561
  }
4539
4562
  switch (type) {
4540
- case _types3.ProcessType.EARNING:
4563
+ case _types4.ProcessType.EARNING:
4541
4564
 
4542
4565
  // eslint-disable-next-line no-fallthrough
4543
- case _types3.ProcessType.SWAP:
4566
+ case _types4.ProcessType.SWAP:
4544
4567
  {
4545
4568
  const currentStep = requestData.currentStep;
4546
4569
  let stepNums;
4547
4570
  let submitData;
4548
4571
  let waitXcmData;
4549
- if (type === _types3.ProcessType.EARNING) {
4572
+ if (type === _types4.ProcessType.EARNING) {
4550
4573
  const data = requestData;
4551
4574
  const poolHandler = this.#koniState.earningService.getPoolHandler(data.data.slug);
4552
4575
  if (poolHandler) {
@@ -248,6 +248,9 @@ class KoniState {
248
248
  this.afterChainServiceInit();
249
249
  });
250
250
 
251
+ // init sails
252
+ await _utils3.sailsCache.init();
253
+
251
254
  // Mark app is ready
252
255
  this.eventService.emit('general.init', true);
253
256
  }
@@ -39,6 +39,7 @@ function transformAccountsV2(accounts) {
39
39
  let anyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
40
40
  let authInfo = arguments.length > 2 ? arguments[2] : undefined;
41
41
  let accountAuthTypes = arguments.length > 3 ? arguments[3] : undefined;
42
+ let isSubstrateConnector = arguments.length > 4 ? arguments[4] : undefined;
42
43
  const accountSelected = authInfo ? authInfo.isAllowed ? Object.keys(authInfo.isAllowedMap).filter(address => authInfo.isAllowedMap[address]) : [] : [];
43
44
  const authTypeFilter = _ref => {
44
45
  let {
@@ -68,6 +69,12 @@ function transformAccountsV2(accounts) {
68
69
  if (type === 'cardano' && json.meta.isReadOnly) {
69
70
  return false;
70
71
  }
72
+ const canConnectSubstrateEcdsa = (authInfo === null || authInfo === void 0 ? void 0 : authInfo.canConnectSubstrateEcdsa) && isSubstrateConnector;
73
+
74
+ // If the dApp has not connected to the Substrate type yet, we do not return Substrate ECDSA accounts.
75
+ if (type === 'ethereum' && json.meta.isSubstrateECDSA && !canConnectSubstrateEcdsa) {
76
+ return false;
77
+ }
71
78
  return true;
72
79
  } else {
73
80
  return true;
@@ -297,7 +304,8 @@ class KoniTabs {
297
304
  async accountsListV2(url, _ref7) {
298
305
  let {
299
306
  accountAuthType,
300
- anyType
307
+ anyType,
308
+ isSubstrateConnector
301
309
  } = _ref7;
302
310
  const authInfo = await this.getAuthInfo(url);
303
311
  const accountAuthTypes = [];
@@ -317,7 +325,7 @@ class KoniTabs {
317
325
  accountAuthTypes.push('cardano');
318
326
  }
319
327
  }
320
- return transformAccountsV2(this.#koniState.keyringService.context.pairs, anyType, authInfo, accountAuthTypes);
328
+ return transformAccountsV2(this.#koniState.keyringService.context.pairs, anyType, authInfo, accountAuthTypes, isSubstrateConnector);
321
329
  }
322
330
 
323
331
  // TODO: Update logic
@@ -342,7 +350,7 @@ class KoniTabs {
342
350
  }
343
351
  }
344
352
  const accounts = this.#koniState.keyringService.context.pairs;
345
- return cb(transformAccountsV2(accounts, false, authInfo, accountAuthTypes));
353
+ return cb(transformAccountsV2(accounts, false, authInfo, accountAuthTypes, true));
346
354
  }).catch(console.error);
347
355
  }),
348
356
  url
@@ -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.45-1'
16
+ version: '1.3.47-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;