@subwallet/extension-base 1.1.40-1 → 1.1.42-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 (101) 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 +42 -10
  9. package/cjs/packageInfo.js +1 -1
  10. package/cjs/page/SubWalleEvmProvider.js +5 -9
  11. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +58 -0
  12. package/cjs/services/chain-service/constants.js +11 -7
  13. package/cjs/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  14. package/cjs/services/chain-service/index.js +88 -79
  15. package/cjs/services/chain-service/utils.js +11 -6
  16. package/cjs/services/earning-service/constants/chains.js +10 -5
  17. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  18. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  19. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  20. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  21. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  22. package/cjs/services/earning-service/handlers/native-staking/astar.js +6 -2
  23. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +144 -45
  24. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +14 -16
  25. package/cjs/services/earning-service/handlers/nomination-pool/index.js +9 -11
  26. package/cjs/services/earning-service/handlers/special.js +2 -0
  27. package/cjs/services/earning-service/service.js +51 -18
  28. package/cjs/services/fee-service/service.js +70 -0
  29. package/cjs/services/fee-service/utils/index.js +209 -0
  30. package/cjs/services/migration-service/scripts/DeleteChainStaking.js +23 -0
  31. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +50 -0
  32. package/cjs/services/migration-service/scripts/index.js +6 -1
  33. package/cjs/services/transaction-service/index.js +37 -37
  34. package/cjs/types/fee/index.js +1 -0
  35. package/cjs/types/index.js +11 -0
  36. package/cjs/utils/eth.js +2 -105
  37. package/cjs/utils/index.js +12 -0
  38. package/cjs/utils/reportError.js +31 -0
  39. package/constants/index.d.ts +1 -1
  40. package/constants/index.js +1 -1
  41. package/koni/api/dotsama/transfer.js +1 -1
  42. package/koni/api/nft/bit.country/index.js +3 -1
  43. package/koni/api/nft/config.d.ts +1 -0
  44. package/koni/api/nft/config.js +1 -0
  45. package/koni/api/tokens/evm/transfer.js +1 -1
  46. package/koni/background/handlers/Extension.d.ts +1 -0
  47. package/koni/background/handlers/Extension.js +18 -3
  48. package/koni/background/handlers/State.d.ts +4 -1
  49. package/koni/background/handlers/State.js +33 -2
  50. package/package.json +36 -6
  51. package/packageInfo.js +1 -1
  52. package/page/SubWalleEvmProvider.d.ts +0 -1
  53. package/page/SubWalleEvmProvider.js +5 -9
  54. package/services/balance-service/helpers/subscribe/substrate/index.js +59 -1
  55. package/services/chain-service/constants.d.ts +2 -0
  56. package/services/chain-service/constants.js +11 -7
  57. package/services/chain-service/handler/chain-spec/goldberg.d.ts +70 -1
  58. package/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  59. package/services/chain-service/index.d.ts +8 -4
  60. package/services/chain-service/index.js +74 -67
  61. package/services/chain-service/types.d.ts +4 -0
  62. package/services/chain-service/utils.d.ts +1 -0
  63. package/services/chain-service/utils.js +10 -6
  64. package/services/earning-service/constants/chains.d.ts +3 -0
  65. package/services/earning-service/constants/chains.js +7 -4
  66. package/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  67. package/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  68. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +1 -1
  69. package/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  70. package/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  71. package/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  72. package/services/earning-service/handlers/native-staking/astar.js +6 -2
  73. package/services/earning-service/handlers/native-staking/para-chain.js +144 -45
  74. package/services/earning-service/handlers/native-staking/relay-chain.js +15 -17
  75. package/services/earning-service/handlers/nomination-pool/index.js +10 -12
  76. package/services/earning-service/handlers/special.d.ts +1 -0
  77. package/services/earning-service/handlers/special.js +2 -0
  78. package/services/earning-service/service.d.ts +4 -1
  79. package/services/earning-service/service.js +52 -19
  80. package/services/fee-service/service.d.ts +12 -0
  81. package/services/fee-service/service.js +63 -0
  82. package/services/fee-service/utils/index.d.ts +8 -0
  83. package/services/fee-service/utils/index.js +193 -0
  84. package/services/migration-service/scripts/DeleteChainStaking.d.ts +4 -0
  85. package/services/migration-service/scripts/DeleteChainStaking.js +15 -0
  86. package/services/migration-service/scripts/databases/MigrateAssetSetting.d.ts +4 -0
  87. package/services/migration-service/scripts/databases/MigrateAssetSetting.js +42 -0
  88. package/services/migration-service/scripts/index.js +5 -1
  89. package/services/transaction-service/index.js +2 -2
  90. package/types/fee/index.d.ts +49 -0
  91. package/types/fee/index.js +1 -0
  92. package/types/index.d.ts +1 -0
  93. package/types/index.js +1 -0
  94. package/types/yield/info/account/unstake.d.ts +2 -0
  95. package/types/yield/info/pallet.d.ts +4 -0
  96. package/utils/eth.d.ts +0 -15
  97. package/utils/eth.js +0 -101
  98. package/utils/index.d.ts +1 -0
  99. package/utils/index.js +1 -0
  100. package/utils/reportError.d.ts +1 -0
  101. package/utils/reportError.js +23 -0
@@ -11,15 +11,15 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
11
  var _TransactionWarning = require("@subwallet/extension-base/background/warnings/TransactionWarning");
12
12
  var _constants = require("@subwallet/extension-base/constants");
13
13
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
14
+ var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
14
15
  var _constants2 = require("@subwallet/extension-base/services/request-service/constants");
15
16
  var _constants3 = require("@subwallet/extension-base/services/transaction-service/constants");
16
17
  var _eventParser = require("@subwallet/extension-base/services/transaction-service/event-parser");
17
18
  var _helpers = require("@subwallet/extension-base/services/transaction-service/helpers");
18
- var _utils2 = require("@subwallet/extension-base/services/transaction-service/utils");
19
+ var _utils3 = require("@subwallet/extension-base/services/transaction-service/utils");
19
20
  var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
20
21
  var _types = require("@subwallet/extension-base/types");
21
- var _utils3 = require("@subwallet/extension-base/utils");
22
- var _eth = require("@subwallet/extension-base/utils/eth");
22
+ var _utils4 = require("@subwallet/extension-base/utils");
23
23
  var _mergeTransactionAndSignature = require("@subwallet/extension-base/utils/eth/mergeTransactionAndSignature");
24
24
  var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
25
25
  var _number = require("@subwallet/extension-base/utils/number");
@@ -124,7 +124,7 @@ class TransactionService {
124
124
  validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
125
125
  } else {
126
126
  const gasLimit = await web3.api.eth.estimateGas(transaction);
127
- const priority = await (0, _eth.calculateGasFeeParams)(web3, chainInfo.slug);
127
+ const priority = await (0, _utils2.calculateGasFeeParams)(web3, chainInfo.slug);
128
128
  if (priority.baseGasFee) {
129
129
  const maxFee = priority.maxFeePerGas; // TODO: Need review
130
130
 
@@ -341,13 +341,13 @@ class TransactionService {
341
341
  getTransactionLink(id) {
342
342
  const transaction = this.getTransaction(id);
343
343
  const chainInfo = this.state.chainService.getChainInfoByKey(transaction.chain);
344
- return (0, _utils2.getExplorerLink)(chainInfo, transaction.extrinsicHash, 'tx');
344
+ return (0, _utils3.getExplorerLink)(chainInfo, transaction.extrinsicHash, 'tx');
345
345
  }
346
346
  transactionToHistories(id, startBlock, nonce, eventLogs) {
347
347
  const transaction = this.getTransaction(id);
348
348
  const extrinsicType = transaction.extrinsicType;
349
349
  const chainInfo = this.state.chainService.getChainInfoByKey(transaction.chain);
350
- const formattedTransactionAddress = (0, _utils3.reformatAddress)(transaction.address);
350
+ const formattedTransactionAddress = (0, _utils4.reformatAddress)(transaction.address);
351
351
  const historyItem = {
352
352
  origin: 'app',
353
353
  chain: transaction.chain,
@@ -380,7 +380,7 @@ class TransactionService {
380
380
  switch (extrinsicType) {
381
381
  case _KoniTypes.ExtrinsicType.TRANSFER_BALANCE:
382
382
  {
383
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
383
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
384
384
  historyItem.to = inputData.to;
385
385
  const sendingTokenInfo = this.state.chainService.getAssetBySlug(inputData.tokenSlug);
386
386
  historyItem.amount = {
@@ -393,7 +393,7 @@ class TransactionService {
393
393
  break;
394
394
  case _KoniTypes.ExtrinsicType.TRANSFER_TOKEN:
395
395
  {
396
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
396
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
397
397
  historyItem.to = inputData.to;
398
398
  const sendingTokenInfo = this.state.chainService.getAssetBySlug(inputData.tokenSlug);
399
399
  historyItem.amount = {
@@ -406,7 +406,7 @@ class TransactionService {
406
406
  break;
407
407
  case _KoniTypes.ExtrinsicType.TRANSFER_XCM:
408
408
  {
409
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
409
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
410
410
  historyItem.to = inputData.to;
411
411
  const sendingTokenInfo = this.state.chainService.getAssetBySlug(inputData.tokenSlug);
412
412
  historyItem.amount = {
@@ -426,7 +426,7 @@ class TransactionService {
426
426
  break;
427
427
  case _KoniTypes.ExtrinsicType.SEND_NFT:
428
428
  {
429
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
429
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
430
430
  historyItem.to = inputData.recipientAddress;
431
431
  historyItem.amount = {
432
432
  decimals: 0,
@@ -437,7 +437,7 @@ class TransactionService {
437
437
  break;
438
438
  case _KoniTypes.ExtrinsicType.STAKING_BOND:
439
439
  {
440
- const data = (0, _utils2.parseTransactionData)(transaction.data);
440
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
441
441
  historyItem.amount = {
442
442
  ...baseNativeAmount,
443
443
  value: data.amount || '0'
@@ -446,7 +446,7 @@ class TransactionService {
446
446
  break;
447
447
  case _KoniTypes.ExtrinsicType.STAKING_JOIN_POOL:
448
448
  {
449
- const data = (0, _utils2.parseTransactionData)(transaction.data);
449
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
450
450
  historyItem.amount = {
451
451
  ...baseNativeAmount,
452
452
  value: data.amount || '0'
@@ -456,7 +456,7 @@ class TransactionService {
456
456
  break;
457
457
  case _KoniTypes.ExtrinsicType.STAKING_UNBOND:
458
458
  {
459
- const data = (0, _utils2.parseTransactionData)(transaction.data);
459
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
460
460
  if (data.isLiquidStaking && data.derivativeTokenInfo && data.exchangeRate && data.inputTokenInfo) {
461
461
  historyItem.amount = {
462
462
  decimals: (0, _utils._getAssetDecimals)(data.derivativeTokenInfo),
@@ -478,7 +478,7 @@ class TransactionService {
478
478
  break;
479
479
  case _KoniTypes.ExtrinsicType.STAKING_LEAVE_POOL:
480
480
  {
481
- const data = (0, _utils2.parseTransactionData)(transaction.data);
481
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
482
482
  historyItem.to = data.address || '';
483
483
  historyItem.amount = {
484
484
  ...baseNativeAmount,
@@ -488,7 +488,7 @@ class TransactionService {
488
488
  break;
489
489
  case _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD:
490
490
  {
491
- const data = (0, _utils2.parseTransactionData)(transaction.data);
491
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
492
492
  historyItem.amount = {
493
493
  ...baseNativeAmount,
494
494
  value: data.unclaimedReward || '0'
@@ -497,7 +497,7 @@ class TransactionService {
497
497
  break;
498
498
  case _KoniTypes.ExtrinsicType.STAKING_WITHDRAW:
499
499
  {
500
- const data = (0, _utils2.parseTransactionData)(transaction.data);
500
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
501
501
  const slug = data.slug;
502
502
  const poolHandler = this.state.earningService.getPoolHandler(slug);
503
503
  const amount = {
@@ -517,7 +517,7 @@ class TransactionService {
517
517
  }
518
518
  case _KoniTypes.ExtrinsicType.STAKING_CANCEL_UNSTAKE:
519
519
  {
520
- const data = (0, _utils2.parseTransactionData)(transaction.data);
520
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
521
521
  historyItem.amount = {
522
522
  ...baseNativeAmount,
523
523
  value: data.selectedUnstaking.claimable || '0'
@@ -527,7 +527,7 @@ class TransactionService {
527
527
  case _KoniTypes.ExtrinsicType.EVM_EXECUTE:
528
528
  {
529
529
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
530
- const data = (0, _utils2.parseTransactionData)(transaction.data);
530
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
531
531
 
532
532
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access
533
533
  historyItem.to = (data === null || data === void 0 ? void 0 : data.to) || '';
@@ -542,7 +542,7 @@ class TransactionService {
542
542
  // eslint-disable-next-line no-fallthrough
543
543
  case _KoniTypes.ExtrinsicType.MINT_VDOT:
544
544
  {
545
- const params = (0, _utils2.parseTransactionData)(transaction.data);
545
+ const params = (0, _utils3.parseTransactionData)(transaction.data);
546
546
  const inputTokenInfo = this.state.chainService.getAssetBySlug(params.inputTokenSlug);
547
547
  const isFeePaidWithInputAsset = params.feeTokenSlug === params.inputTokenSlug;
548
548
  historyItem.amount = {
@@ -564,7 +564,7 @@ class TransactionService {
564
564
  // eslint-disable-next-line no-fallthrough
565
565
  case _KoniTypes.ExtrinsicType.REDEEM_QDOT:
566
566
  {
567
- const data = (0, _utils2.parseTransactionData)(transaction.data);
567
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
568
568
  const yieldPoolInfo = data.poolInfo;
569
569
  if (yieldPoolInfo.metadata.derivativeAssets) {
570
570
  const inputTokenSlug = yieldPoolInfo.metadata.inputAsset;
@@ -603,7 +603,7 @@ class TransactionService {
603
603
  // eslint-disable-next-line no-fallthrough
604
604
  case _KoniTypes.ExtrinsicType.REDEEM_VDOT:
605
605
  {
606
- const data = (0, _utils2.parseTransactionData)(transaction.data);
606
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
607
607
  const yieldPoolInfo = data.poolInfo;
608
608
  const minAmountPercents = this.state.earningService.getMinAmountPercent();
609
609
  if (yieldPoolInfo.metadata.derivativeAssets) {
@@ -637,7 +637,7 @@ class TransactionService {
637
637
  }
638
638
  case _KoniTypes.ExtrinsicType.TOKEN_APPROVE:
639
639
  {
640
- const data = (0, _utils2.parseTransactionData)(transaction.data);
640
+ const data = (0, _utils3.parseTransactionData)(transaction.data);
641
641
  const inputAsset = this.state.chainService.getAssetBySlug(data.inputTokenSlug);
642
642
  historyItem.amount = {
643
643
  value: '0',
@@ -661,7 +661,7 @@ class TransactionService {
661
661
  switch (extrinsicType) {
662
662
  case _KoniTypes.ExtrinsicType.TRANSFER_XCM:
663
663
  {
664
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
664
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
665
665
  receiverHistory.chain = inputData.destinationNetworkKey;
666
666
  break;
667
667
  }
@@ -722,7 +722,7 @@ class TransactionService {
722
722
  // must be done after success/failure to make sure the transaction is finalized
723
723
  const transaction = this.getTransaction(id);
724
724
  if (transaction.extrinsicType === _KoniTypes.ExtrinsicType.SEND_NFT) {
725
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
725
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
726
726
  try {
727
727
  const sender = _uiKeyring.default.getPair(inputData.senderAddress);
728
728
  sender && this.state.dbService.handleNftTransfer(transaction.chain, [sender.address, _constants.ALL_ACCOUNT_KEY], inputData.nftItem).then(() => {
@@ -863,16 +863,16 @@ class TransactionService {
863
863
  generateHashPayload(chain, transaction) {
864
864
  const chainInfo = this.state.chainService.getChainInfoByKey(chain);
865
865
  let txObject;
866
- const max = (0, _eth.anyNumberToBN)(transaction.maxFeePerGas);
866
+ const max = (0, _utils4.anyNumberToBN)(transaction.maxFeePerGas);
867
867
  if (max.gt(_number.BN_ZERO)) {
868
868
  var _transaction$nonce;
869
869
  txObject = {
870
870
  nonce: (_transaction$nonce = transaction.nonce) !== null && _transaction$nonce !== void 0 ? _transaction$nonce : 0,
871
- maxFeePerGas: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.maxFeePerGas).toString(16)),
872
- maxPriorityFeePerGas: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.maxPriorityFeePerGas).toString(16)),
873
- gasLimit: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.gas).toString(16)),
871
+ maxFeePerGas: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.maxFeePerGas).toString(16)),
872
+ maxPriorityFeePerGas: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.maxPriorityFeePerGas).toString(16)),
873
+ gasLimit: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.gas).toString(16)),
874
874
  to: transaction.to !== undefined ? transaction.to : '',
875
- value: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.value).toString(16)),
875
+ value: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.value).toString(16)),
876
876
  data: transaction.data,
877
877
  chainId: (0, _utils._getEvmChainId)(chainInfo),
878
878
  type: 2
@@ -881,10 +881,10 @@ class TransactionService {
881
881
  var _transaction$nonce2;
882
882
  txObject = {
883
883
  nonce: (_transaction$nonce2 = transaction.nonce) !== null && _transaction$nonce2 !== void 0 ? _transaction$nonce2 : 0,
884
- gasPrice: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.gasPrice).toString(16)),
885
- gasLimit: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.gas).toString(16)),
884
+ gasPrice: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.gasPrice).toString(16)),
885
+ gasLimit: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.gas).toString(16)),
886
886
  to: transaction.to !== undefined ? transaction.to : '',
887
- value: (0, _ethereumjsUtil.addHexPrefix)((0, _eth.anyNumberToBN)(transaction.value).toString(16)),
887
+ value: (0, _ethereumjsUtil.addHexPrefix)((0, _utils4.anyNumberToBN)(transaction.value).toString(16)),
888
888
  data: transaction.data,
889
889
  chainId: (0, _utils._getEvmChainId)(chainInfo),
890
890
  type: 0
@@ -954,12 +954,12 @@ class TransactionService {
954
954
  const txObject = {
955
955
  nonce: (_payload$nonce = payload.nonce) !== null && _payload$nonce !== void 0 ? _payload$nonce : 0,
956
956
  from: payload.from,
957
- gasPrice: (0, _eth.anyNumberToBN)(payload.gasPrice).toNumber(),
958
- maxFeePerGas: (0, _eth.anyNumberToBN)(payload.maxFeePerGas).toNumber(),
959
- maxPriorityFeePerGas: (0, _eth.anyNumberToBN)(payload.maxPriorityFeePerGas).toNumber(),
960
- gasLimit: (0, _eth.anyNumberToBN)(payload.gas).toNumber(),
957
+ gasPrice: (0, _utils4.anyNumberToBN)(payload.gasPrice).toNumber(),
958
+ maxFeePerGas: (0, _utils4.anyNumberToBN)(payload.maxFeePerGas).toNumber(),
959
+ maxPriorityFeePerGas: (0, _utils4.anyNumberToBN)(payload.maxPriorityFeePerGas).toNumber(),
960
+ gasLimit: (0, _utils4.anyNumberToBN)(payload.gas).toNumber(),
961
961
  to: payload.to !== undefined ? payload.to : '',
962
- value: (0, _eth.anyNumberToBN)(payload.value).toNumber(),
962
+ value: (0, _utils4.anyNumberToBN)(payload.value).toNumber(),
963
963
  data: payload.data,
964
964
  chainId: payload.chainId
965
965
  };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -36,6 +36,17 @@ Object.keys(_campaigns).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _fee = require("./fee");
40
+ Object.keys(_fee).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _fee[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _fee[key];
47
+ }
48
+ });
49
+ });
39
50
  var _ordinal = require("./ordinal");
40
51
  Object.keys(_ordinal).forEach(function (key) {
41
52
  if (key === "default" || key === "__esModule") return;
package/cjs/utils/eth.js CHANGED
@@ -4,12 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.signatureToHex = exports.recalculateGasPrice = exports.createTransactionFromRLP = exports.calculateGasFeeParams = exports.anyNumberToBN = exports.Transaction = void 0;
8
- var _constants = require("@subwallet/extension-base/constants");
7
+ exports.signatureToHex = exports.createTransactionFromRLP = exports.anyNumberToBN = exports.Transaction = void 0;
9
8
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
10
9
  var _ethers = require("ethers");
11
10
  var _util = require("@polkadot/util");
12
- var _number = require("./number");
13
11
  // Copyright 2019-2022 @subwallet/extension-base
14
12
  // SPDX-License-Identifier: Apache-2.0
15
13
 
@@ -71,105 +69,4 @@ const signatureToHex = sig => {
71
69
  const hexV = (0, _util.hexStripPrefix)((0, _util.numberToHex)(v));
72
70
  return hexR + hexS + hexV;
73
71
  };
74
- exports.signatureToHex = signatureToHex;
75
- const recalculateGasPrice = (_price, chain) => {
76
- const needMulti = _constants.NETWORK_MULTI_GAS_FEE.includes(chain) || _constants.NETWORK_MULTI_GAS_FEE.includes('*');
77
- return needMulti ? new _bignumber.default(_price).multipliedBy(_constants.GAS_PRICE_RATIO).toFixed(0) : _price;
78
- };
79
- exports.recalculateGasPrice = recalculateGasPrice;
80
- const calculateGasFeeParams = async (web3, networkKey) => {
81
- try {
82
- const numBlock = 20;
83
- const rewardPercent = [];
84
- for (let i = 0; i <= 100; i = i + 5) {
85
- rewardPercent.push(i);
86
- }
87
- const history = await web3.api.eth.getFeeHistory(numBlock, 'latest', rewardPercent);
88
- const baseGasFee = new _bignumber.default(history.baseFeePerGas[history.baseFeePerGas.length - 1]); // Last element is latest
89
-
90
- const blocksBusy = history.reward.reduce((previous, rewards, currentIndex) => {
91
- const [firstPriority] = rewards;
92
- const base = history.baseFeePerGas[currentIndex];
93
- const priorityBN = new _bignumber.default(firstPriority);
94
- const baseBN = new _bignumber.default(base);
95
-
96
- /*
97
- * True if priority >= 0.3 * base
98
- * */
99
- const blockIsBusy = baseBN.gt(_number.BN_ZERO) ? priorityBN.dividedBy(baseBN).gte(0.3) ? 1 : 0 : 0; // Special for bsc, base fee = 0
100
-
101
- return previous + blockIsBusy;
102
- }, 0);
103
- const busyNetwork = blocksBusy >= numBlock / 2; // True, if half of block is busy
104
-
105
- const maxPriorityFeePerGas = history.reward.reduce((previous, rewards) => {
106
- let firstBN = _number.BN_ZERO;
107
- let firstIndex = 0;
108
-
109
- /* Get first priority which greater than 0 */
110
- for (let i = 0; i < rewards.length; i++) {
111
- firstIndex = i;
112
- const current = rewards[i];
113
- const currentBN = new _bignumber.default(current);
114
- if (currentBN.gt(_number.BN_ZERO)) {
115
- firstBN = currentBN;
116
- break;
117
- }
118
- }
119
- let secondBN = firstBN;
120
-
121
- /* Get second priority which greater than first priority */
122
- for (let i = firstIndex; i < rewards.length; i++) {
123
- const current = rewards[i];
124
- const currentBN = new _bignumber.default(current);
125
- if (currentBN.gt(firstBN)) {
126
- secondBN = currentBN;
127
- break;
128
- }
129
- }
130
- let current;
131
- if (busyNetwork) {
132
- current = secondBN.dividedBy(2).gte(firstBN) ? firstBN : secondBN; // second too larger than first (> 2 times), use first else use second
133
- } else {
134
- current = firstBN;
135
- }
136
- if (busyNetwork) {
137
- /* Get max value */
138
- return current.gte(previous) ? current : previous; // get max priority
139
- } else {
140
- /* Get min value which greater than 0 */
141
- if (previous.eq(_number.BN_ZERO)) {
142
- return current; // get min priority
143
- } else if (current.eq(_number.BN_ZERO)) {
144
- return previous;
145
- }
146
- return current.lte(previous) ? current : previous; // get min priority
147
- }
148
- }, _number.BN_ZERO);
149
- if (maxPriorityFeePerGas.eq(_number.BN_ZERO)) {
150
- const _price = await web3.api.eth.getGasPrice();
151
- const gasPrice = recalculateGasPrice(_price, networkKey);
152
- return {
153
- gasPrice,
154
- busyNetwork: false
155
- };
156
- }
157
-
158
- /* Max gas = (base + priority) * 1.5 (if not busy or 2 when busy); */
159
- const maxFeePerGas = baseGasFee.plus(maxPriorityFeePerGas).multipliedBy(busyNetwork ? 2 : 1.5).decimalPlaces(0);
160
- return {
161
- maxFeePerGas,
162
- maxPriorityFeePerGas,
163
- baseGasFee,
164
- busyNetwork
165
- };
166
- } catch (e) {
167
- const _price = await web3.api.eth.getGasPrice();
168
- const gasPrice = recalculateGasPrice(_price, networkKey);
169
- return {
170
- gasPrice,
171
- busyNetwork: false
172
- };
173
- }
174
- };
175
- exports.calculateGasFeeParams = calculateGasFeeParams;
72
+ exports.signatureToHex = signatureToHex;
@@ -116,6 +116,18 @@ Object.keys(_environment).forEach(function (key) {
116
116
  }
117
117
  });
118
118
  });
119
+ var _eth = require("./eth");
120
+ Object.keys(_eth).forEach(function (key) {
121
+ if (key === "default" || key === "__esModule") return;
122
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
123
+ if (key in exports && exports[key] === _eth[key]) return;
124
+ Object.defineProperty(exports, key, {
125
+ enumerable: true,
126
+ get: function () {
127
+ return _eth[key];
128
+ }
129
+ });
130
+ });
119
131
  var _number = require("./number");
120
132
  Object.keys(_number).forEach(function (key) {
121
133
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.reportError = void 0;
8
+ var _environment = require("@subwallet/extension-base/utils/environment");
9
+ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
10
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
11
+ // SPDX-License-Identifier: Apache-2.0
12
+
13
+ const EXTENSION_REPORT_ERROR_URL = 'https://extension-feedback.subwallet.app/gelf';
14
+ const WEBAPP_REPORT_ERROR_URL = 'https://web-feedback.subwallet.app/gelf';
15
+ const reportError = async (e, pathName) => {
16
+ const errorContent = JSON.stringify(e.stack);
17
+ const errorShortMessage = e.message;
18
+ const body = {
19
+ content: errorContent,
20
+ short_message: errorShortMessage,
21
+ platform: _environment.TARGET_ENV,
22
+ device_version: '',
23
+ app_version: JSON.stringify(process.env.PKG_VERSION),
24
+ current_routes: pathName
25
+ };
26
+ await (0, _crossFetch.default)(_environment.TARGET_ENV === 'extension' ? EXTENSION_REPORT_ERROR_URL : WEBAPP_REPORT_ERROR_URL, {
27
+ method: 'POST',
28
+ body: JSON.stringify(body)
29
+ });
30
+ };
31
+ exports.reportError = reportError;
@@ -11,7 +11,7 @@ export declare const CRON_REFRESH_STAKING_REWARD_INTERVAL = 900000;
11
11
  export declare const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = 90000;
12
12
  export declare const CRON_REFRESH_HISTORY_INTERVAL = 900000;
13
13
  export declare const CRON_GET_API_MAP_STATUS = 10000;
14
- export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
14
+ export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 90000;
15
15
  export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
16
16
  export declare const CRON_RECOVER_HISTORY_INTERVAL = 30000;
17
17
  export declare const CRON_SYNC_MANTA_PAY = 300000;
@@ -14,7 +14,7 @@ export const CRON_REFRESH_STAKING_REWARD_INTERVAL = 900000;
14
14
  export const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = 90000;
15
15
  export const CRON_REFRESH_HISTORY_INTERVAL = 900000;
16
16
  export const CRON_GET_API_MAP_STATUS = 10000;
17
- export const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
17
+ export const CRON_REFRESH_CHAIN_STAKING_METADATA = 90000;
18
18
  export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
19
19
  export const CRON_RECOVER_HISTORY_INTERVAL = 30000;
20
20
  export const CRON_SYNC_MANTA_PAY = 300000;
@@ -181,7 +181,7 @@ export const createTransferExtrinsic = async ({
181
181
  } else if (_TRANSFER_CHAIN_GROUP.sora_substrate.includes(networkKey) && isTxAssetsSupported) {
182
182
  transfer = api.tx.assets.transfer(_getTokenOnChainAssetId(tokenInfo), to, value);
183
183
  } else if (isTxBalancesSupported && _isNativeToken(tokenInfo)) {
184
- if (networkKey === 'invarch') {
184
+ if (_TRANSFER_CHAIN_GROUP.disable_transfer.includes(networkKey)) {
185
185
  return [null, transferAmount || value];
186
186
  }
187
187
  if (transferAll) {
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-base
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { BIT_COUNTRY_IPFS_SERVER, BIT_COUNTRY_LAND_ESTATE_METADATA_API } from '@subwallet/extension-base/koni/api/nft/config';
4
+ import { BIT_AVATAR_API, BIT_COUNTRY_IPFS_SERVER, BIT_COUNTRY_LAND_ESTATE_METADATA_API } from '@subwallet/extension-base/koni/api/nft/config';
5
5
  import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
6
6
  import { isUrl } from '@subwallet/extension-base/utils';
7
7
  import fetch from 'cross-fetch';
@@ -53,6 +53,8 @@ export class BitCountryNftApi extends BaseNftApi {
53
53
  // check if NFT is Land/Estate
54
54
  if (onChainMeta.data.attributes['MetaverseId:']) {
55
55
  return await fetch(`${BIT_COUNTRY_LAND_ESTATE_METADATA_API}/${assetId.classId}/${assetId.tokenId}/metadata.json`).then(resp => resp.json());
56
+ } else if (onChainMeta.metadata.startsWith('/avatar/')) {
57
+ return await fetch(BIT_AVATAR_API + onChainMeta.metadata).then(resp => resp.json());
56
58
  } else {
57
59
  return await fetch(BIT_COUNTRY_IPFS_SERVER + onChainMeta.metadata).then(resp => resp.json());
58
60
  }
@@ -7,6 +7,7 @@ export declare const SINGULAR_V2_COLLECTION_ENDPOINT = "https://singular.app/api
7
7
  export declare const KANARIA_EXTERNAL_SERVER = "https://kanaria.rmrk.app/catalogue/";
8
8
  export declare const CLOUDFLARE_PINATA_SERVER = "https://cloudflare-ipfs.com/ipfs/";
9
9
  export declare const BIT_COUNTRY_IPFS_SERVER = "https://ipfs-cdn.bit.country/";
10
+ export declare const BIT_AVATAR_API = "https://api.bitavatar.io/v1";
10
11
  export declare const BIT_COUNTRY_LAND_ESTATE_METADATA_API = "https://pioneer-api.bit.country/metadata/landTokenUriPioneer";
11
12
  export declare const BIT_COUNTRY_THUMBNAIL_RESOLVER = "https://res.cloudinary.com/ddftctzph/image/upload/c_scale,q_100,w_250/production-ipfs/asset/";
12
13
  export declare const CF_IPFS_GATEWAY = "https://cf-ipfs.com/ipfs/";
@@ -13,6 +13,7 @@ export const SINGULAR_V2_COLLECTION_ENDPOINT = 'https://singular.app/api/rmrk2/c
13
13
  export const KANARIA_EXTERNAL_SERVER = 'https://kanaria.rmrk.app/catalogue/';
14
14
  export const CLOUDFLARE_PINATA_SERVER = 'https://cloudflare-ipfs.com/ipfs/';
15
15
  export const BIT_COUNTRY_IPFS_SERVER = 'https://ipfs-cdn.bit.country/';
16
+ export const BIT_AVATAR_API = 'https://api.bitavatar.io/v1';
16
17
  export const BIT_COUNTRY_LAND_ESTATE_METADATA_API = 'https://pioneer-api.bit.country/metadata/landTokenUriPioneer';
17
18
  export const BIT_COUNTRY_THUMBNAIL_RESOLVER = 'https://res.cloudinary.com/ddftctzph/image/upload/c_scale,q_100,w_250/production-ipfs/asset/';
18
19
 
@@ -5,7 +5,7 @@ import { ExternalRequestPromiseStatus } from '@subwallet/extension-base/backgrou
5
5
  import { getERC20Contract } from '@subwallet/extension-base/koni/api/tokens/evm/web3';
6
6
  import { _BALANCE_PARSING_CHAIN_GROUP, EVM_REFORMAT_DECIMALS } from '@subwallet/extension-base/services/chain-service/constants';
7
7
  import { _ERC721_ABI } from '@subwallet/extension-base/services/chain-service/helper';
8
- import { calculateGasFeeParams } from '@subwallet/extension-base/utils/eth';
8
+ import { calculateGasFeeParams } from '@subwallet/extension-base/services/fee-service/utils';
9
9
  import BigN from 'bignumber.js';
10
10
  import { hexToBn } from '@polkadot/util';
11
11
  export const handleTransferBalanceResult = ({
@@ -185,6 +185,7 @@ export default class KoniExtension {
185
185
  private getListDeriveAccounts;
186
186
  private subscribeChainInfoMap;
187
187
  private subscribeChainStateMap;
188
+ private subscribeChainStatusMap;
188
189
  private subscribeAssetRegistry;
189
190
  private subscribeMultiChainAssetMap;
190
191
  private subscribeXcmRefMap;
@@ -26,14 +26,14 @@ import { YIELD_EXTRINSIC_TYPES } from '@subwallet/extension-base/koni/api/yield/
26
26
  import { _API_OPTIONS_CHAIN_GROUP, _DEFAULT_MANTA_ZK_CHAIN, _MANTA_ZK_CHAIN_GROUP, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
27
27
  import { _ChainConnectionStatus } from '@subwallet/extension-base/services/chain-service/types';
28
28
  import { _getChainNativeTokenBasicInfo, _getContractAddressOfToken, _getEvmChainId, _getSubstrateGenesisHash, _getTokenMinAmount, _isAssetSmartContractNft, _isChainEvmCompatible, _isCustomAsset, _isLocalToken, _isMantaZkAsset, _isNativeToken, _isTokenEvmSmartContract, _isTokenTransferredByEvm } from '@subwallet/extension-base/services/chain-service/utils';
29
+ import { calculateGasFeeParams } from '@subwallet/extension-base/services/fee-service/utils';
29
30
  import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/request-service/constants';
30
31
  import { DEFAULT_AUTO_LOCK_TIME } from '@subwallet/extension-base/services/setting-service/constants';
31
32
  import { WALLET_CONNECT_EIP155_NAMESPACE } from '@subwallet/extension-base/services/wallet-connect-service/constants';
32
33
  import { isProposalExpired, isSupportWalletConnectChain, isSupportWalletConnectNamespace } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
33
34
  import { AccountsStore } from '@subwallet/extension-base/stores';
34
35
  import { YieldPoolType } from '@subwallet/extension-base/types';
35
- import { convertSubjectInfoToAddresses, isSameAddress, reformatAddress, uniqueStringArray } from '@subwallet/extension-base/utils';
36
- import { calculateGasFeeParams, createTransactionFromRLP, signatureToHex } from '@subwallet/extension-base/utils/eth';
36
+ import { convertSubjectInfoToAddresses, createTransactionFromRLP, isSameAddress, reformatAddress, signatureToHex, uniqueStringArray } from '@subwallet/extension-base/utils';
37
37
  import { parseContractInput, parseEvmRlp } from '@subwallet/extension-base/utils/eth/parseTransaction';
38
38
  import { balanceFormatter, formatNumber } from '@subwallet/extension-base/utils/number';
39
39
  import { createPair } from '@subwallet/keyring';
@@ -3169,6 +3169,19 @@ export default class KoniExtension {
3169
3169
  });
3170
3170
  return this.#koniState.getChainStateMap();
3171
3171
  }
3172
+ subscribeChainStatusMap(id, port) {
3173
+ const cb = createSubscription(id, port);
3174
+ const chainStateMapSubscription = this.#koniState.chainService.subscribeChainStatusMap().subscribe({
3175
+ next: rs => {
3176
+ cb(rs);
3177
+ }
3178
+ });
3179
+ this.createUnsubscriptionHandle(id, chainStateMapSubscription.unsubscribe);
3180
+ port.onDisconnect.addListener(() => {
3181
+ this.cancelSubscription(id);
3182
+ });
3183
+ return this.#koniState.chainService.getChainStatusMap();
3184
+ }
3172
3185
  async subscribeAssetRegistry(id, port) {
3173
3186
  const cb = createSubscription(id, port);
3174
3187
  let ready = false;
@@ -3458,7 +3471,7 @@ export default class KoniExtension {
3458
3471
  });
3459
3472
  const {
3460
3473
  connectionStatus
3461
- } = this.#koniState.chainService.getChainStateByKey(_DEFAULT_MANTA_ZK_CHAIN);
3474
+ } = this.#koniState.chainService.getChainStatusByKey(_DEFAULT_MANTA_ZK_CHAIN);
3462
3475
  if (connectionStatus !== _ChainConnectionStatus.CONNECTED) {
3463
3476
  // TODO: do better
3464
3477
  await timeout();
@@ -4194,6 +4207,8 @@ export default class KoniExtension {
4194
4207
  return this.subscribeChainInfoMap(id, port);
4195
4208
  case 'pri(chainService.subscribeChainStateMap)':
4196
4209
  return this.subscribeChainStateMap(id, port);
4210
+ case 'pri(chainService.subscribeChainStatusMap)':
4211
+ return this.subscribeChainStatusMap(id, port);
4197
4212
  case 'pri(chainService.subscribeXcmRefMap)':
4198
4213
  return this.subscribeXcmRefMap(id, port);
4199
4214
  case 'pri(chainService.getSupportedContractTypes)':
@@ -9,6 +9,7 @@ import { ChainService } from '@subwallet/extension-base/services/chain-service';
9
9
  import { _ChainState, _NetworkUpsertParams, _ValidateCustomAssetRequest } from '@subwallet/extension-base/services/chain-service/types';
10
10
  import EarningService from '@subwallet/extension-base/services/earning-service/service';
11
11
  import { EventService } from '@subwallet/extension-base/services/event-service';
12
+ import FeeService from '@subwallet/extension-base/services/fee-service/service';
12
13
  import { HistoryService } from '@subwallet/extension-base/services/history-service';
13
14
  import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
14
15
  import MigrationService from '@subwallet/extension-base/services/migration-service';
@@ -22,7 +23,7 @@ import DatabaseService from '@subwallet/extension-base/services/storage-service/
22
23
  import { SubscanService } from '@subwallet/extension-base/services/subscan-service';
23
24
  import TransactionService from '@subwallet/extension-base/services/transaction-service';
24
25
  import WalletConnectService from '@subwallet/extension-base/services/wallet-connect-service';
25
- import { BalanceItem, BalanceJson, BalanceMap } from '@subwallet/extension-base/types';
26
+ import { BalanceItem, BalanceJson, BalanceMap, EvmFeeInfo } from '@subwallet/extension-base/types';
26
27
  import { MetadataDef, ProviderMeta } from '@subwallet/extension-inject/types';
27
28
  import SimpleKeyring from 'eth-simple-keyring';
28
29
  import { BehaviorSubject, Subject } from 'rxjs';
@@ -70,6 +71,7 @@ export default class KoniState {
70
71
  readonly campaignService: CampaignService;
71
72
  readonly buyService: BuyService;
72
73
  readonly earningService: EarningService;
74
+ readonly feeService: FeeService;
73
75
  private generalStatus;
74
76
  private waitSleeping;
75
77
  private waitStarting;
@@ -223,6 +225,7 @@ export default class KoniState {
223
225
  checkPublicAndSecretKey({ publicKey, secretKey }: RequestCheckPublicAndSecretKey): ResponseCheckPublicAndSecretKey;
224
226
  getEthKeyring(address: string, password: string): Promise<SimpleKeyring>;
225
227
  evmSign(id: string, url: string, method: string, params: any, allowedAccounts: string[]): Promise<string | undefined>;
228
+ calculateAllGasFeeOnChain(activeEvmChains: string[], timeout?: number): Promise<Record<string, EvmFeeInfo | null>>;
226
229
  evmSendTransaction(id: string, url: string, networkKey: string, allowedAccounts: string[], transactionParams: EvmSendTransactionParams): Promise<string | undefined>;
227
230
  getConfirmationsQueueSubject(): BehaviorSubject<ConfirmationsQueue>;
228
231
  completeConfirmation(request: RequestConfirmationComplete): Promise<boolean>;