@subwallet/extension-base 1.1.54-0 → 1.1.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 (91) hide show
  1. package/background/KoniTypes.d.ts +21 -1
  2. package/background/KoniTypes.js +1 -0
  3. package/background/errors/SwapError.d.ts +6 -0
  4. package/background/errors/SwapError.js +57 -0
  5. package/background/errors/TransactionError.js +9 -0
  6. package/background/types.d.ts +2 -0
  7. package/cjs/background/KoniTypes.js +1 -0
  8. package/cjs/background/errors/SwapError.js +64 -0
  9. package/cjs/background/errors/TransactionError.js +9 -0
  10. package/cjs/koni/api/staking/bonding/utils.js +35 -6
  11. package/cjs/koni/background/handlers/Extension.js +214 -102
  12. package/cjs/koni/background/handlers/State.js +5 -2
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/services/balance-service/index.js +6 -3
  15. package/cjs/services/chain-service/constants.js +1 -1
  16. package/cjs/services/chain-service/index.js +39 -18
  17. package/cjs/services/chain-service/utils/index.js +15 -4
  18. package/cjs/services/chain-service/utils/patch.js +1 -1
  19. package/cjs/services/earning-service/constants/chains.js +4 -2
  20. package/cjs/services/earning-service/handlers/native-staking/astar.js +4 -3
  21. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +22 -3
  22. package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +4 -17
  23. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +4 -17
  24. package/cjs/services/migration-service/scripts/index.js +3 -3
  25. package/cjs/services/swap-service/handler/base-handler.js +189 -0
  26. package/cjs/services/swap-service/handler/chainflip-handler.js +407 -0
  27. package/cjs/services/swap-service/handler/hydradx-handler.js +531 -0
  28. package/cjs/services/swap-service/index.js +250 -0
  29. package/cjs/services/swap-service/utils.js +126 -0
  30. package/cjs/services/transaction-service/index.js +20 -0
  31. package/cjs/services/transaction-service/utils.js +6 -0
  32. package/cjs/types/fee/evm.js +1 -0
  33. package/cjs/types/fee/fee.js +70 -0
  34. package/cjs/types/fee/index.js +27 -1
  35. package/cjs/types/service-base.js +1 -0
  36. package/cjs/types/swap/index.js +50 -0
  37. package/cjs/utils/index.js +12 -0
  38. package/cjs/utils/swap.js +78 -0
  39. package/koni/api/staking/bonding/utils.d.ts +3 -1
  40. package/koni/api/staking/bonding/utils.js +32 -6
  41. package/koni/background/handlers/Extension.d.ts +6 -0
  42. package/koni/background/handlers/Extension.js +111 -0
  43. package/koni/background/handlers/State.d.ts +2 -0
  44. package/koni/background/handlers/State.js +5 -2
  45. package/package.json +65 -8
  46. package/packageInfo.js +1 -1
  47. package/services/balance-service/index.js +6 -3
  48. package/services/base/types.d.ts +4 -0
  49. package/services/chain-service/constants.js +1 -1
  50. package/services/chain-service/index.d.ts +4 -0
  51. package/services/chain-service/index.js +21 -1
  52. package/services/chain-service/utils/index.d.ts +7 -5
  53. package/services/chain-service/utils/index.js +9 -2
  54. package/services/chain-service/utils/patch.js +1 -1
  55. package/services/earning-service/constants/chains.d.ts +1 -0
  56. package/services/earning-service/constants/chains.js +1 -0
  57. package/services/earning-service/handlers/native-staking/astar.js +4 -3
  58. package/services/earning-service/handlers/native-staking/relay-chain.js +24 -5
  59. package/services/event-service/types.d.ts +1 -0
  60. package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +4 -17
  61. package/services/migration-service/scripts/databases/MigrateAssetSetting.js +4 -17
  62. package/services/migration-service/scripts/index.js +3 -3
  63. package/services/swap-service/handler/base-handler.d.ts +38 -0
  64. package/services/swap-service/handler/base-handler.js +180 -0
  65. package/services/swap-service/handler/chainflip-handler.d.ts +30 -0
  66. package/services/swap-service/handler/chainflip-handler.js +399 -0
  67. package/services/swap-service/handler/hydradx-handler.d.ts +36 -0
  68. package/services/swap-service/handler/hydradx-handler.js +522 -0
  69. package/services/swap-service/index.d.ts +32 -0
  70. package/services/swap-service/index.js +241 -0
  71. package/services/swap-service/utils.d.ts +18 -0
  72. package/services/swap-service/utils.js +105 -0
  73. package/services/transaction-service/index.js +20 -0
  74. package/services/transaction-service/utils.d.ts +2 -0
  75. package/services/transaction-service/utils.js +6 -2
  76. package/types/fee/evm.d.ts +49 -0
  77. package/types/fee/evm.js +1 -0
  78. package/types/fee/fee.d.ts +32 -0
  79. package/types/fee/fee.js +63 -0
  80. package/types/fee/index.d.ts +2 -49
  81. package/types/fee/index.js +5 -1
  82. package/types/service-base.d.ts +10 -0
  83. package/types/service-base.js +1 -0
  84. package/types/swap/index.d.ts +168 -0
  85. package/types/swap/index.js +41 -0
  86. package/types/yield/info/chain/target.d.ts +2 -0
  87. package/types/yield/info/pallet.d.ts +4 -0
  88. package/utils/index.d.ts +1 -0
  89. package/utils/index.js +2 -1
  90. package/utils/swap.d.ts +3 -0
  91. package/utils/swap.js +70 -0
@@ -32,6 +32,7 @@ var _SettingService = _interopRequireDefault(require("@subwallet/extension-base/
32
32
  var _DatabaseService = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/DatabaseService"));
33
33
  var _subscanService = require("@subwallet/extension-base/services/subscan-service");
34
34
  var _subscanChainMap = require("@subwallet/extension-base/services/subscan-service/subscan-chain-map");
35
+ var _swapService = require("@subwallet/extension-base/services/swap-service");
35
36
  var _transactionService = _interopRequireDefault(require("@subwallet/extension-base/services/transaction-service"));
36
37
  var _walletConnectService = _interopRequireDefault(require("@subwallet/extension-base/services/wallet-connect-service"));
37
38
  var _AccountRef = _interopRequireDefault(require("@subwallet/extension-base/stores/AccountRef"));
@@ -111,6 +112,7 @@ class KoniState {
111
112
  this.transactionService = new _transactionService.default(this);
112
113
  this.earningService = new _service.default(this);
113
114
  this.feeService = new _service2.default(this);
115
+ this.swapService = new _swapService.SwapService(this);
114
116
  this.subscription = new _subscription.KoniSubscription(this, this.dbService);
115
117
  this.cron = new _cron.KoniCron(this, this.subscription, this.dbService);
116
118
  this.logger = (0, _util.logger)('State');
@@ -234,6 +236,7 @@ class KoniState {
234
236
  this.eventService.emit('chain.ready', true);
235
237
  await this.balanceService.init();
236
238
  await this.earningService.init();
239
+ await this.swapService.init();
237
240
  this.onReady();
238
241
  this.onAccountAdd();
239
242
  this.onAccountRemove();
@@ -1419,7 +1422,7 @@ class KoniState {
1419
1422
  // Stopping services
1420
1423
  await Promise.all([this.cron.stop(), this.subscription.stop()]);
1421
1424
  await this.pauseAllNetworks(undefined, 'IDLE mode');
1422
- await Promise.all([this.historyService.stop(), this.priceService.stop(), this.balanceService.stop(), this.earningService.stop()]);
1425
+ await Promise.all([this.historyService.stop(), this.priceService.stop(), this.balanceService.stop(), this.earningService.stop(), this.swapService.stop()]);
1423
1426
 
1424
1427
  // Complete sleeping
1425
1428
  sleeping.resolve();
@@ -1452,7 +1455,7 @@ class KoniState {
1452
1455
  }
1453
1456
 
1454
1457
  // Start services
1455
- await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start()]);
1458
+ await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start(), this.swapService.start()]);
1456
1459
 
1457
1460
  // Complete starting
1458
1461
  starting.resolve();
@@ -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.1.54-0'
16
+ version: '1.1.55-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -191,7 +191,8 @@ class BalanceService {
191
191
  const chainInfoMap = this.state.chainService.getChainInfoMap();
192
192
  const evmApiMap = this.state.chainService.getEvmApiMap();
193
193
  const substrateApiMap = this.state.chainService.getSubstrateApiMap();
194
- const unsub = (0, _helpers.subscribeBalance)([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, result => {
194
+ let unsub = _util.noop;
195
+ unsub = (0, _helpers.subscribeBalance)([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, result => {
195
196
  const rs = result[0];
196
197
  if (rs.tokenSlug === tSlug) {
197
198
  hasError = false;
@@ -203,15 +204,17 @@ class BalanceService {
203
204
  if (callback) {
204
205
  callback(balance);
205
206
  } else {
207
+ var _unsub;
206
208
  // Auto unsubscribe if no callback
207
- unsub();
209
+ (_unsub = unsub) === null || _unsub === void 0 ? void 0 : _unsub();
208
210
  }
209
211
  resolve([unsub, balance]);
210
212
  }
211
213
  });
212
214
  setTimeout(() => {
213
215
  if (hasError) {
214
- unsub();
216
+ var _unsub2;
217
+ (_unsub2 = unsub) === null || _unsub2 === void 0 ? void 0 : _unsub2();
215
218
  reject(new Error((0, _i18next.t)('Failed to get balance. Please check your internet connection or change your network endpoint')));
216
219
  }
217
220
  }, 9999);
@@ -39,7 +39,7 @@ const _BALANCE_CHAIN_GROUP = {
39
39
  kintsugi: ['kintsugi', 'interlay', 'kintsugi_test', 'mangatax_para'],
40
40
  genshiro: ['genshiro_testnet', 'genshiro'],
41
41
  equilibrium_parachain: ['equilibrium_parachain'],
42
- bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
42
+ bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network'],
43
43
  statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya'],
44
44
  kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
45
45
  // perhaps there are some runtime updates
@@ -42,6 +42,7 @@ class ChainService {
42
42
  assetRegistrySubject = new _rxjs.Subject();
43
43
  multiChainAssetMapSubject = new _rxjs.Subject();
44
44
  xcmRefMapSubject = new _rxjs.Subject();
45
+ swapRefMapSubject = new _rxjs.Subject();
45
46
  assetLogoMapSubject = new _rxjs.BehaviorSubject(_chainList.AssetLogoMap);
46
47
  chainLogoMapSubject = new _rxjs.BehaviorSubject(_chainList.ChainLogoMap);
47
48
  assetMapPatch = JSON.stringify({});
@@ -57,6 +58,7 @@ class ChainService {
57
58
  this.chainStateMapSubject.next(this.dataMap.chainStateMap);
58
59
  this.assetRegistrySubject.next(this.dataMap.assetRegistry);
59
60
  this.xcmRefMapSubject.next(this.xcmRefMap);
61
+ this.swapRefMapSubject.next(this.swapRefMap);
60
62
  if (_utils2.MODULE_SUPPORT.MANTA_ZK) {
61
63
  console.log('Init Manta ZK');
62
64
  this.mantaChainHandler = new _MantaPrivateHandler.MantaPrivateHandler(dbService);
@@ -65,6 +67,9 @@ class ChainService {
65
67
  this.evmChainHandler = new _EvmChainHandler.EvmChainHandler(this);
66
68
  this.logger = (0, _logger.logger)('chain-service');
67
69
  }
70
+ subscribeSwapRefMap() {
71
+ return this.swapRefMapSubject;
72
+ }
68
73
 
69
74
  // Getter
70
75
  get xcmRefMap() {
@@ -77,6 +82,16 @@ class ChainService {
77
82
  });
78
83
  return result;
79
84
  }
85
+ get swapRefMap() {
86
+ const result = {};
87
+ Object.entries(this.dataMap.assetRefMap).forEach(_ref2 => {
88
+ let [key, assetRef] = _ref2;
89
+ if (assetRef.path === _types._AssetRefPath.SWAP) {
90
+ result[key] = assetRef;
91
+ }
92
+ });
93
+ return result;
94
+ }
80
95
  getEvmApi(slug) {
81
96
  return this.evmChainHandler.getEvmApiByChain(slug);
82
97
  }
@@ -200,11 +215,11 @@ class ChainService {
200
215
  return this.getChainStatusMap()[key];
201
216
  }
202
217
  getActiveChains() {
203
- return Object.entries(this.dataMap.chainStateMap).filter(_ref2 => {
204
- let [, chainState] = _ref2;
218
+ return Object.entries(this.dataMap.chainStateMap).filter(_ref3 => {
219
+ let [, chainState] = _ref3;
205
220
  return (0, _utils._isChainEnabled)(chainState);
206
- }).map(_ref3 => {
207
- let [key] = _ref3;
221
+ }).map(_ref4 => {
222
+ let [key] = _ref4;
208
223
  return key;
209
224
  });
210
225
  }
@@ -364,8 +379,8 @@ class ChainService {
364
379
  (0, _utils2.addLazy)('updateChainConnectionStatus', () => {
365
380
  const chainStatusMap = this.getChainStatusMap();
366
381
  let update = false;
367
- Object.entries(this.connectionStatusQueueMap).forEach(_ref4 => {
368
- let [slug, status] = _ref4;
382
+ Object.entries(this.connectionStatusQueueMap).forEach(_ref5 => {
383
+ let [slug, status] = _ref5;
369
384
  if (chainStatusMap[slug]) {
370
385
  if (chainStatusMap[slug].connectionStatus !== status) {
371
386
  chainStatusMap[slug].connectionStatus = status;
@@ -497,12 +512,13 @@ class ChainService {
497
512
  });
498
513
  this.dataMap.assetRefMap = updatedAssetRefMap;
499
514
  this.xcmRefMapSubject.next(this.xcmRefMap);
515
+ this.swapRefMapSubject.next(this.swapRefMap);
500
516
  this.logger.log('Finished updating latest asset ref');
501
517
  }
502
518
  handleLatestPriceId(latestPriceIds) {
503
519
  let isUpdated = false;
504
- Object.entries(latestPriceIds).forEach(_ref5 => {
505
- let [slug, priceId] = _ref5;
520
+ Object.entries(latestPriceIds).forEach(_ref6 => {
521
+ let [slug, priceId] = _ref6;
506
522
  if (this.dataMap.assetRegistry[slug] && this.dataMap.assetRegistry[slug].priceId !== priceId) {
507
523
  isUpdated = true;
508
524
  this.dataMap.assetRegistry[slug].priceId = priceId;
@@ -581,8 +597,8 @@ class ChainService {
581
597
  }
582
598
  }
583
599
  handleLatestData() {
584
- this.fetchLatestAssetData().then(_ref6 => {
585
- let [latestAssetInfo, latestAssetLogoMap] = _ref6;
600
+ this.fetchLatestAssetData().then(_ref7 => {
601
+ let [latestAssetInfo, latestAssetLogoMap] = _ref7;
586
602
  this.eventService.waitAssetReady.then(() => {
587
603
  this.handleLatestAssetData(latestAssetInfo, latestAssetLogoMap);
588
604
  }).catch(console.error);
@@ -590,8 +606,8 @@ class ChainService {
590
606
  this.fetchLatestChainData().then(latestChainInfo => {
591
607
  this.handleLatestChainData(latestChainInfo);
592
608
  }).catch(console.error);
593
- this.fetchLatestAssetRef().then(_ref7 => {
594
- let [latestAssetRef, latestAssetRefMap] = _ref7;
609
+ this.fetchLatestAssetRef().then(_ref8 => {
610
+ let [latestAssetRef, latestAssetRefMap] = _ref8;
595
611
  this.handleLatestAssetRef(latestAssetRef, latestAssetRefMap);
596
612
  }).catch(console.error);
597
613
  this.fetchLatestPriceIdsData().then(latestPriceIds => {
@@ -601,12 +617,12 @@ class ChainService {
601
617
  async initApis() {
602
618
  const chainInfoMap = this.getChainInfoMap();
603
619
  const chainStateMap = this.getChainStateMap();
604
- await Promise.all(Object.entries(chainInfoMap).filter(_ref8 => {
620
+ await Promise.all(Object.entries(chainInfoMap).filter(_ref9 => {
605
621
  var _chainStateMap$slug;
606
- let [slug] = _ref8;
622
+ let [slug] = _ref9;
607
623
  return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
608
- }).map(_ref9 => {
609
- let [, chainInfo] = _ref9;
624
+ }).map(_ref10 => {
625
+ let [, chainInfo] = _ref10;
610
626
  try {
611
627
  return this.initApiForChain(chainInfo);
612
628
  } catch (e) {
@@ -949,8 +965,8 @@ class ChainService {
949
965
  }
950
966
 
951
967
  // Fill in the missing chainState and storageData (new chains never before seen)
952
- Object.entries(mergedChainInfoMap).forEach(_ref10 => {
953
- let [slug, chainInfo] = _ref10;
968
+ Object.entries(mergedChainInfoMap).forEach(_ref11 => {
969
+ let [slug, chainInfo] = _ref11;
954
970
  if (!(slug in this.dataMap.chainStateMap)) {
955
971
  this.dataMap.chainStateMap[slug] = {
956
972
  currentProvider: Object.keys(chainInfo.providers)[0],
@@ -1633,5 +1649,10 @@ class ChainService {
1633
1649
  }
1634
1650
  return result;
1635
1651
  }
1652
+ getFeeTokensByChain(chainSlug) {
1653
+ return Object.values(this.getAssetRegistry()).filter(chainAsset => {
1654
+ return chainAsset.originChain === chainSlug && (chainAsset.assetType === _types._AssetType.NATIVE || (0, _utils._isAssetCanPayTxFee)(chainAsset));
1655
+ }).map(chainAsset => chainAsset.slug);
1656
+ }
1636
1657
  }
1637
1658
  exports.ChainService = ChainService;
@@ -55,6 +55,7 @@ var _exportNames = {
55
55
  _isAssetValuable: true,
56
56
  _getMultiChainAsset: true,
57
57
  _getAssetPriceId: true,
58
+ _getAssetName: true,
58
59
  _getMultiChainAssetPriceId: true,
59
60
  _getAssetSymbol: true,
60
61
  _getMultiChainAssetSymbol: true,
@@ -73,11 +74,13 @@ var _exportNames = {
73
74
  findChainInfoByChainId: true,
74
75
  _isMantaZkAsset: true,
75
76
  randomizeProvider: true,
77
+ _isAssetCanPayTxFee: true,
76
78
  updateLatestChainInfo: true
77
79
  };
78
80
  exports._checkSmartContractSupportByChain = _checkSmartContractSupportByChain;
79
81
  exports._generateCustomProviderKey = _generateCustomProviderKey;
80
82
  exports._getAssetDecimals = _getAssetDecimals;
83
+ exports._getAssetName = _getAssetName;
81
84
  exports._getAssetOriginChain = _getAssetOriginChain;
82
85
  exports._getAssetPriceId = _getAssetPriceId;
83
86
  exports._getAssetSymbol = _getAssetSymbol;
@@ -108,6 +111,7 @@ exports._getXcmAssetMultilocation = _getXcmAssetMultilocation;
108
111
  exports._getXcmAssetType = _getXcmAssetType;
109
112
  exports._getXcmTransferType = _getXcmTransferType;
110
113
  exports._isAssetAutoEnable = void 0;
114
+ exports._isAssetCanPayTxFee = _isAssetCanPayTxFee;
111
115
  exports._isAssetFungibleToken = _isAssetFungibleToken;
112
116
  exports._isAssetSmartContractNft = _isAssetSmartContractNft;
113
117
  exports._isAssetValuable = _isAssetValuable;
@@ -439,6 +443,9 @@ function _getMultiChainAsset(assetInfo) {
439
443
  function _getAssetPriceId(assetInfo) {
440
444
  return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.priceId) || '';
441
445
  }
446
+ function _getAssetName(assetInfo) {
447
+ return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.name) || '';
448
+ }
442
449
  function _getMultiChainAssetPriceId(multiChainAsset) {
443
450
  return (multiChainAsset === null || multiChainAsset === void 0 ? void 0 : multiChainAsset.priceId) || '';
444
451
  }
@@ -449,13 +456,13 @@ function _getMultiChainAssetSymbol(multiChainAsset) {
449
456
  return multiChainAsset.symbol;
450
457
  }
451
458
  function _getAssetOriginChain(assetInfo) {
452
- return assetInfo.originChain;
459
+ return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.originChain) || '';
453
460
  }
454
461
  function _getChainName(chainInfo) {
455
462
  return chainInfo.name;
456
463
  }
457
464
  function _getAssetDecimals(assetInfo) {
458
- return assetInfo.decimals || 0;
465
+ return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.decimals) || 0;
459
466
  }
460
467
  function _getBlockExplorerFromChain(chainInfo) {
461
468
  let blockExplorer;
@@ -557,6 +564,10 @@ function randomizeProvider(providers, excludedKeys) {
557
564
  providerValue: selectedProviderValue
558
565
  };
559
566
  }
567
+ function _isAssetCanPayTxFee(chainAsset) {
568
+ var _ref, _chainAsset$metadata;
569
+ return (_ref = (_chainAsset$metadata = chainAsset.metadata) === null || _chainAsset$metadata === void 0 ? void 0 : _chainAsset$metadata.canPayTxFee) !== null && _ref !== void 0 ? _ref : false;
570
+ }
560
571
  function updateLatestChainInfo(currentDataMap, latestChainInfoList) {
561
572
  const currentChainInfoMap = currentDataMap.chainInfoMap;
562
573
  const currentChainStateMap = currentDataMap.chainStateMap;
@@ -569,8 +580,8 @@ function updateLatestChainInfo(currentDataMap, latestChainInfoList) {
569
580
  let needUpdate = false;
570
581
  if (currentChainInfo && currentChainState) {
571
582
  const preservedProvider = {};
572
- Object.entries(currentChainInfo.providers).forEach(_ref => {
573
- let [providerKey, providerValue] = _ref;
583
+ Object.entries(currentChainInfo.providers).forEach(_ref2 => {
584
+ let [providerKey, providerValue] = _ref2;
574
585
  if (providerValue !== null && providerValue !== void 0 && providerValue.startsWith('light') || providerKey !== null && providerKey !== void 0 && providerKey.startsWith(_types2._CUSTOM_PREFIX)) {
575
586
  preservedProvider[providerKey] = providerValue;
576
587
  }
@@ -12,7 +12,7 @@ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
12
12
  const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
13
13
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
14
14
  const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
15
- const ChainListVersion = '0.2.54';
15
+ const ChainListVersion = '0.2.55';
16
16
  async function fetchPatchData(slug) {
17
17
  try {
18
18
  const fetchPromise = (0, _crossFetch.default)(`${fetchDomain}/patch/${ChainListVersion}/${slug}`);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports._STAKING_CHAIN_GROUP = exports.ST_LIQUID_TOKEN_ABI = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = void 0;
6
+ exports._STAKING_CHAIN_GROUP = exports.ST_LIQUID_TOKEN_ABI = exports.MaxEraRewardPointsEras = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = void 0;
7
7
  // Copyright 2019-2022 @subwallet/extension-base
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
@@ -24,9 +24,11 @@ const _STAKING_CHAIN_GROUP = {
24
24
  krest_network: ['krest_network'],
25
25
  manta: ['manta_network']
26
26
  };
27
+ exports._STAKING_CHAIN_GROUP = _STAKING_CHAIN_GROUP;
28
+ const MaxEraRewardPointsEras = 14;
27
29
 
28
30
  // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
29
- exports._STAKING_CHAIN_GROUP = _STAKING_CHAIN_GROUP;
31
+ exports.MaxEraRewardPointsEras = MaxEraRewardPointsEras;
30
32
  const ST_LIQUID_TOKEN_ABI = require('./abis/st_liquid_token_abi.json');
31
33
  exports.ST_LIQUID_TOKEN_ABI = ST_LIQUID_TOKEN_ABI;
32
34
  const MANTA_VALIDATOR_POINTS_PER_BLOCK = 20;
@@ -250,11 +250,12 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
250
250
  };
251
251
  }
252
252
  async subscribePoolPosition(useAddresses, resultCallback) {
253
+ var _substrateApi$api$que;
253
254
  let cancel = false;
254
255
  const substrateApi = await this.substrateApi.isReady;
255
256
  const defaultInfo = this.baseInfo;
256
257
  const chainInfo = this.chainInfo;
257
- const unsub = await substrateApi.api.query.dappsStaking.ledger.multi(useAddresses, async ledgers => {
258
+ const unsub = await ((_substrateApi$api$que = substrateApi.api.query.dappsStaking) === null || _substrateApi$api$que === void 0 ? void 0 : _substrateApi$api$que.ledger.multi(useAddresses, async ledgers => {
258
259
  if (cancel) {
259
260
  unsub();
260
261
  return;
@@ -288,10 +289,10 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
288
289
  }
289
290
  }));
290
291
  }
291
- });
292
+ }));
292
293
  return () => {
293
294
  cancel = true;
294
- unsub();
295
+ unsub && unsub();
295
296
  };
296
297
  }
297
298
 
@@ -281,11 +281,23 @@ class RelayNativeStakingPoolHandler extends _base.default {
281
281
  if (!poolInfo || !poolInfo.statistic) {
282
282
  return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR));
283
283
  }
284
- const _era = await chainApi.api.query.staking.currentEra();
284
+ const [_era, _activeEraInfo] = await Promise.all([chainApi.api.query.staking.currentEra(), chainApi.api.query.staking.activeEra()]);
285
285
  const currentEra = _era.toString();
286
+ const activeEraInfo = _activeEraInfo.toPrimitive();
287
+ const activeEra = activeEraInfo.index;
286
288
  const allValidators = [];
287
289
  const validatorInfoList = [];
288
- const [_totalEraStake, _eraStakers, _minBond, _stakingRewards, _validators] = await Promise.all([chainApi.api.query.staking.erasTotalStake(parseInt(currentEra)), chainApi.api.query.staking.erasStakers.entries(parseInt(currentEra)), chainApi.api.query.staking.minNominatorBond(), ((_chainApi$api$query$s = chainApi.api.query.stakingRewards) === null || _chainApi$api$query$s === void 0 ? void 0 : _chainApi$api$query$s.data) && chainApi.api.query.stakingRewards.data(), chainApi.api.query.staking.validators.entries()]);
290
+ const maxEraRewardPointsEras = _constants2.MaxEraRewardPointsEras;
291
+ const endEraForPoints = parseInt(activeEra) - 1;
292
+ let startEraForPoints = endEraForPoints - maxEraRewardPointsEras + 1;
293
+ const [_totalEraStake, _eraStakers, _minBond, _stakingRewards, _validators, ..._eraRewardPoints] = await Promise.all([chainApi.api.query.staking.erasTotalStake(parseInt(currentEra)), chainApi.api.query.staking.erasStakers.entries(parseInt(currentEra)), chainApi.api.query.staking.minNominatorBond(), ((_chainApi$api$query$s = chainApi.api.query.stakingRewards) === null || _chainApi$api$query$s === void 0 ? void 0 : _chainApi$api$query$s.data) && chainApi.api.query.stakingRewards.data(), chainApi.api.query.staking.validators.entries(), chainApi.api.query.staking.erasRewardPoints.multi([...Array(maxEraRewardPointsEras).keys()].map(i => i + startEraForPoints))]);
294
+ const eraRewardMap = {};
295
+ for (const item of _eraRewardPoints[0]) {
296
+ eraRewardMap[startEraForPoints] = item.toHuman();
297
+ startEraForPoints++;
298
+ }
299
+ const validatorPointsMap = (0, _utils.getValidatorPointsMap)(eraRewardMap);
300
+ const topValidatorList = (0, _utils.getTopValidatorByPoints)(validatorPointsMap);
289
301
 
290
302
  // filter blocked validators
291
303
  const validators = _validators;
@@ -316,6 +328,11 @@ class RelayNativeStakingPoolHandler extends _base.default {
316
328
  const rawValidatorStat = item[1].toHuman();
317
329
  const validatorAddress = rawValidatorInfo[1];
318
330
  if (!blockValidatorList.includes(validatorAddress)) {
331
+ var _validatorPointsMap$v;
332
+ let isTopQuartile = false;
333
+ if (topValidatorList.includes(validatorAddress)) {
334
+ isTopQuartile = true;
335
+ }
319
336
  const rawTotalStake = rawValidatorStat.total;
320
337
  const rawOwnStake = rawValidatorStat.own;
321
338
  const bnTotalStake = new _util.BN(rawTotalStake.replaceAll(',', ''));
@@ -340,7 +357,9 @@ class RelayNativeStakingPoolHandler extends _base.default {
340
357
  blocked: false,
341
358
  isVerified: false,
342
359
  minBond,
343
- isCrowded: unlimitedNominatorRewarded ? false : nominatorCount > parseInt(maxNominatorRewarded)
360
+ isCrowded: unlimitedNominatorRewarded ? false : nominatorCount > parseInt(maxNominatorRewarded),
361
+ eraRewardPoint: ((_validatorPointsMap$v = validatorPointsMap[validatorAddress]) !== null && _validatorPointsMap$v !== void 0 ? _validatorPointsMap$v : _util.BN_ZERO).toString(),
362
+ topQuartile: isTopQuartile
344
363
  });
345
364
  }
346
365
  }
@@ -14,23 +14,10 @@ class MigrateTransactionHistoryBySymbol extends _Base.default {
14
14
  const state = this.state;
15
15
  try {
16
16
  const changeSlugsMap = {
17
- 'ethereum-ERC20-WFTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870': 'ethereum-ERC20-FTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870',
18
- 'moonbeam-ERC20-CSG-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F': 'moonbeam-ERC20-CGS-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F',
19
- 'astar-LOCAL-aUSD': 'astar-LOCAL-aSEED',
20
- 'astarEvm-ERC20-aUSD-0xfFFFFfFF00000000000000010000000000000001': 'astarEvm-ERC20-aSEED-0xfFFFFfFF00000000000000010000000000000001',
21
- 'moonriver-LOCAL-xcaUSD': 'moonriver-LOCAL-xcaSeed',
22
- 'moonriver-LOCAL-xckBTC': 'moonriver-LOCAL-xcKBTC',
23
- 'bifrost-LOCAL-aUSD': 'bifrost-LOCAL-KUSD',
24
- 'calamari-LOCAL-aUSD': 'calamari-LOCAL-AUSD',
25
- 'shiden-LOCAL-aUSD': 'shiden-LOCAL-aSEED',
26
- 'shidenEvm-ERC20-aUSD-0xfFFfFFfF00000000000000010000000000000000': 'shidenEvm-ERC20-aSEED-0xfFFfFFfF00000000000000010000000000000000',
27
- 'ethereum_goerli-NATIVE-GoerliETH': 'ethereum_goerli-NATIVE-ETH',
28
- 'binance_test-NATIVE-BNB': 'binance_test-NATIVE-tBNB',
29
- 'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
30
- 'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
31
- 'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
32
- 'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
33
- 'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
17
+ 'moonbeam-LOCAL-xcaUSD': 'moonbeam-LOCAL-xcaSEED',
18
+ 'calamari-LOCAL-AUSD': 'calamari-LOCAL-aSEED',
19
+ 'moonriver-LOCAL-xcaSeed': 'moonriver-LOCAL-xcaSEED',
20
+ 'bifrost-LOCAL-KUSD': 'bifrost-LOCAL-aSEED'
34
21
  };
35
22
  const allTxs = [];
36
23
  await Promise.all(Object.entries(changeSlugsMap).map(async (_ref, i) => {
@@ -13,23 +13,10 @@ class MigrateAssetSetting extends _Base.default {
13
13
  async run() {
14
14
  try {
15
15
  const changeSlugsMap = {
16
- 'ethereum-ERC20-WFTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870': 'ethereum-ERC20-FTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870',
17
- 'moonbeam-ERC20-CSG-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F': 'moonbeam-ERC20-CGS-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F',
18
- 'astar-LOCAL-aUSD': 'astar-LOCAL-aSEED',
19
- 'astarEvm-ERC20-aUSD-0xfFFFFfFF00000000000000010000000000000001': 'astarEvm-ERC20-aSEED-0xfFFFFfFF00000000000000010000000000000001',
20
- 'moonriver-LOCAL-xcaUSD': 'moonriver-LOCAL-xcaSeed',
21
- 'moonriver-LOCAL-xckBTC': 'moonriver-LOCAL-xcKBTC',
22
- 'bifrost-LOCAL-aUSD': 'bifrost-LOCAL-KUSD',
23
- 'calamari-LOCAL-aUSD': 'calamari-LOCAL-AUSD',
24
- 'shiden-LOCAL-aUSD': 'shiden-LOCAL-aSEED',
25
- 'shidenEvm-ERC20-aUSD-0xfFFfFFfF00000000000000010000000000000000': 'shidenEvm-ERC20-aSEED-0xfFFfFFfF00000000000000010000000000000000',
26
- 'ethereum_goerli-NATIVE-GoerliETH': 'ethereum_goerli-NATIVE-ETH',
27
- 'binance_test-NATIVE-BNB': 'binance_test-NATIVE-tBNB',
28
- 'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
29
- 'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
30
- 'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
31
- 'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
32
- 'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
16
+ 'moonbeam-LOCAL-xcaUSD': 'moonbeam-LOCAL-xcaSEED',
17
+ 'calamari-LOCAL-AUSD': 'calamari-LOCAL-aSEED',
18
+ 'moonriver-LOCAL-xcaSeed': 'moonriver-LOCAL-xcaSEED',
19
+ 'bifrost-LOCAL-KUSD': 'bifrost-LOCAL-aSEED'
33
20
  };
34
21
  const assetSetting = await this.state.chainService.getAssetSettings();
35
22
  const migratedAssetSetting = {};
@@ -55,9 +55,9 @@ var _default = {
55
55
  '1.1.26-01': _MigratePolygonUSDCProvider.default,
56
56
  '1.1.28-01': _MigrateEarningVersion.default,
57
57
  '1.1.41-01': _DeleteChainStaking.default,
58
- '1.1.44-01': _MigrateAssetSetting.default,
59
- '1.1.45-01': _MigrateTransactionHistoryBySymbol.default,
60
- '1.1.46-01': _AutoEnableSomeTokens.default
58
+ '1.1.46-01': _AutoEnableSomeTokens.default,
59
+ '1.1.53-01': _MigrateAssetSetting.default,
60
+ '1.1.53-02': _MigrateTransactionHistoryBySymbol.default
61
61
  // [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
62
62
  // [`${EVERYTIME}-1`]: AutoEnableChainsTokens
63
63
  };