@subwallet/extension-base 1.3.29-1 → 1.3.31-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 (142) hide show
  1. package/background/KoniTypes.d.ts +16 -4
  2. package/background/errors/SwapError.js +1 -1
  3. package/cjs/background/errors/SwapError.js +1 -1
  4. package/cjs/constants/blocked-actions.js +2 -2
  5. package/cjs/constants/paraspell-chain-map.js +13 -0
  6. package/cjs/constants/remind-notification-time.js +3 -3
  7. package/cjs/core/logic-validation/swap.js +63 -4
  8. package/cjs/core/logic-validation/transfer.js +13 -1
  9. package/cjs/core/substrate/xcm-parser.js +5 -1
  10. package/cjs/core/utils.js +36 -15
  11. package/cjs/koni/background/handlers/Extension.js +141 -172
  12. package/cjs/koni/background/handlers/State.js +8 -1
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/services/balance-service/helpers/process.js +27 -0
  15. package/cjs/services/balance-service/index.js +9 -0
  16. package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +229 -0
  17. package/cjs/services/balance-service/transfer/xcm/availBridge.js +6 -6
  18. package/cjs/services/balance-service/transfer/xcm/index.js +96 -7
  19. package/cjs/services/balance-service/transfer/xcm/utils.js +213 -0
  20. package/cjs/services/chain-service/constants.js +2 -4
  21. package/cjs/services/chain-service/index.js +71 -17
  22. package/cjs/services/chain-service/utils/patch.js +1 -1
  23. package/cjs/services/earning-service/handlers/base.js +6 -3
  24. package/cjs/services/earning-service/handlers/native-staking/base.js +4 -1
  25. package/cjs/services/earning-service/handlers/native-staking/dtao.js +68 -50
  26. package/cjs/services/earning-service/handlers/native-staking/tao.js +12 -2
  27. package/cjs/services/earning-service/handlers/special.js +18 -9
  28. package/cjs/services/earning-service/service.js +2 -1
  29. package/cjs/services/fee-service/utils/index.js +16 -4
  30. package/cjs/services/inapp-notification-service/index.js +19 -13
  31. package/cjs/services/keyring-service/context/handlers/Ledger.js +1 -1
  32. package/cjs/services/keyring-service/context/state.js +3 -0
  33. package/cjs/services/migration-service/scripts/DisableZeroBalanceTokens.js +60 -0
  34. package/cjs/services/migration-service/scripts/EnableChain.js +1 -1
  35. package/cjs/services/migration-service/scripts/index.js +3 -2
  36. package/cjs/services/swap-service/handler/asset-hub/handler.js +61 -314
  37. package/cjs/services/swap-service/handler/base-handler.js +406 -231
  38. package/cjs/services/swap-service/handler/chainflip-handler.js +18 -40
  39. package/cjs/services/swap-service/handler/hydradx-handler.js +77 -269
  40. package/cjs/services/swap-service/handler/simpleswap-handler.js +27 -48
  41. package/cjs/services/swap-service/handler/uniswap-handler.js +33 -54
  42. package/cjs/services/swap-service/index.js +154 -143
  43. package/cjs/services/swap-service/utils.js +107 -17
  44. package/cjs/services/transaction-service/index.js +1 -1
  45. package/cjs/services/transaction-service/utils.js +38 -14
  46. package/cjs/types/swap/index.js +13 -1
  47. package/cjs/utils/fee/transfer.js +52 -28
  48. package/cjs/utils/staticData/index.js +7 -2
  49. package/cjs/utils/swap.js +5 -1
  50. package/constants/blocked-actions.d.ts +1 -1
  51. package/constants/blocked-actions.js +1 -1
  52. package/constants/paraspell-chain-map.d.ts +1 -0
  53. package/constants/paraspell-chain-map.js +7 -0
  54. package/constants/remind-notification-time.d.ts +1 -1
  55. package/constants/remind-notification-time.js +1 -1
  56. package/core/logic-validation/swap.d.ts +15 -0
  57. package/core/logic-validation/swap.js +60 -4
  58. package/core/logic-validation/transfer.d.ts +1 -0
  59. package/core/logic-validation/transfer.js +12 -1
  60. package/core/substrate/xcm-parser.d.ts +1 -0
  61. package/core/substrate/xcm-parser.js +4 -1
  62. package/core/utils.d.ts +2 -2
  63. package/core/utils.js +36 -15
  64. package/koni/background/handlers/Extension.d.ts +1 -1
  65. package/koni/background/handlers/Extension.js +66 -98
  66. package/koni/background/handlers/State.d.ts +1 -0
  67. package/koni/background/handlers/State.js +7 -1
  68. package/package.json +23 -13
  69. package/packageInfo.js +1 -1
  70. package/services/balance-service/helpers/process.d.ts +2 -1
  71. package/services/balance-service/helpers/process.js +26 -0
  72. package/services/balance-service/index.js +11 -2
  73. package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +15 -0
  74. package/services/balance-service/transfer/xcm/acrossBridge/index.js +216 -0
  75. package/services/balance-service/transfer/xcm/availBridge.js +6 -6
  76. package/services/balance-service/transfer/xcm/index.d.ts +5 -1
  77. package/services/balance-service/transfer/xcm/index.js +85 -1
  78. package/services/balance-service/transfer/xcm/utils.d.ts +11 -0
  79. package/services/balance-service/transfer/xcm/utils.js +208 -0
  80. package/services/base/types.d.ts +0 -4
  81. package/services/chain-service/constants.d.ts +0 -1
  82. package/services/chain-service/constants.js +1 -2
  83. package/services/chain-service/index.d.ts +9 -2
  84. package/services/chain-service/index.js +72 -18
  85. package/services/chain-service/utils/patch.js +1 -1
  86. package/services/earning-service/handlers/base.d.ts +4 -3
  87. package/services/earning-service/handlers/base.js +6 -4
  88. package/services/earning-service/handlers/native-staking/base.js +4 -1
  89. package/services/earning-service/handlers/native-staking/dtao.d.ts +9 -6
  90. package/services/earning-service/handlers/native-staking/dtao.js +69 -48
  91. package/services/earning-service/handlers/native-staking/tao.js +12 -2
  92. package/services/earning-service/handlers/special.js +19 -10
  93. package/services/earning-service/service.d.ts +2 -1
  94. package/services/earning-service/service.js +2 -1
  95. package/services/fee-service/utils/index.d.ts +1 -0
  96. package/services/fee-service/utils/index.js +14 -4
  97. package/services/inapp-notification-service/index.js +13 -7
  98. package/services/keyring-service/context/handlers/Ledger.js +1 -1
  99. package/services/keyring-service/context/state.d.ts +1 -0
  100. package/services/keyring-service/context/state.js +3 -0
  101. package/services/migration-service/scripts/DisableZeroBalanceTokens.d.ts +4 -0
  102. package/services/migration-service/scripts/DisableZeroBalanceTokens.js +51 -0
  103. package/services/migration-service/scripts/EnableChain.js +1 -1
  104. package/services/migration-service/scripts/index.js +3 -2
  105. package/services/swap-service/handler/asset-hub/handler.d.ts +2 -9
  106. package/services/swap-service/handler/asset-hub/handler.js +64 -317
  107. package/services/swap-service/handler/base-handler.d.ts +6 -9
  108. package/services/swap-service/handler/base-handler.js +405 -230
  109. package/services/swap-service/handler/chainflip-handler.d.ts +2 -4
  110. package/services/swap-service/handler/chainflip-handler.js +15 -37
  111. package/services/swap-service/handler/hydradx-handler.d.ts +3 -10
  112. package/services/swap-service/handler/hydradx-handler.js +78 -270
  113. package/services/swap-service/handler/simpleswap-handler.d.ts +2 -4
  114. package/services/swap-service/handler/simpleswap-handler.js +24 -45
  115. package/services/swap-service/handler/uniswap-handler.d.ts +4 -6
  116. package/services/swap-service/handler/uniswap-handler.js +25 -46
  117. package/services/swap-service/index.d.ts +8 -14
  118. package/services/swap-service/index.js +141 -129
  119. package/services/swap-service/utils.d.ts +11 -3
  120. package/services/swap-service/utils.js +96 -15
  121. package/services/transaction-service/index.js +2 -2
  122. package/services/transaction-service/types.d.ts +3 -2
  123. package/services/transaction-service/utils.d.ts +1 -0
  124. package/services/transaction-service/utils.js +38 -15
  125. package/types/balance/transfer.d.ts +1 -0
  126. package/types/service-base.d.ts +2 -3
  127. package/types/swap/index.d.ts +25 -9
  128. package/types/swap/index.js +10 -0
  129. package/types/transaction/process.d.ts +19 -0
  130. package/types/transaction/request.d.ts +7 -0
  131. package/types/yield/actions/join/submit.d.ts +4 -1
  132. package/types/yield/actions/others.d.ts +2 -0
  133. package/utils/fee/transfer.d.ts +1 -0
  134. package/utils/fee/transfer.js +54 -30
  135. package/utils/staticData/index.d.ts +4 -1
  136. package/utils/staticData/index.js +5 -1
  137. package/utils/staticData/paraSpellChainMap.json +1 -0
  138. package/utils/swap.d.ts +3 -0
  139. package/utils/swap.js +3 -0
  140. package/cjs/services/swap-service/interface.js +0 -14
  141. package/services/swap-service/interface.d.ts +0 -9
  142. package/services/swap-service/interface.js +0 -8
@@ -438,7 +438,7 @@ class KoniState {
438
438
  const chainState = this.chainService.getChainStateByKey(networkKey);
439
439
  if (authUrls[shortenUrl]) {
440
440
  if (chainInfo && !(0, _utils._isChainEnabled)(chainState)) {
441
- await this.enableChain(networkKey);
441
+ await this.enableChainWithPriorityAssets(networkKey);
442
442
  }
443
443
  authUrls[shortenUrl].currentEvmNetworkKey = networkKey;
444
444
  this.setAuthorize(authUrls);
@@ -712,6 +712,13 @@ class KoniState {
712
712
  }
713
713
  return this.chainService.enableChain(chainSlug);
714
714
  }
715
+ async enableChainWithPriorityAssets(chainSlug) {
716
+ let enableTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
717
+ if (enableTokens) {
718
+ await this.chainService.updatePriorityAssetsByChain(chainSlug, true);
719
+ }
720
+ return this.chainService.enableChain(chainSlug);
721
+ }
715
722
  resetDefaultChains() {
716
723
  const defaultChains = this.getDefaultNetworkKeys();
717
724
  return this.chainService.resetChainInfoMap(defaultChains);
@@ -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.29-1'
16
+ version: '1.3.31-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -3,10 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getAcrossbridgeTransferProcessFromEvm = getAcrossbridgeTransferProcessFromEvm;
6
7
  exports.getDefaultTransferProcess = getDefaultTransferProcess;
7
8
  exports.getSnowbridgeTransferProcessFromEvm = getSnowbridgeTransferProcessFromEvm;
8
9
  var _chainList = require("@subwallet/chain-list");
9
10
  var _serviceBase = require("@subwallet/extension-base/types/service-base");
11
+ var _utils = require("../../chain-service/utils");
12
+ var _acrossBridge = require("../transfer/xcm/acrossBridge");
10
13
  // Copyright 2019-2022 @subwallet/extension-base
11
14
  // SPDX-License-Identifier: Apache-2.0
12
15
 
@@ -41,6 +44,30 @@ async function getSnowbridgeTransferProcessFromEvm(address, evmApi, tokenInfo, a
41
44
  // if (!allowance || BigInt(allowance) < BigInt(amount)) {
42
45
  // }
43
46
 
47
+ result.steps.push({
48
+ id: result.steps.length,
49
+ type: _serviceBase.CommonStepType.TRANSFER,
50
+ name: 'Transfer'
51
+ });
52
+ result.totalFee.push(_serviceBase.MOCK_STEP_FEE);
53
+ return Promise.resolve(result);
54
+ }
55
+ async function getAcrossbridgeTransferProcessFromEvm(originChainInfo) {
56
+ const chainId = (0, _utils._getEvmChainId)(originChainInfo);
57
+ const SpokePoolAddress = _acrossBridge.SpokePoolMapping[chainId].SpokePool.address;
58
+ const result = {
59
+ totalFee: [_serviceBase.MOCK_STEP_FEE],
60
+ steps: [_serviceBase.DEFAULT_FIRST_STEP]
61
+ };
62
+ result.steps.push({
63
+ id: result.steps.length,
64
+ type: _serviceBase.CommonStepType.TOKEN_APPROVAL,
65
+ name: 'Approve spending',
66
+ metadata: {
67
+ SpokePoolAddress
68
+ }
69
+ });
70
+ result.totalFee.push(_serviceBase.MOCK_STEP_FEE);
44
71
  result.steps.push({
45
72
  id: result.steps.length,
46
73
  type: _serviceBase.CommonStepType.TRANSFER,
@@ -22,6 +22,7 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
22
22
  var _i18next = require("i18next");
23
23
  var _rxjs = require("rxjs");
24
24
  var _util = require("@polkadot/util");
25
+ var _acrossBridge = require("./transfer/xcm/acrossBridge");
25
26
  var _BalanceMapImpl = require("./BalanceMapImpl");
26
27
  var _helpers = require("./helpers");
27
28
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
@@ -580,6 +581,14 @@ class BalanceService {
580
581
  const tokenInfo = this.state.chainService.getAssetBySlug(params.tokenSlug);
581
582
  return (0, _process.getSnowbridgeTransferProcessFromEvm)(params.address, evmApi, tokenInfo, params.amount);
582
583
  }
584
+
585
+ // Across Bridge
586
+ if ((0, _acrossBridge._isAcrossChainBridge)(originChainInfo.slug, destChainInfo.slug)) {
587
+ const tokenInfo = this.state.chainService.getAssetBySlug(params.tokenSlug);
588
+ if (!(0, _utils._isNativeToken)(tokenInfo)) {
589
+ return (0, _process.getAcrossbridgeTransferProcessFromEvm)(originChainInfo);
590
+ }
591
+ }
583
592
  return (0, _process.getDefaultTransferProcess)();
584
593
  }
585
594
  }
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SpokePoolMapping = void 0;
8
+ exports._isAcrossChainBridge = _isAcrossChainBridge;
9
+ exports._isAcrossTestnetBridge = _isAcrossTestnetBridge;
10
+ exports.getAcrossQuote = void 0;
11
+ var _chainList = require("@subwallet/chain-list");
12
+ var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
13
+ var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
14
+ // Copyright 2019-2022 @subwallet/extension-base
15
+ // SPDX-License-Identifier: Apache-2.0
16
+
17
+ // Across Bridge
18
+ const acrossPairsMap = new Map([[_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, new Set(['optimism', 'base_mainnet', 'arbitrum_one'])], ['optimism', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'base_mainnet', 'arbitrum_one'])], ['base_mainnet', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'arbitrum_one'])], ['arbitrum_one', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'base_mainnet'])], [_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA, new Set(['base_sepolia', 'arbitrum_sepolia'])],
19
+ // TESTNET START HERE
20
+ ['base_sepolia', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA])], ['arbitrum_sepolia', new Set([_chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA])]]);
21
+ function _isAcrossChainBridge(srcChain, destChain) {
22
+ var _acrossPairsMap$get$h, _acrossPairsMap$get;
23
+ return (_acrossPairsMap$get$h = (_acrossPairsMap$get = acrossPairsMap.get(srcChain)) === null || _acrossPairsMap$get === void 0 ? void 0 : _acrossPairsMap$get.has(destChain)) !== null && _acrossPairsMap$get$h !== void 0 ? _acrossPairsMap$get$h : false;
24
+ }
25
+ function _isAcrossTestnetBridge(srcChain) {
26
+ return srcChain === 'base_sepolia' || srcChain === 'arbitrum_sepolia' || srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA;
27
+ }
28
+ const SpokePoolMapping = {
29
+ 1: {
30
+ SpokePool: {
31
+ address: '0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5',
32
+ blockNumber: 17117454
33
+ }
34
+ },
35
+ 10: {
36
+ SpokePool: {
37
+ address: '0x6f26Bf09B1C792e3228e5467807a900A503c0281',
38
+ blockNumber: 93903076
39
+ }
40
+ },
41
+ 11155111: {
42
+ SpokePool: {
43
+ address: '0x5ef6C01E11889d86803e0B23e3cB3F9E9d97B662',
44
+ blockNumber: 5288470
45
+ }
46
+ },
47
+ 11155420: {
48
+ SpokePool: {
49
+ address: '0x4e8E101924eDE233C13e2D8622DC8aED2872d505',
50
+ blockNumber: 7762656
51
+ }
52
+ },
53
+ 1135: {
54
+ SpokePool: {
55
+ address: '0x9552a0a6624A23B848060AE5901659CDDa1f83f8',
56
+ blockNumber: 2602337
57
+ }
58
+ },
59
+ 130: {
60
+ SpokePool: {
61
+ address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
62
+ blockNumber: 7915488
63
+ }
64
+ },
65
+ 137: {
66
+ SpokePool: {
67
+ address: '0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096',
68
+ blockNumber: 41908657
69
+ }
70
+ },
71
+ 168587773: {
72
+ SpokePool: {
73
+ address: '0x5545092553Cf5Bf786e87a87192E902D50D8f022',
74
+ blockNumber: 7634204
75
+ }
76
+ },
77
+ 1868: {
78
+ SpokePool: {
79
+ address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
80
+ blockNumber: 1709997
81
+ }
82
+ },
83
+ 288: {
84
+ SpokePool: {
85
+ address: '0xBbc6009fEfFc27ce705322832Cb2068F8C1e0A58',
86
+ blockNumber: 619993
87
+ }
88
+ },
89
+ 324: {
90
+ SpokePool: {
91
+ address: '0xE0B015E54d54fc84a6cB9B666099c46adE9335FF',
92
+ blockNumber: 10352565
93
+ }
94
+ },
95
+ 34443: {
96
+ SpokePool: {
97
+ address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
98
+ blockNumber: 8043187
99
+ }
100
+ },
101
+ 37111: {
102
+ SpokePool: {
103
+ address: '0x6A0a7f39530923911832Dd60667CE5da5449967B',
104
+ blockNumber: 156275
105
+ }
106
+ },
107
+ 41455: {
108
+ SpokePool: {
109
+ address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
110
+ blockNumber: 4240318
111
+ }
112
+ },
113
+ 4202: {
114
+ SpokePool: {
115
+ address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4',
116
+ blockNumber: 7267988
117
+ }
118
+ },
119
+ 42161: {
120
+ SpokePool: {
121
+ address: '0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A',
122
+ blockNumber: 83868041
123
+ }
124
+ },
125
+ 421614: {
126
+ SpokePool: {
127
+ address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75',
128
+ blockNumber: 12411026
129
+ }
130
+ },
131
+ 480: {
132
+ SpokePool: {
133
+ address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
134
+ blockNumber: 4524742
135
+ }
136
+ },
137
+ 534352: {
138
+ SpokePool: {
139
+ address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96',
140
+ blockNumber: 7489705
141
+ }
142
+ },
143
+ 57073: {
144
+ SpokePool: {
145
+ address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4',
146
+ blockNumber: 1139240
147
+ }
148
+ },
149
+ 59144: {
150
+ SpokePool: {
151
+ address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75',
152
+ blockNumber: 2721169
153
+ }
154
+ },
155
+ 690: {
156
+ SpokePool: {
157
+ address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
158
+ blockNumber: 5512122
159
+ }
160
+ },
161
+ 7777777: {
162
+ SpokePool: {
163
+ address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97',
164
+ blockNumber: 18382867
165
+ }
166
+ },
167
+ 80002: {
168
+ SpokePool: {
169
+ address: '0xd08baaE74D6d2eAb1F3320B2E1a53eeb391ce8e5',
170
+ blockNumber: 7529960
171
+ }
172
+ },
173
+ 81457: {
174
+ SpokePool: {
175
+ address: '0x2D509190Ed0172ba588407D4c2df918F955Cc6E1',
176
+ blockNumber: 5574280
177
+ }
178
+ },
179
+ 8453: {
180
+ SpokePool: {
181
+ address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64',
182
+ blockNumber: 2164878
183
+ }
184
+ },
185
+ 84532: {
186
+ SpokePool: {
187
+ address: '0x82B564983aE7274c86695917BBf8C99ECb6F0F8F',
188
+ blockNumber: 6082004
189
+ }
190
+ },
191
+ 919: {
192
+ SpokePool: {
193
+ address: '0xbd886FC0725Cc459b55BbFEb3E4278610331f83b',
194
+ blockNumber: 13999465
195
+ }
196
+ }
197
+ };
198
+ exports.SpokePoolMapping = SpokePoolMapping;
199
+ // Calculate fee for across bridge transfer
200
+ const getAcrossQuote = async _ref => {
201
+ let {
202
+ destinationChain,
203
+ destinationTokenInfo,
204
+ originChain,
205
+ originTokenInfo,
206
+ recipient,
207
+ sender,
208
+ sendingValue
209
+ } = _ref;
210
+ const isAcrossBridgeXcm = (0, _xcmParser._isAcrossBridgeXcm)(originChain, destinationChain);
211
+ console.log('sendingValue', sendingValue);
212
+ if (!isAcrossBridgeXcm) {
213
+ throw new Error('This is not a valid AcrossBridge transfer');
214
+ }
215
+ if (!sender) {
216
+ throw new Error('Sender is required');
217
+ }
218
+ try {
219
+ var _subwalletApiSdk$xcmA;
220
+ const data = await ((_subwalletApiSdk$xcmA = _subwalletApiSdk.default.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
221
+ if (!data || !data.metadata) {
222
+ throw new Error('Failed to get AcrossBridge quote');
223
+ }
224
+ return data.metadata;
225
+ } catch (error) {
226
+ return Promise.reject(error);
227
+ }
228
+ };
229
+ exports.getAcrossQuote = getAcrossQuote;
@@ -67,12 +67,12 @@ async function getClaimTxOnAvail(notification, substrateApi) {
67
67
  const chainApi = await substrateApi.isReady;
68
68
  const chainSlug = chainApi.chainSlug;
69
69
  const metadata = notification.metadata;
70
- const lastestEthHeadSlot = await getLastestEthHeadSlot(chainSlug);
71
- const lastestBlockHash = await getLastestBlockHash(chainSlug, lastestEthHeadSlot);
72
- const proof = await getClaimProofOnAvail(chainSlug, lastestBlockHash, metadata.messageId);
73
- return chainApi.api.tx.vector.execute(lastestEthHeadSlot, getAddressMessage(notification), proof.accountProof, proof.storageProof);
70
+ const latestEthHeadSlot = await getLatestEthHeadSlot(chainSlug);
71
+ const latestBlockHash = await getLatestBlockHash(chainSlug, latestEthHeadSlot);
72
+ const proof = await getClaimProofOnAvail(chainSlug, latestBlockHash, metadata.messageId);
73
+ return chainApi.api.tx.vector.execute(latestEthHeadSlot, getAddressMessage(notification), proof.accountProof, proof.storageProof);
74
74
  }
75
- async function getLastestEthHeadSlot(chainSlug) {
75
+ async function getLatestEthHeadSlot(chainSlug) {
76
76
  try {
77
77
  const api = getAvailBridgeApi(chainSlug);
78
78
  const rawResponse = await fetch(`${api}/eth/head`);
@@ -83,7 +83,7 @@ async function getLastestEthHeadSlot(chainSlug) {
83
83
  throw e;
84
84
  }
85
85
  }
86
- async function getLastestBlockHash(chainSlug, slot) {
86
+ async function getLatestBlockHash(chainSlug, slot) {
87
87
  try {
88
88
  const api = getAvailBridgeApi(chainSlug);
89
89
  const rawResponse = await fetch(`${api}/beacon/slot/${slot}`);
@@ -1,18 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createPolygonBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = void 0;
7
+ exports.dryRunXcmExtrinsicV2 = exports.createXcmExtrinsicV2 = exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createPolygonBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = exports.createAcrossBridgeExtrinsic = void 0;
8
+ var _constants = require("@subwallet/extension-base/constants");
7
9
  var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
8
10
  var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
9
11
  var _polkadotXcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polkadotXcm");
10
12
  var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
11
13
  var _snowBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/snowBridge");
14
+ var _utils = require("@subwallet/extension-base/services/balance-service/transfer/xcm/utils");
12
15
  var _xcmPallet = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xcmPallet");
13
16
  var _xTokens = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xTokens");
14
- var _constants = require("@subwallet/extension-base/services/chain-service/constants");
15
- var _utils = require("@subwallet/extension-base/services/chain-service/utils");
17
+ var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
18
+ var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
19
+ var _utils3 = require("@subwallet/extension-base/utils");
20
+ var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
16
21
  var _posBridge = require("./posBridge");
17
22
  // Copyright 2019-2022 @subwallet/extension-base
18
23
  // SPDX-License-Identifier: Apache-2.0
@@ -57,11 +62,11 @@ const createXcmExtrinsic = async _ref2 => {
57
62
  }
58
63
  const chainApi = await substrateApi.isReady;
59
64
  const api = chainApi.api;
60
- const polkadotXcmSpecialCases = _constants._XCM_CHAIN_GROUP.polkadotXcmSpecialCases.includes(originChain.slug) && (0, _utils._isNativeToken)(originTokenInfo);
61
- if (_constants._XCM_CHAIN_GROUP.polkadotXcm.includes(originTokenInfo.originChain) || polkadotXcmSpecialCases) {
65
+ const polkadotXcmSpecialCases = _constants2._XCM_CHAIN_GROUP.polkadotXcmSpecialCases.includes(originChain.slug) && (0, _utils2._isNativeToken)(originTokenInfo);
66
+ if (_constants2._XCM_CHAIN_GROUP.polkadotXcm.includes(originTokenInfo.originChain) || polkadotXcmSpecialCases) {
62
67
  return (0, _polkadotXcm.getExtrinsicByPolkadotXcmPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
63
68
  }
64
- if (_constants._XCM_CHAIN_GROUP.xcmPallet.includes(originTokenInfo.originChain)) {
69
+ if (_constants2._XCM_CHAIN_GROUP.xcmPallet.includes(originTokenInfo.originChain)) {
65
70
  return (0, _xcmPallet.getExtrinsicByXcmPalletPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
66
71
  }
67
72
  return (0, _xTokens.getExtrinsicByXtokensPallet)(originTokenInfo, originChain, destinationChain, recipient, sendingValue, api);
@@ -127,4 +132,88 @@ const createPolygonBridgeExtrinsic = async _ref5 => {
127
132
  const createExtrinsic = isPolygonBridgeXcm ? sourceChain === 'polygonzkEvm_cardona' || sourceChain === 'polygonZkEvm' ? _polygonBridge._createPolygonBridgeL2toL1Extrinsic : _polygonBridge._createPolygonBridgeL1toL2Extrinsic : sourceChain === 'polygon_amoy' || sourceChain === 'polygon' ? _posBridge._createPosBridgeL2toL1Extrinsic : _posBridge._createPosBridgeL1toL2Extrinsic;
128
133
  return createExtrinsic(originTokenInfo, originChain, sender, recipient, sendingValue, evmApi, feeInfo, feeCustom, feeOption);
129
134
  };
130
- exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
135
+ exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
136
+ const createXcmExtrinsicV2 = async request => {
137
+ try {
138
+ return await (0, _utils.buildXcm)(request);
139
+ } catch (e) {
140
+ console.log('createXcmExtrinsicV2 error: ', e);
141
+ const errorMessage = e instanceof Error ? e.message : 'Unknown error occurred';
142
+ if ((0, _utils.isChainNotSupportPolkadotApi)(errorMessage)) {
143
+ return createXcmExtrinsic(request);
144
+ }
145
+ return undefined;
146
+ }
147
+ };
148
+ exports.createXcmExtrinsicV2 = createXcmExtrinsicV2;
149
+ const dryRunXcmExtrinsicV2 = async request => {
150
+ try {
151
+ return await (0, _utils.dryRunXcmV2)(request);
152
+ } catch (e) {
153
+ const errorMessage = e instanceof Error ? e.message : 'Unknown error occurred';
154
+ if ((0, _utils.isChainNotSupportDryRun)(errorMessage) || (0, _utils.isChainNotSupportPolkadotApi)(errorMessage)) {
155
+ const xcmTransfer = await createXcmExtrinsicV2(request);
156
+ if (!xcmTransfer) {
157
+ return {
158
+ success: false
159
+ };
160
+ }
161
+ const _xcmFeeInfo = await xcmTransfer.paymentInfo(request.sender);
162
+ const xcmFeeInfo = _xcmFeeInfo.toPrimitive();
163
+
164
+ // skip dry run in this case
165
+ return {
166
+ success: true,
167
+ fee: Math.round(xcmFeeInfo.partialFee * _constants.XCM_MIN_AMOUNT_RATIO).toString()
168
+ };
169
+ }
170
+ return {
171
+ success: false
172
+ };
173
+ }
174
+ };
175
+ exports.dryRunXcmExtrinsicV2 = dryRunXcmExtrinsicV2;
176
+ const createAcrossBridgeExtrinsic = async _ref6 => {
177
+ let {
178
+ destinationChain,
179
+ destinationTokenInfo,
180
+ evmApi,
181
+ feeCustom,
182
+ feeInfo,
183
+ feeOption,
184
+ originChain,
185
+ originTokenInfo,
186
+ recipient,
187
+ sender,
188
+ sendingValue
189
+ } = _ref6;
190
+ const isAcrossBridgeXcm = (0, _xcmParser._isAcrossBridgeXcm)(originChain, destinationChain);
191
+ if (!isAcrossBridgeXcm) {
192
+ throw new Error('This is not a valid AcrossBridge transfer');
193
+ }
194
+ if (!evmApi) {
195
+ throw new Error('Evm API is not available');
196
+ }
197
+ if (!sender) {
198
+ throw new Error('Sender is required');
199
+ }
200
+ try {
201
+ var _subwalletApiSdk$xcmA;
202
+ const data = await ((_subwalletApiSdk$xcmA = _subwalletApiSdk.default.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
203
+ const _feeCustom = feeCustom;
204
+ const feeCombine = (0, _utils3.combineEthFee)(feeInfo, feeOption, _feeCustom);
205
+ const transactionConfig = {
206
+ from: data === null || data === void 0 ? void 0 : data.sender,
207
+ to: data === null || data === void 0 ? void 0 : data.to,
208
+ value: data === null || data === void 0 ? void 0 : data.value,
209
+ data: data === null || data === void 0 ? void 0 : data.transferEncodedCall,
210
+ ...feeCombine
211
+ };
212
+ const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
213
+ transactionConfig.gas = gasLimit.toString();
214
+ return transactionConfig;
215
+ } catch (error) {
216
+ return Promise.reject(error);
217
+ }
218
+ };
219
+ exports.createAcrossBridgeExtrinsic = createAcrossBridgeExtrinsic;