@subwallet/extension-base 1.1.40-1 → 1.1.41-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 (94) hide show
  1. package/background/KoniTypes.d.ts +3 -1
  2. package/cjs/constants/index.js +1 -1
  3. package/cjs/koni/api/dotsama/transfer.js +1 -1
  4. package/cjs/koni/api/nft/bit.country/index.js +2 -0
  5. package/cjs/koni/api/nft/config.js +3 -1
  6. package/cjs/koni/api/tokens/evm/transfer.js +4 -4
  7. package/cjs/koni/background/handlers/Extension.js +32 -17
  8. package/cjs/koni/background/handlers/State.js +41 -9
  9. package/cjs/packageInfo.js +1 -1
  10. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +58 -0
  11. package/cjs/services/chain-service/constants.js +11 -7
  12. package/cjs/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  13. package/cjs/services/chain-service/index.js +71 -59
  14. package/cjs/services/chain-service/utils.js +11 -6
  15. package/cjs/services/earning-service/constants/chains.js +2 -2
  16. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  17. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  18. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  19. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  20. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  21. package/cjs/services/earning-service/handlers/native-staking/astar.js +6 -2
  22. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +5 -0
  23. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +14 -16
  24. package/cjs/services/earning-service/handlers/nomination-pool/index.js +9 -11
  25. package/cjs/services/earning-service/handlers/special.js +2 -0
  26. package/cjs/services/earning-service/service.js +51 -18
  27. package/cjs/services/fee-service/service.js +70 -0
  28. package/cjs/services/fee-service/utils/index.js +209 -0
  29. package/cjs/services/migration-service/scripts/DeleteChainStaking.js +23 -0
  30. package/cjs/services/migration-service/scripts/index.js +3 -1
  31. package/cjs/services/transaction-service/index.js +37 -37
  32. package/cjs/types/fee/index.js +1 -0
  33. package/cjs/types/index.js +11 -0
  34. package/cjs/utils/eth.js +2 -105
  35. package/cjs/utils/index.js +12 -0
  36. package/cjs/utils/reportError.js +31 -0
  37. package/constants/index.d.ts +1 -1
  38. package/constants/index.js +1 -1
  39. package/koni/api/dotsama/transfer.js +1 -1
  40. package/koni/api/nft/bit.country/index.js +3 -1
  41. package/koni/api/nft/config.d.ts +1 -0
  42. package/koni/api/nft/config.js +1 -0
  43. package/koni/api/tokens/evm/transfer.js +1 -1
  44. package/koni/background/handlers/Extension.d.ts +1 -0
  45. package/koni/background/handlers/Extension.js +18 -3
  46. package/koni/background/handlers/State.d.ts +4 -1
  47. package/koni/background/handlers/State.js +32 -1
  48. package/package.json +31 -6
  49. package/packageInfo.js +1 -1
  50. package/services/balance-service/helpers/subscribe/substrate/index.js +59 -1
  51. package/services/chain-service/constants.d.ts +2 -0
  52. package/services/chain-service/constants.js +11 -7
  53. package/services/chain-service/handler/chain-spec/goldberg.d.ts +70 -1
  54. package/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  55. package/services/chain-service/index.d.ts +7 -3
  56. package/services/chain-service/index.js +62 -51
  57. package/services/chain-service/types.d.ts +4 -0
  58. package/services/chain-service/utils.d.ts +1 -0
  59. package/services/chain-service/utils.js +10 -6
  60. package/services/earning-service/constants/chains.js +2 -2
  61. package/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  62. package/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  63. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +1 -1
  64. package/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  65. package/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  66. package/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  67. package/services/earning-service/handlers/native-staking/astar.js +6 -2
  68. package/services/earning-service/handlers/native-staking/para-chain.js +5 -0
  69. package/services/earning-service/handlers/native-staking/relay-chain.js +15 -17
  70. package/services/earning-service/handlers/nomination-pool/index.js +10 -12
  71. package/services/earning-service/handlers/special.d.ts +1 -0
  72. package/services/earning-service/handlers/special.js +2 -0
  73. package/services/earning-service/service.d.ts +4 -1
  74. package/services/earning-service/service.js +52 -19
  75. package/services/fee-service/service.d.ts +12 -0
  76. package/services/fee-service/service.js +63 -0
  77. package/services/fee-service/utils/index.d.ts +8 -0
  78. package/services/fee-service/utils/index.js +193 -0
  79. package/services/migration-service/scripts/DeleteChainStaking.d.ts +4 -0
  80. package/services/migration-service/scripts/DeleteChainStaking.js +15 -0
  81. package/services/migration-service/scripts/index.js +3 -1
  82. package/services/transaction-service/index.js +2 -2
  83. package/types/fee/index.d.ts +49 -0
  84. package/types/fee/index.js +1 -0
  85. package/types/index.d.ts +1 -0
  86. package/types/index.js +1 -0
  87. package/types/yield/info/account/unstake.d.ts +2 -0
  88. package/types/yield/info/pallet.d.ts +4 -0
  89. package/utils/eth.d.ts +0 -15
  90. package/utils/eth.js +0 -101
  91. package/utils/index.d.ts +1 -0
  92. package/utils/index.js +1 -0
  93. package/utils/reportError.d.ts +1 -0
  94. package/utils/reportError.js +23 -0
@@ -1227,7 +1227,8 @@ export interface UnstakingInfo {
1227
1227
  chain: string;
1228
1228
  status: UnstakingStatus;
1229
1229
  claimable: string;
1230
- waitingTime: number;
1230
+ waitingTime?: number;
1231
+ targetTimestampMs?: number;
1231
1232
  validatorAddress?: string;
1232
1233
  }
1233
1234
  export interface NominatorMetadata {
@@ -1645,6 +1646,7 @@ export interface KoniRequestSignatures {
1645
1646
  'pri(bonding.nominationPool.submitUnbonding)': [RequestStakePoolingUnbonding, SWTransactionResponse];
1646
1647
  'pri(chainService.subscribeChainInfoMap)': [null, Record<string, any>, Record<string, any>];
1647
1648
  'pri(chainService.subscribeChainStateMap)': [null, Record<string, any>, Record<string, any>];
1649
+ 'pri(chainService.subscribeChainStatusMap)': [null, Record<string, any>, Record<string, any>];
1648
1650
  'pri(chainService.subscribeAssetRegistry)': [null, Record<string, any>, Record<string, any>];
1649
1651
  'pri(chainService.subscribeMultiChainAssetMap)': [null, Record<string, _MultiChainAsset>, Record<string, _MultiChainAsset>];
1650
1652
  'pri(chainService.subscribeXcmRefMap)': [null, Record<string, _AssetRef>, Record<string, _AssetRef>];
@@ -88,7 +88,7 @@ const CRON_REFRESH_HISTORY_INTERVAL = 900000;
88
88
  exports.CRON_REFRESH_HISTORY_INTERVAL = CRON_REFRESH_HISTORY_INTERVAL;
89
89
  const CRON_GET_API_MAP_STATUS = 10000;
90
90
  exports.CRON_GET_API_MAP_STATUS = CRON_GET_API_MAP_STATUS;
91
- const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
91
+ const CRON_REFRESH_CHAIN_STAKING_METADATA = 90000;
92
92
  exports.CRON_REFRESH_CHAIN_STAKING_METADATA = CRON_REFRESH_CHAIN_STAKING_METADATA;
93
93
  const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
94
94
  exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = CRON_REFRESH_CHAIN_NOMINATOR_METADATA;
@@ -190,7 +190,7 @@ const createTransferExtrinsic = async _ref => {
190
190
  } else if (_constants._TRANSFER_CHAIN_GROUP.sora_substrate.includes(networkKey) && isTxAssetsSupported) {
191
191
  transfer = api.tx.assets.transfer((0, _utils2._getTokenOnChainAssetId)(tokenInfo), to, value);
192
192
  } else if (isTxBalancesSupported && (0, _utils2._isNativeToken)(tokenInfo)) {
193
- if (networkKey === 'invarch') {
193
+ if (_constants._TRANSFER_CHAIN_GROUP.disable_transfer.includes(networkKey)) {
194
194
  return [null, transferAmount || value];
195
195
  }
196
196
  if (transferAll) {
@@ -60,6 +60,8 @@ class BitCountryNftApi extends _nft.BaseNftApi {
60
60
  // check if NFT is Land/Estate
61
61
  if (onChainMeta.data.attributes['MetaverseId:']) {
62
62
  return await (0, _crossFetch.default)(`${_config.BIT_COUNTRY_LAND_ESTATE_METADATA_API}/${assetId.classId}/${assetId.tokenId}/metadata.json`).then(resp => resp.json());
63
+ } else if (onChainMeta.metadata.startsWith('/avatar/')) {
64
+ return await (0, _crossFetch.default)(_config.BIT_AVATAR_API + onChainMeta.metadata).then(resp => resp.json());
63
65
  } else {
64
66
  return await (0, _crossFetch.default)(_config.BIT_COUNTRY_IPFS_SERVER + onChainMeta.metadata).then(resp => resp.json());
65
67
  }
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = void 0;
7
+ exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = exports.BIT_AVATAR_API = void 0;
8
8
  exports.getRandomIpfsGateway = getRandomIpfsGateway;
9
9
  var _storage = require("@subwallet/extension-base/storage");
10
10
  var _utils = require("@subwallet/extension-base/utils");
@@ -30,6 +30,8 @@ const CLOUDFLARE_PINATA_SERVER = 'https://cloudflare-ipfs.com/ipfs/';
30
30
  exports.CLOUDFLARE_PINATA_SERVER = CLOUDFLARE_PINATA_SERVER;
31
31
  const BIT_COUNTRY_IPFS_SERVER = 'https://ipfs-cdn.bit.country/';
32
32
  exports.BIT_COUNTRY_IPFS_SERVER = BIT_COUNTRY_IPFS_SERVER;
33
+ const BIT_AVATAR_API = 'https://api.bitavatar.io/v1';
34
+ exports.BIT_AVATAR_API = BIT_AVATAR_API;
33
35
  const BIT_COUNTRY_LAND_ESTATE_METADATA_API = 'https://pioneer-api.bit.country/metadata/landTokenUriPioneer';
34
36
  exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = BIT_COUNTRY_LAND_ESTATE_METADATA_API;
35
37
  const BIT_COUNTRY_THUMBNAIL_RESOLVER = 'https://res.cloudinary.com/ddftctzph/image/upload/c_scale,q_100,w_250/production-ipfs/asset/';
@@ -12,7 +12,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
12
12
  var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
13
13
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
14
14
  var _helper = require("@subwallet/extension-base/services/chain-service/helper");
15
- var _eth = require("@subwallet/extension-base/utils/eth");
15
+ var _utils = require("@subwallet/extension-base/services/fee-service/utils");
16
16
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
17
17
  var _util = require("@polkadot/util");
18
18
  // Copyright 2019-2022 @subwallet/extension-base
@@ -50,7 +50,7 @@ async function getEVMTransactionObject(chainInfo, from, to, value, transferAll,
50
50
  var _priority$maxFeePerGa, _priority$maxPriority;
51
51
  const networkKey = chainInfo.slug;
52
52
  const web3Api = evmApiMap[networkKey];
53
- const priority = await (0, _eth.calculateGasFeeParams)(web3Api, networkKey);
53
+ const priority = await (0, _utils.calculateGasFeeParams)(web3Api, networkKey);
54
54
  const transactionObject = {
55
55
  to: to,
56
56
  value: value,
@@ -97,7 +97,7 @@ async function getERC20TransactionObject(assetAddress, chainInfo, from, to, valu
97
97
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
98
98
  erc20Contract.methods.transfer(to, transferValue).estimateGas({
99
99
  from
100
- }), (0, _eth.calculateGasFeeParams)(evmApi, networkKey)]);
100
+ }), (0, _utils.calculateGasFeeParams)(evmApi, networkKey)]);
101
101
  const transactionObject = {
102
102
  gas: gasLimit,
103
103
  from,
@@ -122,7 +122,7 @@ async function getERC721Transaction(web3Api, chain, contractAddress, senderAddre
122
122
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
123
123
  contract.methods.safeTransferFrom(senderAddress, recipientAddress, tokenId).estimateGas({
124
124
  from: senderAddress
125
- }), (0, _eth.calculateGasFeeParams)(web3Api, chain)]);
125
+ }), (0, _utils.calculateGasFeeParams)(web3Api, chain)]);
126
126
  return {
127
127
  from: senderAddress,
128
128
  gasPrice: priority.gasPrice,
@@ -30,19 +30,19 @@ var _utils = require("@subwallet/extension-base/koni/api/yield/helper/utils");
30
30
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
31
31
  var _types2 = require("@subwallet/extension-base/services/chain-service/types");
32
32
  var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
33
+ var _utils3 = require("@subwallet/extension-base/services/fee-service/utils");
33
34
  var _constants3 = require("@subwallet/extension-base/services/request-service/constants");
34
35
  var _constants4 = require("@subwallet/extension-base/services/setting-service/constants");
35
36
  var _constants5 = require("@subwallet/extension-base/services/wallet-connect-service/constants");
36
37
  var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
37
38
  var _stores = require("@subwallet/extension-base/stores");
38
39
  var _types3 = require("@subwallet/extension-base/types");
39
- var _utils3 = require("@subwallet/extension-base/utils");
40
- var _eth = require("@subwallet/extension-base/utils/eth");
40
+ var _utils4 = require("@subwallet/extension-base/utils");
41
41
  var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTransaction");
42
42
  var _number = require("@subwallet/extension-base/utils/number");
43
43
  var _keyring = require("@subwallet/keyring");
44
44
  var _uiKeyring = require("@subwallet/ui-keyring");
45
- var _utils4 = require("@walletconnect/utils");
45
+ var _utils5 = require("@walletconnect/utils");
46
46
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
47
47
  var _i18next = require("i18next");
48
48
  var _types4 = require("@polkadot/types");
@@ -550,7 +550,7 @@ class KoniExtension {
550
550
  const _cb = (0, _subscriptions.createSubscription)(id, port);
551
551
  let old = '';
552
552
  const subscription = this.#koniState.keyringService.addressesSubject.subscribe(subjectInfo => {
553
- const addresses = (0, _utils3.convertSubjectInfoToAddresses)(subjectInfo);
553
+ const addresses = (0, _utils4.convertSubjectInfoToAddresses)(subjectInfo);
554
554
  const _new = JSON.stringify(addresses);
555
555
  if (old !== _new) {
556
556
  _cb({
@@ -565,7 +565,7 @@ class KoniExtension {
565
565
  });
566
566
  const subjectInfo = this.#koniState.keyringService.addresses;
567
567
  return {
568
- addresses: (0, _utils3.convertSubjectInfoToAddresses)(subjectInfo)
568
+ addresses: (0, _utils4.convertSubjectInfoToAddresses)(subjectInfo)
569
569
  };
570
570
  }
571
571
  saveRecentAccount(_ref22) {
@@ -574,7 +574,7 @@ class KoniExtension {
574
574
  chain
575
575
  } = _ref22;
576
576
  if ((0, _utilCrypto.isAddress)(accountId)) {
577
- const address = (0, _utils3.reformatAddress)(accountId);
577
+ const address = (0, _utils4.reformatAddress)(accountId);
578
578
  const account = _uiKeyring.keyring.getAccount(address);
579
579
  const contact = _uiKeyring.keyring.getAddress(address, 'address');
580
580
  if (account) {
@@ -616,7 +616,7 @@ class KoniExtension {
616
616
  meta
617
617
  } = _ref23;
618
618
  if ((0, _utilCrypto.isAddress)(address)) {
619
- const _address = (0, _utils3.reformatAddress)(address);
619
+ const _address = (0, _utils4.reformatAddress)(address);
620
620
  _uiKeyring.keyring.saveAddress(_address, meta);
621
621
  return true;
622
622
  } else {
@@ -628,7 +628,7 @@ class KoniExtension {
628
628
  address
629
629
  } = _ref24;
630
630
  if ((0, _utilCrypto.isAddress)(address)) {
631
- const _address = (0, _utils3.reformatAddress)(address);
631
+ const _address = (0, _utils4.reformatAddress)(address);
632
632
  _uiKeyring.keyring.forgetAddress(_address);
633
633
  return true;
634
634
  } else {
@@ -1521,7 +1521,7 @@ class KoniExtension {
1521
1521
  const addresses = _uiKeyring.keyring.getAccounts().map(a => a.address);
1522
1522
 
1523
1523
  // Re-filter
1524
- cb(histories.filter(item => addresses.some(address => (0, _utils3.isSameAddress)(item.address, address))));
1524
+ cb(histories.filter(item => addresses.some(address => (0, _utils4.isSameAddress)(item.address, address))));
1525
1525
  });
1526
1526
  this.createUnsubscriptionHandle(id, subscription.unsubscribe);
1527
1527
  port.onDisconnect.addListener(() => {
@@ -1530,7 +1530,7 @@ class KoniExtension {
1530
1530
  const addresses = _uiKeyring.keyring.getAccounts().map(a => a.address);
1531
1531
 
1532
1532
  // Re-filter
1533
- return historySubject.getValue().filter(item => addresses.some(address => (0, _utils3.isSameAddress)(item.address, address)));
1533
+ return historySubject.getValue().filter(item => addresses.some(address => (0, _utils4.isSameAddress)(item.address, address)));
1534
1534
  }
1535
1535
  subscribeHistoryByChainAndAddress(_ref44, id, port) {
1536
1536
  let {
@@ -1975,7 +1975,7 @@ class KoniExtension {
1975
1975
  from: address
1976
1976
  };
1977
1977
  const gasLimit = await web3.api.eth.estimateGas(transaction);
1978
- const priority = await (0, _eth.calculateGasFeeParams)(web3, networkKey);
1978
+ const priority = await (0, _utils3.calculateGasFeeParams)(web3, networkKey);
1979
1979
  if (priority.baseGasFee) {
1980
1980
  const maxFee = priority.maxFeePerGas;
1981
1981
  estimatedFee = maxFee.multipliedBy(gasLimit).toFixed(0);
@@ -2521,7 +2521,7 @@ class KoniExtension {
2521
2521
  signed = await pair.evmSigner.signMessage(data, 'personal_sign');
2522
2522
  } else {
2523
2523
  var _signedTranaction$r, _signedTranaction$s, _signedTranaction$v;
2524
- const tx = (0, _eth.createTransactionFromRLP)(message);
2524
+ const tx = (0, _utils4.createTransactionFromRLP)(message);
2525
2525
  if (!tx) {
2526
2526
  throw new Error((0, _i18next.t)('Failed to decode data. Please use a valid QR code'));
2527
2527
  }
@@ -2546,7 +2546,7 @@ class KoniExtension {
2546
2546
  common
2547
2547
  });
2548
2548
  const signedTranaction = _tx.LegacyTransaction.fromSerializedTx((0, _util.hexToU8a)(pair.evmSigner.signTransaction(transaction)));
2549
- signed = (0, _eth.signatureToHex)({
2549
+ signed = (0, _utils4.signatureToHex)({
2550
2550
  r: ((_signedTranaction$r = signedTranaction.r) === null || _signedTranaction$r === void 0 ? void 0 : _signedTranaction$r.toString(16)) || '',
2551
2551
  s: ((_signedTranaction$s = signedTranaction.s) === null || _signedTranaction$s === void 0 ? void 0 : _signedTranaction$s.toString(16)) || '',
2552
2552
  v: ((_signedTranaction$v = signedTranaction.v) === null || _signedTranaction$v === void 0 ? void 0 : _signedTranaction$v.toString(16)) || ''
@@ -3255,6 +3255,19 @@ class KoniExtension {
3255
3255
  });
3256
3256
  return this.#koniState.getChainStateMap();
3257
3257
  }
3258
+ subscribeChainStatusMap(id, port) {
3259
+ const cb = (0, _subscriptions.createSubscription)(id, port);
3260
+ const chainStateMapSubscription = this.#koniState.chainService.subscribeChainStatusMap().subscribe({
3261
+ next: rs => {
3262
+ cb(rs);
3263
+ }
3264
+ });
3265
+ this.createUnsubscriptionHandle(id, chainStateMapSubscription.unsubscribe);
3266
+ port.onDisconnect.addListener(() => {
3267
+ this.cancelSubscription(id);
3268
+ });
3269
+ return this.#koniState.chainService.getChainStatusMap();
3270
+ }
3258
3271
  async subscribeAssetRegistry(id, port) {
3259
3272
  const cb = (0, _subscriptions.createSubscription)(id, port);
3260
3273
  let ready = false;
@@ -3421,12 +3434,12 @@ class KoniExtension {
3421
3434
  if (namespace.chains) {
3422
3435
  const unSupportChains = namespace.chains.filter(chain => !(0, _helpers2.isSupportWalletConnectChain)(chain, chainInfoMap));
3423
3436
  if (unSupportChains.length) {
3424
- throw new Error((0, _utils4.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + unSupportChains.toString());
3437
+ throw new Error((0, _utils5.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + unSupportChains.toString());
3425
3438
  }
3426
3439
  availableNamespaces[key] = namespace;
3427
3440
  }
3428
3441
  } else {
3429
- throw new Error((0, _utils4.getSdkError)('UNSUPPORTED_NAMESPACE_KEY').message + ' ' + key);
3442
+ throw new Error((0, _utils5.getSdkError)('UNSUPPORTED_NAMESPACE_KEY').message + ' ' + key);
3430
3443
  }
3431
3444
  });
3432
3445
  Object.entries(optionalNamespaces).forEach(_ref84 => {
@@ -3458,7 +3471,7 @@ class KoniExtension {
3458
3471
  let [key, namespace] = _ref85;
3459
3472
  if (namespace.chains) {
3460
3473
  const accounts = [];
3461
- const chains = (0, _utils3.uniqueStringArray)(namespace.chains);
3474
+ const chains = (0, _utils4.uniqueStringArray)(namespace.chains);
3462
3475
  chains.forEach(chain => {
3463
3476
  accounts.push(...selectedAccounts.filter(address => (0, _utilCrypto.isEthereumAddress)(address) === (key === _constants5.WALLET_CONNECT_EIP155_NAMESPACE)).map(address => `${chain}:${address}`));
3464
3477
  });
@@ -3558,7 +3571,7 @@ class KoniExtension {
3558
3571
  });
3559
3572
  const {
3560
3573
  connectionStatus
3561
- } = this.#koniState.chainService.getChainStateByKey(_constants2._DEFAULT_MANTA_ZK_CHAIN);
3574
+ } = this.#koniState.chainService.getChainStatusByKey(_constants2._DEFAULT_MANTA_ZK_CHAIN);
3562
3575
  if (connectionStatus !== _types2._ChainConnectionStatus.CONNECTED) {
3563
3576
  // TODO: do better
3564
3577
  await timeout();
@@ -4298,6 +4311,8 @@ class KoniExtension {
4298
4311
  return this.subscribeChainInfoMap(id, port);
4299
4312
  case 'pri(chainService.subscribeChainStateMap)':
4300
4313
  return this.subscribeChainStateMap(id, port);
4314
+ case 'pri(chainService.subscribeChainStatusMap)':
4315
+ return this.subscribeChainStatusMap(id, port);
4301
4316
  case 'pri(chainService.subscribeXcmRefMap)':
4302
4317
  return this.subscribeXcmRefMap(id, port);
4303
4318
  case 'pri(chainService.getSupportedContractTypes)':
@@ -20,6 +20,8 @@ var _constants2 = require("@subwallet/extension-base/services/chain-service/cons
20
20
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
21
21
  var _service = _interopRequireDefault(require("@subwallet/extension-base/services/earning-service/service"));
22
22
  var _eventService = require("@subwallet/extension-base/services/event-service");
23
+ var _service2 = _interopRequireDefault(require("@subwallet/extension-base/services/fee-service/service"));
24
+ var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
23
25
  var _historyService = require("@subwallet/extension-base/services/history-service");
24
26
  var _keyringService = require("@subwallet/extension-base/services/keyring-service");
25
27
  var _migrationService = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service"));
@@ -34,8 +36,7 @@ var _subscanChainMap = require("@subwallet/extension-base/services/subscan-servi
34
36
  var _transactionService = _interopRequireDefault(require("@subwallet/extension-base/services/transaction-service"));
35
37
  var _walletConnectService = _interopRequireDefault(require("@subwallet/extension-base/services/wallet-connect-service"));
36
38
  var _AccountRef = _interopRequireDefault(require("@subwallet/extension-base/stores/AccountRef"));
37
- var _utils2 = require("@subwallet/extension-base/utils");
38
- var _eth = require("@subwallet/extension-base/utils/eth");
39
+ var _utils3 = require("@subwallet/extension-base/utils");
39
40
  var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
40
41
  var _promise = require("@subwallet/extension-base/utils/promise");
41
42
  var _decode = require("@subwallet/keyring/pair/decode");
@@ -111,12 +112,13 @@ class KoniState {
111
112
  this.buyService = new _buyService.default(this);
112
113
  this.transactionService = new _transactionService.default(this);
113
114
  this.earningService = new _service.default(this);
115
+ this.feeService = new _service2.default(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');
117
119
 
118
120
  // Init state
119
- if (_utils2.TARGET_ENV !== 'mobile') {
121
+ if (_utils3.TARGET_ENV !== 'mobile') {
120
122
  this.init().catch(console.error);
121
123
  }
122
124
  }
@@ -202,7 +204,7 @@ class KoniState {
202
204
  generateDefaultBalanceMap(_addresses) {
203
205
  const balanceMap = {};
204
206
  const activeChains = this.chainService.getActiveChainInfoMap();
205
- const isAllAccount = (0, _utils2.isAccountAll)(this.keyringService.currentAccount.address);
207
+ const isAllAccount = (0, _utils3.isAccountAll)(this.keyringService.currentAccount.address);
206
208
  const addresses = _addresses || (isAllAccount ? Object.keys(this.keyringService.accounts) : [this.keyringService.currentAccount.address]);
207
209
  addresses.forEach(address => {
208
210
  const temp = {};
@@ -707,7 +709,7 @@ class KoniState {
707
709
  async handleResetBalance(newAddress, forceRefresh) {
708
710
  if (this.isFirstLoad) {
709
711
  const backupBalanceData = await this.dbService.getStoredBalance();
710
- this.balanceMap.updateBalanceItems(backupBalanceData, (0, _utils2.isAccountAll)(newAddress));
712
+ this.balanceMap.updateBalanceItems(backupBalanceData, (0, _utils3.isAccountAll)(newAddress));
711
713
  this.isFirstLoad = false;
712
714
  }
713
715
  if (forceRefresh) {
@@ -750,8 +752,8 @@ class KoniState {
750
752
  };
751
753
  this.balanceUpdateCache.push(balance);
752
754
  }
753
- (0, _utils2.addLazy)('updateBalanceStore', () => {
754
- const isAllAccount = (0, _utils2.isAccountAll)(this.keyringService.currentAccount.address);
755
+ (0, _utils3.addLazy)('updateBalanceStore', () => {
756
+ const isAllAccount = (0, _utils3.isAccountAll)(this.keyringService.currentAccount.address);
755
757
  this.balanceMap.updateBalanceItems(this.balanceUpdateCache, isAllAccount);
756
758
  if (isAllAccount) {
757
759
  this.balanceUpdateCache = [...this.balanceUpdateCache, ...Object.values(this.balanceMap.map[_constants.ALL_ACCOUNT_KEY])];
@@ -1228,6 +1230,36 @@ class KoniState {
1228
1230
  }
1229
1231
  });
1230
1232
  }
1233
+ async calculateAllGasFeeOnChain(activeEvmChains) {
1234
+ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10000;
1235
+ const promiseList = [];
1236
+ activeEvmChains.forEach(slug => {
1237
+ const timeoutPromise = new Promise(resolve => {
1238
+ setTimeout(() => resolve(null), timeout);
1239
+ });
1240
+ const promise = (async () => {
1241
+ try {
1242
+ const web3Api = this.chainService.getEvmApi(slug);
1243
+ await web3Api.isReady;
1244
+ return await (0, _utils2.calculateGasFeeParams)(web3Api, slug, false, false);
1245
+ } catch (e) {
1246
+ console.error(e);
1247
+ return null;
1248
+ }
1249
+ })();
1250
+ promiseList.push(Promise.race([promise, timeoutPromise]).then(result => {
1251
+ var _result$gasPrice, _result$maxFeePerGas, _result$maxPriorityFe, _result$baseGasFee;
1252
+ return [slug, result ? {
1253
+ ...result,
1254
+ gasPrice: (_result$gasPrice = result.gasPrice) === null || _result$gasPrice === void 0 ? void 0 : _result$gasPrice.toString(),
1255
+ maxFeePerGas: (_result$maxFeePerGas = result.maxFeePerGas) === null || _result$maxFeePerGas === void 0 ? void 0 : _result$maxFeePerGas.toString(),
1256
+ maxPriorityFeePerGas: (_result$maxPriorityFe = result.maxPriorityFeePerGas) === null || _result$maxPriorityFe === void 0 ? void 0 : _result$maxPriorityFe.toString(),
1257
+ baseGasFee: (_result$baseGasFee = result.baseGasFee) === null || _result$baseGasFee === void 0 ? void 0 : _result$baseGasFee.toString()
1258
+ } : null];
1259
+ }));
1260
+ });
1261
+ return Object.fromEntries(await Promise.all(promiseList));
1262
+ }
1231
1263
  async evmSendTransaction(id, url, networkKey, allowedAccounts, transactionParams) {
1232
1264
  const evmApi = this.getEvmApi(networkKey);
1233
1265
  const evmNetwork = this.getChainInfo(networkKey);
@@ -1272,7 +1304,7 @@ class KoniState {
1272
1304
  } else if (transactionParams.gasPrice) {
1273
1305
  estimateGas = new _bignumber.default(transactionParams.gasPrice).multipliedBy(transaction.gas).toFixed(0);
1274
1306
  } else {
1275
- const priority = await (0, _eth.calculateGasFeeParams)(evmApi, networkKey);
1307
+ const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, networkKey);
1276
1308
  if (priority.baseGasFee) {
1277
1309
  transaction.maxPriorityFeePerGas = priority.maxPriorityFeePerGas.toString();
1278
1310
  transaction.maxFeePerGas = priority.maxFeePerGas.toString();
@@ -1599,7 +1631,7 @@ class KoniState {
1599
1631
  const result = {
1600
1632
  ...value
1601
1633
  };
1602
- const url = (0, _utils2.stripUrl)(_url);
1634
+ const url = (0, _utils3.stripUrl)(_url);
1603
1635
  result[url] = {
1604
1636
  pass: true
1605
1637
  };
@@ -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.40-1'
16
+ version: '1.1.41-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -26,6 +26,7 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
26
26
  let unsubLocalToken;
27
27
  let unsubEvmContractToken;
28
28
  let unsubWasmContractToken;
29
+ let unsubBridgedToken;
29
30
  try {
30
31
  if (_constants2._BALANCE_CHAIN_GROUP.bifrost.includes(chain)) {
31
32
  unsubLocalToken = await subscribeTokensAccountsPallet(addresses, chain, networkAPI.api, callBack);
@@ -38,6 +39,9 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
38
39
  } else if (_constants2._BALANCE_CHAIN_GROUP.centrifuge.includes(chain)) {
39
40
  unsubLocalToken = await subscribeOrmlTokensPallet(addresses, chain, networkAPI.api, callBack);
40
41
  }
42
+ if (_constants2._BALANCE_CHAIN_GROUP.supportBridged.includes(chain)) {
43
+ unsubBridgedToken = await subscribeBridgedBalance(addresses, chain, networkAPI.api, callBack);
44
+ }
41
45
  if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
42
46
  unsubEvmContractToken = (0, _evm.subscribeERC20Interval)(addresses, chain, evmApiMap, callBack);
43
47
  }
@@ -53,6 +57,7 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
53
57
  unsubLocalToken && unsubLocalToken();
54
58
  unsubEvmContractToken && unsubEvmContractToken();
55
59
  unsubWasmContractToken && unsubWasmContractToken();
60
+ unsubBridgedToken && unsubBridgedToken();
56
61
  };
57
62
  }
58
63
 
@@ -117,6 +122,59 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
117
122
  unsub();
118
123
  };
119
124
  }
125
+ async function subscribeBridgedBalance(addresses, chain, api, callBack) {
126
+ const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
127
+
128
+ // @ts-ignore
129
+ const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
130
+ try {
131
+ const isBridgedToken = (0, _utils2._isBridgedToken)(tokenInfo);
132
+ if (isBridgedToken) {
133
+ const multiLocation = (0, _utils2._getXcmAssetMultilocation)(tokenInfo);
134
+ return await api.query.foreignAssets.account.multi(addresses.map(address => [multiLocation, address]), balances => {
135
+ const items = balances.map((balance, index) => {
136
+ const bdata = balance === null || balance === void 0 ? void 0 : balance.toHuman();
137
+ let frozen = _util.BN_ZERO;
138
+ let total = _util.BN_ZERO;
139
+ if (bdata) {
140
+ // @ts-ignore
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
142
+ const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance).replaceAll(',', '') || '0');
143
+
144
+ // @ts-ignore
145
+ if (bdata !== null && bdata !== void 0 && bdata.isFrozen) {
146
+ frozen = addressBalance;
147
+ } else {
148
+ total = addressBalance;
149
+ }
150
+ }
151
+ const free = total.sub(frozen);
152
+ return {
153
+ address: addresses[index],
154
+ tokenSlug: tokenInfo.slug,
155
+ free: free.toString(),
156
+ locked: frozen.toString(),
157
+ state: _KoniTypes.APIItemState.READY,
158
+ substrateInfo: {
159
+ miscFrozen: frozen.toString(),
160
+ reserved: '0'
161
+ }
162
+ };
163
+ });
164
+ callBack(items);
165
+ });
166
+ }
167
+ } catch (err) {
168
+ console.warn(err);
169
+ }
170
+ return undefined;
171
+ }));
172
+ return () => {
173
+ unsubList.forEach(unsub => {
174
+ unsub && unsub();
175
+ });
176
+ };
177
+ }
120
178
  function subscribePSP22Balance(addresses, chain, api, callBack) {
121
179
  let tokenList = {};
122
180
  const psp22ContractMap = {};
@@ -39,11 +39,12 @@ 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'],
43
- statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network'],
42
+ bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
43
+ statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland'],
44
44
  kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
45
45
  // perhaps there are some runtime updates
46
- centrifuge: ['centrifuge']
46
+ centrifuge: ['centrifuge'],
47
+ supportBridged: ['rococo_assethub']
47
48
  };
48
49
  exports._BALANCE_CHAIN_GROUP = _BALANCE_CHAIN_GROUP;
49
50
  const _BALANCE_TOKEN_GROUP = {
@@ -59,7 +60,7 @@ const _NFT_CHAIN_GROUP = {
59
60
  statemine: ['statemine'],
60
61
  statemint: ['statemint'],
61
62
  unique_network: ['unique_network', 'quartz', 'opal'],
62
- bitcountry: ['bitcountry', 'pioneer'],
63
+ bitcountry: ['bitcountry', 'pioneer', 'continuum_network'],
63
64
  vara: ['vara_network']
64
65
  };
65
66
 
@@ -84,6 +85,7 @@ const _STAKING_ERA_LENGTH_MAP = {
84
85
  shibuya: 24,
85
86
  bifrost_testnet: 0.5,
86
87
  bifrost: 2,
88
+ bifrost_dot: 24,
87
89
  ternoa: 24,
88
90
  calamari: 6,
89
91
  calamari_test: 6,
@@ -219,12 +221,13 @@ const _TRANSFER_CHAIN_GROUP = {
219
221
  genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
220
222
  crab: ['crab', 'pangolin'],
221
223
  bitcountry: ['pioneer', 'bitcountry', 'bifrost', 'bifrost_dot'],
222
- statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel'],
224
+ statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest'],
223
225
  riochain: ['riochain'],
224
226
  sora_substrate: ['sora_substrate'],
225
227
  avail: ['kate', 'goldberg_testnet'],
226
228
  pendulum: ['pendulum', 'amplitude', 'amplitude_test', 'hydradx_main'],
227
- centrifuge: ['centrifuge']
229
+ centrifuge: ['centrifuge'],
230
+ disable_transfer: ['invarch', 'continuum_network']
228
231
  };
229
232
  exports._TRANSFER_CHAIN_GROUP = _TRANSFER_CHAIN_GROUP;
230
233
  const _BALANCE_PARSING_CHAIN_GROUP = {
@@ -256,7 +259,8 @@ exports._XCM_TYPE = _XCM_TYPE;
256
259
  const _DEFAULT_ACTIVE_CHAINS = [..._chainList._DEFAULT_CHAINS, 'vara_network'];
257
260
  exports._DEFAULT_ACTIVE_CHAINS = _DEFAULT_ACTIVE_CHAINS;
258
261
  const EVM_PASS_CONNECT_STATUS = {
259
- arbitrum_one: ['*']
262
+ arbitrum_one: ['*'],
263
+ okxTest: ['*']
260
264
  };
261
265
  exports.EVM_PASS_CONNECT_STATUS = EVM_PASS_CONNECT_STATUS;
262
266
  const EVM_REFORMAT_DECIMALS = {