@hyperlane-xyz/sdk 7.1.0 → 7.3.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 (269) hide show
  1. package/dist/aws/validator.d.ts +3 -1
  2. package/dist/aws/validator.d.ts.map +1 -1
  3. package/dist/aws/validator.js +12 -4
  4. package/dist/aws/validator.js.map +1 -1
  5. package/dist/consts/multisigIsm.d.ts +1 -0
  6. package/dist/consts/multisigIsm.d.ts.map +1 -1
  7. package/dist/consts/multisigIsm.js +1148 -358
  8. package/dist/consts/multisigIsm.js.map +1 -1
  9. package/dist/consts/multisigIsm.test.js +16 -2
  10. package/dist/consts/multisigIsm.test.js.map +1 -1
  11. package/dist/consts/multisigIsmVerifyCosts.d.ts.map +1 -1
  12. package/dist/consts/multisigIsmVerifyCosts.js +0 -1
  13. package/dist/consts/multisigIsmVerifyCosts.js.map +1 -1
  14. package/dist/core/CoreDeployer.hardhat-test.d.ts.map +1 -1
  15. package/dist/core/CoreDeployer.hardhat-test.js +27 -8
  16. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  17. package/dist/core/EvmCoreModule.d.ts +6 -4
  18. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  19. package/dist/core/EvmCoreModule.js +23 -3
  20. package/dist/core/EvmCoreModule.js.map +1 -1
  21. package/dist/core/EvmCoreReader.d.ts +14 -6
  22. package/dist/core/EvmCoreReader.d.ts.map +1 -1
  23. package/dist/core/EvmCoreReader.js +14 -8
  24. package/dist/core/EvmCoreReader.js.map +1 -1
  25. package/dist/core/EvmIcaModule.d.ts +13 -5
  26. package/dist/core/EvmIcaModule.d.ts.map +1 -1
  27. package/dist/core/EvmIcaModule.js +81 -4
  28. package/dist/core/EvmIcaModule.js.map +1 -1
  29. package/dist/core/HyperlaneRelayer.d.ts +40 -40
  30. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  31. package/dist/core/HyperlaneRelayer.js +3 -3
  32. package/dist/core/HyperlaneRelayer.js.map +1 -1
  33. package/dist/core/schemas.d.ts +3572 -676
  34. package/dist/core/schemas.d.ts.map +1 -1
  35. package/dist/core/schemas.js +9 -4
  36. package/dist/core/schemas.js.map +1 -1
  37. package/dist/core/types.d.ts +2 -1
  38. package/dist/core/types.d.ts.map +1 -1
  39. package/dist/core/types.js.map +1 -1
  40. package/dist/deploy/HyperlaneAppChecker.d.ts +1 -0
  41. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  42. package/dist/deploy/HyperlaneAppChecker.js +6 -3
  43. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  44. package/dist/deploy/HyperlaneDeployer.d.ts +1 -1
  45. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  46. package/dist/deploy/verify/ContractVerifier.js +1 -1
  47. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  48. package/dist/gas/adapters/SealevelIgpAdapter.d.ts +40 -4
  49. package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -1
  50. package/dist/gas/adapters/SealevelIgpAdapter.js +107 -12
  51. package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -1
  52. package/dist/gas/adapters/serialization.d.ts +29 -0
  53. package/dist/gas/adapters/serialization.d.ts.map +1 -1
  54. package/dist/gas/adapters/serialization.js +71 -2
  55. package/dist/gas/adapters/serialization.js.map +1 -1
  56. package/dist/gas/types.d.ts +1 -1
  57. package/dist/gas/types.d.ts.map +1 -1
  58. package/dist/gcp/storage.d.ts +24 -0
  59. package/dist/gcp/storage.d.ts.map +1 -0
  60. package/dist/gcp/storage.js +69 -0
  61. package/dist/gcp/storage.js.map +1 -0
  62. package/dist/gcp/validator.d.ts +21 -0
  63. package/dist/gcp/validator.d.ts.map +1 -0
  64. package/dist/gcp/validator.js +99 -0
  65. package/dist/gcp/validator.js.map +1 -0
  66. package/dist/hook/EvmHookModule.d.ts +2 -2
  67. package/dist/hook/EvmHookModule.d.ts.map +1 -1
  68. package/dist/hook/EvmHookModule.hardhat-test.js +0 -1
  69. package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
  70. package/dist/hook/EvmHookModule.js +1 -2
  71. package/dist/hook/EvmHookModule.js.map +1 -1
  72. package/dist/hook/EvmHookReader.js +2 -2
  73. package/dist/hook/EvmHookReader.js.map +1 -1
  74. package/dist/hook/EvmHookReader.test.js +0 -1
  75. package/dist/hook/EvmHookReader.test.js.map +1 -1
  76. package/dist/hook/types.d.ts +244 -1
  77. package/dist/hook/types.d.ts.map +1 -1
  78. package/dist/hook/types.js +65 -0
  79. package/dist/hook/types.js.map +1 -1
  80. package/dist/ica/EvmIcaReader.d.ts +10 -0
  81. package/dist/ica/EvmIcaReader.d.ts.map +1 -0
  82. package/dist/ica/EvmIcaReader.hardhat-test.d.ts +2 -0
  83. package/dist/ica/EvmIcaReader.hardhat-test.d.ts.map +1 -0
  84. package/dist/ica/EvmIcaReader.hardhat-test.js +44 -0
  85. package/dist/ica/EvmIcaReader.hardhat-test.js.map +1 -0
  86. package/dist/ica/EvmIcaReader.js +52 -0
  87. package/dist/ica/EvmIcaReader.js.map +1 -0
  88. package/dist/ica/schemas.d.ts +107 -0
  89. package/dist/ica/schemas.d.ts.map +1 -0
  90. package/dist/ica/schemas.js +25 -0
  91. package/dist/ica/schemas.js.map +1 -0
  92. package/dist/ica/types.d.ts +5 -0
  93. package/dist/ica/types.d.ts.map +1 -0
  94. package/dist/ica/types.js +2 -0
  95. package/dist/ica/types.js.map +1 -0
  96. package/dist/index.d.ts +14 -10
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +11 -8
  99. package/dist/index.js.map +1 -1
  100. package/dist/ism/EvmIsmModule.d.ts +3 -3
  101. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  102. package/dist/ism/EvmIsmModule.hardhat-test.js +5 -1
  103. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
  104. package/dist/ism/EvmIsmModule.js +1 -2
  105. package/dist/ism/EvmIsmModule.js.map +1 -1
  106. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  107. package/dist/ism/EvmIsmReader.js +25 -11
  108. package/dist/ism/EvmIsmReader.js.map +1 -1
  109. package/dist/ism/HyperlaneIsmFactory.d.ts +2 -0
  110. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  111. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
  112. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  113. package/dist/ism/HyperlaneIsmFactory.js +20 -2
  114. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  115. package/dist/ism/adapters/CosmWasmMultisigAdapter.d.ts +2 -2
  116. package/dist/ism/adapters/CosmWasmMultisigAdapter.d.ts.map +1 -1
  117. package/dist/ism/adapters/CosmWasmMultisigAdapter.js +1 -1
  118. package/dist/ism/adapters/CosmWasmMultisigAdapter.js.map +1 -1
  119. package/dist/ism/metadata/aggregation.d.ts +2 -1
  120. package/dist/ism/metadata/aggregation.d.ts.map +1 -1
  121. package/dist/ism/metadata/aggregation.js +2 -2
  122. package/dist/ism/metadata/aggregation.js.map +1 -1
  123. package/dist/ism/metadata/arbL2ToL1.d.ts +1 -1
  124. package/dist/ism/metadata/arbL2ToL1.d.ts.map +1 -1
  125. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +1 -2
  126. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +1 -1
  127. package/dist/ism/metadata/builder.d.ts +6 -19
  128. package/dist/ism/metadata/builder.d.ts.map +1 -1
  129. package/dist/ism/metadata/builder.hardhat-test.js +2 -1
  130. package/dist/ism/metadata/builder.hardhat-test.js.map +1 -1
  131. package/dist/ism/metadata/builder.js +7 -26
  132. package/dist/ism/metadata/builder.js.map +1 -1
  133. package/dist/ism/metadata/decode.d.ts +3 -0
  134. package/dist/ism/metadata/decode.d.ts.map +1 -0
  135. package/dist/ism/metadata/decode.js +31 -0
  136. package/dist/ism/metadata/decode.js.map +1 -0
  137. package/dist/ism/metadata/multisig.d.ts +1 -1
  138. package/dist/ism/metadata/multisig.d.ts.map +1 -1
  139. package/dist/ism/metadata/null.d.ts +1 -1
  140. package/dist/ism/metadata/null.d.ts.map +1 -1
  141. package/dist/ism/metadata/routing.d.ts +5 -4
  142. package/dist/ism/metadata/routing.d.ts.map +1 -1
  143. package/dist/ism/metadata/routing.js +24 -10
  144. package/dist/ism/metadata/routing.js.map +1 -1
  145. package/dist/ism/metadata/types.d.ts +20 -0
  146. package/dist/ism/metadata/types.d.ts.map +1 -0
  147. package/dist/ism/metadata/types.js +2 -0
  148. package/dist/ism/metadata/types.js.map +1 -0
  149. package/dist/ism/multisig.d.ts +1 -0
  150. package/dist/ism/multisig.d.ts.map +1 -1
  151. package/dist/ism/multisig.js +9 -12
  152. package/dist/ism/multisig.js.map +1 -1
  153. package/dist/ism/types.d.ts +257 -4
  154. package/dist/ism/types.d.ts.map +1 -1
  155. package/dist/ism/types.js +84 -1
  156. package/dist/ism/types.js.map +1 -1
  157. package/dist/ism/types.test.d.ts +2 -0
  158. package/dist/ism/types.test.d.ts.map +1 -0
  159. package/dist/ism/{schemas.test.js → types.test.js} +2 -3
  160. package/dist/ism/types.test.js.map +1 -0
  161. package/dist/ism/utils.d.ts +2 -2
  162. package/dist/ism/utils.d.ts.map +1 -1
  163. package/dist/ism/utils.js +15 -6
  164. package/dist/ism/utils.js.map +1 -1
  165. package/dist/metadata/agentConfig.d.ts +5 -5
  166. package/dist/middleware/liquidity-layer/LiquidityLayerApp.d.ts.map +1 -1
  167. package/dist/middleware/liquidity-layer/LiquidityLayerApp.js +14 -13
  168. package/dist/middleware/liquidity-layer/LiquidityLayerApp.js.map +1 -1
  169. package/dist/providers/SmartProvider/SmartProvider.d.ts +1 -1
  170. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  171. package/dist/providers/SmartProvider/SmartProvider.js +1 -1
  172. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  173. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts +1 -2
  174. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts.map +1 -1
  175. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.js.map +1 -1
  176. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  177. package/dist/router/HyperlaneRouterChecker.js +3 -2
  178. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  179. package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  180. package/dist/router/HyperlaneRouterDeployer.js +3 -3
  181. package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
  182. package/dist/router/types.d.ts +1220 -1
  183. package/dist/router/types.d.ts.map +1 -1
  184. package/dist/router/types.js +29 -0
  185. package/dist/router/types.js.map +1 -1
  186. package/dist/schemas.d.ts +10 -0
  187. package/dist/schemas.d.ts.map +1 -1
  188. package/dist/schemas.js +3 -0
  189. package/dist/schemas.js.map +1 -1
  190. package/dist/token/EvmERC20WarpModule.d.ts +28 -7
  191. package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
  192. package/dist/token/EvmERC20WarpModule.hardhat-test.js +158 -39
  193. package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
  194. package/dist/token/EvmERC20WarpModule.js +147 -39
  195. package/dist/token/EvmERC20WarpModule.js.map +1 -1
  196. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
  197. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js +1 -1
  198. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +1 -1
  199. package/dist/token/EvmERC20WarpRouteReader.js +8 -3
  200. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
  201. package/dist/token/IToken.d.ts +2 -2
  202. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +2 -0
  203. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  204. package/dist/token/adapters/CosmWasmTokenAdapter.js +6 -0
  205. package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
  206. package/dist/token/adapters/CosmWasmTokenAdapter.test.d.ts.map +1 -1
  207. package/dist/token/adapters/CosmWasmTokenAdapter.test.js +19 -8
  208. package/dist/token/adapters/CosmWasmTokenAdapter.test.js.map +1 -1
  209. package/dist/token/adapters/CosmosTokenAdapter.d.ts +1 -0
  210. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  211. package/dist/token/adapters/CosmosTokenAdapter.js +3 -0
  212. package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
  213. package/dist/token/adapters/EvmTokenAdapter.d.ts +1 -0
  214. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  215. package/dist/token/adapters/EvmTokenAdapter.js +3 -0
  216. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  217. package/dist/token/adapters/ITokenAdapter.d.ts +2 -1
  218. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  219. package/dist/token/adapters/SealevelTokenAdapter.d.ts +10 -7
  220. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  221. package/dist/token/adapters/SealevelTokenAdapter.js +78 -47
  222. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  223. package/dist/token/checker.d.ts +6 -0
  224. package/dist/token/checker.d.ts.map +1 -1
  225. package/dist/token/checker.js +72 -11
  226. package/dist/token/checker.js.map +1 -1
  227. package/dist/token/deploy.d.ts.map +1 -1
  228. package/dist/token/deploy.js +0 -1
  229. package/dist/token/deploy.js.map +1 -1
  230. package/dist/token/schemas.d.ts +196 -290
  231. package/dist/token/schemas.d.ts.map +1 -1
  232. package/dist/token/schemas.js +1 -1
  233. package/dist/token/schemas.js.map +1 -1
  234. package/dist/utils/gnosisSafe.js +1 -1
  235. package/dist/utils/ism.js +1 -1
  236. package/dist/utils/ism.js.map +1 -1
  237. package/dist/utils/logUtils.js +1 -1
  238. package/dist/utils/logUtils.js.map +1 -1
  239. package/dist/utils/sealevelSerialization.d.ts +10 -0
  240. package/dist/utils/sealevelSerialization.d.ts.map +1 -1
  241. package/dist/utils/sealevelSerialization.js +21 -1
  242. package/dist/utils/sealevelSerialization.js.map +1 -1
  243. package/dist/utils/validator.d.ts +4 -0
  244. package/dist/utils/validator.d.ts.map +1 -0
  245. package/dist/utils/validator.js +14 -0
  246. package/dist/utils/validator.js.map +1 -0
  247. package/dist/warp/WarpCore.d.ts +5 -3
  248. package/dist/warp/WarpCore.d.ts.map +1 -1
  249. package/dist/warp/WarpCore.js +24 -5
  250. package/dist/warp/WarpCore.js.map +1 -1
  251. package/dist/warp/WarpCore.test.js +9 -0
  252. package/dist/warp/WarpCore.test.js.map +1 -1
  253. package/dist/warp/types.d.ts +4 -4
  254. package/package.json +16 -9
  255. package/dist/hook/schemas.d.ts +0 -247
  256. package/dist/hook/schemas.d.ts.map +0 -1
  257. package/dist/hook/schemas.js +0 -67
  258. package/dist/hook/schemas.js.map +0 -1
  259. package/dist/ism/schemas.d.ts +0 -246
  260. package/dist/ism/schemas.d.ts.map +0 -1
  261. package/dist/ism/schemas.js +0 -78
  262. package/dist/ism/schemas.js.map +0 -1
  263. package/dist/ism/schemas.test.d.ts +0 -2
  264. package/dist/ism/schemas.test.d.ts.map +0 -1
  265. package/dist/ism/schemas.test.js.map +0 -1
  266. package/dist/router/schemas.d.ts +0 -1317
  267. package/dist/router/schemas.d.ts.map +0 -1
  268. package/dist/router/schemas.js +0 -30
  269. package/dist/router/schemas.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,MAAM,EACN,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,UAAU,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,EAAE,2BAA2B,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,wBAAwB,cAAc;IACtC,OAAO,kBAAkB;IACzB,IAAI,eAAe;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,mBAAmB;IAC7B,cAAc,mBAAmB;CAClC;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,mBAAmB,CAAC,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,cAAc,CAAC;QACvB,QAAQ,EAAE,cAAc,CAAC;KAC1B,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
+ import { z } from 'zod';
1
2
  import { ProxyAdmin__factory, TimelockController__factory, } from '@hyperlane-xyz/core';
3
+ import { HookConfigSchema } from '../hook/types.js';
4
+ import { IsmConfigSchema } from '../ism/types.js';
5
+ import { ZHash } from '../metadata/customZodTypes.js';
6
+ import { DeployedOwnableSchema, OwnableSchema } from '../schemas.js';
2
7
  export const proxiedFactories = {
3
8
  proxyAdmin: new ProxyAdmin__factory(),
4
9
  timelockController: new TimelockController__factory(),
@@ -13,4 +18,28 @@ export var RouterViolationType;
13
18
  (function (RouterViolationType) {
14
19
  RouterViolationType["EnrolledRouter"] = "EnrolledRouter";
15
20
  })(RouterViolationType || (RouterViolationType = {}));
21
+ export const MailboxClientConfigSchema = OwnableSchema.extend({
22
+ mailbox: ZHash,
23
+ hook: HookConfigSchema.optional(),
24
+ interchainSecurityModule: IsmConfigSchema.optional(),
25
+ });
26
+ export const ForeignDeploymentConfigSchema = z.object({
27
+ foreignDeployment: z.string().optional(),
28
+ });
29
+ export const RemoteRouterDomain = z.string();
30
+ export const RemoteRouterRouter = z.object({
31
+ address: z.string().startsWith('0x'),
32
+ });
33
+ export const RemoteRoutersSchema = z.record(RemoteRouterDomain, RemoteRouterRouter);
34
+ export const RouterConfigSchema = MailboxClientConfigSchema.merge(ForeignDeploymentConfigSchema).merge(z.object({
35
+ remoteRouters: RemoteRoutersSchema.optional(),
36
+ proxyAdmin: DeployedOwnableSchema.optional(),
37
+ }));
38
+ const DestinationGasDomain = z.string();
39
+ const DestinationGasAmount = z.string(); // This must be a string type to match Ether's type
40
+ export const DestinationGasSchema = z.record(DestinationGasDomain, DestinationGasAmount);
41
+ export const GasRouterConfigSchema = RouterConfigSchema.extend({
42
+ gas: z.number().optional(),
43
+ destinationGas: DestinationGasSchema.optional(),
44
+ });
16
45
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,mBAAmB,EAEnB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AA8B7B,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,UAAU,EAAE,IAAI,mBAAmB,EAAE;IACrC,kBAAkB,EAAE,IAAI,2BAA2B,EAAE;CACtD,CAAC;AAEF,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,6DAAsC,CAAA;IACtC,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAQD,MAAM,CAAN,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,wDAAiC,CAAA;AACnC,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,QAE9B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,mBAAmB,EAEnB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiBrE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,UAAU,EAAE,IAAI,mBAAmB,EAAE;IACrC,kBAAkB,EAAE,IAAI,2BAA2B,EAAE;CACtD,CAAC;AAEF,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,6DAAsC,CAAA;IACtC,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAQD,MAAM,CAAN,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,wDAAiC,CAAA;AACnC,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,QAE9B;AAeD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACjC,wBAAwB,EAAE,eAAe,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;CACrC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CACzC,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,KAAK,CAC/D,6BAA6B,CAC9B,CAAC,KAAK,CACL,CAAC,CAAC,MAAM,CAAC;IACP,aAAa,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC7C,CAAC,CACH,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,mDAAmD;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAC1C,oBAAoB,EACpB,oBAAoB,CACrB,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,cAAc,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC"}
package/dist/schemas.d.ts CHANGED
@@ -22,6 +22,16 @@ export declare const DeployedOwnableSchema: z.ZodObject<{
22
22
  ownerOverrides?: Record<string, string> | undefined;
23
23
  address?: string | undefined;
24
24
  }>;
25
+ export declare const DerivedOwnableSchema: z.ZodObject<{
26
+ owner: z.ZodString;
27
+ address: z.ZodString;
28
+ }, "strip", z.ZodTypeAny, {
29
+ owner: string;
30
+ address: string;
31
+ }, {
32
+ owner: string;
33
+ address: string;
34
+ }>;
25
35
  export declare const PausableSchema: z.ZodObject<{
26
36
  owner: z.ZodString;
27
37
  ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAEzB,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAEpB,CAAC;AAEd,eAAO,MAAM,cAAc;;;;;;;;;;;;EAEzB,CAAC"}
package/dist/schemas.js CHANGED
@@ -7,6 +7,9 @@ export const OwnableSchema = z.object({
7
7
  export const DeployedOwnableSchema = OwnableSchema.extend({
8
8
  address: ZHash.optional(),
9
9
  });
10
+ export const DerivedOwnableSchema = DeployedOwnableSchema.omit({
11
+ ownerOverrides: true,
12
+ }).required();
10
13
  export const PausableSchema = OwnableSchema.extend({
11
14
  paused: z.boolean(),
12
15
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAC7D,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC"}
@@ -1,14 +1,16 @@
1
- import { ContractVerifier } from '@hyperlane-xyz/sdk';
1
+ import { ContractVerifier, HyperlaneAddresses } from '@hyperlane-xyz/sdk';
2
2
  import { Address, Domain, EvmChainId, ProtocolType } from '@hyperlane-xyz/utils';
3
3
  import { HyperlaneModule, HyperlaneModuleParams } from '../core/AbstractHyperlaneModule.js';
4
+ import { ProxyFactoryFactories } from '../deploy/contracts.js';
4
5
  import { MultiProvider } from '../providers/MultiProvider.js';
5
6
  import { AnnotatedEV5Transaction } from '../providers/ProviderType.js';
6
7
  import { ChainName, ChainNameOrId } from '../types.js';
7
8
  import { EvmERC20WarpRouteReader } from './EvmERC20WarpRouteReader.js';
8
9
  import { TokenRouterConfig } from './schemas.js';
9
- export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Ethereum, TokenRouterConfig, {
10
+ type WarpRouteAddresses = HyperlaneAddresses<ProxyFactoryFactories> & {
10
11
  deployedTokenRoute: Address;
11
- }> {
12
+ };
13
+ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Ethereum, TokenRouterConfig, WarpRouteAddresses> {
12
14
  protected readonly multiProvider: MultiProvider;
13
15
  protected readonly contractVerifier?: ContractVerifier | undefined;
14
16
  protected logger: import("pino").default.Logger<never>;
@@ -16,9 +18,7 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
16
18
  readonly chainName: ChainName;
17
19
  readonly chainId: EvmChainId;
18
20
  readonly domainId: Domain;
19
- constructor(multiProvider: MultiProvider, args: HyperlaneModuleParams<TokenRouterConfig, {
20
- deployedTokenRoute: Address;
21
- }>, contractVerifier?: ContractVerifier | undefined);
21
+ constructor(multiProvider: MultiProvider, args: HyperlaneModuleParams<TokenRouterConfig, WarpRouteAddresses>, contractVerifier?: ContractVerifier | undefined);
22
22
  /**
23
23
  * Retrieves the token router configuration for the specified address.
24
24
  *
@@ -40,7 +40,8 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
40
40
  * @param expectedConfig - The expected token router configuration.
41
41
  * @returns A array with a single Ethereum transaction that need to be executed to enroll the routers
42
42
  */
43
- createRemoteRoutersUpdateTxs(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): AnnotatedEV5Transaction[];
43
+ createEnrollRemoteRoutersUpdateTxs(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): AnnotatedEV5Transaction[];
44
+ createUnenrollRemoteRoutersUpdateTxs(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): AnnotatedEV5Transaction[];
44
45
  /**
45
46
  * Create a transaction to update the remote routers for the Warp Route contract.
46
47
  *
@@ -57,6 +58,7 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
57
58
  * @returns Ethereum transaction that need to be executed to update the ISM configuration.
58
59
  */
59
60
  createIsmUpdateTxs(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): Promise<AnnotatedEV5Transaction[]>;
61
+ createHookUpdateTxs(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): Promise<AnnotatedEV5Transaction[]>;
60
62
  /**
61
63
  * Transfer ownership of an existing Warp route with a given config.
62
64
  *
@@ -74,6 +76,23 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
74
76
  deployedIsm: Address;
75
77
  updateTransactions: AnnotatedEV5Transaction[];
76
78
  }>;
79
+ /**
80
+ * Updates or deploys the hook using the provided configuration.
81
+ *
82
+ * @returns Object with deployedHook address, and update Transactions
83
+ */
84
+ deployOrUpdateHook(actualConfig: TokenRouterConfig, expectedConfig: TokenRouterConfig): Promise<{
85
+ deployedHook: Address;
86
+ updateTransactions: AnnotatedEV5Transaction[];
87
+ }>;
88
+ deployNewHook(expectedConfig: TokenRouterConfig): Promise<{
89
+ deployedHook: Address;
90
+ updateTransactions: AnnotatedEV5Transaction[];
91
+ }>;
92
+ updateExistingHook(expectedConfig: TokenRouterConfig, actualConfig: TokenRouterConfig): Promise<{
93
+ deployedHook: Address;
94
+ updateTransactions: AnnotatedEV5Transaction[];
95
+ }>;
77
96
  /**
78
97
  * Deploys the Warp Route.
79
98
  *
@@ -87,6 +106,8 @@ export declare class EvmERC20WarpModule extends HyperlaneModule<ProtocolType.Eth
87
106
  config: TokenRouterConfig;
88
107
  multiProvider: MultiProvider;
89
108
  contractVerifier?: ContractVerifier;
109
+ proxyFactoryFactories: HyperlaneAddresses<ProxyFactoryFactories>;
90
110
  }): Promise<EvmERC20WarpModule>;
91
111
  }
112
+ export {};
92
113
  //# sourceMappingURL=EvmERC20WarpModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EvmERC20WarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EAOb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,cAAc,CAAC;AAE1E,qBAAa,kBAAmB,SAAQ,eAAe,CACrD,YAAY,CAAC,QAAQ,EACrB,iBAAiB,EACjB;IACE,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CACF;IAUG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAO/C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAhBtC,SAAS,CAAC,MAAM,uCAEb;IACH,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,OAAO,EAAE,UAAU,CAAC;IACpC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAGZ,aAAa,EAAE,aAAa,EAC/C,IAAI,EAAE,qBAAqB,CACzB,iBAAiB,EACjB;QACE,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CACF,EACkB,gBAAgB,CAAC,8BAAkB;IAgBxD;;;;;OAKG;IACU,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAM/C;;;;;OAKG;IACU,MAAM,CACjB,cAAc,EAAE,iBAAiB,GAChC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA4BrC;;;;;;OAMG;IACH,4BAA4B,CAC1B,YAAY,EAAE,iBAAiB,EAC/B,cAAc,EAAE,iBAAiB,GAChC,uBAAuB,EAAE;IAyC5B;;;;;;OAMG;IACH,gCAAgC,CAC9B,YAAY,EAAE,iBAAiB,EAC/B,cAAc,EAAE,iBAAiB,GAChC,uBAAuB,EAAE;IAyC5B;;;;;;OAMG;IACG,kBAAkB,CACtB,YAAY,EAAE,iBAAiB,EAC/B,cAAc,EAAE,iBAAiB,GAChC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAyCrC;;;;;;OAMG;IACH,wBAAwB,CACtB,YAAY,EAAE,iBAAiB,EAC/B,cAAc,EAAE,iBAAiB,GAChC,uBAAuB,EAAE;IAU5B;;;;OAIG;IACU,iBAAiB,CAC5B,YAAY,EAAE,iBAAiB,EAC/B,cAAc,EAAE,iBAAiB,GAChC,OAAO,CAAC;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,kBAAkB,EAAE,uBAAuB,EAAE,CAAC;KAC/C,CAAC;IAoCF;;;;;;;OAOG;WACiB,MAAM,CAAC,MAAM,EAAE;QACjC,KAAK,EAAE,aAAa,CAAC;QACrB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,aAAa,EAAE,aAAa,CAAC;QAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA0BhC"}
1
+ {"version":3,"file":"EvmERC20WarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { expect } from 'chai';
2
- import { constants } from 'ethers';
3
2
  import hre from 'hardhat';
4
- import { ERC20Test__factory, ERC4626Test__factory, HypERC20__factory, HypERC4626Collateral__factory, HypNative__factory, Mailbox__factory, } from '@hyperlane-xyz/core';
5
- import { EvmIsmModule, IsmType, TestChainName, serializeContracts, } from '@hyperlane-xyz/sdk';
3
+ import { ERC20Test__factory, ERC4626Test__factory, HypERC20__factory, HypERC4626Collateral__factory, HypNative__factory, MailboxClient__factory, Mailbox__factory, } from '@hyperlane-xyz/core';
4
+ import { EvmIsmModule, HookType, IsmType, TestChainName, proxyAdmin, serializeContracts, } from '@hyperlane-xyz/sdk';
5
+ import { randomInt } from '@hyperlane-xyz/utils';
6
6
  import { TestCoreDeployer } from '../core/TestCoreDeployer.js';
7
7
  import { HyperlaneProxyFactoryDeployer } from '../deploy/HyperlaneProxyFactoryDeployer.js';
8
8
  import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
@@ -14,7 +14,9 @@ import { TokenType } from './config.js';
14
14
  const randomRemoteRouters = (n) => {
15
15
  const routers = {};
16
16
  for (let domain = 0; domain < n; domain++) {
17
- routers[domain] = randomAddress();
17
+ routers[domain] = {
18
+ address: randomAddress(),
19
+ };
18
20
  }
19
21
  return routers;
20
22
  };
@@ -24,7 +26,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
24
26
  const TOKEN_DECIMALS = 18;
25
27
  const chain = TestChainName.test4;
26
28
  let mailbox;
27
- let hookAddress;
28
29
  let ismAddress;
29
30
  let ismFactory;
30
31
  let factories;
@@ -38,8 +39,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
38
39
  let baseConfig;
39
40
  async function validateCoreValues(deployedToken) {
40
41
  expect(await deployedToken.mailbox()).to.equal(mailbox.address);
41
- expect(await deployedToken.hook()).to.equal(hookAddress);
42
- expect(await deployedToken.interchainSecurityModule()).to.equal(constants.AddressZero);
43
42
  expect(await deployedToken.owner()).to.equal(signer.address);
44
43
  }
45
44
  async function sendTxs(txs) {
@@ -60,7 +59,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
60
59
  token = await erc20Factory.deploy(TOKEN_NAME, TOKEN_NAME, TOKEN_SUPPLY, TOKEN_DECIMALS);
61
60
  baseConfig = routerConfigMap[chain];
62
61
  mailbox = Mailbox__factory.connect(baseConfig.mailbox, signer);
63
- hookAddress = await mailbox.defaultHook();
64
62
  ismAddress = await mailbox.defaultIsm();
65
63
  });
66
64
  it('should create with a collateral config', async () => {
@@ -68,13 +66,13 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
68
66
  ...baseConfig,
69
67
  type: TokenType.collateral,
70
68
  token: token.address,
71
- hook: hookAddress,
72
69
  };
73
70
  // Deploy using WarpModule
74
71
  const evmERC20WarpModule = await EvmERC20WarpModule.create({
75
72
  chain,
76
73
  config,
77
74
  multiProvider,
75
+ proxyFactoryFactories: ismFactoryAddresses,
78
76
  });
79
77
  // Let's derive it's onchain token type
80
78
  const { deployedTokenRoute } = evmERC20WarpModule.serialize();
@@ -87,7 +85,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
87
85
  const config = {
88
86
  type: TokenType.collateralVault,
89
87
  token: vault.address,
90
- hook: hookAddress,
91
88
  ...baseConfig,
92
89
  };
93
90
  // Deploy using WarpModule
@@ -95,6 +92,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
95
92
  chain,
96
93
  config,
97
94
  multiProvider,
95
+ proxyFactoryFactories: ismFactoryAddresses,
98
96
  });
99
97
  // Let's derive it's onchain token type
100
98
  const { deployedTokenRoute } = evmERC20WarpModule.serialize();
@@ -108,19 +106,19 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
108
106
  });
109
107
  it('should create with a synthetic config', async () => {
110
108
  const config = {
109
+ ...baseConfig,
111
110
  type: TokenType.synthetic,
112
- hook: hookAddress,
113
111
  name: TOKEN_NAME,
114
112
  symbol: TOKEN_NAME,
115
113
  decimals: TOKEN_DECIMALS,
116
114
  totalSupply: TOKEN_SUPPLY,
117
- ...baseConfig,
118
115
  };
119
116
  // Deploy using WarpModule
120
117
  const evmERC20WarpModule = await EvmERC20WarpModule.create({
121
118
  chain,
122
119
  config,
123
120
  multiProvider,
121
+ proxyFactoryFactories: ismFactoryAddresses,
124
122
  });
125
123
  // Let's derive it's onchain token type
126
124
  const { deployedTokenRoute } = evmERC20WarpModule.serialize();
@@ -137,7 +135,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
137
135
  it('should create with a native config', async () => {
138
136
  const config = {
139
137
  type: TokenType.native,
140
- hook: hookAddress,
141
138
  ...baseConfig,
142
139
  };
143
140
  // Deploy using WarpModule
@@ -145,6 +142,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
145
142
  chain,
146
143
  config,
147
144
  multiProvider,
145
+ proxyFactoryFactories: ismFactoryAddresses,
148
146
  });
149
147
  // Let's derive it's onchain token type
150
148
  const { deployedTokenRoute } = evmERC20WarpModule.serialize();
@@ -159,7 +157,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
159
157
  const config = {
160
158
  ...baseConfig,
161
159
  type: TokenType.native,
162
- hook: hookAddress,
163
160
  remoteRouters: randomRemoteRouters(numOfRouters),
164
161
  };
165
162
  // Deploy using WarpModule
@@ -167,32 +164,53 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
167
164
  chain,
168
165
  config,
169
166
  multiProvider,
167
+ proxyFactoryFactories: ismFactoryAddresses,
170
168
  });
171
169
  const { remoteRouters } = await evmERC20WarpModule.read();
172
170
  expect(Object.keys(remoteRouters).length).to.equal(numOfRouters);
173
171
  });
174
172
  describe('Update', async () => {
173
+ const owner = randomAddress();
175
174
  const ismConfigToUpdate = [
176
175
  {
177
176
  type: IsmType.TRUSTED_RELAYER,
178
- relayer: randomAddress(),
177
+ relayer: owner,
179
178
  },
180
179
  {
181
180
  type: IsmType.FALLBACK_ROUTING,
182
- owner: randomAddress(),
181
+ owner: owner,
183
182
  domains: {},
184
183
  },
185
184
  {
186
185
  type: IsmType.PAUSABLE,
187
- owner: randomAddress(),
186
+ owner: owner,
188
187
  paused: false,
189
188
  },
190
189
  ];
190
+ const hookConfigToUpdate = [
191
+ {
192
+ type: HookType.PROTOCOL_FEE,
193
+ beneficiary: owner,
194
+ owner: owner,
195
+ maxProtocolFee: '1337',
196
+ protocolFee: '1337',
197
+ },
198
+ {
199
+ type: HookType.INTERCHAIN_GAS_PAYMASTER,
200
+ owner: owner,
201
+ beneficiary: owner,
202
+ oracleKey: owner,
203
+ overhead: {},
204
+ oracleConfig: {},
205
+ },
206
+ {
207
+ type: HookType.MERKLE_TREE,
208
+ },
209
+ ];
191
210
  it('should deploy and set a new Ism', async () => {
192
211
  const config = {
193
212
  ...baseConfig,
194
213
  type: TokenType.native,
195
- hook: hookAddress,
196
214
  interchainSecurityModule: ismAddress,
197
215
  };
198
216
  // Deploy using WarpModule
@@ -200,12 +218,12 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
200
218
  chain,
201
219
  config,
202
220
  multiProvider,
221
+ proxyFactoryFactories: ismFactoryAddresses,
203
222
  });
204
223
  const actualConfig = await evmERC20WarpModule.read();
205
224
  for (const interchainSecurityModule of ismConfigToUpdate) {
206
225
  const expectedConfig = {
207
226
  ...actualConfig,
208
- ismFactoryAddresses,
209
227
  interchainSecurityModule,
210
228
  };
211
229
  await sendTxs(await evmERC20WarpModule.update(expectedConfig));
@@ -217,7 +235,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
217
235
  const config = {
218
236
  ...baseConfig,
219
237
  type: TokenType.native,
220
- hook: hookAddress,
221
238
  interchainSecurityModule: ismAddress,
222
239
  };
223
240
  // Deploy using WarpModule
@@ -225,6 +242,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
225
242
  chain,
226
243
  config,
227
244
  multiProvider,
245
+ proxyFactoryFactories: ismFactoryAddresses,
228
246
  });
229
247
  const actualConfig = await evmERC20WarpModule.read();
230
248
  const owner = randomAddress();
@@ -235,7 +253,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
235
253
  };
236
254
  const expectedConfig = {
237
255
  ...actualConfig,
238
- ismFactoryAddresses,
239
256
  interchainSecurityModule,
240
257
  };
241
258
  await sendTxs(await evmERC20WarpModule.update(expectedConfig));
@@ -245,6 +262,75 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
245
262
  const txs = await evmERC20WarpModule.update(expectedConfig);
246
263
  expect(txs.length).to.equal(0);
247
264
  });
265
+ it('should update and set a new Hook based on config', async () => {
266
+ const config = {
267
+ ...baseConfig,
268
+ type: TokenType.native,
269
+ };
270
+ // Deploy using WarpModule
271
+ const evmERC20WarpModule = await EvmERC20WarpModule.create({
272
+ chain,
273
+ config,
274
+ multiProvider,
275
+ proxyFactoryFactories: ismFactoryAddresses,
276
+ });
277
+ const actualConfig = await evmERC20WarpModule.read();
278
+ for (const hook of hookConfigToUpdate) {
279
+ const expectedConfig = {
280
+ ...actualConfig,
281
+ hook,
282
+ };
283
+ await sendTxs(await evmERC20WarpModule.update(expectedConfig));
284
+ const updatedConfig = (await evmERC20WarpModule.read())
285
+ .hook;
286
+ expect(normalizeConfig(updatedConfig)).to.deep.equal(hook);
287
+ }
288
+ });
289
+ it('should set new deployed hook mailbox to WarpConfig.owner', async () => {
290
+ const config = {
291
+ ...baseConfig,
292
+ type: TokenType.native,
293
+ };
294
+ // Deploy using WarpModule
295
+ const evmERC20WarpModule = await EvmERC20WarpModule.create({
296
+ chain,
297
+ config,
298
+ multiProvider,
299
+ proxyFactoryFactories: ismFactoryAddresses,
300
+ });
301
+ const actualConfig = await evmERC20WarpModule.read();
302
+ const expectedConfig = {
303
+ ...actualConfig,
304
+ hook: hookConfigToUpdate.find((c) => c.type === HookType.MERKLE_TREE),
305
+ };
306
+ await sendTxs(await evmERC20WarpModule.update(expectedConfig));
307
+ const updatedConfig = (await evmERC20WarpModule.read())
308
+ .hook;
309
+ const hook = MailboxClient__factory.connect(updatedConfig.address, multiProvider.getProvider(chain));
310
+ expect(await hook.mailbox()).to.equal(expectedConfig.mailbox);
311
+ });
312
+ it("should set Proxied Hook's proxyAdmins to WarpConfig.proxyAdmin", async () => {
313
+ const config = {
314
+ ...baseConfig,
315
+ type: TokenType.native,
316
+ };
317
+ // Deploy using WarpModule
318
+ const evmERC20WarpModule = await EvmERC20WarpModule.create({
319
+ chain,
320
+ config,
321
+ multiProvider,
322
+ proxyFactoryFactories: ismFactoryAddresses,
323
+ });
324
+ const actualConfig = await evmERC20WarpModule.read();
325
+ const expectedConfig = {
326
+ ...actualConfig,
327
+ hook: hookConfigToUpdate.find((c) => c.type === HookType.INTERCHAIN_GAS_PAYMASTER),
328
+ };
329
+ await sendTxs(await evmERC20WarpModule.update(expectedConfig));
330
+ const updatedConfig = (await evmERC20WarpModule.read())
331
+ .hook;
332
+ expect(await proxyAdmin(multiProvider.getProvider(chain), updatedConfig.address)).to.equal(expectedConfig.proxyAdmin?.address);
333
+ });
248
334
  it('should update a mutable Ism', async () => {
249
335
  const ismConfig = {
250
336
  type: IsmType.ROUTING,
@@ -265,18 +351,17 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
265
351
  const config = {
266
352
  ...baseConfig,
267
353
  type: TokenType.native,
268
- hook: hookAddress,
269
354
  interchainSecurityModule: deployedIsm,
270
355
  };
271
356
  const evmERC20WarpModule = await EvmERC20WarpModule.create({
272
357
  chain,
273
358
  config,
274
359
  multiProvider,
360
+ proxyFactoryFactories: ismFactoryAddresses,
275
361
  });
276
362
  const actualConfig = await evmERC20WarpModule.read();
277
363
  const expectedConfig = {
278
364
  ...actualConfig,
279
- ismFactoryAddresses,
280
365
  interchainSecurityModule: {
281
366
  type: IsmType.ROUTING,
282
367
  owner: randomAddress(),
@@ -289,11 +374,10 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
289
374
  const updatedConfig = normalizeConfig((await evmERC20WarpModule.read()).interchainSecurityModule);
290
375
  expect(updatedConfig).to.deep.equal(expectedConfig.interchainSecurityModule);
291
376
  });
292
- it('should update connected routers', async () => {
377
+ it('should enroll connected routers', async () => {
293
378
  const config = {
294
379
  ...baseConfig,
295
380
  type: TokenType.native,
296
- hook: hookAddress,
297
381
  ismFactoryAddresses,
298
382
  };
299
383
  // Deploy using WarpModule
@@ -304,8 +388,9 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
304
388
  interchainSecurityModule: ismAddress,
305
389
  },
306
390
  multiProvider,
391
+ proxyFactoryFactories: ismFactoryAddresses,
307
392
  });
308
- const numOfRouters = Math.floor(Math.random() * 10);
393
+ const numOfRouters = randomInt(10, 0);
309
394
  await sendTxs(await evmERC20WarpModule.update({
310
395
  ...config,
311
396
  remoteRouters: randomRemoteRouters(numOfRouters),
@@ -313,11 +398,40 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
313
398
  const updatedConfig = await evmERC20WarpModule.read();
314
399
  expect(Object.keys(updatedConfig.remoteRouters).length).to.be.equal(numOfRouters);
315
400
  });
316
- it('should only extend routers if they are new ones are different', async () => {
401
+ it('should unenroll connected routers', async () => {
402
+ const config = {
403
+ ...baseConfig,
404
+ type: TokenType.native,
405
+ ismFactoryAddresses,
406
+ };
407
+ // Deploy using WarpModule
408
+ const evmERC20WarpModule = await EvmERC20WarpModule.create({
409
+ chain,
410
+ config: {
411
+ ...config,
412
+ interchainSecurityModule: ismAddress,
413
+ },
414
+ multiProvider,
415
+ proxyFactoryFactories: ismFactoryAddresses,
416
+ });
417
+ const numOfRouters = randomInt(10, 0);
418
+ await sendTxs(await evmERC20WarpModule.update({
419
+ ...config,
420
+ remoteRouters: randomRemoteRouters(numOfRouters),
421
+ }));
422
+ // Read config & delete remoteRouters
423
+ const existingConfig = await evmERC20WarpModule.read();
424
+ for (let i = 0; i < numOfRouters; i++) {
425
+ delete existingConfig.remoteRouters?.[i.toString()];
426
+ await sendTxs(await evmERC20WarpModule.update(existingConfig));
427
+ const updatedConfig = await evmERC20WarpModule.read();
428
+ expect(Object.keys(updatedConfig.remoteRouters).length).to.be.equal(numOfRouters - (i + 1));
429
+ }
430
+ });
431
+ it('should replace an enrollment if they are new one different, if the config lengths are the same', async () => {
317
432
  const config = {
318
433
  ...baseConfig,
319
434
  type: TokenType.native,
320
- hook: hookAddress,
321
435
  ismFactoryAddresses,
322
436
  };
323
437
  // Deploy using WarpModule
@@ -328,6 +442,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
328
442
  interchainSecurityModule: ismAddress,
329
443
  },
330
444
  multiProvider,
445
+ proxyFactoryFactories: ismFactoryAddresses,
331
446
  });
332
447
  const remoteRouters = randomRemoteRouters(1);
333
448
  await sendTxs(await evmERC20WarpModule.update({
@@ -344,22 +459,25 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
344
459
  expect(txs.length).to.equal(0);
345
460
  await sendTxs(txs);
346
461
  // Try to extend with the different remoteRouters, but same length
462
+ const extendedRemoteRouter = {
463
+ 3: {
464
+ address: randomAddress(),
465
+ },
466
+ };
347
467
  txs = await evmERC20WarpModule.update({
348
468
  ...config,
349
- remoteRouters: {
350
- 3: randomAddress(),
351
- },
469
+ remoteRouters: extendedRemoteRouter,
352
470
  });
353
- expect(txs.length).to.equal(1);
471
+ expect(txs.length).to.equal(2);
354
472
  await sendTxs(txs);
355
473
  updatedConfig = await evmERC20WarpModule.read();
356
- expect(Object.keys(updatedConfig.remoteRouters).length).to.be.equal(2);
474
+ expect(Object.keys(updatedConfig.remoteRouters).length).to.be.equal(1);
475
+ expect(updatedConfig.remoteRouters?.['3'].address.toLowerCase()).to.be.eq(extendedRemoteRouter['3'].address.toLowerCase());
357
476
  });
358
477
  it('should update the owner only if they are different', async () => {
359
478
  const config = {
360
479
  ...baseConfig,
361
480
  type: TokenType.native,
362
- hook: hookAddress,
363
481
  ismFactoryAddresses,
364
482
  };
365
483
  const owner = signer.address.toLowerCase();
@@ -370,6 +488,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
370
488
  interchainSecurityModule: ismAddress,
371
489
  },
372
490
  multiProvider,
491
+ proxyFactoryFactories: ismFactoryAddresses,
373
492
  });
374
493
  const currentConfig = await evmERC20WarpModule.read();
375
494
  expect(currentConfig.owner.toLowerCase()).to.equal(owner);
@@ -391,8 +510,6 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
391
510
  const config = {
392
511
  ...baseConfig,
393
512
  type: TokenType.native,
394
- hook: hookAddress,
395
- ismFactoryAddresses,
396
513
  };
397
514
  const owner = signer.address.toLowerCase();
398
515
  const evmERC20WarpModule = await EvmERC20WarpModule.create({
@@ -402,6 +519,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
402
519
  interchainSecurityModule: ismAddress,
403
520
  },
404
521
  multiProvider,
522
+ proxyFactoryFactories: ismFactoryAddresses,
405
523
  });
406
524
  const currentConfig = await evmERC20WarpModule.read();
407
525
  expect(currentConfig.proxyAdmin?.owner.toLowerCase()).to.equal(owner);
@@ -427,10 +545,10 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
427
545
  const config = {
428
546
  ...baseConfig,
429
547
  type: TokenType.native,
430
- hook: hookAddress,
431
- ismFactoryAddresses,
432
548
  remoteRouters: {
433
- [domain]: randomAddress(),
549
+ [domain]: {
550
+ address: randomAddress(),
551
+ },
434
552
  },
435
553
  };
436
554
  // Deploy using WarpModule
@@ -440,6 +558,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
440
558
  ...config,
441
559
  },
442
560
  multiProvider,
561
+ proxyFactoryFactories: ismFactoryAddresses,
443
562
  });
444
563
  await sendTxs(await evmERC20WarpModule.update({
445
564
  ...config,