@subwallet/extension-base 1.3.10-0 → 1.3.12-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 (69) hide show
  1. package/background/KoniTypes.d.ts +3 -0
  2. package/background/errors/SwapError.js +5 -0
  3. package/cjs/background/errors/SwapError.js +5 -0
  4. package/cjs/core/logic-validation/swap.js +27 -0
  5. package/cjs/core/substrate/xcm-parser.js +16 -2
  6. package/cjs/koni/api/contract-handler/utils/index.js +29 -1
  7. package/cjs/koni/background/handlers/Extension.js +16 -4
  8. package/cjs/packageInfo.js +1 -1
  9. package/cjs/services/balance-service/transfer/smart-contract.js +2 -0
  10. package/cjs/services/balance-service/transfer/xcm/index.js +6 -6
  11. package/cjs/services/balance-service/transfer/xcm/polygonBridge.js +2 -2
  12. package/cjs/services/balance-service/transfer/xcm/posBridge.js +144 -0
  13. package/cjs/services/chain-service/utils/patch.js +1 -1
  14. package/cjs/services/earning-service/constants/chains.js +4 -2
  15. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +2 -1
  16. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -2
  17. package/cjs/services/inapp-notification-service/index.js +2 -0
  18. package/cjs/services/inapp-notification-service/utils/polygon.js +1 -1
  19. package/cjs/services/keyring-service/context/handlers/Ledger.js +3 -1
  20. package/cjs/services/swap-service/handler/chainflip-handler.js +0 -1
  21. package/cjs/services/swap-service/handler/simpleswap-handler.js +444 -0
  22. package/cjs/services/swap-service/index.js +15 -3
  23. package/cjs/services/swap-service/utils.js +13 -2
  24. package/cjs/services/transaction-service/index.js +14 -10
  25. package/cjs/services/transaction-service/utils.js +12 -1
  26. package/cjs/types/swap/index.js +7 -3
  27. package/cjs/utils/number.js +10 -0
  28. package/constants/staking.d.ts +4 -0
  29. package/core/logic-validation/swap.d.ts +2 -1
  30. package/core/logic-validation/swap.js +26 -0
  31. package/core/substrate/xcm-parser.d.ts +1 -0
  32. package/core/substrate/xcm-parser.js +15 -2
  33. package/koni/api/contract-handler/utils/index.d.ts +4 -0
  34. package/koni/api/contract-handler/utils/index.js +24 -0
  35. package/koni/api/contract-handler/utils/pos_bridge_abi.json +783 -0
  36. package/koni/api/contract-handler/utils/pos_bridge_l2_abi.json +793 -0
  37. package/koni/background/handlers/Extension.js +18 -6
  38. package/package.json +18 -6
  39. package/packageInfo.js +1 -1
  40. package/services/balance-service/transfer/smart-contract.js +2 -0
  41. package/services/balance-service/transfer/xcm/index.js +7 -7
  42. package/services/balance-service/transfer/xcm/polygonBridge.js +2 -2
  43. package/services/balance-service/transfer/xcm/posBridge.d.ts +14 -0
  44. package/services/balance-service/transfer/xcm/posBridge.js +131 -0
  45. package/services/chain-service/utils/patch.js +1 -1
  46. package/services/earning-service/constants/chains.d.ts +1 -0
  47. package/services/earning-service/constants/chains.js +2 -1
  48. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +2 -1
  49. package/services/earning-service/handlers/liquid-staking/bifrost.js +3 -3
  50. package/services/inapp-notification-service/index.js +2 -0
  51. package/services/inapp-notification-service/interfaces.d.ts +7 -6
  52. package/services/inapp-notification-service/utils/polygon.d.ts +6 -6
  53. package/services/inapp-notification-service/utils/polygon.js +1 -1
  54. package/services/keyring-service/context/handlers/Ledger.js +3 -1
  55. package/services/swap-service/handler/chainflip-handler.js +0 -1
  56. package/services/swap-service/handler/simpleswap-handler.d.ts +24 -0
  57. package/services/swap-service/handler/simpleswap-handler.js +434 -0
  58. package/services/swap-service/index.d.ts +2 -1
  59. package/services/swap-service/index.js +13 -2
  60. package/services/swap-service/utils.d.ts +2 -0
  61. package/services/swap-service/utils.js +10 -1
  62. package/services/transaction-service/index.js +15 -11
  63. package/services/transaction-service/utils.d.ts +2 -1
  64. package/services/transaction-service/utils.js +12 -2
  65. package/types/account/info/keyring.d.ts +2 -0
  66. package/types/swap/index.d.ts +15 -3
  67. package/types/swap/index.js +5 -2
  68. package/utils/number.d.ts +9 -0
  69. package/utils/number.js +10 -0
@@ -610,6 +610,7 @@ export interface CreateHardwareAccountItem {
610
610
  name: string;
611
611
  isEthereum: boolean;
612
612
  isGeneric: boolean;
613
+ isLedgerRecovery?: boolean;
613
614
  }
614
615
  export interface RequestAccountCreateHardwareV2 extends CreateHardwareAccountItem {
615
616
  isAllowed?: boolean;
@@ -972,6 +973,8 @@ export interface LedgerNetwork {
972
973
  isEthereum: boolean;
973
974
  /** Hide networks that are supported by the dot migration app */
974
975
  isHide?: boolean;
976
+ /** Recovery app */
977
+ isRecovery?: boolean;
975
978
  /** Slip44 in the derivation path */
976
979
  slip44: number;
977
980
  }
@@ -47,6 +47,11 @@ const defaultErrorMap = {
47
47
  MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT: {
48
48
  message: detectTranslate('Insufficient liquidity to complete the swap. Lower your amount and try again'),
49
49
  code: undefined
50
+ },
51
+ NOT_MEET_MIN_EXPECTED: {
52
+ // TODO: update message
53
+ message: detectTranslate('Unable to process this swap at the moment. Try again later'),
54
+ code: undefined
50
55
  }
51
56
  };
52
57
  export class SwapError extends SWError {
@@ -53,6 +53,11 @@ const defaultErrorMap = {
53
53
  MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT: {
54
54
  message: (0, _utils.detectTranslate)('Insufficient liquidity to complete the swap. Lower your amount and try again'),
55
55
  code: undefined
56
+ },
57
+ NOT_MEET_MIN_EXPECTED: {
58
+ // TODO: update message
59
+ message: (0, _utils.detectTranslate)('Unable to process this swap at the moment. Try again later'),
60
+ code: undefined
56
61
  }
57
62
  };
58
63
  class SwapError extends _SWError.SWError {
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports._getChainflipEarlyValidationError = _getChainflipEarlyValidationError;
8
8
  exports._getEarlyAssetHubValidationError = _getEarlyAssetHubValidationError;
9
9
  exports._getEarlyHydradxValidationError = _getEarlyHydradxValidationError;
10
+ exports._getSimpleSwapEarlyValidationError = _getSimpleSwapEarlyValidationError;
10
11
  exports._validateBalanceToSwap = _validateBalanceToSwap;
11
12
  exports._validateBalanceToSwapOnAssetHub = _validateBalanceToSwapOnAssetHub;
12
13
  exports._validateSwapRecipient = _validateSwapRecipient;
@@ -149,4 +150,30 @@ function _getEarlyAssetHubValidationError(error, metadata) {
149
150
  default:
150
151
  return new _SwapError.SwapError(error);
151
152
  }
153
+ }
154
+ function _getSimpleSwapEarlyValidationError(error, metadata) {
155
+ // todo: support more providers
156
+ switch (error) {
157
+ case _swap.SwapErrorType.NOT_MEET_MIN_SWAP:
158
+ {
159
+ const message = `Amount too low. Increase your amount above ${metadata.minSwap.value} ${metadata.minSwap.symbol} and try again`;
160
+ return new _SwapError.SwapError(error, message);
161
+ }
162
+ case _swap.SwapErrorType.SWAP_EXCEED_ALLOWANCE:
163
+ {
164
+ if (metadata.maxSwap) {
165
+ return new _SwapError.SwapError(error, `Amount too high. Lower your amount below ${metadata.maxSwap.value} ${metadata.maxSwap.symbol} and try again`);
166
+ } else {
167
+ return new _SwapError.SwapError(error, 'Amount too high. Lower your amount and try again');
168
+ }
169
+ }
170
+ case _swap.SwapErrorType.ASSET_NOT_SUPPORTED:
171
+ return new _SwapError.SwapError(error, 'This swap pair is not supported');
172
+ case _swap.SwapErrorType.UNKNOWN:
173
+ return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
174
+ case _swap.SwapErrorType.ERROR_FETCHING_QUOTE:
175
+ return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
176
+ default:
177
+ return new _SwapError.SwapError(error);
178
+ }
152
179
  }
@@ -12,12 +12,14 @@ exports._getXcmUnstableWarning = _getXcmUnstableWarning;
12
12
  exports._isAvailBridgeXcm = _isAvailBridgeXcm;
13
13
  exports._isMythosFromHydrationToMythos = _isMythosFromHydrationToMythos;
14
14
  exports._isPolygonBridgeXcm = _isPolygonBridgeXcm;
15
+ exports._isPosBridgeXcm = _isPosBridgeXcm;
15
16
  exports._isSnowBridgeXcm = _isSnowBridgeXcm;
16
17
  exports._isXcmTransferUnstable = _isXcmTransferUnstable;
17
18
  exports._isXcmWithinSameConsensus = _isXcmWithinSameConsensus;
18
19
  var _chainList = require("@subwallet/chain-list");
19
20
  var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
20
21
  var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
22
+ var _posBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge");
21
23
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
22
24
  var _utilCrypto = require("@polkadot/util-crypto");
23
25
  // Copyright 2019-2022 @subwallet/extension-base
@@ -66,7 +68,7 @@ function _getXcmMultiLocation(originChainInfo, destChainInfo, version, recipient
66
68
  };
67
69
  }
68
70
  function _isXcmTransferUnstable(originChainInfo, destChainInfo, assetSlug) {
69
- return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo) || _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlug) || _isPolygonBridgeXcm(originChainInfo, destChainInfo);
71
+ return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo) || _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlug) || _isPolygonBridgeXcm(originChainInfo, destChainInfo) || _isPosBridgeXcm(originChainInfo, destChainInfo);
70
72
  }
71
73
  function getAssetHubBridgeUnstableWarning(originChainInfo) {
72
74
  switch (originChainInfo.slug) {
@@ -101,8 +103,17 @@ function getPolygonBridgeWarning(originChainInfo) {
101
103
  return 'Cross-chain transfer of this token may take up to 3 hours, and you’ll need to manually claim the funds on the destination network to complete the transfer. Do you still want to continue?';
102
104
  }
103
105
  }
106
+ function getPosBridgeWarning(originChainInfo) {
107
+ if (originChainInfo.slug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM || originChainInfo.slug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
108
+ return 'Cross-chain transfer of this token may take up to 22 minutes. Do you still want to continue?';
109
+ } else {
110
+ return 'Cross-chain transfer of this token may take up to 90 minutes, and you’ll need to manually claim the funds on the destination network to complete the transfer. Do you still want to continue?';
111
+ }
112
+ }
104
113
  function _getXcmUnstableWarning(originChainInfo, destChainInfo, assetSlug) {
105
- if (_isPolygonBridgeXcm(originChainInfo, destChainInfo)) {
114
+ if (_isPosBridgeXcm(originChainInfo, destChainInfo)) {
115
+ return getPosBridgeWarning(originChainInfo);
116
+ } else if (_isPolygonBridgeXcm(originChainInfo, destChainInfo)) {
106
117
  return getPolygonBridgeWarning(originChainInfo);
107
118
  } else if (_isAvailBridgeXcm(originChainInfo, destChainInfo)) {
108
119
  return getAvailBridgeWarning();
@@ -131,6 +142,9 @@ function _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlu
131
142
  function _isPolygonBridgeXcm(originChainInfo, destChainInfo) {
132
143
  return (0, _polygonBridge._isPolygonChainBridge)(originChainInfo.slug, destChainInfo.slug);
133
144
  }
145
+ function _isPosBridgeXcm(originChainInfo, destChainInfo) {
146
+ return (0, _posBridge._isPosChainBridge)(originChainInfo.slug, destChainInfo.slug);
147
+ }
134
148
 
135
149
  // ---------------------------------------------------------------------------------------------------------------------
136
150
 
@@ -3,9 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports._TEST_ERC721_ABI = exports._SNOWBRIDGE_GATEWAY_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._POLYGON_BRIDGE_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = exports._AVAIL_BRIDGE_GATEWAY_ABI = void 0;
6
+ exports._TEST_ERC721_ABI = exports._SNOWBRIDGE_GATEWAY_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._POS_BRIDGE_L2_ABI = exports._POS_BRIDGE_ABI = exports._POLYGON_BRIDGE_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = exports._AVAIL_BRIDGE_GATEWAY_ABI = void 0;
7
7
  exports.getAvailBridgeGatewayContract = getAvailBridgeGatewayContract;
8
8
  exports.getPolygonBridgeContract = getPolygonBridgeContract;
9
+ exports.getPosL1BridgeContract = getPosL1BridgeContract;
10
+ exports.getPosL2BridgeContract = getPosL2BridgeContract;
9
11
  exports.getSnowBridgeGatewayContract = getSnowBridgeGatewayContract;
10
12
  exports.isAvailBridgeGatewayContract = isAvailBridgeGatewayContract;
11
13
  exports.isSnowBridgeGatewayContract = isSnowBridgeGatewayContract;
@@ -48,7 +50,13 @@ const _AVAIL_TEST_BRIDGE_GATEWAY_ABI = require('./avail_test_bridge_abi.json');
48
50
  // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
49
51
  exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = _AVAIL_TEST_BRIDGE_GATEWAY_ABI;
50
52
  const _POLYGON_BRIDGE_ABI = require('./polygon_bridge_abi.json');
53
+ // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
51
54
  exports._POLYGON_BRIDGE_ABI = _POLYGON_BRIDGE_ABI;
55
+ const _POS_BRIDGE_ABI = require('./pos_bridge_abi.json');
56
+ // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
57
+ exports._POS_BRIDGE_ABI = _POS_BRIDGE_ABI;
58
+ const _POS_BRIDGE_L2_ABI = require('./pos_bridge_l2_abi.json');
59
+ exports._POS_BRIDGE_L2_ABI = _POS_BRIDGE_L2_ABI;
52
60
  const SNOWBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS = '0x27ca963C279c93801941e1eB8799c23f407d68e7';
53
61
  const SNOWBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS = '0x5B4909cE6Ca82d2CE23BD46738953c7959E710Cd';
54
62
  function getSnowBridgeGatewayContract(chain) {
@@ -80,4 +88,24 @@ function getPolygonBridgeContract(chain) {
80
88
  return POLYGONBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS;
81
89
  }
82
90
  throw new Error('Invalid chain');
91
+ }
92
+ const POSBRIDGE_GATEWAY_AMOY_CONTRACT_ADDRESS = '0x52eF3d68BaB452a294342DC3e5f464d7f610f72E';
93
+ const POSBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS = '0x34F5A25B627f50Bb3f5cAb72807c4D4F405a9232';
94
+ const POSBRIDGE_GATEWAY_CONTRACT_ADDRESS = '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619';
95
+ const POSBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS = '0xA0c68C638235ee32657e8f720a23ceC1bFc77C77';
96
+ function getPosL2BridgeContract(chain) {
97
+ if (chain === 'polygon_amoy' || chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
98
+ return POSBRIDGE_GATEWAY_AMOY_CONTRACT_ADDRESS;
99
+ } else if (chain === 'polygon' || chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
100
+ return POSBRIDGE_GATEWAY_CONTRACT_ADDRESS;
101
+ }
102
+ throw new Error('Invalid chain');
103
+ }
104
+ function getPosL1BridgeContract(chain) {
105
+ if (chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
106
+ return POSBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS;
107
+ } else if (chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
108
+ return POSBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS;
109
+ }
110
+ throw new Error('Invalid chain');
83
111
  }
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  exports.isJsonPayload = isJsonPayload;
9
9
  var _common = require("@ethereumjs/common");
10
10
  var _tx = require("@ethereumjs/tx");
11
+ var _chainList = require("@subwallet/chain-list");
11
12
  var _types = require("@subwallet/chain-list/types");
12
13
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
13
14
  var _helpers = require("@subwallet/extension-base/background/handlers/helpers");
@@ -34,6 +35,7 @@ var _tonTransfer = require("@subwallet/extension-base/services/balance-service/t
34
35
  var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm");
35
36
  var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
36
37
  var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
38
+ var _posBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge");
37
39
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
38
40
  var _types2 = require("@subwallet/extension-base/services/chain-service/types");
39
41
  var _utils4 = require("@subwallet/extension-base/services/chain-service/utils");
@@ -1302,6 +1304,7 @@ class KoniExtension {
1302
1304
  const isAvailBridgeFromAvail = (0, _availBridge.isAvailChainBridge)(originNetworkKey) && (0, _utils4._isPureEvmChain)(chainInfoMap[destinationNetworkKey]);
1303
1305
  const isSnowBridgeEvmTransfer = (0, _utils4._isPureEvmChain)(chainInfoMap[originNetworkKey]) && (0, _xcmParser._isSnowBridgeXcm)(chainInfoMap[originNetworkKey], chainInfoMap[destinationNetworkKey]) && !isAvailBridgeFromEvm;
1304
1306
  const isPolygonBridgeTransfer = (0, _polygonBridge._isPolygonChainBridge)(originNetworkKey, destinationNetworkKey);
1307
+ const isPosBridgeTransfer = (0, _posBridge._isPosChainBridge)(originNetworkKey, destinationNetworkKey);
1305
1308
  let additionalValidator;
1306
1309
  let eventsHandler;
1307
1310
  if (fromKeyPair && destinationTokenInfo) {
@@ -1318,7 +1321,7 @@ class KoniExtension {
1318
1321
  evmApi
1319
1322
  };
1320
1323
  let funcCreateExtrinsic;
1321
- if (isPolygonBridgeTransfer) {
1324
+ if (isPosBridgeTransfer || isPolygonBridgeTransfer) {
1322
1325
  funcCreateExtrinsic = _xcm.createPolygonBridgeExtrinsic;
1323
1326
  } else if (isSnowBridgeEvmTransfer) {
1324
1327
  funcCreateExtrinsic = _xcm.createSnowBridgeExtrinsic;
@@ -1385,7 +1388,7 @@ class KoniExtension {
1385
1388
  transaction: extrinsic,
1386
1389
  data: inputData,
1387
1390
  extrinsicType: _KoniTypes.ExtrinsicType.TRANSFER_XCM,
1388
- chainType: !isSnowBridgeEvmTransfer && !isAvailBridgeFromEvm && !isPolygonBridgeTransfer ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM,
1391
+ chainType: !isSnowBridgeEvmTransfer && !isAvailBridgeFromEvm && !isPolygonBridgeTransfer && !isPosBridgeTransfer ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM,
1389
1392
  transferNativeAmount: (0, _utils4._isNativeToken)(originTokenInfo) ? value : '0',
1390
1393
  ignoreWarnings,
1391
1394
  isTransferAll: transferAll,
@@ -1607,6 +1610,10 @@ class KoniExtension {
1607
1610
  const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
1608
1611
  const destinationTokenInfo = this.#koniState.getXcmEqualAssetByChain(destChain, originTokenInfo.slug);
1609
1612
  const existentialDeposit = originTokenInfo.minAmount || '0';
1613
+
1614
+ // todo: improve this case. Currently set 1 AVAIL for covering fee as default.
1615
+ const isSpecialBridgeFromAvail = originTokenInfo.slug === 'avail_mainnet-NATIVE-AVAIL' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM;
1616
+ const specialBridgeFromAvailFee = new _bignumber.default((0, _utils5.toBNString)(1, (0, _utils4._getAssetDecimals)(originTokenInfo))).minus(new _bignumber.default((0, _utils4._getTokenMinAmount)(originTokenInfo)));
1610
1617
  if (destinationTokenInfo) {
1611
1618
  const [bnMockExecutionFee, {
1612
1619
  value
@@ -1617,7 +1624,7 @@ class KoniExtension {
1617
1624
  token: originTokenInfo.slug
1618
1625
  })]);
1619
1626
  const bnMaxTransferable = new _bignumber.default(value);
1620
- const estimatedFee = bnMockExecutionFee.multipliedBy(_constants.XCM_FEE_RATIO).plus(new _bignumber.default(existentialDeposit));
1627
+ const estimatedFee = isSpecialBridgeFromAvail ? specialBridgeFromAvailFee : bnMockExecutionFee.multipliedBy(_constants.XCM_FEE_RATIO).plus(new _bignumber.default(existentialDeposit));
1621
1628
  return bnMaxTransferable.minus(estimatedFee);
1622
1629
  }
1623
1630
  return new _bignumber.default(0);
@@ -3525,7 +3532,12 @@ class KoniExtension {
3525
3532
  const extrinsicType = _KoniTypes.ExtrinsicType.CLAIM_BRIDGE;
3526
3533
  let transaction = null;
3527
3534
  const evmApi = this.#koniState.getEvmApi(chain);
3528
- transaction = await (0, _polygonBridge.getClaimPolygonBridge)(chain, notification, evmApi);
3535
+ const metadata = notification.metadata;
3536
+ if (metadata.bridgeType === 'POS') {
3537
+ transaction = await (0, _posBridge.getClaimPosBridge)(chain, notification, evmApi);
3538
+ } else {
3539
+ transaction = await (0, _polygonBridge.getClaimPolygonBridge)(chain, notification, evmApi);
3540
+ }
3529
3541
  const chainType = _KoniTypes.ChainType.EVM;
3530
3542
  return await this.#koniState.transactionService.handleTransaction({
3531
3543
  address,
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.3.10-0'
16
+ version: '1.3.12-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -68,6 +68,8 @@ async function getERC20TransactionObject(assetAddress, chainInfo, from, to, valu
68
68
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
69
69
  erc20Contract.methods.transfer(to, transferValue).estimateGas({
70
70
  from
71
+ }).catch(() => {
72
+ throw Error('Unable to estimate fee for this transaction. Try again or contact support at agent@subwallet.app');
71
73
  }), (0, _utils3.calculateGasFeeParams)(evmApi, networkKey)]);
72
74
  const transactionObject = {
73
75
  gas: gasLimit,
@@ -17,6 +17,7 @@ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
17
17
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
18
18
  var _util = require("@polkadot/util");
19
19
  var _utilCrypto = require("@polkadot/util-crypto");
20
+ var _posBridge = require("./posBridge");
20
21
  // Copyright 2019-2022 @subwallet/extension-base
21
22
  // SPDX-License-Identifier: Apache-2.0
22
23
 
@@ -113,7 +114,9 @@ const createPolygonBridgeExtrinsic = async _ref5 => {
113
114
  } = _ref5;
114
115
  const originChainInfo = chainInfoMap[originTokenInfo.originChain];
115
116
  const destinationChainInfo = chainInfoMap[destinationTokenInfo.originChain];
116
- if (!(0, _xcmParser._isPolygonBridgeXcm)(originChainInfo, destinationChainInfo)) {
117
+ const isPolygonBridgeXcm = (0, _xcmParser._isPolygonBridgeXcm)(originChainInfo, destinationChainInfo);
118
+ const isValidBridge = isPolygonBridgeXcm || (0, _xcmParser._isPosBridgeXcm)(originChainInfo, destinationChainInfo);
119
+ if (!isValidBridge) {
117
120
  throw new Error('This is not a valid PolygonBridge transfer');
118
121
  }
119
122
  if (!evmApi) {
@@ -123,11 +126,8 @@ const createPolygonBridgeExtrinsic = async _ref5 => {
123
126
  throw Error('Sender is required');
124
127
  }
125
128
  const sourceChain = originChainInfo.slug;
126
- if (sourceChain === 'polygonzkEvm_cardona' || sourceChain === 'polygonZkEvm') {
127
- return (0, _polygonBridge._createPolygonBridgeL2toL1Extrinsic)(originTokenInfo, originChainInfo, sender, recipient, sendingValue, evmApi);
128
- } else {
129
- return (0, _polygonBridge._createPolygonBridgeL1toL2Extrinsic)(originTokenInfo, originChainInfo, sender, recipient, sendingValue, evmApi);
130
- }
129
+ const createExtrinsic = isPolygonBridgeXcm ? sourceChain === 'polygonzkEvm_cardona' || sourceChain === 'polygonZkEvm' ? _polygonBridge._createPolygonBridgeL2toL1Extrinsic : _polygonBridge._createPolygonBridgeL1toL2Extrinsic : sourceChain === 'polygon_amoy' || sourceChain === 'polygon' ? _posBridge._createPosBridgeL2toL1Extrinsic : _posBridge._createPosBridgeL1toL2Extrinsic;
130
+ return createExtrinsic(originTokenInfo, originChainInfo, sender, recipient, sendingValue, evmApi);
131
131
  };
132
132
  exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
133
133
  const getXcmMockTxFee = async (substrateApi, chainInfoMap, originTokenInfo, destinationTokenInfo) => {
@@ -61,13 +61,13 @@ async function _createPolygonBridgeL2toL1Extrinsic(tokenInfo, originChainInfo, s
61
61
  return createPolygonBridgeTransaction(tokenInfo, originChainInfo, sender, recipientAddress, value, 0, evmApi);
62
62
  }
63
63
  async function getClaimPolygonBridge(chainSlug, notification, evmApi) {
64
- var _priority$maxFeePerGa2, _priority$maxPriority2;
64
+ var _metadata$sourceNetwo, _metadata$counter, _priority$maxFeePerGa2, _priority$maxPriority2;
65
65
  const polygonBridgeContractAddress = (0, _utils.getPolygonBridgeContract)(chainSlug);
66
66
  const polygonBridgeContract = (0, _web.getWeb3Contract)(polygonBridgeContractAddress, evmApi, _utils._POLYGON_BRIDGE_ABI);
67
67
  const metadata = notification.metadata;
68
68
  const isTestnet = chainSlug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA;
69
69
  const proofDomain = isTestnet ? POLYGON_PROOF_INDEXER.TESTNET : POLYGON_PROOF_INDEXER.MAINNET;
70
- const proofResponse = await fetch(`${proofDomain}?networkId=${metadata.sourceNetwork}&depositCount=${metadata.counter}`).then(res => res.json());
70
+ const proofResponse = await fetch(`${proofDomain}?networkId=${(_metadata$sourceNetwo = metadata.sourceNetwork) !== null && _metadata$sourceNetwo !== void 0 ? _metadata$sourceNetwo : ''}&depositCount=${(_metadata$counter = metadata.counter) !== null && _metadata$counter !== void 0 ? _metadata$counter : ''}`).then(res => res.json());
71
71
  const proof = proofResponse.proof;
72
72
 
73
73
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.POS_EXIT_PAYLOAD_INDEXER = void 0;
7
+ exports._createPosBridgeL1toL2Extrinsic = _createPosBridgeL1toL2Extrinsic;
8
+ exports._createPosBridgeL2toL1Extrinsic = _createPosBridgeL2toL1Extrinsic;
9
+ exports._isPosChainBridge = _isPosChainBridge;
10
+ exports._isPosChainL2Bridge = _isPosChainL2Bridge;
11
+ exports.getClaimPosBridge = getClaimPosBridge;
12
+ exports.isClaimedPosBridge = isClaimedPosBridge;
13
+ var _chainList = require("@subwallet/chain-list");
14
+ var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
15
+ var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
16
+ var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
17
+ var _utils3 = require("@subwallet/extension-base/services/inapp-notification-service/utils");
18
+ var _types = require("@subwallet/extension-base/types");
19
+ // Copyright 2019-2022 @subwallet/extension-base
20
+ // SPDX-License-Identifier: Apache-2.0
21
+
22
+ const POS_EXIT_PAYLOAD_INDEXER = {
23
+ MAINNET: 'https://proof-generator.polygon.technology/api/v1/matic/exit-payload',
24
+ TESTNET: 'https://proof-generator.polygon.technology/api/v1/amoy/exit-payload'
25
+ };
26
+ exports.POS_EXIT_PAYLOAD_INDEXER = POS_EXIT_PAYLOAD_INDEXER;
27
+ async function _createPosBridgeL1toL2Extrinsic(tokenInfo, originChainInfo, sender, recipientAddress, value, evmApi) {
28
+ var _priority$maxFeePerGa, _priority$maxPriority;
29
+ const posBridgeContractAddress = (0, _utils.getPosL1BridgeContract)(originChainInfo.slug);
30
+ const posBridgeContract = (0, _web.getWeb3Contract)(posBridgeContractAddress, evmApi, _utils._POS_BRIDGE_ABI);
31
+
32
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
33
+ const transferCall = posBridgeContract.methods.depositEtherFor(recipientAddress);
34
+ const transferEncodedCall = transferCall.encodeABI();
35
+ const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
36
+ const transactionConfig = {
37
+ from: sender,
38
+ to: posBridgeContractAddress,
39
+ value: value,
40
+ data: transferEncodedCall,
41
+ gasPrice: priority.gasPrice,
42
+ maxFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxFeePerGa = priority.maxFeePerGas) === null || _priority$maxFeePerGa === void 0 ? void 0 : _priority$maxFeePerGa.toString(),
43
+ maxPriorityFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxPriority = priority.maxPriorityFeePerGas) === null || _priority$maxPriority === void 0 ? void 0 : _priority$maxPriority.toString()
44
+ };
45
+ const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
46
+ transactionConfig.gas = gasLimit.toString();
47
+ return transactionConfig;
48
+ }
49
+ async function _createPosBridgeL2toL1Extrinsic(tokenInfo, originChainInfo, sender, recipientAddress, value, evmApi) {
50
+ var _priority$maxFeePerGa2, _priority$maxPriority2;
51
+ const posBridgeContractAddress = (0, _utils.getPosL2BridgeContract)(originChainInfo.slug);
52
+ const posBridgeContract = (0, _web.getWeb3Contract)(posBridgeContractAddress, evmApi, _utils._POS_BRIDGE_L2_ABI);
53
+
54
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
55
+ const transferCall = posBridgeContract.methods.withdraw(value);
56
+ const transferEncodedCall = transferCall.encodeABI();
57
+ const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
58
+ const transactionConfig = {
59
+ from: sender,
60
+ to: posBridgeContractAddress,
61
+ value: undefined,
62
+ data: transferEncodedCall,
63
+ gasPrice: priority.gasPrice,
64
+ maxFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxFeePerGa2 = priority.maxFeePerGas) === null || _priority$maxFeePerGa2 === void 0 ? void 0 : _priority$maxFeePerGa2.toString(),
65
+ maxPriorityFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxPriority2 = priority.maxPriorityFeePerGas) === null || _priority$maxPriority2 === void 0 ? void 0 : _priority$maxPriority2.toString()
66
+ };
67
+ const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
68
+ transactionConfig.gas = gasLimit.toString();
69
+ return transactionConfig;
70
+ }
71
+ async function getClaimPosBridge(chainSlug, notification, evmApi) {
72
+ var _event$arguments, _event$arguments$, _event$arguments$$top, _priority$maxFeePerGa3, _priority$maxPriority3;
73
+ const posBridgeContractAddress = (0, _utils.getPosL2BridgeContract)(chainSlug);
74
+ const posBridgeContract = (0, _web.getWeb3Contract)(posBridgeContractAddress, evmApi, _utils._POS_BRIDGE_L2_ABI);
75
+ const metadata = notification.metadata;
76
+
77
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
78
+ const event = posBridgeContract.events.Transfer(metadata.userAddress, metadata.userAddress, metadata.amounts[0]);
79
+ const isTestnet = chainSlug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA;
80
+ const domain = isTestnet ? POS_EXIT_PAYLOAD_INDEXER.TESTNET : POS_EXIT_PAYLOAD_INDEXER.MAINNET;
81
+ const eventSignature = event === null || event === void 0 ? void 0 : (_event$arguments = event.arguments) === null || _event$arguments === void 0 ? void 0 : (_event$arguments$ = _event$arguments[0]) === null || _event$arguments$ === void 0 ? void 0 : (_event$arguments$$top = _event$arguments$.topics) === null || _event$arguments$$top === void 0 ? void 0 : _event$arguments$$top[0];
82
+ let inputData;
83
+ try {
84
+ const res = await fetch(`${domain}/${metadata.transactionHash}?eventSignature=${eventSignature}`);
85
+ inputData = await res.json();
86
+ if (inputData.error && inputData.message.includes('not been checkpointed yet')) {
87
+ throw new Error(`${inputData.message}. Please try again later.`);
88
+ }
89
+ } catch (err) {
90
+ console.error('Error:', err);
91
+ throw new Error(_types.BasicTxErrorType.INTERNAL_ERROR);
92
+ }
93
+ const posClaimContractAddress = (0, _utils.getPosL1BridgeContract)(chainSlug);
94
+ const posClaimContract = (0, _web.getWeb3Contract)(posClaimContractAddress, evmApi, _utils._POS_BRIDGE_ABI);
95
+
96
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
97
+ const transferCall = posClaimContract.methods.exit(inputData.result);
98
+ const transferEncodedCall = transferCall.encodeABI();
99
+ const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
100
+ const transactionConfig = {
101
+ from: metadata.userAddress,
102
+ to: posClaimContractAddress,
103
+ value: '0',
104
+ data: transferEncodedCall,
105
+ gasPrice: priority.gasPrice,
106
+ maxFeePerGas: (_priority$maxFeePerGa3 = priority.maxFeePerGas) === null || _priority$maxFeePerGa3 === void 0 ? void 0 : _priority$maxFeePerGa3.toString(),
107
+ maxPriorityFeePerGas: (_priority$maxPriority3 = priority.maxPriorityFeePerGas) === null || _priority$maxPriority3 === void 0 ? void 0 : _priority$maxPriority3.toString()
108
+ };
109
+ const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
110
+ transactionConfig.gas = gasLimit.toString();
111
+ return transactionConfig;
112
+ }
113
+ async function isClaimedPosBridge(id, address, isTestnet) {
114
+ try {
115
+ const isClaimableBridge = await (0, _utils3.fetchPolygonBridgeTransactions)(address, isTestnet);
116
+ if (isClaimableBridge && isClaimableBridge.success) {
117
+ const isIdClaimable = isClaimableBridge.result.some(transaction => transaction._id === id);
118
+ return !isIdClaimable;
119
+ }
120
+ } catch (err) {
121
+ console.error('Error:', err);
122
+ }
123
+ return false;
124
+ }
125
+ function _isPosChainBridge(srcChain, destChain) {
126
+ if (srcChain === 'polygon_amoy' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
127
+ return true;
128
+ } else if (srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA && destChain === 'polygon_amoy') {
129
+ return true;
130
+ } else if (srcChain === 'polygon' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
131
+ return true;
132
+ } else if (srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM && destChain === 'polygon') {
133
+ return true;
134
+ }
135
+ return false;
136
+ }
137
+ function _isPosChainL2Bridge(srcChain, destChain) {
138
+ if (srcChain === 'polygon_amoy' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
139
+ return true;
140
+ } else if (srcChain === 'polygon' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
141
+ return true;
142
+ }
143
+ return false;
144
+ }
@@ -11,7 +11,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
11
11
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
12
12
  const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
13
13
  const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
14
- const ChainListVersion = '0.2.95'; // update this when build chainlist
14
+ const ChainListVersion = '0.2.97'; // update this when build chainlist
15
15
 
16
16
  // todo: move this interface to chainlist
17
17
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI = exports.MaxEraRewardPointsEras = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = void 0;
6
+ exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI = exports.MaxEraRewardPointsEras = exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = exports.MANTA_MIN_DELEGATION = exports.CHANNEL_ID = void 0;
7
7
  // Copyright 2019-2022 @subwallet/extension-base
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
@@ -37,4 +37,6 @@ exports.ST_LIQUID_TOKEN_ABI = ST_LIQUID_TOKEN_ABI;
37
37
  const MANTA_VALIDATOR_POINTS_PER_BLOCK = 20;
38
38
  exports.MANTA_VALIDATOR_POINTS_PER_BLOCK = MANTA_VALIDATOR_POINTS_PER_BLOCK;
39
39
  const MANTA_MIN_DELEGATION = 500;
40
- exports.MANTA_MIN_DELEGATION = MANTA_MIN_DELEGATION;
40
+ exports.MANTA_MIN_DELEGATION = MANTA_MIN_DELEGATION;
41
+ const CHANNEL_ID = 7;
42
+ exports.CHANNEL_ID = CHANNEL_ID;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
9
9
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
10
+ var _constants = require("@subwallet/extension-base/services/earning-service/constants");
10
11
  var _types = require("@subwallet/extension-base/types");
11
12
  var _bifrost = _interopRequireDefault(require("./bifrost"));
12
13
  // Copyright 2019-2022 @subwallet/extension-base
@@ -105,7 +106,7 @@ class BifrostMantaLiquidStakingPoolHandler extends _bifrost.default {
105
106
  const substrateApi = await this.substrateApi.isReady;
106
107
  const inputTokenSlug = this.inputAsset;
107
108
  const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
108
- const extrinsic = substrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), data.amount, undefined, undefined);
109
+ const extrinsic = substrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), data.amount, undefined, _constants.CHANNEL_ID);
109
110
  return {
110
111
  txChain: this.chain,
111
112
  extrinsicType: _KoniTypes.ExtrinsicType.MINT_VMANTA,
@@ -254,7 +254,7 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
254
254
  const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
255
255
  const defaultFeeTokenSlug = this.feeAssets[0];
256
256
  if (new _util.BN(params.amount).gt(_util.BN_ZERO)) {
257
- const _mintFeeInfo = await poolOriginSubstrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), params.amount, undefined, undefined).paymentInfo(_constants2.fakeAddress);
257
+ const _mintFeeInfo = await poolOriginSubstrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), params.amount, undefined, _constants2.CHANNEL_ID).paymentInfo(_constants2.fakeAddress);
258
258
  const mintFeeInfo = _mintFeeInfo.toPrimitive();
259
259
  return {
260
260
  amount: mintFeeInfo.partialFee.toString(),
@@ -271,7 +271,7 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
271
271
  const substrateApi = await this.substrateApi.isReady;
272
272
  const inputTokenSlug = this.inputAsset;
273
273
  const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
274
- const extrinsic = substrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), data.amount, undefined, undefined);
274
+ const extrinsic = substrateApi.api.tx.vtokenMinting.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), data.amount, undefined, _constants2.CHANNEL_ID);
275
275
  return {
276
276
  txChain: this.chain,
277
277
  extrinsicType: _KoniTypes.ExtrinsicType.MINT_VDOT,
@@ -283,6 +283,7 @@ class InappNotificationService {
283
283
  const {
284
284
  _id,
285
285
  amounts,
286
+ bridgeType,
286
287
  counter,
287
288
  destinationNetwork,
288
289
  originTokenAddress,
@@ -299,6 +300,7 @@ class InappNotificationService {
299
300
  tokenSlug: token.slug,
300
301
  _id,
301
302
  amounts,
303
+ bridgeType,
302
304
  counter,
303
305
  destinationNetwork,
304
306
  originTokenAddress,
@@ -30,7 +30,7 @@ async function fetchPolygonBridgeTransactions(userAddress, isTestnet) {
30
30
  pageSize: pageSize.toString(),
31
31
  page: page.toString()
32
32
  });
33
- const networkIds = [0, 1];
33
+ const networkIds = [0, 1, -1];
34
34
  networkIds.forEach(networkId => {
35
35
  params.append('destinationNetworkIds', networkId.toString());
36
36
  params.append('sourceNetworkIds', networkId.toString());
@@ -100,6 +100,7 @@ class AccountLedgerHandler extends _Base.AccountBaseHandler {
100
100
  hardwareType,
101
101
  isEthereum,
102
102
  isGeneric,
103
+ isLedgerRecovery,
103
104
  name,
104
105
  originGenesisHash
105
106
  } = account;
@@ -110,7 +111,8 @@ class AccountLedgerHandler extends _Base.AccountBaseHandler {
110
111
  addressOffset,
111
112
  genesisHash,
112
113
  originGenesisHash,
113
- isGeneric
114
+ isGeneric,
115
+ isLedgerRecovery
114
116
  };
115
117
  const type = isEthereum ? 'ethereum' : 'sr25519';
116
118
  const pair = _uiKeyring.keyring.keyring.createFromAddress(address, {
@@ -370,7 +370,6 @@ class ChainflipSwapHandler {
370
370
  }
371
371
  });
372
372
 
373
- console.log('depositAddressResp', depositAddressResponse);
374
373
  const txData = {
375
374
  address,
376
375
  provider: this.providerInfo,