@hyperlane-xyz/sdk 35.1.0 → 36.0.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 (286) hide show
  1. package/dist/block-explorer/utils.d.ts +8 -0
  2. package/dist/block-explorer/utils.d.ts.map +1 -1
  3. package/dist/block-explorer/utils.js +16 -3
  4. package/dist/block-explorer/utils.js.map +1 -1
  5. package/dist/ccip/consts.d.ts.map +1 -1
  6. package/dist/ccip/consts.js +0 -40
  7. package/dist/ccip/consts.js.map +1 -1
  8. package/dist/consts/multisigIsm.d.ts.map +1 -1
  9. package/dist/consts/multisigIsm.js +39 -241
  10. package/dist/consts/multisigIsm.js.map +1 -1
  11. package/dist/contracts/contracts.d.ts.map +1 -1
  12. package/dist/contracts/contracts.js +6 -1
  13. package/dist/contracts/contracts.js.map +1 -1
  14. package/dist/core/CoreDeployer.hardhat-test.js +9 -0
  15. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  16. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  17. package/dist/core/EvmCoreModule.hardhat-test.js +23 -0
  18. package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
  19. package/dist/core/EvmCoreModule.js +8 -5
  20. package/dist/core/EvmCoreModule.js.map +1 -1
  21. package/dist/core/EvmCoreReader.d.ts.map +1 -1
  22. package/dist/core/EvmCoreReader.js +34 -15
  23. package/dist/core/EvmCoreReader.js.map +1 -1
  24. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  25. package/dist/core/HyperlaneCoreDeployer.js +34 -13
  26. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  27. package/dist/core/TestCoreApp.d.ts +1 -1
  28. package/dist/core/contracts.d.ts +5 -2
  29. package/dist/core/contracts.d.ts.map +1 -1
  30. package/dist/core/contracts.js +4 -1
  31. package/dist/core/contracts.js.map +1 -1
  32. package/dist/core/types.d.ts +1092 -627
  33. package/dist/core/types.d.ts.map +1 -1
  34. package/dist/core/types.js +30 -2
  35. package/dist/core/types.js.map +1 -1
  36. package/dist/core/types.test.d.ts +2 -0
  37. package/dist/core/types.test.d.ts.map +1 -0
  38. package/dist/core/types.test.js +50 -0
  39. package/dist/core/types.test.js.map +1 -0
  40. package/dist/deploy/HyperlaneDeployer.d.ts +1 -0
  41. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  42. package/dist/deploy/HyperlaneDeployer.js +17 -8
  43. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  44. package/dist/deploy/proxy.d.ts.map +1 -1
  45. package/dist/deploy/proxy.js +9 -5
  46. package/dist/deploy/proxy.js.map +1 -1
  47. package/dist/deploy/warp.d.ts.map +1 -1
  48. package/dist/deploy/warp.js +5 -0
  49. package/dist/deploy/warp.js.map +1 -1
  50. package/dist/fee/EvmTokenFeeDeployer.d.ts +1 -0
  51. package/dist/fee/EvmTokenFeeDeployer.d.ts.map +1 -1
  52. package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js +40 -0
  53. package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js.map +1 -1
  54. package/dist/fee/EvmTokenFeeDeployer.js +8 -0
  55. package/dist/fee/EvmTokenFeeDeployer.js.map +1 -1
  56. package/dist/fee/EvmTokenFeeReader.d.ts.map +1 -1
  57. package/dist/fee/EvmTokenFeeReader.js +3 -13
  58. package/dist/fee/EvmTokenFeeReader.js.map +1 -1
  59. package/dist/fee/feeConfigMapping.d.ts +9 -0
  60. package/dist/fee/feeConfigMapping.d.ts.map +1 -0
  61. package/dist/fee/feeConfigMapping.js +86 -0
  62. package/dist/fee/feeConfigMapping.js.map +1 -0
  63. package/dist/fee/feeConfigMapping.test.d.ts +2 -0
  64. package/dist/fee/feeConfigMapping.test.d.ts.map +1 -0
  65. package/dist/fee/feeConfigMapping.test.js +204 -0
  66. package/dist/fee/feeConfigMapping.test.js.map +1 -0
  67. package/dist/fee/types.d.ts +185 -113
  68. package/dist/fee/types.d.ts.map +1 -1
  69. package/dist/fee/types.js +13 -11
  70. package/dist/fee/types.js.map +1 -1
  71. package/dist/fee/utils.d.ts +1 -32
  72. package/dist/fee/utils.d.ts.map +1 -1
  73. package/dist/fee/utils.js +1 -47
  74. package/dist/fee/utils.js.map +1 -1
  75. package/dist/gas/HyperlaneIgpChecker.d.ts +1 -0
  76. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  77. package/dist/gas/HyperlaneIgpChecker.js +43 -1
  78. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  79. package/dist/gas/HyperlaneIgpDeployer.d.ts +17 -0
  80. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  81. package/dist/gas/HyperlaneIgpDeployer.js +124 -4
  82. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  83. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +33 -2
  84. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -1
  85. package/dist/gas/types.d.ts +17 -3
  86. package/dist/gas/types.d.ts.map +1 -1
  87. package/dist/gas/types.js +19 -0
  88. package/dist/gas/types.js.map +1 -1
  89. package/dist/gas/utils.d.ts +5 -1
  90. package/dist/gas/utils.d.ts.map +1 -1
  91. package/dist/gas/utils.js +92 -31
  92. package/dist/gas/utils.js.map +1 -1
  93. package/dist/gas/utils.test.d.ts +2 -0
  94. package/dist/gas/utils.test.d.ts.map +1 -0
  95. package/dist/gas/utils.test.js +132 -0
  96. package/dist/gas/utils.test.js.map +1 -0
  97. package/dist/hook/EvmHookModule.d.ts +21 -1
  98. package/dist/hook/EvmHookModule.d.ts.map +1 -1
  99. package/dist/hook/EvmHookModule.hardhat-test.js +125 -2
  100. package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
  101. package/dist/hook/EvmHookModule.js +191 -17
  102. package/dist/hook/EvmHookModule.js.map +1 -1
  103. package/dist/hook/EvmHookReader.d.ts +4 -4
  104. package/dist/hook/EvmHookReader.d.ts.map +1 -1
  105. package/dist/hook/EvmHookReader.js +67 -16
  106. package/dist/hook/EvmHookReader.js.map +1 -1
  107. package/dist/hook/EvmHookReader.test.js +128 -2
  108. package/dist/hook/EvmHookReader.test.js.map +1 -1
  109. package/dist/hook/HyperlaneHookDeployer.d.ts +10 -5
  110. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  111. package/dist/hook/types.d.ts +338 -264
  112. package/dist/hook/types.d.ts.map +1 -1
  113. package/dist/hook/types.js +30 -6
  114. package/dist/hook/types.js.map +1 -1
  115. package/dist/hook/types.test.d.ts +2 -0
  116. package/dist/hook/types.test.d.ts.map +1 -0
  117. package/dist/hook/types.test.js +184 -0
  118. package/dist/hook/types.test.js.map +1 -0
  119. package/dist/hook/utils.d.ts +1 -0
  120. package/dist/hook/utils.d.ts.map +1 -1
  121. package/dist/hook/utils.js +16 -10
  122. package/dist/hook/utils.js.map +1 -1
  123. package/dist/ica/types.d.ts +380 -188
  124. package/dist/ica/types.d.ts.map +1 -1
  125. package/dist/index.d.ts +8 -6
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +5 -3
  128. package/dist/index.js.map +1 -1
  129. package/dist/ism/EvmIsmModule.d.ts +7 -1
  130. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  131. package/dist/ism/EvmIsmModule.hardhat-test.js +4 -0
  132. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
  133. package/dist/ism/EvmIsmModule.js +152 -4
  134. package/dist/ism/EvmIsmModule.js.map +1 -1
  135. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  136. package/dist/ism/EvmIsmReader.js +1 -2
  137. package/dist/ism/EvmIsmReader.js.map +1 -1
  138. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  139. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +17 -0
  140. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  141. package/dist/ism/HyperlaneIsmFactory.js +35 -9
  142. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  143. package/dist/ism/types.d.ts +88 -3
  144. package/dist/ism/types.d.ts.map +1 -1
  145. package/dist/ism/types.js +4 -0
  146. package/dist/ism/types.js.map +1 -1
  147. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  148. package/dist/metadata/ChainMetadataManager.js +2 -2
  149. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  150. package/dist/metadata/ChainMetadataManager.test.js +71 -0
  151. package/dist/metadata/ChainMetadataManager.test.js.map +1 -1
  152. package/dist/metadata/agentConfig.d.ts +937 -168
  153. package/dist/metadata/agentConfig.d.ts.map +1 -1
  154. package/dist/metadata/agentConfig.js +68 -1
  155. package/dist/metadata/agentConfig.js.map +1 -1
  156. package/dist/metadata/agentConfig.test.js +67 -1
  157. package/dist/metadata/agentConfig.test.js.map +1 -1
  158. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  159. package/dist/middleware/account/InterchainAccount.js +10 -0
  160. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  161. package/dist/middleware/account/InterchainAccount.test.js +26 -0
  162. package/dist/middleware/account/InterchainAccount.test.js.map +1 -1
  163. package/dist/providers/MultiProvider.d.ts +6 -0
  164. package/dist/providers/MultiProvider.d.ts.map +1 -1
  165. package/dist/providers/MultiProvider.js +28 -2
  166. package/dist/providers/MultiProvider.js.map +1 -1
  167. package/dist/providers/SeismicSigner.d.ts +54 -0
  168. package/dist/providers/SeismicSigner.d.ts.map +1 -0
  169. package/dist/providers/SeismicSigner.js +89 -0
  170. package/dist/providers/SeismicSigner.js.map +1 -0
  171. package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.d.ts.map +1 -1
  172. package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.js +8 -0
  173. package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.js.map +1 -1
  174. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  175. package/dist/providers/SmartProvider/SmartProvider.js +69 -23
  176. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  177. package/dist/providers/SmartProvider/SmartProvider.test.js +34 -5
  178. package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
  179. package/dist/providers/builders/starknet.d.ts.map +1 -1
  180. package/dist/providers/builders/starknet.js +6 -1
  181. package/dist/providers/builders/starknet.js.map +1 -1
  182. package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
  183. package/dist/providers/transactions/submitter/IcaTxSubmitter.js +23 -8
  184. package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
  185. package/dist/providers/transactions/submitter/IcaTxSubmitter.test.js +45 -0
  186. package/dist/providers/transactions/submitter/IcaTxSubmitter.test.js.map +1 -1
  187. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxBuilder.d.ts +1 -1
  188. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxBuilder.d.ts.map +1 -1
  189. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +1 -1
  190. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
  191. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
  192. package/dist/providers/transactions/submitter/ethersV5/types.d.ts +6 -0
  193. package/dist/providers/transactions/submitter/ethersV5/types.d.ts.map +1 -1
  194. package/dist/providers/transactions/submitter/ethersV5/types.js +26 -5
  195. package/dist/providers/transactions/submitter/ethersV5/types.js.map +1 -1
  196. package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts.map +1 -1
  197. package/dist/providers/transactions/submitter/submitterBuilderGetter.js +11 -1
  198. package/dist/providers/transactions/submitter/submitterBuilderGetter.js.map +1 -1
  199. package/dist/providers/transactions/submitter/submitterBuilderGetter.test.d.ts +2 -0
  200. package/dist/providers/transactions/submitter/submitterBuilderGetter.test.d.ts.map +1 -0
  201. package/dist/providers/transactions/submitter/submitterBuilderGetter.test.js +38 -0
  202. package/dist/providers/transactions/submitter/submitterBuilderGetter.test.js.map +1 -0
  203. package/dist/router/types.d.ts +481 -236
  204. package/dist/router/types.d.ts.map +1 -1
  205. package/dist/router/types.js +1 -0
  206. package/dist/router/types.js.map +1 -1
  207. package/dist/router/types.test.d.ts +2 -0
  208. package/dist/router/types.test.d.ts.map +1 -0
  209. package/dist/router/types.test.js +32 -0
  210. package/dist/router/types.test.js.map +1 -0
  211. package/dist/test/testUtils.d.ts.map +1 -1
  212. package/dist/test/testUtils.js +3 -0
  213. package/dist/test/testUtils.js.map +1 -1
  214. package/dist/token/EvmWarpModule.d.ts +18 -1
  215. package/dist/token/EvmWarpModule.d.ts.map +1 -1
  216. package/dist/token/EvmWarpModule.hardhat-test.js +30 -0
  217. package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -1
  218. package/dist/token/EvmWarpModule.js +67 -5
  219. package/dist/token/EvmWarpModule.js.map +1 -1
  220. package/dist/token/EvmWarpModule.test.d.ts +2 -0
  221. package/dist/token/EvmWarpModule.test.d.ts.map +1 -0
  222. package/dist/token/EvmWarpModule.test.js +77 -0
  223. package/dist/token/EvmWarpModule.test.js.map +1 -0
  224. package/dist/token/EvmWarpRouteReader.d.ts +1 -0
  225. package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
  226. package/dist/token/EvmWarpRouteReader.js +17 -0
  227. package/dist/token/EvmWarpRouteReader.js.map +1 -1
  228. package/dist/token/EvmXERC20Module.d.ts +31 -26
  229. package/dist/token/EvmXERC20Module.d.ts.map +1 -1
  230. package/dist/token/EvmXERC20Module.js +46 -3
  231. package/dist/token/EvmXERC20Module.js.map +1 -1
  232. package/dist/token/EvmXERC20Module.test.js +162 -1
  233. package/dist/token/EvmXERC20Module.test.js.map +1 -1
  234. package/dist/token/EvmXERC20Reader.d.ts +17 -0
  235. package/dist/token/EvmXERC20Reader.d.ts.map +1 -1
  236. package/dist/token/EvmXERC20Reader.js +37 -1
  237. package/dist/token/EvmXERC20Reader.js.map +1 -1
  238. package/dist/token/adapters/EvmHypSyntheticAdapter.test.d.ts +2 -0
  239. package/dist/token/adapters/EvmHypSyntheticAdapter.test.d.ts.map +1 -0
  240. package/dist/token/adapters/EvmHypSyntheticAdapter.test.js +96 -0
  241. package/dist/token/adapters/EvmHypSyntheticAdapter.test.js.map +1 -0
  242. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  243. package/dist/token/adapters/EvmTokenAdapter.js +25 -12
  244. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  245. package/dist/token/configUtils.test.js.map +1 -1
  246. package/dist/token/deploy.d.ts +1 -0
  247. package/dist/token/deploy.d.ts.map +1 -1
  248. package/dist/token/deploy.js +13 -0
  249. package/dist/token/deploy.js.map +1 -1
  250. package/dist/token/tokenMetadataUtils.d.ts.map +1 -1
  251. package/dist/token/tokenMetadataUtils.js +1 -0
  252. package/dist/token/tokenMetadataUtils.js.map +1 -1
  253. package/dist/token/types.d.ts +1373 -699
  254. package/dist/token/types.d.ts.map +1 -1
  255. package/dist/token/types.test.js +11 -0
  256. package/dist/token/types.test.js.map +1 -1
  257. package/dist/token/xerc20.d.ts.map +1 -1
  258. package/dist/token/xerc20.js +10 -2
  259. package/dist/token/xerc20.js.map +1 -1
  260. package/dist/token/xerc20.test.d.ts +2 -0
  261. package/dist/token/xerc20.test.d.ts.map +1 -0
  262. package/dist/token/xerc20.test.js +143 -0
  263. package/dist/token/xerc20.test.js.map +1 -0
  264. package/dist/utils/contract.d.ts +6 -0
  265. package/dist/utils/contract.d.ts.map +1 -1
  266. package/dist/utils/contract.js +11 -0
  267. package/dist/utils/contract.js.map +1 -1
  268. package/dist/utils/contract.test.js +2 -1
  269. package/dist/utils/contract.test.js.map +1 -1
  270. package/dist/utils/gas.d.ts +1 -0
  271. package/dist/utils/gas.d.ts.map +1 -1
  272. package/dist/utils/gas.js +1 -0
  273. package/dist/utils/gas.js.map +1 -1
  274. package/dist/utils/gnosisSafe.d.ts +4 -1
  275. package/dist/utils/gnosisSafe.d.ts.map +1 -1
  276. package/dist/utils/gnosisSafe.js +20 -7
  277. package/dist/utils/gnosisSafe.js.map +1 -1
  278. package/dist/utils/gnosisSafe.test.js +44 -1
  279. package/dist/utils/gnosisSafe.test.js.map +1 -1
  280. package/dist/utils/ism.d.ts.map +1 -1
  281. package/dist/utils/ism.js +4 -2
  282. package/dist/utils/ism.js.map +1 -1
  283. package/dist/warp/WarpCore.d.ts.map +1 -1
  284. package/dist/warp/WarpCore.js +4 -3
  285. package/dist/warp/WarpCore.js.map +1 -1
  286. package/package.json +14 -14
@@ -1,6 +1,7 @@
1
1
  import { expect } from 'chai';
2
+ import { ethers } from 'ethers';
2
3
  import hre from 'hardhat';
3
- import { CONTRACTS_PACKAGE_VERSION } from '@hyperlane-xyz/core';
4
+ import { CONTRACTS_PACKAGE_VERSION, InterchainGasPaymaster__factory, } from '@hyperlane-xyz/core';
4
5
  import { assert, deepCopy, deepEquals, eqAddress, } from '@hyperlane-xyz/utils';
5
6
  import { TestChainName, testChains } from '../consts/testChains.js';
6
7
  import { TestCoreDeployer } from '../core/TestCoreDeployer.js';
@@ -10,7 +11,7 @@ import { MultiProvider } from '../providers/MultiProvider.js';
10
11
  import { DEFAULT_TOKEN_DECIMALS, hookTypesToFilter, randomAddress, randomHookConfig, randomInt, } from '../test/testUtils.js';
11
12
  import { normalizeConfig } from '../utils/ism.js';
12
13
  import { EvmHookModule } from './EvmHookModule.js';
13
- import { HookType, MUTABLE_HOOK_TYPE, } from './types.js';
14
+ import { HookType, IgpVersion, MUTABLE_HOOK_TYPE, } from './types.js';
14
15
  const hookTypes = Object.values(HookType);
15
16
  describe('EvmHookModule', async () => {
16
17
  const chain = TestChainName.test4;
@@ -534,6 +535,30 @@ describe('EvmHookModule', async () => {
534
535
  // expect 1 tx to update the oracle config
535
536
  await expectTxsAndUpdate(hook, config, 1);
536
537
  });
538
+ it('should not update IGP only because igpVersion is legacy', async () => {
539
+ const config = await createDeployerOwnedIgpHookConfig();
540
+ const { hook } = await createHook(config);
541
+ await expectTxsAndUpdate(hook, { ...config, igpVersion: IgpVersion.Legacy }, 0);
542
+ });
543
+ it('should not update routing hooks only because nested IGP is legacy', async () => {
544
+ const igpConfig = await createDeployerOwnedIgpHookConfig();
545
+ const config = {
546
+ owner: await multiProvider.getSignerAddress(chain),
547
+ domains: {
548
+ [TestChainName.test1]: {
549
+ type: HookType.AGGREGATION,
550
+ hooks: [{ type: HookType.MERKLE_TREE }, igpConfig],
551
+ },
552
+ },
553
+ type: HookType.FALLBACK_ROUTING,
554
+ fallback: { type: HookType.MERKLE_TREE },
555
+ };
556
+ const { hook } = await createHook(config);
557
+ const legacyConfig = deepCopy(config);
558
+ legacyConfig.domains[TestChainName.test1]
559
+ .hooks[1].igpVersion = IgpVersion.Legacy;
560
+ await expectTxsAndUpdate(hook, legacyConfig, 0);
561
+ });
537
562
  it('should add quote signers to IGP', async () => {
538
563
  const config = await createDeployerOwnedIgpHookConfig();
539
564
  config.contractVersion = CONTRACTS_PACKAGE_VERSION;
@@ -585,6 +610,104 @@ describe('EvmHookModule', async () => {
585
610
  // expect 0 txs since omitting quoteSigners means "don't change"
586
611
  await expectTxsAndUpdate(hook, config, 0);
587
612
  });
613
+ it('should reject quote signers for legacy IGP configs', async () => {
614
+ const config = await createDeployerOwnedIgpHookConfig();
615
+ const { hook } = await createHook(config);
616
+ const legacyTarget = {
617
+ ...config,
618
+ igpVersion: IgpVersion.Legacy,
619
+ quoteSigners: [randomAddress()],
620
+ };
621
+ try {
622
+ await hook.update(legacyTarget);
623
+ throw new Error('Expected legacy IGP quote signer update to fail');
624
+ }
625
+ catch (error) {
626
+ assert(error instanceof Error, 'Expected Error');
627
+ expect(error.message).to.include('IGP quoteSigners require contract version >= 11.3.0');
628
+ }
629
+ });
630
+ const randomTokenOracleConfig = (withTypicalCost = false) => Object.fromEntries(testChains.map((c) => [
631
+ c,
632
+ {
633
+ tokenExchangeRate: randomInt(1234567891234).toString(),
634
+ gasPrice: randomInt(1234567891234).toString(),
635
+ tokenDecimals: DEFAULT_TOKEN_DECIMALS,
636
+ ...(withTypicalCost
637
+ ? {
638
+ typicalCost: {
639
+ handleGasAmount: 50_000,
640
+ totalGasAmount: 200_000,
641
+ totalUsdCost: 1,
642
+ },
643
+ }
644
+ : {}),
645
+ },
646
+ ]));
647
+ it('should deploy IGP with token gas oracles and wire them on-chain', async () => {
648
+ const feeToken = randomAddress();
649
+ const config = await createDeployerOwnedIgpHookConfig();
650
+ config.tokenOracleConfig = { [feeToken]: randomTokenOracleConfig() };
651
+ const { hook } = await createHook(config);
652
+ // The token oracle mapping is read back from chain (not derivable via the
653
+ // reader), so assert it directly: a dedicated oracle is wired per remote.
654
+ const igp = InterchainGasPaymaster__factory.connect(hook.serialize().deployedHook, multiProvider.getProvider(chain));
655
+ const oracles = await Promise.all(testChains.map((c) => igp.tokenGasOracles(feeToken, multiProvider.getDomainId(c))));
656
+ for (const oracle of oracles) {
657
+ expect(eqAddress(oracle, ethers.constants.AddressZero)).to.be.false;
658
+ }
659
+ // All destinations of a fee token share a single oracle instance.
660
+ expect(oracles.every((o) => eqAddress(o, oracles[0]))).to.be.true;
661
+ });
662
+ it('should set token gas oracles on update', async () => {
663
+ const config = await createDeployerOwnedIgpHookConfig();
664
+ config.contractVersion = CONTRACTS_PACKAGE_VERSION;
665
+ const { hook } = await createHook(config);
666
+ // add a token oracle config; oracle is deployed eagerly, leaving a single
667
+ // setTokenGasOracles tx to wire the mapping.
668
+ config.tokenOracleConfig = {
669
+ [randomAddress()]: randomTokenOracleConfig(true),
670
+ };
671
+ await expectTxsAndUpdate(hook, config, 1);
672
+ // re-applying the same config is a no-op (mapping already wired on-chain)
673
+ await expectTxsAndUpdate(hook, config, 0);
674
+ });
675
+ it('should reject token gas oracle remotes without native gas config', async () => {
676
+ const config = await createDeployerOwnedIgpHookConfig();
677
+ config.contractVersion = CONTRACTS_PACKAGE_VERSION;
678
+ const { hook } = await createHook(config);
679
+ const target = deepCopy(config);
680
+ const [remoteWithoutNativeConfig] = testChains;
681
+ delete target.overhead[remoteWithoutNativeConfig];
682
+ target.tokenOracleConfig = {
683
+ [randomAddress()]: randomTokenOracleConfig(),
684
+ };
685
+ try {
686
+ await hook.update(target);
687
+ throw new Error('Expected token oracle remote validation to fail');
688
+ }
689
+ catch (error) {
690
+ assert(error instanceof Error, 'Expected Error');
691
+ expect(error.message).to.include(`includes remotes without native gas oracle config: ${remoteWithoutNativeConfig}`);
692
+ }
693
+ });
694
+ it('should reject token gas oracles for legacy IGP configs', async () => {
695
+ const config = await createDeployerOwnedIgpHookConfig();
696
+ const { hook } = await createHook(config);
697
+ const legacyTarget = {
698
+ ...config,
699
+ igpVersion: IgpVersion.Legacy,
700
+ tokenOracleConfig: { [randomAddress()]: randomTokenOracleConfig() },
701
+ };
702
+ try {
703
+ await hook.update(legacyTarget);
704
+ throw new Error('Expected legacy IGP token oracle update to fail');
705
+ }
706
+ catch (error) {
707
+ assert(error instanceof Error, 'Expected Error');
708
+ expect(error.message).to.include('IGP tokenOracleConfig requires contract version >= 11.3.0');
709
+ }
710
+ });
588
711
  it('should not upgrade IGP when contractVersion is not in config', async () => {
589
712
  const config = await createDeployerOwnedIgpHookConfig();
590
713
  const { hook, initialHookAddress } = await createHook(config);
@@ -1 +1 @@
1
- {"version":3,"file":"EvmHookModule.hardhat-test.js","sourceRoot":"","sources":["../../src/hook/EvmHookModule.hardhat-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvmHookModule.hardhat-test.js","sourceRoot":"","sources":["../../src/hook/EvmHookModule.hardhat-test.ts"],"names":[],"mappings":"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"}
@@ -7,20 +7,40 @@ import { TOKEN_EXCHANGE_RATE_SCALE_ETHEREUM } from '../consts/igp.js';
7
7
  import { HyperlaneModule, } from '../core/AbstractHyperlaneModule.js';
8
8
  import { HyperlaneDeployer } from '../deploy/HyperlaneDeployer.js';
9
9
  import { isProxy, proxyAdmin } from '../deploy/proxy.js';
10
+ import { assertTokenOracleConfigHasNativeRemotes, igpSupportsOffchainFeeQuoting, } from '../gas/types.js';
10
11
  import { EvmIsmModule } from '../ism/EvmIsmModule.js';
11
12
  import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
12
13
  import { IsmType } from '../ism/types.js';
13
14
  import { normalizeConfig } from '../utils/ism.js';
15
+ import { isMissingSelectorRevert } from '../utils/contract.js';
14
16
  import { VERSION_ERROR_MESSAGE, contractVersionMatchesDependency, } from '../token/types.js';
15
17
  import { EvmHookReader } from './EvmHookReader.js';
16
18
  import { hookFactories } from './contracts.js';
17
- import { HookConfigSchema, HookType, HookTypeToContractNameMap, MUTABLE_HOOK_TYPE, } from './types.js';
19
+ import { HookConfigSchema, HookType, HookTypeToContractNameMap, IgpVersion, MUTABLE_HOOK_TYPE, OFFCHAIN_QUOTED_IGP_VERSION, } from './types.js';
18
20
  class HookDeployer extends HyperlaneDeployer {
19
21
  cachingEnabled = false;
20
22
  deployContracts(_chain, _config) {
21
23
  throw new Error('Method not implemented.');
22
24
  }
23
25
  }
26
+ function stripIgpVersion(config) {
27
+ if (Array.isArray(config)) {
28
+ return config.map(stripIgpVersion);
29
+ }
30
+ if (config !== null && typeof config === 'object') {
31
+ const stripped = {};
32
+ for (const [key, value] of Object.entries(config)) {
33
+ if (key !== 'igpVersion') {
34
+ stripped[key] = stripIgpVersion(value);
35
+ }
36
+ }
37
+ return stripped;
38
+ }
39
+ return config;
40
+ }
41
+ function hookConfigsEqual(a, b) {
42
+ return deepEquals(stripIgpVersion(a), stripIgpVersion(b));
43
+ }
24
44
  export class EvmHookModule extends HyperlaneModule {
25
45
  multiProvider;
26
46
  contractVerifier;
@@ -50,9 +70,17 @@ export class EvmHookModule extends HyperlaneModule {
50
70
  this.txOverrides = multiProvider.getTransactionOverrides(this.chain);
51
71
  }
52
72
  async read() {
53
- return typeof this.args.config === 'string'
54
- ? this.args.addresses.deployedHook
55
- : this.reader.deriveHookConfig(this.args.addresses.deployedHook);
73
+ if (typeof this.args.config === 'string') {
74
+ return this.args.addresses.deployedHook;
75
+ }
76
+ // For IGP hooks with tokenOracleConfig, pass fee tokens to the reader
77
+ if (typeof this.args.config === 'object' &&
78
+ this.args.config.type === HookType.INTERCHAIN_GAS_PAYMASTER &&
79
+ this.args.config.tokenOracleConfig) {
80
+ const feeTokens = Object.keys(this.args.config.tokenOracleConfig);
81
+ return this.reader.deriveIgpConfig(this.args.addresses.deployedHook, feeTokens);
82
+ }
83
+ return this.reader.deriveHookConfig(this.args.addresses.deployedHook);
56
84
  }
57
85
  async update(targetConfig) {
58
86
  // Nothing to do if its the default hook
@@ -63,7 +91,7 @@ export class EvmHookModule extends HyperlaneModule {
63
91
  const normalizedTargetConfig = normalizeConfig(await this.reader.deriveHookConfig(targetConfig));
64
92
  const normalizedCurrentConfig = normalizeConfig(await this.read());
65
93
  // If configs match, no updates needed
66
- if (deepEquals(normalizedCurrentConfig, normalizedTargetConfig)) {
94
+ if (hookConfigsEqual(normalizedCurrentConfig, normalizedTargetConfig)) {
67
95
  return [];
68
96
  }
69
97
  // Update the module config to the target one as we are sure now that an update will be needed
@@ -119,7 +147,7 @@ export class EvmHookModule extends HyperlaneModule {
119
147
  }
120
148
  // If the domain is not in the current config or the config has changed, deploy a new hook
121
149
  // TODO: in-place updates per domain as a future optimization
122
- if (!deepEquals(currentDomains[dest], targetDomainConfig)) {
150
+ if (!hookConfigsEqual(currentDomains[dest], targetDomainConfig)) {
123
151
  const domainHook = await this.deploy({
124
152
  config: targetDomainConfig,
125
153
  });
@@ -224,12 +252,19 @@ export class EvmHookModule extends HyperlaneModule {
224
252
  const igpAddress = this.args.addresses.deployedHook;
225
253
  const igpInterface = InterchainGasPaymaster__factory.createInterface();
226
254
  const provider = this.multiProvider.getProvider(this.domainId);
255
+ let currentVersion;
256
+ try {
257
+ currentVersion = await PackageVersioned__factory.connect(igpAddress, provider).PACKAGE_VERSION();
258
+ }
259
+ catch (error) {
260
+ if (!isMissingSelectorRevert(error)) {
261
+ throw error;
262
+ }
263
+ this.logger.debug(`IGP ${igpAddress} on ${this.chain} does not expose PACKAGE_VERSION`);
264
+ }
227
265
  // Upgrade IGP proxy implementation only if contractVersion is specified in config
228
266
  if (targetConfig.contractVersion && (await isProxy(provider, igpAddress))) {
229
267
  assert(contractVersionMatchesDependency(targetConfig.contractVersion), VERSION_ERROR_MESSAGE);
230
- const currentVersion = await PackageVersioned__factory.connect(igpAddress, provider)
231
- .PACKAGE_VERSION()
232
- .catch(() => undefined);
233
268
  if (!currentVersion ||
234
269
  compareVersions(targetConfig.contractVersion, currentVersion) > 0) {
235
270
  this.logger.info(`Upgrading IGP implementation from ${currentVersion ?? 'unknown'} to ${targetConfig.contractVersion}`);
@@ -273,6 +308,7 @@ export class EvmHookModule extends HyperlaneModule {
273
308
  })));
274
309
  }
275
310
  else {
311
+ assert(targetConfig.igpVersion !== IgpVersion.Legacy, 'Legacy IGP updates require an existing gas oracle configuration');
276
312
  const newGasOracle = await this.deployStorageGasOracle({
277
313
  config: targetConfig,
278
314
  });
@@ -288,14 +324,131 @@ export class EvmHookModule extends HyperlaneModule {
288
324
  })));
289
325
  // update quote signers only if explicitly specified in target config
290
326
  // and IGP supports them (detected from on-chain read or version upgrade)
291
- const supportsQuoteSigners = currentConfig.quoteSigners !== undefined ||
292
- targetConfig.contractVersion != null;
293
- if (targetConfig.quoteSigners !== undefined && supportsQuoteSigners) {
327
+ const offchainFeeQuotingVersion = targetConfig.contractVersion ?? currentVersion ?? undefined;
328
+ const supportsOffchainFeeQuoting = igpSupportsOffchainFeeQuoting({
329
+ igpVersion: targetConfig.igpVersion,
330
+ contractVersion: offchainFeeQuotingVersion,
331
+ quoteSigners: currentConfig.quoteSigners,
332
+ });
333
+ if (targetConfig.quoteSigners !== undefined) {
334
+ assert(supportsOffchainFeeQuoting, `IGP quoteSigners require contract version >= ${OFFCHAIN_QUOTED_IGP_VERSION}`);
294
335
  updateTxs.push(...this.updateIgpQuoteSigners({
295
336
  currentSigners: currentConfig.quoteSigners ?? [],
296
337
  targetSigners: targetConfig.quoteSigners ?? [],
297
338
  }));
298
339
  }
340
+ // update token gas oracles only if explicitly specified in target config.
341
+ // Gated behind the same support check as quoteSigners: the tokenGasOracles
342
+ // mapping and setTokenGasOracles only exist on the new (non-legacy) IGP.
343
+ const targetTokenOracleConfig = targetConfig.tokenOracleConfig;
344
+ if (targetTokenOracleConfig &&
345
+ Object.keys(targetTokenOracleConfig).length > 0) {
346
+ assert(supportsOffchainFeeQuoting, `IGP tokenOracleConfig requires contract version >= ${OFFCHAIN_QUOTED_IGP_VERSION}`);
347
+ updateTxs.push(...(await this.updateIgpTokenGasOracles({
348
+ interchainGasPaymaster: this.args.addresses.deployedHook,
349
+ targetTokenOracleConfig,
350
+ config: targetConfig,
351
+ })));
352
+ }
353
+ return updateTxs;
354
+ }
355
+ /**
356
+ * Diffs and applies per-fee-token gas oracles on the IGP. Target-driven: the
357
+ * configured fee tokens are the only enumeration source (the on-chain
358
+ * tokenGasOracles mapping is not enumerable), so removals are intentionally
359
+ * unsupported and old fee-token mappings remain live until cleared by a
360
+ * dedicated teardown flow. Each configured token's current oracle is read back
361
+ * from chain, so no off-chain address bookkeeping is needed for additions and
362
+ * updates.
363
+ *
364
+ * For each fee token: resolve the oracle already wired on chain (reused across
365
+ * that token's destinations), or deploy a fresh StorageGasOracle if none is
366
+ * set yet; reconcile the oracle's remote gas data; then point any unmapped
367
+ * destinations at it via setTokenGasOracles.
368
+ */
369
+ async updateIgpTokenGasOracles({ interchainGasPaymaster, targetTokenOracleConfig, config, }) {
370
+ const updateTxs = [];
371
+ const igpInterface = InterchainGasPaymaster__factory.createInterface();
372
+ const igp = InterchainGasPaymaster__factory.connect(interchainGasPaymaster, this.multiProvider.getProvider(this.domainId));
373
+ assertTokenOracleConfigHasNativeRemotes(this.chain, config);
374
+ for (const [feeToken, oracleConfig] of Object.entries(targetTokenOracleConfig)) {
375
+ // Resolve the in-MultiProvider remote domains for this fee token.
376
+ const remotes = Object.keys(oracleConfig)
377
+ .map((remote) => ({
378
+ remote,
379
+ domainId: this.multiProvider.tryGetDomainId(remote),
380
+ }))
381
+ .filter((r) => r.domainId !== null);
382
+ if (remotes.length === 0) {
383
+ this.logger.warn(`Skipping token gas oracle for ${feeToken} on ${this.chain}: no configured remotes in MultiProvider`);
384
+ continue;
385
+ }
386
+ // Find an oracle already wired for this fee token on any configured
387
+ // destination; reuse it across destinations.
388
+ let gasOracle;
389
+ for (const { domainId } of remotes) {
390
+ const existing = await igp.tokenGasOracles(feeToken, domainId);
391
+ if (!eqAddress(existing, ethers.constants.AddressZero)) {
392
+ gasOracle = existing;
393
+ break;
394
+ }
395
+ }
396
+ // No oracle wired yet -> deploy a dedicated one for this fee token,
397
+ // seeded with its oracle config.
398
+ if (!gasOracle) {
399
+ const newOracle = await this.deployStorageGasOracle({
400
+ config,
401
+ oracleConfig,
402
+ });
403
+ gasOracle = newOracle.address;
404
+ }
405
+ else {
406
+ // Reconcile remote gas data on the existing oracle. updateStorageGasOracle
407
+ // diffs against a supplied current config, so read it back from chain
408
+ // first (tokenDecimals isn't stored on-chain, so carry it from target to
409
+ // avoid a spurious diff).
410
+ const oracleContract = StorageGasOracle__factory.connect(gasOracle, this.multiProvider.getProvider(this.domainId));
411
+ const currentOracleConfig = {};
412
+ for (const { remote, domainId } of remotes) {
413
+ const data = await oracleContract.remoteGasData(domainId);
414
+ currentOracleConfig[remote] = {
415
+ tokenExchangeRate: data.tokenExchangeRate.toString(),
416
+ gasPrice: data.gasPrice.toString(),
417
+ tokenDecimals: oracleConfig[remote]?.tokenDecimals,
418
+ };
419
+ }
420
+ updateTxs.push(...(await this.updateStorageGasOracle({
421
+ gasOracle,
422
+ currentOracleConfig,
423
+ targetOracleConfig: oracleConfig,
424
+ targetOverhead: config.overhead,
425
+ })));
426
+ }
427
+ // Point any destinations not yet mapped to this oracle at it.
428
+ const tokenOracleParams = [];
429
+ for (const { domainId } of remotes) {
430
+ const current = await igp.tokenGasOracles(feeToken, domainId);
431
+ if (!eqAddress(current, gasOracle)) {
432
+ tokenOracleParams.push({
433
+ feeToken,
434
+ remoteDomain: domainId,
435
+ gasOracle,
436
+ });
437
+ }
438
+ }
439
+ if (tokenOracleParams.length > 0) {
440
+ updateTxs.push({
441
+ annotation: `Setting token gas oracles for ${feeToken} on ${this.chain} (domains ${tokenOracleParams
442
+ .map((p) => p.remoteDomain)
443
+ .join(', ')})`,
444
+ chainId: this.chainId,
445
+ to: interchainGasPaymaster,
446
+ data: igpInterface.encodeFunctionData('setTokenGasOracles', [
447
+ tokenOracleParams,
448
+ ]),
449
+ });
450
+ }
451
+ }
299
452
  return updateTxs;
300
453
  }
301
454
  updateIgpQuoteSigners({ currentSigners, targetSigners, }) {
@@ -368,7 +521,12 @@ export class EvmHookModule extends HyperlaneModule {
368
521
  continue;
369
522
  }
370
523
  // only update if the oracle config has changed
371
- if (!current || !deepEquals(current, target)) {
524
+ const comparableTarget = {
525
+ gasPrice: target.gasPrice,
526
+ tokenExchangeRate: target.tokenExchangeRate,
527
+ tokenDecimals: target.tokenDecimals,
528
+ };
529
+ if (!current || !deepEquals(current, comparableTarget)) {
372
530
  configsToSet.push({ remoteDomain, ...target });
373
531
  // Log an example remote gas cost
374
532
  const exampleRemoteGas = (targetOverhead[remote] ?? 200_000) + 50_000;
@@ -425,7 +583,7 @@ export class EvmHookModule extends HyperlaneModule {
425
583
  async updateRoutingHook({ currentConfig, targetConfig, }) {
426
584
  // Deploy a new fallback hook if the fallback config has changed
427
585
  if (targetConfig.type === HookType.FALLBACK_ROUTING &&
428
- !deepEquals(targetConfig.fallback, currentConfig.fallback)) {
586
+ !hookConfigsEqual(targetConfig.fallback, currentConfig.fallback)) {
429
587
  const hook = await this.deploy({ config: targetConfig });
430
588
  this.args.addresses.deployedHook = hook.address;
431
589
  return [];
@@ -668,12 +826,14 @@ export class EvmHookModule extends HyperlaneModule {
668
826
  return routingHook;
669
827
  }
670
828
  async deployIgpHook({ config, }) {
829
+ assert(config.igpVersion !== IgpVersion.Legacy, 'Legacy IGP configs require an existing deployment and cannot deploy a new IGP');
671
830
  this.logger.debug('Deploying IGP as hook...');
672
831
  // Deploy the StorageGasOracle
673
832
  const storageGasOracle = await this.deployStorageGasOracle({
674
833
  config,
675
834
  });
676
- // Deploy the InterchainGasPaymaster
835
+ // Deploy the InterchainGasPaymaster (handles token gas oracle wiring
836
+ // via updateIgpTokenGasOracles before transferring ownership)
677
837
  const interchainGasPaymaster = await this.deployInterchainGasPaymaster({
678
838
  storageGasOracle,
679
839
  config,
@@ -701,6 +861,20 @@ export class EvmHookModule extends HyperlaneModule {
701
861
  await this.multiProvider.handleTx(this.chain, igp.addQuoteSigner(signer, this.txOverrides));
702
862
  }
703
863
  }
864
+ // Wire per-fee-token gas oracles if configured. Must run while the deployer
865
+ // still owns the IGP (setTokenGasOracles is onlyOwner) and after the native
866
+ // gas params above, since the IGP requires a destination's native oracle to
867
+ // exist before a non-native token oracle can be set for it.
868
+ if (config.tokenOracleConfig !== undefined) {
869
+ const tokenOracleTxs = await this.updateIgpTokenGasOracles({
870
+ interchainGasPaymaster: igp.address,
871
+ targetTokenOracleConfig: config.tokenOracleConfig,
872
+ config,
873
+ });
874
+ for (const tx of tokenOracleTxs) {
875
+ await this.multiProvider.sendTransaction(this.chain, tx);
876
+ }
877
+ }
704
878
  // Transfer igp to the configured owner
705
879
  await this.multiProvider.handleTx(this.chain, igp.transferOwnership(config.owner, this.txOverrides));
706
880
  return igp;
@@ -716,13 +890,13 @@ export class EvmHookModule extends HyperlaneModule {
716
890
  const routingHook = await this.deployer.deployContract(this.chain, HookType.AMOUNT_ROUTING, [lowerHook, upperHook, config.threshold]);
717
891
  return routingHook;
718
892
  }
719
- async deployStorageGasOracle({ config, }) {
893
+ async deployStorageGasOracle({ config, oracleConfig = config.oracleConfig, }) {
720
894
  // Deploy the StorageGasOracle, by default msg.sender is the owner
721
895
  const gasOracle = await this.deployer.deployContractFromFactory(this.chain, new StorageGasOracle__factory(), 'storageGasOracle', []);
722
896
  // Obtain the transactions to set the gas params for each remote
723
897
  const configureTxs = await this.updateStorageGasOracle({
724
898
  gasOracle: gasOracle.address,
725
- targetOracleConfig: config.oracleConfig,
899
+ targetOracleConfig: oracleConfig,
726
900
  targetOverhead: config.overhead,
727
901
  });
728
902
  // Set the gas params for each remote