@subwallet/extension-base 1.3.46-0 → 1.3.48-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 (119) hide show
  1. package/background/KoniTypes.d.ts +7 -1
  2. package/background/KoniTypes.js +1 -0
  3. package/background/errors/TransactionError.js +4 -0
  4. package/cjs/background/KoniTypes.js +1 -0
  5. package/cjs/background/errors/TransactionError.js +4 -0
  6. package/cjs/core/logic-validation/transfer.js +7 -0
  7. package/cjs/koni/api/nft/config.js +1 -1
  8. package/cjs/koni/api/nft/ordinal_nft/index.js +3 -2
  9. package/cjs/koni/background/handlers/Extension.js +21 -1
  10. package/cjs/koni/background/handlers/State.js +3 -0
  11. package/cjs/packageInfo.js +1 -1
  12. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  13. package/cjs/services/buy-service/index.js +2 -0
  14. package/cjs/services/chain-service/index.js +7 -2
  15. package/cjs/services/chain-service/utils/index.js +3 -0
  16. package/cjs/services/chain-service/utils/patch.js +1 -1
  17. package/cjs/services/earning-service/constants/chains.js +4 -2
  18. package/cjs/services/earning-service/handlers/lending/interlay.js +2 -1
  19. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +2 -1
  20. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  21. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +2 -1
  22. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -1
  23. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +32 -0
  24. package/cjs/services/earning-service/handlers/native-staking/astar.js +20 -1
  25. package/cjs/services/earning-service/handlers/native-staking/base.js +42 -30
  26. package/cjs/services/earning-service/handlers/native-staking/dtao.js +79 -21
  27. package/cjs/services/earning-service/handlers/native-staking/mythos.js +30 -1
  28. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -0
  29. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +49 -6
  30. package/cjs/services/earning-service/handlers/native-staking/tao.js +98 -32
  31. package/cjs/services/earning-service/handlers/nomination-pool/index.js +5 -2
  32. package/cjs/services/earning-service/handlers/special.js +3 -1
  33. package/cjs/services/earning-service/service.js +52 -7
  34. package/cjs/services/history-service/index.js +12 -7
  35. package/cjs/services/subscan-service/index.js +35 -104
  36. package/cjs/services/transaction-service/helpers/index.js +2 -0
  37. package/cjs/services/transaction-service/index.js +15 -0
  38. package/cjs/services/transaction-service/utils.js +10 -1
  39. package/cjs/strategy/api-request-strategy/index.js +1 -0
  40. package/cjs/strategy/api-request-strategy/utils/index.js +2 -2
  41. package/cjs/strategy/api-request-strategy-v2/index.js +138 -0
  42. package/cjs/strategy/api-request-strategy-v2/types.js +1 -0
  43. package/cjs/types/transaction/error.js +1 -0
  44. package/cjs/utils/account/transform.js +3 -2
  45. package/cjs/utils/gear/combine.js +4 -3
  46. package/cjs/utils/gear/vft.js +104 -135
  47. package/core/logic-validation/transfer.js +7 -0
  48. package/koni/api/nft/config.d.ts +1 -1
  49. package/koni/api/nft/config.js +1 -1
  50. package/koni/api/nft/ordinal_nft/index.js +3 -2
  51. package/koni/background/handlers/Extension.d.ts +1 -0
  52. package/koni/background/handlers/Extension.js +21 -1
  53. package/koni/background/handlers/State.js +4 -1
  54. package/package.json +20 -9
  55. package/packageInfo.js +1 -1
  56. package/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  57. package/services/buy-service/index.js +2 -0
  58. package/services/chain-service/index.js +7 -2
  59. package/services/chain-service/utils/index.js +3 -0
  60. package/services/chain-service/utils/patch.js +1 -1
  61. package/services/earning-service/constants/chains.d.ts +1 -0
  62. package/services/earning-service/constants/chains.js +2 -1
  63. package/services/earning-service/handlers/base.d.ts +5 -3
  64. package/services/earning-service/handlers/lending/interlay.d.ts +1 -1
  65. package/services/earning-service/handlers/lending/interlay.js +2 -1
  66. package/services/earning-service/handlers/liquid-staking/acala.d.ts +1 -1
  67. package/services/earning-service/handlers/liquid-staking/acala.js +2 -1
  68. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +1 -1
  69. package/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  70. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +1 -1
  71. package/services/earning-service/handlers/liquid-staking/parallel.js +2 -1
  72. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +1 -1
  73. package/services/earning-service/handlers/liquid-staking/stella-swap.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 +2 -1
  77. package/services/earning-service/handlers/native-staking/astar.js +20 -1
  78. package/services/earning-service/handlers/native-staking/base.d.ts +4 -2
  79. package/services/earning-service/handlers/native-staking/base.js +42 -30
  80. package/services/earning-service/handlers/native-staking/dtao.d.ts +5 -3
  81. package/services/earning-service/handlers/native-staking/dtao.js +80 -22
  82. package/services/earning-service/handlers/native-staking/mythos.d.ts +2 -1
  83. package/services/earning-service/handlers/native-staking/mythos.js +30 -1
  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 +6 -1
  87. package/services/earning-service/handlers/native-staking/relay-chain.js +50 -7
  88. package/services/earning-service/handlers/native-staking/tao.d.ts +23 -4
  89. package/services/earning-service/handlers/native-staking/tao.js +99 -33
  90. package/services/earning-service/handlers/nomination-pool/index.d.ts +3 -2
  91. package/services/earning-service/handlers/nomination-pool/index.js +5 -2
  92. package/services/earning-service/handlers/special.d.ts +2 -1
  93. package/services/earning-service/handlers/special.js +3 -1
  94. package/services/earning-service/service.d.ts +3 -1
  95. package/services/earning-service/service.js +52 -7
  96. package/services/history-service/index.js +12 -7
  97. package/services/subscan-service/index.d.ts +13 -27
  98. package/services/subscan-service/index.js +26 -95
  99. package/services/transaction-service/helpers/index.js +2 -0
  100. package/services/transaction-service/index.js +15 -0
  101. package/services/transaction-service/utils.js +11 -2
  102. package/strategy/api-request-strategy/context/base.d.ts +2 -6
  103. package/strategy/api-request-strategy/index.js +1 -0
  104. package/strategy/api-request-strategy/types.d.ts +4 -2
  105. package/strategy/api-request-strategy/utils/index.js +2 -2
  106. package/strategy/api-request-strategy-v2/index.d.ts +22 -0
  107. package/strategy/api-request-strategy-v2/index.js +128 -0
  108. package/strategy/api-request-strategy-v2/types.d.ts +11 -0
  109. package/strategy/api-request-strategy-v2/types.js +1 -0
  110. package/types/buy.d.ts +1 -1
  111. package/types/transaction/error.d.ts +2 -1
  112. package/types/transaction/error.js +1 -0
  113. package/types/yield/actions/join/submit.d.ts +10 -1
  114. package/types/yield/info/chain/info.d.ts +2 -0
  115. package/utils/account/transform.js +3 -2
  116. package/utils/gear/combine.d.ts +2 -1
  117. package/utils/gear/combine.js +4 -4
  118. package/utils/gear/vft.d.ts +20 -9
  119. package/utils/gear/vft.js +104 -135
@@ -16,7 +16,7 @@ import { AuthUrls } from '@subwallet/extension-base/services/request-service/typ
16
16
  import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
17
17
  import { BitcoinTransactionData, SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
18
18
  import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
19
- import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapRequestV2, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
19
+ import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitChangeValidatorStaking, SubmitYieldJoinData, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapRequestV2, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
20
20
  import { RequestSubmitSignPsbtTransfer, RequestSubmitTransfer, RequestSubmitTransferWithId, RequestSubscribeTransfer, ResponseSubscribeTransfer, ResponseSubscribeTransferConfirmation } from '@subwallet/extension-base/types/balance/transfer';
21
21
  import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
22
22
  import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
@@ -425,6 +425,7 @@ export declare enum ExtrinsicType {
425
425
  STAKING_CANCEL_COMPOUNDING = "staking.cancel_compounding",
426
426
  STAKING_CANCEL_UNSTAKE = "staking.cancel_unstake",
427
427
  JOIN_YIELD_POOL = "earn.join_pool",
428
+ CHANGE_EARNING_VALIDATOR = "earn.nominate",
428
429
  MINT_VDOT = "earn.mint_vdot",
429
430
  MINT_LDOT = "earn.mint_ldot",
430
431
  MINT_SDOT = "earn.mint_sdot",
@@ -458,6 +459,7 @@ export interface ExtrinsicDataTypeMap {
458
459
  [ExtrinsicType.STAKING_LEAVE_POOL]: RequestYieldLeave;
459
460
  [ExtrinsicType.STAKING_BOND]: RequestStakePoolingBonding;
460
461
  [ExtrinsicType.STAKING_UNBOND]: RequestUnbondingSubmit;
462
+ [ExtrinsicType.CHANGE_EARNING_VALIDATOR]: SubmitChangeValidatorStaking;
461
463
  [ExtrinsicType.STAKING_CLAIM_REWARD]: RequestStakeClaimReward;
462
464
  [ExtrinsicType.STAKING_WITHDRAW]: RequestYieldWithdrawal;
463
465
  [ExtrinsicType.STAKING_COMPOUNDING]: RequestTuringStakeCompound;
@@ -1336,6 +1338,9 @@ export interface NominationInfo {
1336
1338
  validatorMinStake?: string;
1337
1339
  status: EarningStatus;
1338
1340
  originActiveStake?: string;
1341
+ commission?: number;
1342
+ expectedReturn?: number;
1343
+ eraRewardPoint?: string;
1339
1344
  }
1340
1345
  export interface UnstakingInfo {
1341
1346
  chain: string;
@@ -1931,6 +1936,7 @@ export interface KoniRequestSignatures {
1931
1936
  'pri(yield.cancelWithdrawal.submit)': [RequestStakeCancelWithdrawal, SWTransactionResponse];
1932
1937
  'pri(yield.claimReward.submit)': [RequestStakeClaimReward, SWTransactionResponse];
1933
1938
  'pri(yield.getEarningSlippage)': [RequestEarningSlippage, EarningSlippageResult];
1939
+ 'pri(yield.changeValidator.submit)': [SubmitYieldJoinData, SWTransactionResponse];
1934
1940
  'pri(transaction.history.getSubscription)': [null, TransactionHistoryItem[], TransactionHistoryItem[]];
1935
1941
  'pri(transaction.history.subscribe)': [RequestSubscribeHistory, ResponseSubscribeHistory, TransactionHistoryItem[]];
1936
1942
  'pri(transfer.getMaxTransferable)': [RequestMaxTransferable, AmountData];
@@ -84,6 +84,7 @@ export let ExtrinsicType;
84
84
  ExtrinsicType["STAKING_CANCEL_COMPOUNDING"] = "staking.cancel_compounding";
85
85
  ExtrinsicType["STAKING_CANCEL_UNSTAKE"] = "staking.cancel_unstake";
86
86
  ExtrinsicType["JOIN_YIELD_POOL"] = "earn.join_pool";
87
+ ExtrinsicType["CHANGE_EARNING_VALIDATOR"] = "earn.nominate";
87
88
  ExtrinsicType["MINT_VDOT"] = "earn.mint_vdot";
88
89
  ExtrinsicType["MINT_LDOT"] = "earn.mint_ldot";
89
90
  ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
@@ -87,6 +87,10 @@ const defaultErrorMap = {
87
87
  message: detectTranslate('Unable to fetch staking data. Re-enable current network and try again'),
88
88
  code: undefined
89
89
  },
90
+ [StakingTxErrorType.REMAINING_AMOUNT_TOO_LOW]: {
91
+ message: detectTranslate('Remaining amount too low'),
92
+ code: undefined
93
+ },
90
94
  [TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT]: {
91
95
  message: detectTranslate('Receiver is not enough existential deposit'),
92
96
  code: undefined
@@ -99,6 +99,7 @@ exports.ExtrinsicType = ExtrinsicType;
99
99
  ExtrinsicType["STAKING_CANCEL_COMPOUNDING"] = "staking.cancel_compounding";
100
100
  ExtrinsicType["STAKING_CANCEL_UNSTAKE"] = "staking.cancel_unstake";
101
101
  ExtrinsicType["JOIN_YIELD_POOL"] = "earn.join_pool";
102
+ ExtrinsicType["CHANGE_EARNING_VALIDATOR"] = "earn.nominate";
102
103
  ExtrinsicType["MINT_VDOT"] = "earn.mint_vdot";
103
104
  ExtrinsicType["MINT_LDOT"] = "earn.mint_ldot";
104
105
  ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
@@ -92,6 +92,10 @@ const defaultErrorMap = {
92
92
  message: (0, _utils.detectTranslate)('Unable to fetch staking data. Re-enable current network and try again'),
93
93
  code: undefined
94
94
  },
95
+ [_types.StakingTxErrorType.REMAINING_AMOUNT_TOO_LOW]: {
96
+ message: (0, _utils.detectTranslate)('Remaining amount too low'),
97
+ code: undefined
98
+ },
95
99
  [_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT]: {
96
100
  message: (0, _utils.detectTranslate)('Receiver is not enough existential deposit'),
97
101
  code: undefined
@@ -204,6 +204,13 @@ function checkSupportForAction(validationResponse, blockedActionsMap) {
204
204
  currentAction = `${extrinsicType}___${chain}`;
205
205
  break;
206
206
  }
207
+ case _KoniTypes.ExtrinsicType.CHANGE_EARNING_VALIDATOR:
208
+ {
209
+ const data = validationResponse.data;
210
+ const slug = data.slug;
211
+ currentAction = `${extrinsicType}___${slug}`;
212
+ break;
213
+ }
207
214
  case _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD:
208
215
  {
209
216
  const data = validationResponse.data;
@@ -100,7 +100,7 @@ const IPFS2_RMRK = 'https://ipfs2.rmrk.link/ipfs/'; // ????
100
100
  exports.IPFS2_RMRK = IPFS2_RMRK;
101
101
  const IPFS_ETH_ARAGON = 'https://ipfs.eth.aragon.network/ipfs/'; // 400
102
102
  exports.IPFS_ETH_ARAGON = IPFS_ETH_ARAGON;
103
- const SUBWALLET_IPFS = 'https://ipfs.subwallet.app/ipfs/'; // ???
103
+ const SUBWALLET_IPFS = 'https://ipfs-files.subwallet.app/ipfs/'; // ???
104
104
  exports.SUBWALLET_IPFS = SUBWALLET_IPFS;
105
105
  let SUPPORTED_NFT_NETWORKS;
106
106
  exports.SUPPORTED_NFT_NETWORKS = SUPPORTED_NFT_NETWORKS;
@@ -52,10 +52,11 @@ class OrdinalNftApi extends _nft.BaseNftApi {
52
52
  this.subscanService = _subscanService.SubscanService.getInstance();
53
53
  }
54
54
  async handleNft(address, handleNftParams) {
55
- const events = await this.subscanService.getAccountRemarkEvents(this.subscanChain, address);
55
+ const groupId = this.subscanService.getGroupId();
56
+ const events = await this.subscanService.getAccountRemarkEvents(groupId, this.subscanChain, address);
56
57
  if (events && events.length) {
57
58
  const extrinsicIds = events.map(data => data.extrinsic_index);
58
- const extrinsicParams = await this.subscanService.getExtrinsicParams(this.subscanChain, extrinsicIds);
59
+ const extrinsicParams = await this.subscanService.getExtrinsicParams(groupId, this.subscanChain, extrinsicIds);
59
60
  const items = [];
60
61
  for (const data of extrinsicParams) {
61
62
  const {
@@ -4061,6 +4061,25 @@ class KoniExtension {
4061
4061
  const slippage = await this.#koniState.earningService.yieldGetEarningSlippage(params);
4062
4062
  return slippage;
4063
4063
  }
4064
+ async handleYieldChangeValidator(params) {
4065
+ const {
4066
+ address,
4067
+ slug
4068
+ } = params;
4069
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
4070
+ if (!poolHandler) {
4071
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types4.BasicTxErrorType.INVALID_PARAMS)]);
4072
+ }
4073
+ const extrinsic = await this.#koniState.earningService.handleYieldChangeValidator(params);
4074
+ return await this.#koniState.transactionService.handleTransaction({
4075
+ address,
4076
+ chain: poolHandler.chain,
4077
+ transaction: extrinsic,
4078
+ data: params,
4079
+ extrinsicType: _KoniTypes.ExtrinsicType.CHANGE_EARNING_VALIDATOR,
4080
+ chainType: _KoniTypes.ChainType.SUBSTRATE
4081
+ });
4082
+ }
4064
4083
 
4065
4084
  /* Campaign */
4066
4085
 
@@ -4935,7 +4954,8 @@ class KoniExtension {
4935
4954
  return await this.yieldSubmitClaimReward(request);
4936
4955
  case 'pri(yield.getEarningSlippage)':
4937
4956
  return await this.yieldGetEarningSlippage(request);
4938
-
4957
+ case 'pri(yield.changeValidator.submit)':
4958
+ return await this.handleYieldChangeValidator(request);
4939
4959
  /* Others */
4940
4960
 
4941
4961
  /* Actions */
@@ -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
  }
@@ -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.46-0'
16
+ version: '1.3.48-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -338,17 +338,15 @@ const subscribeTokensAccountsPallet = async _ref6 => {
338
338
  const tokensAccountsKey = 'query_tokens_accounts';
339
339
  const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
340
340
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, tokenTypes);
341
-
342
- // Hotfix balance for gdot
343
- const getGdotBalance = async () => {
344
- const gdotBalances = await queryGdotBalance(substrateApi, addresses, assetMap[gdotSlug], extrinsicType);
345
- callback(gdotBalances);
346
- };
347
341
  const unsubList = await Promise.all(Object.values(tokenMap).map(tokenInfo => {
348
- // Hotfix balance for gdot
349
- if (tokenInfo.slug === gdotSlug) {
342
+ var _tokenInfo$metadata;
343
+ if ((_tokenInfo$metadata = tokenInfo.metadata) !== null && _tokenInfo$metadata !== void 0 && _tokenInfo$metadata.isGigaToken) {
350
344
  return (0, _rxjs.timer)(0, _constants.CRON_REFRESH_PRICE_INTERVAL).subscribe(() => {
351
- getGdotBalance().catch(console.error);
345
+ const getGigaTokenBalance = async () => {
346
+ const gigaTokenBalances = await queryGigaTokenBalance(substrateApi, addresses, assetMap[tokenInfo.slug], extrinsicType);
347
+ callback(gigaTokenBalances);
348
+ };
349
+ getGigaTokenBalance().catch(console.error);
352
350
  });
353
351
  }
354
352
  try {
@@ -561,11 +559,7 @@ const subscribeSubnetAlphaPallet = async _ref9 => {
561
559
  clearInterval(interval);
562
560
  };
563
561
  };
564
-
565
- // Hot fix for gdot balance
566
-
567
- const gdotSlug = 'hydradx_main-LOCAL-GDOT';
568
- async function queryGdotBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
562
+ async function queryGigaTokenBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
569
563
  return await Promise.all(addresses.map(async address => {
570
564
  const _balanceInfo = await substrateApi.api.call.currenciesApi.account((0, _utils2._getTokenOnChainAssetId)(tokenInfo), address);
571
565
  const balanceInfo = _balanceInfo.toPrimitive();
@@ -21,6 +21,8 @@ const convertSupportType = support => {
21
21
  return _types.AccountChainType.CARDANO;
22
22
  case 'TON':
23
23
  return _types.AccountChainType.TON;
24
+ case 'BITCOIN':
25
+ return _types.AccountChainType.BITCOIN;
24
26
  default:
25
27
  return null;
26
28
  }
@@ -689,15 +689,20 @@ class ChainService {
689
689
  const priorityTokensMap = this.priorityTokensSubject.value || {};
690
690
  const priorityTokensList = priorityTokensMap.token && typeof priorityTokensMap.token === 'object' ? Object.keys(priorityTokensMap.token) : [];
691
691
  for (const assetSlug of priorityTokensList) {
692
- const assetState = assetSettings[assetSlug];
693
692
  const assetInfo = this.getAssetBySlug(assetSlug);
693
+
694
+ // This can occur if the assetSlug is not present in the current chainlist version
695
+ if (!assetInfo) {
696
+ continue;
697
+ }
698
+ const assetState = assetSettings[assetSlug];
694
699
  const chainState = chainStateMap[assetInfo.originChain];
695
700
  if (!assetState) {
696
701
  // If this asset not has asset setting, this token is not enabled before (not turned off before)
697
702
  if (!chainState || !chainState.manualTurnOff) {
698
703
  await this.updateAssetSetting(assetSlug, {
699
704
  visible: true
700
- }, true);
705
+ }, false);
701
706
  }
702
707
  }
703
708
  }
@@ -655,6 +655,9 @@ function _getBlockExplorerFromChain(chainInfo) {
655
655
  } else if (_isPureBitcoinChain(chainInfo)) {
656
656
  var _chainInfo$bitcoinInf;
657
657
  blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf === void 0 ? void 0 : _chainInfo$bitcoinInf.blockExplorer;
658
+ } else if (_isPureTonChain(chainInfo)) {
659
+ var _chainInfo$tonInfo;
660
+ blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$tonInfo = chainInfo.tonInfo) === null || _chainInfo$tonInfo === void 0 ? void 0 : _chainInfo$tonInfo.blockExplorer;
658
661
  } else {
659
662
  var _chainInfo$substrateI18;
660
663
  blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI18 = chainInfo.substrateInfo) === null || _chainInfo$substrateI18 === void 0 ? void 0 : _chainInfo$substrateI18.blockExplorer;
@@ -11,7 +11,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
11
11
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
12
12
  const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
13
13
  const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
14
- const ChainListVersion = '0.2.107'; // update this when build chainlist
14
+ const ChainListVersion = '0.2.109'; // update this when build chainlist
15
15
 
16
16
  // todo: move this interface to chainlist
17
17
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI = exports.MaxEraRewardPointsEras = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = exports.CHANNEL_ID = void 0;
6
+ exports._SUPPORT_CHANGE_VALIDATOR_CHAIN = exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI = exports.MaxEraRewardPointsEras = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = exports.CHANNEL_ID = void 0;
7
7
  // Copyright 2019-2022 @subwallet/extension-base
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
@@ -41,4 +41,6 @@ exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = MANTA_VALIDATOR_POINTS_PER_BLOCK;
41
41
  const MANTA_MIN_DELEGATION = 500;
42
42
  exports.MANTA_MIN_DELEGATION = MANTA_MIN_DELEGATION;
43
43
  const CHANNEL_ID = 7;
44
- exports.CHANNEL_ID = CHANNEL_ID;
44
+ exports.CHANNEL_ID = CHANNEL_ID;
45
+ const _SUPPORT_CHANGE_VALIDATOR_CHAIN = ['polkadot', 'kusama'];
46
+ exports._SUPPORT_CHANGE_VALIDATOR_CHAIN = _SUPPORT_CHANGE_VALIDATOR_CHAIN;
@@ -27,7 +27,8 @@ class InterlayLendingPoolHandler extends _base.default {
27
27
  fastUnstake: true,
28
28
  cancelUnstake: false,
29
29
  withdraw: false,
30
- claimReward: false
30
+ claimReward: false,
31
+ changeValidator: false
31
32
  };
32
33
  rateDecimals = 18;
33
34
  constructor(state, chain) {
@@ -34,7 +34,8 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
34
34
  fastUnstake: true,
35
35
  cancelUnstake: false,
36
36
  withdraw: true,
37
- claimReward: false
37
+ claimReward: false,
38
+ changeValidator: false
38
39
  };
39
40
  constructor(state, chain) {
40
41
  super(state, chain);
@@ -33,7 +33,8 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
33
33
  fastUnstake: true,
34
34
  cancelUnstake: false,
35
35
  withdraw: false,
36
- claimReward: false
36
+ claimReward: false,
37
+ changeValidator: false
37
38
  };
38
39
  rateDecimals = 0;
39
40
  constructor(state, chain) {
@@ -29,7 +29,8 @@ class ParallelLiquidStakingPoolHandler extends _base.default {
29
29
  fastUnstake: true,
30
30
  cancelUnstake: false,
31
31
  withdraw: false,
32
- claimReward: false
32
+ claimReward: false,
33
+ changeValidator: false
33
34
  };
34
35
  constructor(state, chain) {
35
36
  super(state, chain);
@@ -42,7 +42,8 @@ class StellaSwapLiquidStakingPoolHandler extends _base.default {
42
42
  fastUnstake: false,
43
43
  cancelUnstake: false,
44
44
  withdraw: true,
45
- claimReward: false
45
+ claimReward: false,
46
+ changeValidator: false
46
47
  };
47
48
  constructor(state, chain) {
48
49
  super(state, chain);
@@ -178,6 +178,38 @@ class AmplitudeNativeStakingPoolHandler extends _basePara.default {
178
178
  unstakings: unstakingList
179
179
  };
180
180
  }
181
+ async checkAccountHaveStake(useAddresses) {
182
+ var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
183
+ const result = [];
184
+ const substrateApi = await this.substrateApi.isReady;
185
+ const ledgers = await ((_substrateApi$api$que = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que === void 0 ? void 0 : (_substrateApi$api$que2 = _substrateApi$api$que.delegatorState) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.multi) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.call(_substrateApi$api$que2, useAddresses));
186
+ const _unstakingStates = await ((_substrateApi$api$que4 = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.unstaking) === null || _substrateApi$api$que5 === void 0 ? void 0 : (_substrateApi$api$que6 = _substrateApi$api$que5.multi) === null || _substrateApi$api$que6 === void 0 ? void 0 : _substrateApi$api$que6.call(_substrateApi$api$que5, useAddresses));
187
+ if (!ledgers || !_unstakingStates) {
188
+ return [];
189
+ }
190
+ for (let i = 0; i < useAddresses.length; i++) {
191
+ const owner = useAddresses[i];
192
+ const _delegatorState = ledgers[i];
193
+ let delegatorState = [];
194
+ const unstakingInfo = _unstakingStates[i].toPrimitive();
195
+ if (_constants2._STAKING_CHAIN_GROUP.krest_network.includes(this.chain)) {
196
+ const krestDelegatorState = _delegatorState.toPrimitive();
197
+ const delegates = krestDelegatorState === null || krestDelegatorState === void 0 ? void 0 : krestDelegatorState.delegations;
198
+ if (delegates) {
199
+ delegatorState = delegatorState.concat(delegates);
200
+ }
201
+ } else {
202
+ const delegate = _delegatorState.toPrimitive();
203
+ if (delegate) {
204
+ delegatorState.push(delegate);
205
+ }
206
+ }
207
+ if (delegatorState.length || unstakingInfo && Object.keys(unstakingInfo).length) {
208
+ result.push(owner);
209
+ }
210
+ }
211
+ return Promise.resolve(result);
212
+ }
181
213
  async subscribePoolPosition(useAddresses, resultCallback) {
182
214
  let cancel = false;
183
215
  const substrateApi = await this.substrateApi.isReady;
@@ -47,7 +47,8 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
47
47
  fastUnstake: false,
48
48
  cancelUnstake: false,
49
49
  withdraw: true,
50
- claimReward: true
50
+ claimReward: true,
51
+ changeValidator: false
51
52
  };
52
53
 
53
54
  /* Subscribe pool info */
@@ -294,6 +295,24 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
294
295
  unsub && unsub();
295
296
  };
296
297
  }
298
+ async checkAccountHaveStake(useAddresses) {
299
+ var _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4;
300
+ const result = [];
301
+ const substrateApi = await this.substrateApi.isReady;
302
+ const ledgers = await ((_substrateApi$api$que2 = substrateApi.api.query.dappsStaking) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.ledger) === null || _substrateApi$api$que3 === void 0 ? void 0 : (_substrateApi$api$que4 = _substrateApi$api$que3.multi) === null || _substrateApi$api$que4 === void 0 ? void 0 : _substrateApi$api$que4.call(_substrateApi$api$que3, useAddresses));
303
+ if (!ledgers) {
304
+ return [];
305
+ }
306
+ for (let i = 0; i < useAddresses.length; i++) {
307
+ const owner = useAddresses[i];
308
+ const _ledger = ledgers[i];
309
+ const ledger = _ledger.toPrimitive();
310
+ if (ledger && ledger.locked > 0) {
311
+ result.push(owner);
312
+ }
313
+ }
314
+ return result;
315
+ }
297
316
 
298
317
  /* Subscribe pool position */
299
318
 
@@ -21,7 +21,8 @@ class BaseNativeStakingPoolHandler extends _base.default {
21
21
  fastUnstake: false,
22
22
  cancelUnstake: true,
23
23
  withdraw: true,
24
- claimReward: false
24
+ claimReward: false,
25
+ changeValidator: false
25
26
  };
26
27
  static generateSlug(symbol, chain) {
27
28
  return `${symbol}___native_staking___${chain}`;
@@ -50,40 +51,48 @@ class BaseNativeStakingPoolHandler extends _base.default {
50
51
  async getPoolRewardHistory(useAddresses, callBack) {
51
52
  let cancel = false;
52
53
  const haveSubscanService = this.state.subscanService.checkSupportedSubscanChain(this.chain);
54
+ const requestGroupId = this.state.subscanService.getGroupId();
53
55
  if (haveSubscanService) {
54
- for (const address of useAddresses) {
55
- if (cancel) {
56
- break;
57
- }
58
- try {
59
- const rs = await this.state.subscanService.getRewardHistoryList(this.chain, address);
60
- const items = rs === null || rs === void 0 ? void 0 : rs.list;
61
- if (items) {
62
- for (const item of items) {
63
- const now = new Date();
64
- const isMillisecond = now.getTime().toString().length === item.block_timestamp.toString().length;
65
- const timeStamp = isMillisecond ? item.block_timestamp : item.block_timestamp * 1000;
66
- const data = {
67
- slug: this.slug,
68
- type: this.type,
69
- chain: this.chain,
70
- address: address,
71
- group: this.group,
72
- blockTimestamp: timeStamp,
73
- amount: item.amount,
74
- eventIndex: item.event_index
75
- };
76
- callBack(data);
77
- }
56
+ this.checkAccountHaveStake(useAddresses).then(activeAddresses => {
57
+ for (const address of useAddresses) {
58
+ if (cancel) {
59
+ break;
60
+ }
61
+ if (!activeAddresses.includes(address)) {
62
+ continue;
78
63
  }
79
- } catch (e) {
80
- console.error(e);
64
+ this.state.subscanService.getRewardHistoryList(requestGroupId, this.chain, address).then(rs => {
65
+ const items = rs === null || rs === void 0 ? void 0 : rs.list;
66
+ if (cancel) {
67
+ return;
68
+ }
69
+ if (items) {
70
+ for (const item of items) {
71
+ const now = new Date();
72
+ const isMillisecond = now.getTime().toString().length === item.block_timestamp.toString().length;
73
+ const timeStamp = isMillisecond ? item.block_timestamp : item.block_timestamp * 1000;
74
+ const data = {
75
+ slug: this.slug,
76
+ type: this.type,
77
+ chain: this.chain,
78
+ address: address,
79
+ group: this.group,
80
+ blockTimestamp: timeStamp,
81
+ amount: item.amount,
82
+ eventIndex: item.event_index
83
+ };
84
+ callBack(data);
85
+ }
86
+ }
87
+ }).catch(console.error);
81
88
  }
82
- }
89
+ }).catch(console.error);
83
90
  }
84
- return () => {
91
+ return Promise.resolve(() => {
92
+ console.log('Cancel get pool reward history', requestGroupId);
85
93
  cancel = false;
86
- };
94
+ this.state.subscanService.cancelGroupRequest(requestGroupId);
95
+ });
87
96
  }
88
97
 
89
98
  /* Get pool reward */
@@ -164,6 +173,9 @@ class BaseNativeStakingPoolHandler extends _base.default {
164
173
  async handleYieldClaimReward(address, bondReward) {
165
174
  return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
166
175
  }
176
+ async handleChangeEarningValidator(_data) {
177
+ return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
178
+ }
167
179
 
168
180
  /* Other actions */
169
181
  }