@hyperlane-xyz/core 1.2.2 → 1.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 (524) hide show
  1. package/contracts/HyperlaneConnectionClient.sol +5 -4
  2. package/contracts/Mailbox.sol +3 -41
  3. package/contracts/OwnableMulticall.sol +11 -11
  4. package/contracts/Router.sol +4 -4
  5. package/contracts/ValidatorAnnounce.sol +2 -2
  6. package/contracts/igps/InterchainGasPaymaster.sol +2 -2
  7. package/contracts/igps/OverheadIgp.sol +1 -1
  8. package/contracts/igps/gas-oracles/StorageGasOracle.sol +1 -1
  9. package/contracts/interfaces/IAggregationIsm.sol +19 -0
  10. package/contracts/interfaces/IHyperlaneConnectionClient.sol +20 -0
  11. package/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol +8 -0
  12. package/contracts/interfaces/IMailbox.sol +71 -0
  13. package/contracts/interfaces/IRouter.sol +15 -0
  14. package/{interfaces → contracts/interfaces/isms}/IMultisigIsm.sol +1 -1
  15. package/contracts/interfaces/middleware/IInterchainAccountRouter.sol +50 -0
  16. package/contracts/interfaces/middleware/IInterchainQueryRouter.sol +18 -0
  17. package/contracts/isms/aggregation/AbstractAggregationIsm.sol +72 -0
  18. package/contracts/isms/aggregation/StaticAggregationIsm.sol +33 -0
  19. package/contracts/isms/aggregation/StaticAggregationIsmFactory.sol +16 -0
  20. package/contracts/isms/multisig/AbstractMultisigIsm.sol +124 -0
  21. package/contracts/isms/{MultisigIsm.sol → multisig/LegacyMultisigIsm.sol} +19 -60
  22. package/contracts/isms/multisig/StaticMultisigIsm.sol +33 -0
  23. package/contracts/isms/multisig/StaticMultisigIsmFactory.sol +16 -0
  24. package/contracts/libs/Call.sol +12 -10
  25. package/contracts/libs/CheckpointLib.sol +54 -0
  26. package/contracts/libs/MetaProxy.sol +40 -0
  27. package/contracts/libs/StaticMOfNAddressSetFactory.sol +98 -0
  28. package/contracts/libs/TypeCasts.sol +0 -20
  29. package/contracts/libs/isms/AggregationIsmMetadata.sol +72 -0
  30. package/contracts/libs/{MultisigIsmMetadata.sol → isms/LegacyMultisigIsmMetadata.sol} +1 -1
  31. package/contracts/libs/isms/MultisigIsmMetadata.sol +91 -0
  32. package/contracts/libs/middleware/InterchainAccountMessage.sol +86 -0
  33. package/contracts/libs/middleware/InterchainQueryMessage.sol +125 -0
  34. package/contracts/middleware/InterchainAccountRouter.sol +448 -94
  35. package/contracts/middleware/InterchainQueryRouter.sol +50 -27
  36. package/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol +2 -2
  37. package/contracts/mock/MockMailbox.sol +1 -1
  38. package/contracts/test/TestHyperlaneConnectionClient.sol +5 -1
  39. package/contracts/test/TestIsm.sol +1 -1
  40. package/contracts/test/TestLegacyMultisigIsm.sol +16 -0
  41. package/contracts/test/TestLiquidityLayerMessageRecipient.sol +1 -1
  42. package/contracts/test/TestMailbox.sol +1 -1
  43. package/contracts/test/TestQuerySender.sol +2 -2
  44. package/contracts/test/TestRecipient.sol +9 -6
  45. package/contracts/test/TestSendReceiver.sol +3 -3
  46. package/contracts/test/TestTokenRecipient.sol +1 -1
  47. package/contracts/test/bad-recipient/BadRecipient1.sol +1 -1
  48. package/contracts/test/bad-recipient/BadRecipient3.sol +1 -1
  49. package/contracts/test/bad-recipient/BadRecipient5.sol +1 -1
  50. package/contracts/test/bad-recipient/BadRecipient6.sol +1 -1
  51. package/dist/contracts/GasRouter.d.ts +2 -2
  52. package/dist/contracts/GasRouter.d.ts.map +1 -1
  53. package/dist/contracts/OwnableMulticall.d.ts +16 -94
  54. package/dist/contracts/OwnableMulticall.d.ts.map +1 -1
  55. package/dist/contracts/Router.d.ts +2 -2
  56. package/dist/contracts/Router.d.ts.map +1 -1
  57. package/dist/contracts/index.d.ts +4 -0
  58. package/dist/contracts/index.d.ts.map +1 -1
  59. package/dist/contracts/interfaces/IAggregationIsm.d.ts +76 -0
  60. package/dist/contracts/interfaces/IAggregationIsm.d.ts.map +1 -0
  61. package/dist/contracts/{test/TestMultisigIsm.js → interfaces/IAggregationIsm.js} +1 -1
  62. package/dist/contracts/interfaces/IAggregationIsm.js.map +1 -0
  63. package/dist/{interfaces → contracts/interfaces}/IGasOracle.d.ts +1 -1
  64. package/dist/contracts/interfaces/IGasOracle.d.ts.map +1 -0
  65. package/dist/contracts/interfaces/IGasOracle.js.map +1 -0
  66. package/dist/contracts/interfaces/IHyperlaneConnectionClient.d.ts +107 -0
  67. package/dist/contracts/interfaces/IHyperlaneConnectionClient.d.ts.map +1 -0
  68. package/dist/contracts/interfaces/IHyperlaneConnectionClient.js +4 -0
  69. package/dist/contracts/interfaces/IHyperlaneConnectionClient.js.map +1 -0
  70. package/dist/{interfaces → contracts/interfaces}/IInterchainGasPaymaster.d.ts +1 -1
  71. package/dist/contracts/interfaces/IInterchainGasPaymaster.d.ts.map +1 -0
  72. package/dist/contracts/interfaces/IInterchainGasPaymaster.js.map +1 -0
  73. package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts +1 -1
  74. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts.map +1 -0
  75. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js.map +1 -0
  76. package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts +1 -1
  77. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts.map +1 -0
  78. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js.map +1 -0
  79. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
  80. package/dist/contracts/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
  81. package/dist/{interfaces → contracts/interfaces}/ILiquidityLayerMessageRecipient.d.ts +1 -1
  82. package/dist/contracts/interfaces/ILiquidityLayerMessageRecipient.d.ts.map +1 -0
  83. package/dist/contracts/interfaces/ILiquidityLayerMessageRecipient.js.map +1 -0
  84. package/dist/{interfaces → contracts/interfaces}/ILiquidityLayerRouter.d.ts +1 -1
  85. package/dist/contracts/interfaces/ILiquidityLayerRouter.d.ts.map +1 -0
  86. package/dist/contracts/interfaces/ILiquidityLayerRouter.js.map +1 -0
  87. package/dist/{interfaces → contracts/interfaces}/IMailbox.d.ts +73 -5
  88. package/dist/contracts/interfaces/IMailbox.d.ts.map +1 -0
  89. package/dist/contracts/interfaces/IMailbox.js.map +1 -0
  90. package/dist/{interfaces → contracts/interfaces}/IMessageRecipient.d.ts +1 -1
  91. package/dist/contracts/interfaces/IMessageRecipient.d.ts.map +1 -0
  92. package/dist/contracts/interfaces/IMessageRecipient.js.map +1 -0
  93. package/dist/contracts/interfaces/IRouter.d.ts +83 -0
  94. package/dist/contracts/interfaces/IRouter.d.ts.map +1 -0
  95. package/dist/contracts/{isms/MultisigIsm.js → interfaces/IRouter.js} +1 -1
  96. package/dist/contracts/interfaces/IRouter.js.map +1 -0
  97. package/dist/{interfaces → contracts/interfaces}/IValidatorAnnounce.d.ts +1 -1
  98. package/dist/contracts/interfaces/IValidatorAnnounce.d.ts.map +1 -0
  99. package/dist/contracts/interfaces/IValidatorAnnounce.js.map +1 -0
  100. package/dist/{interfaces → contracts/interfaces}/index.d.ts +7 -3
  101. package/dist/contracts/interfaces/index.d.ts.map +1 -0
  102. package/dist/contracts/interfaces/index.js.map +1 -0
  103. package/dist/{interfaces → contracts/interfaces/isms}/IMultisigIsm.d.ts +1 -1
  104. package/dist/contracts/interfaces/isms/IMultisigIsm.d.ts.map +1 -0
  105. package/dist/contracts/interfaces/isms/IMultisigIsm.js.map +1 -0
  106. package/dist/contracts/interfaces/isms/index.d.ts +2 -0
  107. package/dist/contracts/interfaces/isms/index.d.ts.map +1 -0
  108. package/dist/contracts/interfaces/isms/index.js +3 -0
  109. package/dist/contracts/interfaces/isms/index.js.map +1 -0
  110. package/dist/contracts/interfaces/middleware/IInterchainAccountRouter.d.ts +127 -0
  111. package/dist/contracts/interfaces/middleware/IInterchainAccountRouter.d.ts.map +1 -0
  112. package/dist/contracts/interfaces/middleware/IInterchainAccountRouter.js.map +1 -0
  113. package/dist/contracts/interfaces/middleware/IInterchainQueryRouter.d.ts +88 -0
  114. package/dist/contracts/interfaces/middleware/IInterchainQueryRouter.d.ts.map +1 -0
  115. package/dist/contracts/interfaces/middleware/IInterchainQueryRouter.js.map +1 -0
  116. package/dist/contracts/interfaces/middleware/index.d.ts +3 -0
  117. package/dist/contracts/interfaces/middleware/index.d.ts.map +1 -0
  118. package/dist/contracts/interfaces/middleware/index.js +3 -0
  119. package/dist/contracts/interfaces/middleware/index.js.map +1 -0
  120. package/dist/contracts/isms/aggregation/AbstractAggregationIsm.d.ts +67 -0
  121. package/dist/contracts/isms/aggregation/AbstractAggregationIsm.d.ts.map +1 -0
  122. package/dist/contracts/isms/aggregation/AbstractAggregationIsm.js +4 -0
  123. package/dist/contracts/isms/aggregation/AbstractAggregationIsm.js.map +1 -0
  124. package/dist/contracts/isms/aggregation/StaticAggregationIsm.d.ts +67 -0
  125. package/dist/contracts/isms/aggregation/StaticAggregationIsm.d.ts.map +1 -0
  126. package/dist/contracts/isms/aggregation/StaticAggregationIsm.js +4 -0
  127. package/dist/contracts/isms/aggregation/StaticAggregationIsm.js.map +1 -0
  128. package/dist/contracts/isms/aggregation/StaticAggregationIsmFactory.d.ts +59 -0
  129. package/dist/contracts/isms/aggregation/StaticAggregationIsmFactory.d.ts.map +1 -0
  130. package/dist/contracts/isms/aggregation/StaticAggregationIsmFactory.js +4 -0
  131. package/dist/contracts/isms/aggregation/StaticAggregationIsmFactory.js.map +1 -0
  132. package/dist/contracts/isms/aggregation/index.d.ts +4 -0
  133. package/dist/contracts/isms/aggregation/index.d.ts.map +1 -0
  134. package/dist/contracts/isms/aggregation/index.js +3 -0
  135. package/dist/contracts/isms/aggregation/index.js.map +1 -0
  136. package/dist/contracts/isms/index.d.ts +4 -1
  137. package/dist/contracts/isms/index.d.ts.map +1 -1
  138. package/dist/contracts/isms/index.js +1 -0
  139. package/dist/contracts/isms/index.js.map +1 -1
  140. package/dist/contracts/isms/multisig/AbstractMultisigIsm.d.ts +59 -0
  141. package/dist/contracts/isms/multisig/AbstractMultisigIsm.d.ts.map +1 -0
  142. package/dist/contracts/isms/multisig/AbstractMultisigIsm.js +4 -0
  143. package/dist/contracts/isms/multisig/AbstractMultisigIsm.js.map +1 -0
  144. package/dist/contracts/isms/{MultisigIsm.d.ts → multisig/LegacyMultisigIsm.d.ts} +5 -5
  145. package/dist/contracts/isms/multisig/LegacyMultisigIsm.d.ts.map +1 -0
  146. package/dist/contracts/isms/multisig/LegacyMultisigIsm.js +4 -0
  147. package/dist/contracts/isms/multisig/LegacyMultisigIsm.js.map +1 -0
  148. package/dist/contracts/isms/multisig/StaticMultisigIsm.d.ts +59 -0
  149. package/dist/contracts/isms/multisig/StaticMultisigIsm.d.ts.map +1 -0
  150. package/dist/contracts/isms/multisig/StaticMultisigIsm.js +4 -0
  151. package/dist/contracts/isms/multisig/StaticMultisigIsm.js.map +1 -0
  152. package/dist/contracts/isms/multisig/StaticMultisigIsmFactory.d.ts +59 -0
  153. package/dist/contracts/isms/multisig/StaticMultisigIsmFactory.d.ts.map +1 -0
  154. package/dist/contracts/isms/multisig/StaticMultisigIsmFactory.js +4 -0
  155. package/dist/contracts/isms/multisig/StaticMultisigIsmFactory.js.map +1 -0
  156. package/dist/contracts/isms/multisig/index.d.ts +5 -0
  157. package/dist/contracts/isms/multisig/index.d.ts.map +1 -0
  158. package/dist/contracts/isms/multisig/index.js +3 -0
  159. package/dist/contracts/isms/multisig/index.js.map +1 -0
  160. package/dist/contracts/libs/StaticMOfNAddressSetFactory.d.ts +59 -0
  161. package/dist/contracts/libs/StaticMOfNAddressSetFactory.d.ts.map +1 -0
  162. package/dist/contracts/libs/StaticMOfNAddressSetFactory.js +4 -0
  163. package/dist/contracts/libs/StaticMOfNAddressSetFactory.js.map +1 -0
  164. package/dist/contracts/libs/index.d.ts +2 -0
  165. package/dist/contracts/libs/index.d.ts.map +1 -0
  166. package/dist/contracts/libs/index.js +3 -0
  167. package/dist/contracts/libs/index.js.map +1 -0
  168. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +170 -72
  169. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  170. package/dist/contracts/middleware/InterchainQueryRouter.d.ts +32 -16
  171. package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
  172. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +2 -2
  173. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -1
  174. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +2 -2
  175. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -1
  176. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts +2 -2
  177. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts.map +1 -1
  178. package/dist/contracts/test/LightTestRecipient.d.ts +54 -1
  179. package/dist/contracts/test/LightTestRecipient.d.ts.map +1 -1
  180. package/dist/contracts/test/TestGasRouter.d.ts +2 -2
  181. package/dist/contracts/test/TestGasRouter.d.ts.map +1 -1
  182. package/dist/contracts/test/{TestMultisigIsm.d.ts → TestLegacyMultisigIsm.d.ts} +5 -13
  183. package/dist/contracts/test/TestLegacyMultisigIsm.d.ts.map +1 -0
  184. package/dist/contracts/test/TestLegacyMultisigIsm.js +4 -0
  185. package/dist/contracts/test/TestLegacyMultisigIsm.js.map +1 -0
  186. package/dist/contracts/test/TestRecipient.d.ts +54 -1
  187. package/dist/contracts/test/TestRecipient.d.ts.map +1 -1
  188. package/dist/contracts/test/TestRouter.d.ts +2 -2
  189. package/dist/contracts/test/TestRouter.d.ts.map +1 -1
  190. package/dist/contracts/test/index.d.ts +1 -1
  191. package/dist/contracts/test/index.d.ts.map +1 -1
  192. package/dist/factories/contracts/GasRouter__factory.js +1 -1
  193. package/dist/factories/contracts/GasRouter__factory.js.map +1 -1
  194. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  195. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  196. package/dist/factories/contracts/OwnableMulticall__factory.d.ts +10 -43
  197. package/dist/factories/contracts/OwnableMulticall__factory.d.ts.map +1 -1
  198. package/dist/factories/contracts/OwnableMulticall__factory.js +20 -80
  199. package/dist/factories/contracts/OwnableMulticall__factory.js.map +1 -1
  200. package/dist/factories/contracts/Router__factory.js +1 -1
  201. package/dist/factories/contracts/Router__factory.js.map +1 -1
  202. package/dist/factories/contracts/ValidatorAnnounce__factory.d.ts +1 -1
  203. package/dist/factories/contracts/ValidatorAnnounce__factory.js +1 -1
  204. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.d.ts +1 -1
  205. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.js +1 -1
  206. package/dist/factories/contracts/igps/OverheadIgp__factory.d.ts +1 -1
  207. package/dist/factories/contracts/igps/OverheadIgp__factory.js +1 -1
  208. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.d.ts +1 -1
  209. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.js +1 -1
  210. package/dist/factories/contracts/index.d.ts +2 -0
  211. package/dist/factories/contracts/index.d.ts.map +1 -1
  212. package/dist/factories/contracts/index.js +3 -1
  213. package/dist/factories/contracts/index.js.map +1 -1
  214. package/dist/factories/contracts/interfaces/IAggregationIsm__factory.d.ts +23 -0
  215. package/dist/factories/contracts/interfaces/IAggregationIsm__factory.d.ts.map +1 -0
  216. package/dist/factories/contracts/interfaces/IAggregationIsm__factory.js +79 -0
  217. package/dist/factories/contracts/interfaces/IAggregationIsm__factory.js.map +1 -0
  218. package/dist/factories/{interfaces → contracts/interfaces}/IGasOracle__factory.d.ts +1 -1
  219. package/dist/factories/contracts/interfaces/IGasOracle__factory.d.ts.map +1 -0
  220. package/dist/factories/contracts/interfaces/IGasOracle__factory.js.map +1 -0
  221. package/dist/factories/contracts/interfaces/IHyperlaneConnectionClient__factory.d.ts +29 -0
  222. package/dist/factories/contracts/interfaces/IHyperlaneConnectionClient__factory.d.ts.map +1 -0
  223. package/dist/factories/contracts/interfaces/IHyperlaneConnectionClient__factory.js +96 -0
  224. package/dist/factories/contracts/interfaces/IHyperlaneConnectionClient__factory.js.map +1 -0
  225. package/dist/factories/{interfaces → contracts/interfaces}/IInterchainGasPaymaster__factory.d.ts +1 -1
  226. package/dist/factories/contracts/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -0
  227. package/dist/factories/contracts/interfaces/IInterchainGasPaymaster__factory.js.map +1 -0
  228. package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts +1 -1
  229. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts.map +1 -0
  230. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js.map +1 -0
  231. package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts +1 -1
  232. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts.map +1 -0
  233. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js.map +1 -0
  234. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
  235. package/dist/factories/contracts/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
  236. package/dist/factories/{interfaces → contracts/interfaces}/ILiquidityLayerMessageRecipient__factory.d.ts +1 -1
  237. package/dist/factories/contracts/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts.map +1 -0
  238. package/dist/factories/contracts/interfaces/ILiquidityLayerMessageRecipient__factory.js.map +1 -0
  239. package/dist/factories/{interfaces → contracts/interfaces}/ILiquidityLayerRouter__factory.d.ts +1 -1
  240. package/dist/factories/contracts/interfaces/ILiquidityLayerRouter__factory.d.ts.map +1 -0
  241. package/dist/factories/contracts/interfaces/ILiquidityLayerRouter__factory.js.map +1 -0
  242. package/dist/factories/contracts/interfaces/IMailbox__factory.d.ts +36 -0
  243. package/dist/factories/contracts/interfaces/IMailbox__factory.d.ts.map +1 -0
  244. package/dist/factories/{interfaces → contracts/interfaces}/IMailbox__factory.js +114 -0
  245. package/dist/factories/contracts/interfaces/IMailbox__factory.js.map +1 -0
  246. package/dist/factories/{interfaces → contracts/interfaces}/IMessageRecipient__factory.d.ts +1 -1
  247. package/dist/factories/contracts/interfaces/IMessageRecipient__factory.d.ts.map +1 -0
  248. package/dist/factories/contracts/interfaces/IMessageRecipient__factory.js.map +1 -0
  249. package/dist/factories/{interfaces/IMailbox__factory.d.ts → contracts/interfaces/IRouter__factory.d.ts} +5 -5
  250. package/dist/factories/contracts/interfaces/IRouter__factory.d.ts.map +1 -0
  251. package/dist/factories/contracts/interfaces/IRouter__factory.js +86 -0
  252. package/dist/factories/contracts/interfaces/IRouter__factory.js.map +1 -0
  253. package/dist/factories/{interfaces → contracts/interfaces}/IValidatorAnnounce__factory.d.ts +1 -1
  254. package/dist/factories/contracts/interfaces/IValidatorAnnounce__factory.d.ts.map +1 -0
  255. package/dist/factories/contracts/interfaces/IValidatorAnnounce__factory.js.map +1 -0
  256. package/dist/factories/{interfaces → contracts/interfaces}/index.d.ts +5 -3
  257. package/dist/factories/contracts/interfaces/index.d.ts.map +1 -0
  258. package/dist/factories/{interfaces → contracts/interfaces}/index.js +9 -7
  259. package/dist/factories/contracts/interfaces/index.js.map +1 -0
  260. package/dist/factories/{interfaces → contracts/interfaces/isms}/IMultisigIsm__factory.d.ts +1 -1
  261. package/dist/factories/contracts/interfaces/isms/IMultisigIsm__factory.d.ts.map +1 -0
  262. package/dist/factories/contracts/interfaces/isms/IMultisigIsm__factory.js.map +1 -0
  263. package/dist/factories/contracts/interfaces/isms/index.d.ts +2 -0
  264. package/dist/factories/contracts/interfaces/isms/index.d.ts.map +1 -0
  265. package/dist/factories/contracts/interfaces/isms/index.js +9 -0
  266. package/dist/factories/contracts/interfaces/isms/index.js.map +1 -0
  267. package/dist/factories/{interfaces → contracts/interfaces/middleware}/IInterchainAccountRouter__factory.d.ts +3 -13
  268. package/dist/factories/contracts/interfaces/middleware/IInterchainAccountRouter__factory.d.ts.map +1 -0
  269. package/dist/factories/contracts/interfaces/middleware/IInterchainAccountRouter__factory.js +265 -0
  270. package/dist/factories/contracts/interfaces/middleware/IInterchainAccountRouter__factory.js.map +1 -0
  271. package/dist/factories/{interfaces → contracts/interfaces/middleware}/IInterchainQueryRouter__factory.d.ts +1 -1
  272. package/dist/factories/contracts/interfaces/middleware/IInterchainQueryRouter__factory.d.ts.map +1 -0
  273. package/dist/factories/{interfaces → contracts/interfaces/middleware}/IInterchainQueryRouter__factory.js +35 -1
  274. package/dist/factories/contracts/interfaces/middleware/IInterchainQueryRouter__factory.js.map +1 -0
  275. package/dist/factories/contracts/interfaces/middleware/index.d.ts +3 -0
  276. package/dist/factories/contracts/interfaces/middleware/index.d.ts.map +1 -0
  277. package/dist/factories/contracts/interfaces/middleware/index.js +11 -0
  278. package/dist/factories/contracts/interfaces/middleware/index.js.map +1 -0
  279. package/dist/factories/contracts/isms/aggregation/AbstractAggregationIsm__factory.d.ts +23 -0
  280. package/dist/factories/contracts/isms/aggregation/AbstractAggregationIsm__factory.d.ts.map +1 -0
  281. package/dist/factories/contracts/isms/aggregation/AbstractAggregationIsm__factory.js +79 -0
  282. package/dist/factories/contracts/isms/aggregation/AbstractAggregationIsm__factory.js.map +1 -0
  283. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +35 -0
  284. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts.map +1 -0
  285. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +89 -0
  286. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js.map +1 -0
  287. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +35 -0
  288. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts.map +1 -0
  289. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +102 -0
  290. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js.map +1 -0
  291. package/dist/factories/contracts/isms/aggregation/index.d.ts +4 -0
  292. package/dist/factories/contracts/isms/aggregation/index.d.ts.map +1 -0
  293. package/dist/factories/contracts/isms/aggregation/index.js +13 -0
  294. package/dist/factories/contracts/isms/aggregation/index.js.map +1 -0
  295. package/dist/factories/contracts/isms/index.d.ts +2 -1
  296. package/dist/factories/contracts/isms/index.d.ts.map +1 -1
  297. package/dist/factories/contracts/isms/index.js +26 -3
  298. package/dist/factories/contracts/isms/index.js.map +1 -1
  299. package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.d.ts +23 -0
  300. package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.d.ts.map +1 -0
  301. package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.js +79 -0
  302. package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.js.map +1 -0
  303. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts +55 -0
  304. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts.map +1 -0
  305. package/dist/factories/contracts/isms/{MultisigIsm__factory.js → multisig/LegacyMultisigIsm__factory.js} +7 -7
  306. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.js.map +1 -0
  307. package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.d.ts +35 -0
  308. package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.d.ts.map +1 -0
  309. package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.js +89 -0
  310. package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.js.map +1 -0
  311. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.d.ts +35 -0
  312. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.d.ts.map +1 -0
  313. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.js +102 -0
  314. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.js.map +1 -0
  315. package/dist/factories/contracts/isms/multisig/index.d.ts +5 -0
  316. package/dist/factories/contracts/isms/multisig/index.d.ts.map +1 -0
  317. package/dist/factories/contracts/isms/multisig/index.js +15 -0
  318. package/dist/factories/contracts/isms/multisig/index.js.map +1 -0
  319. package/dist/factories/contracts/libs/StaticMOfNAddressSetFactory__factory.d.ts +23 -0
  320. package/dist/factories/contracts/libs/StaticMOfNAddressSetFactory__factory.d.ts.map +1 -0
  321. package/dist/factories/contracts/libs/StaticMOfNAddressSetFactory__factory.js +66 -0
  322. package/dist/factories/contracts/libs/StaticMOfNAddressSetFactory__factory.js.map +1 -0
  323. package/dist/factories/contracts/libs/index.d.ts +2 -0
  324. package/dist/factories/contracts/libs/index.d.ts.map +1 -0
  325. package/dist/factories/contracts/libs/index.js +9 -0
  326. package/dist/factories/contracts/libs/index.js.map +1 -0
  327. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +11 -17
  328. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  329. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +319 -39
  330. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  331. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  332. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
  333. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +39 -5
  334. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
  335. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  336. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
  337. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +2 -2
  338. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -1
  339. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  340. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -1
  341. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +2 -2
  342. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -1
  343. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  344. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts.map +1 -1
  345. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +2 -2
  346. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +1 -1
  347. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  348. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  349. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  350. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  351. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  352. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  353. package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts +1 -1
  354. package/dist/factories/contracts/mock/MockPortalBridge__factory.js +1 -1
  355. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
  356. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts.map +1 -1
  357. package/dist/factories/contracts/test/LightTestRecipient__factory.js +53 -1
  358. package/dist/factories/contracts/test/LightTestRecipient__factory.js.map +1 -1
  359. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  360. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts.map +1 -1
  361. package/dist/factories/contracts/test/TestGasRouter__factory.js +2 -2
  362. package/dist/factories/contracts/test/TestGasRouter__factory.js.map +1 -1
  363. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +9 -2
  364. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts.map +1 -1
  365. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +6 -1
  366. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js.map +1 -1
  367. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  368. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  369. package/dist/factories/contracts/test/TestIsm__factory.d.ts +1 -1
  370. package/dist/factories/contracts/test/TestIsm__factory.js +1 -1
  371. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts +48 -0
  372. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts.map +1 -0
  373. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.js +456 -0
  374. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.js.map +1 -0
  375. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts +1 -1
  376. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.js +1 -1
  377. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  378. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  379. package/dist/factories/contracts/test/TestMessage__factory.d.ts +1 -1
  380. package/dist/factories/contracts/test/TestMessage__factory.js +1 -1
  381. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  382. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  383. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  384. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  385. package/dist/factories/contracts/test/TestRecipient__factory.d.ts +1 -1
  386. package/dist/factories/contracts/test/TestRecipient__factory.d.ts.map +1 -1
  387. package/dist/factories/contracts/test/TestRecipient__factory.js +53 -1
  388. package/dist/factories/contracts/test/TestRecipient__factory.js.map +1 -1
  389. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  390. package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
  391. package/dist/factories/contracts/test/TestRouter__factory.js +2 -2
  392. package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
  393. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  394. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  395. package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts +1 -1
  396. package/dist/factories/contracts/test/TestTokenRecipient__factory.js +1 -1
  397. package/dist/factories/contracts/test/bad-recipient/BadRecipient1__factory.d.ts +1 -1
  398. package/dist/factories/contracts/test/bad-recipient/BadRecipient1__factory.js +1 -1
  399. package/dist/factories/contracts/test/bad-recipient/BadRecipient3__factory.d.ts +1 -1
  400. package/dist/factories/contracts/test/bad-recipient/BadRecipient3__factory.js +1 -1
  401. package/dist/factories/contracts/test/bad-recipient/BadRecipient5__factory.d.ts +1 -1
  402. package/dist/factories/contracts/test/bad-recipient/BadRecipient5__factory.js +1 -1
  403. package/dist/factories/contracts/test/bad-recipient/BadRecipient6__factory.d.ts +1 -1
  404. package/dist/factories/contracts/test/bad-recipient/BadRecipient6__factory.js +1 -1
  405. package/dist/factories/contracts/test/index.d.ts +1 -1
  406. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  407. package/dist/factories/contracts/test/index.js +3 -3
  408. package/dist/factories/contracts/test/index.js.map +1 -1
  409. package/dist/factories/index.d.ts +0 -1
  410. package/dist/factories/index.d.ts.map +1 -1
  411. package/dist/factories/index.js +1 -2
  412. package/dist/factories/index.js.map +1 -1
  413. package/dist/index.d.ts +48 -30
  414. package/dist/index.d.ts.map +1 -1
  415. package/dist/index.js +50 -30
  416. package/dist/index.js.map +1 -1
  417. package/package.json +4 -4
  418. package/contracts/middleware/InterchainCallMessage.sol +0 -112
  419. package/contracts/test/TestMultisigIsm.sol +0 -23
  420. package/dist/contracts/isms/MultisigIsm.d.ts.map +0 -1
  421. package/dist/contracts/isms/MultisigIsm.js.map +0 -1
  422. package/dist/contracts/test/TestMultisigIsm.d.ts.map +0 -1
  423. package/dist/contracts/test/TestMultisigIsm.js.map +0 -1
  424. package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts +0 -55
  425. package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts.map +0 -1
  426. package/dist/factories/contracts/isms/MultisigIsm__factory.js.map +0 -1
  427. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts +0 -48
  428. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts.map +0 -1
  429. package/dist/factories/contracts/test/TestMultisigIsm__factory.js +0 -480
  430. package/dist/factories/contracts/test/TestMultisigIsm__factory.js.map +0 -1
  431. package/dist/factories/interfaces/IGasOracle__factory.d.ts.map +0 -1
  432. package/dist/factories/interfaces/IGasOracle__factory.js.map +0 -1
  433. package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts.map +0 -1
  434. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js +0 -114
  435. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js.map +0 -1
  436. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +0 -1
  437. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +0 -1
  438. package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts.map +0 -1
  439. package/dist/factories/interfaces/IInterchainQueryRouter__factory.js.map +0 -1
  440. package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts.map +0 -1
  441. package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js.map +0 -1
  442. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts.map +0 -1
  443. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js.map +0 -1
  444. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +0 -1
  445. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.js.map +0 -1
  446. package/dist/factories/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts.map +0 -1
  447. package/dist/factories/interfaces/ILiquidityLayerMessageRecipient__factory.js.map +0 -1
  448. package/dist/factories/interfaces/ILiquidityLayerRouter__factory.d.ts.map +0 -1
  449. package/dist/factories/interfaces/ILiquidityLayerRouter__factory.js.map +0 -1
  450. package/dist/factories/interfaces/IMailbox__factory.d.ts.map +0 -1
  451. package/dist/factories/interfaces/IMailbox__factory.js.map +0 -1
  452. package/dist/factories/interfaces/IMessageRecipient__factory.d.ts.map +0 -1
  453. package/dist/factories/interfaces/IMessageRecipient__factory.js.map +0 -1
  454. package/dist/factories/interfaces/IMultisigIsm__factory.d.ts.map +0 -1
  455. package/dist/factories/interfaces/IMultisigIsm__factory.js.map +0 -1
  456. package/dist/factories/interfaces/IValidatorAnnounce__factory.d.ts.map +0 -1
  457. package/dist/factories/interfaces/IValidatorAnnounce__factory.js.map +0 -1
  458. package/dist/factories/interfaces/index.d.ts.map +0 -1
  459. package/dist/factories/interfaces/index.js.map +0 -1
  460. package/dist/interfaces/IGasOracle.d.ts.map +0 -1
  461. package/dist/interfaces/IGasOracle.js.map +0 -1
  462. package/dist/interfaces/IInterchainAccountRouter.d.ts +0 -85
  463. package/dist/interfaces/IInterchainAccountRouter.d.ts.map +0 -1
  464. package/dist/interfaces/IInterchainAccountRouter.js.map +0 -1
  465. package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +0 -1
  466. package/dist/interfaces/IInterchainGasPaymaster.js.map +0 -1
  467. package/dist/interfaces/IInterchainQueryRouter.d.ts +0 -72
  468. package/dist/interfaces/IInterchainQueryRouter.d.ts.map +0 -1
  469. package/dist/interfaces/IInterchainQueryRouter.js.map +0 -1
  470. package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts.map +0 -1
  471. package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js.map +0 -1
  472. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts.map +0 -1
  473. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js.map +0 -1
  474. package/dist/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +0 -1
  475. package/dist/interfaces/IInterchainSecurityModule.sol/index.js.map +0 -1
  476. package/dist/interfaces/ILiquidityLayerMessageRecipient.d.ts.map +0 -1
  477. package/dist/interfaces/ILiquidityLayerMessageRecipient.js.map +0 -1
  478. package/dist/interfaces/ILiquidityLayerRouter.d.ts.map +0 -1
  479. package/dist/interfaces/ILiquidityLayerRouter.js.map +0 -1
  480. package/dist/interfaces/IMailbox.d.ts.map +0 -1
  481. package/dist/interfaces/IMailbox.js.map +0 -1
  482. package/dist/interfaces/IMessageRecipient.d.ts.map +0 -1
  483. package/dist/interfaces/IMessageRecipient.js.map +0 -1
  484. package/dist/interfaces/IMultisigIsm.d.ts.map +0 -1
  485. package/dist/interfaces/IMultisigIsm.js.map +0 -1
  486. package/dist/interfaces/IValidatorAnnounce.d.ts.map +0 -1
  487. package/dist/interfaces/IValidatorAnnounce.js.map +0 -1
  488. package/dist/interfaces/index.d.ts.map +0 -1
  489. package/dist/interfaces/index.js.map +0 -1
  490. package/interfaces/IInterchainAccountRouter.sol +0 -20
  491. package/interfaces/IInterchainQueryRouter.sol +0 -11
  492. package/interfaces/IMailbox.sol +0 -28
  493. /package/{interfaces → contracts/interfaces}/IGasOracle.sol +0 -0
  494. /package/{interfaces → contracts/interfaces}/IInterchainGasPaymaster.sol +0 -0
  495. /package/{interfaces → contracts/interfaces}/ILiquidityLayerMessageRecipient.sol +0 -0
  496. /package/{interfaces → contracts/interfaces}/ILiquidityLayerRouter.sol +0 -0
  497. /package/{interfaces → contracts/interfaces}/IMessageRecipient.sol +0 -0
  498. /package/{interfaces → contracts/interfaces}/IValidatorAnnounce.sol +0 -0
  499. /package/dist/{interfaces → contracts/interfaces}/IGasOracle.js +0 -0
  500. /package/dist/{interfaces → contracts/interfaces}/IInterchainGasPaymaster.js +0 -0
  501. /package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/IInterchainSecurityModule.js +0 -0
  502. /package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js +0 -0
  503. /package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/index.d.ts +0 -0
  504. /package/dist/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/index.js +0 -0
  505. /package/dist/{interfaces → contracts/interfaces}/ILiquidityLayerMessageRecipient.js +0 -0
  506. /package/dist/{interfaces → contracts/interfaces}/ILiquidityLayerRouter.js +0 -0
  507. /package/dist/{interfaces → contracts/interfaces}/IMailbox.js +0 -0
  508. /package/dist/{interfaces → contracts/interfaces}/IMessageRecipient.js +0 -0
  509. /package/dist/{interfaces → contracts/interfaces}/IValidatorAnnounce.js +0 -0
  510. /package/dist/{interfaces → contracts/interfaces}/index.js +0 -0
  511. /package/dist/{interfaces → contracts/interfaces/isms}/IMultisigIsm.js +0 -0
  512. /package/dist/{interfaces → contracts/interfaces/middleware}/IInterchainAccountRouter.js +0 -0
  513. /package/dist/{interfaces → contracts/interfaces/middleware}/IInterchainQueryRouter.js +0 -0
  514. /package/dist/factories/{interfaces → contracts/interfaces}/IGasOracle__factory.js +0 -0
  515. /package/dist/factories/{interfaces → contracts/interfaces}/IInterchainGasPaymaster__factory.js +0 -0
  516. /package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js +0 -0
  517. /package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js +0 -0
  518. /package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/index.d.ts +0 -0
  519. /package/dist/factories/{interfaces → contracts/interfaces}/IInterchainSecurityModule.sol/index.js +0 -0
  520. /package/dist/factories/{interfaces → contracts/interfaces}/ILiquidityLayerMessageRecipient__factory.js +0 -0
  521. /package/dist/factories/{interfaces → contracts/interfaces}/ILiquidityLayerRouter__factory.js +0 -0
  522. /package/dist/factories/{interfaces → contracts/interfaces}/IMessageRecipient__factory.js +0 -0
  523. /package/dist/factories/{interfaces → contracts/interfaces}/IValidatorAnnounce__factory.js +0 -0
  524. /package/dist/factories/{interfaces → contracts/interfaces/isms}/IMultisigIsm__factory.js +0 -0
@@ -2,9 +2,10 @@
2
2
  pragma solidity >=0.6.11;
3
3
 
4
4
  // ============ Internal Imports ============
5
- import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
6
- import {ISpecifiesInterchainSecurityModule, IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
7
- import {IMailbox} from "../interfaces/IMailbox.sol";
5
+ import {IInterchainGasPaymaster} from "./interfaces/IInterchainGasPaymaster.sol";
6
+ import {IInterchainSecurityModule} from "./interfaces/IInterchainSecurityModule.sol";
7
+ import {IHyperlaneConnectionClient} from "./interfaces/IHyperlaneConnectionClient.sol";
8
+ import {IMailbox} from "./interfaces/IMailbox.sol";
8
9
 
9
10
  // ============ External Imports ============
10
11
  import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
@@ -12,7 +13,7 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
12
13
 
13
14
  abstract contract HyperlaneConnectionClient is
14
15
  OwnableUpgradeable,
15
- ISpecifiesInterchainSecurityModule
16
+ IHyperlaneConnectionClient
16
17
  {
17
18
  // ============ Mutable Storage ============
18
19
 
@@ -6,9 +6,9 @@ import {Versioned} from "./upgrade/Versioned.sol";
6
6
  import {MerkleLib} from "./libs/Merkle.sol";
7
7
  import {Message} from "./libs/Message.sol";
8
8
  import {TypeCasts} from "./libs/TypeCasts.sol";
9
- import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
10
- import {IInterchainSecurityModule, ISpecifiesInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
11
- import {IMailbox} from "../interfaces/IMailbox.sol";
9
+ import {IMessageRecipient} from "./interfaces/IMessageRecipient.sol";
10
+ import {IInterchainSecurityModule, ISpecifiesInterchainSecurityModule} from "./interfaces/IInterchainSecurityModule.sol";
11
+ import {IMailbox} from "./interfaces/IMailbox.sol";
12
12
  import {PausableReentrancyGuardUpgradeable} from "./PausableReentrancyGuard.sol";
13
13
 
14
14
  // ============ External Imports ============
@@ -57,44 +57,6 @@ contract Mailbox is
57
57
  */
58
58
  event DefaultIsmSet(address indexed module);
59
59
 
60
- /**
61
- * @notice Emitted when a new message is dispatched via Hyperlane
62
- * @param sender The address that dispatched the message
63
- * @param destination The destination domain of the message
64
- * @param recipient The message recipient address on `destination`
65
- * @param message Raw bytes of message
66
- */
67
- event Dispatch(
68
- address indexed sender,
69
- uint32 indexed destination,
70
- bytes32 indexed recipient,
71
- bytes message
72
- );
73
-
74
- /**
75
- * @notice Emitted when a new message is dispatched via Hyperlane
76
- * @param messageId The unique message identifier
77
- */
78
- event DispatchId(bytes32 indexed messageId);
79
-
80
- /**
81
- * @notice Emitted when a Hyperlane message is processed
82
- * @param messageId The unique message identifier
83
- */
84
- event ProcessId(bytes32 indexed messageId);
85
-
86
- /**
87
- * @notice Emitted when a Hyperlane message is delivered
88
- * @param origin The origin domain of the message
89
- * @param sender The message sender address on `origin`
90
- * @param recipient The address that handled the message
91
- */
92
- event Process(
93
- uint32 indexed origin,
94
- bytes32 indexed sender,
95
- address indexed recipient
96
- );
97
-
98
60
  /**
99
61
  * @notice Emitted when Mailbox is paused
100
62
  */
@@ -1,26 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.13;
3
3
 
4
- // ============ External Imports ============
5
-
6
- import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
7
- import {Address} from "@openzeppelin/contracts/utils/Address.sol";
4
+ // ============ Internal Imports ============
8
5
  import {CallLib} from "./libs/Call.sol";
9
6
 
10
7
  /*
11
8
  * @title OwnableMulticall
12
- * @dev Permits owner address to execute state mutating calls with value to other contracts
9
+ * @dev Permits immutable owner address to execute calls with value to other contracts.
13
10
  */
14
- contract OwnableMulticall is OwnableUpgradeable {
15
- constructor() {
16
- _transferOwnership(msg.sender);
11
+ contract OwnableMulticall {
12
+ address public immutable owner;
13
+
14
+ constructor(address _owner) {
15
+ owner = _owner;
17
16
  }
18
17
 
19
- function initialize() external initializer {
20
- __Ownable_init();
18
+ modifier onlyOwner() {
19
+ require(msg.sender == owner, "!owner");
20
+ _;
21
21
  }
22
22
 
23
- function proxyCalls(CallLib.Call[] calldata calls) external onlyOwner {
23
+ function multicall(CallLib.Call[] calldata calls) external onlyOwner {
24
24
  return CallLib.multicall(calls);
25
25
  }
26
26
 
@@ -3,9 +3,9 @@ pragma solidity >=0.6.11;
3
3
 
4
4
  // ============ Internal Imports ============
5
5
  import {HyperlaneConnectionClient} from "./HyperlaneConnectionClient.sol";
6
- import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
7
- import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
8
- import {IMailbox} from "../interfaces/IMailbox.sol";
6
+ import {IInterchainGasPaymaster} from "./interfaces/IInterchainGasPaymaster.sol";
7
+ import {IMessageRecipient} from "./interfaces/IMessageRecipient.sol";
8
+ import {IMailbox} from "./interfaces/IMailbox.sol";
9
9
  import {EnumerableMapExtended} from "./libs/EnumerableMapExtended.sol";
10
10
 
11
11
  abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
@@ -25,7 +25,7 @@ abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
25
25
  * @param domain The domain of the new router
26
26
  * @param router The address of the new router
27
27
  */
28
- event RemoteRouterEnrolled(uint32 indexed domain, bytes32 indexed router);
28
+ event RemoteRouterEnrolled(uint32 indexed domain, bytes32 router);
29
29
 
30
30
  // ============ Modifiers ============
31
31
  /**
@@ -2,8 +2,8 @@
2
2
  pragma solidity >=0.8.0;
3
3
 
4
4
  // ============ Internal Imports ============
5
- import {IValidatorAnnounce} from "../interfaces/IValidatorAnnounce.sol";
6
- import {IMailbox} from "../interfaces/IMailbox.sol";
5
+ import {IValidatorAnnounce} from "./interfaces/IValidatorAnnounce.sol";
6
+ import {IMailbox} from "./interfaces/IMailbox.sol";
7
7
  import {TypeCasts} from "./libs/TypeCasts.sol";
8
8
  import {ValidatorAnnouncements} from "./libs/ValidatorAnnouncements.sol";
9
9
  // ============ External Imports ============
@@ -2,8 +2,8 @@
2
2
  pragma solidity >=0.8.0;
3
3
 
4
4
  // ============ Internal Imports ============
5
- import {IGasOracle} from "../../interfaces/IGasOracle.sol";
6
- import {IInterchainGasPaymaster} from "../../interfaces/IInterchainGasPaymaster.sol";
5
+ import {IGasOracle} from "../interfaces/IGasOracle.sol";
6
+ import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
7
7
  // ============ External Imports ============
8
8
  import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
9
9
 
@@ -2,7 +2,7 @@
2
2
  pragma solidity >=0.8.0;
3
3
 
4
4
  // ============ Internal Imports ============
5
- import {IInterchainGasPaymaster} from "../../interfaces/IInterchainGasPaymaster.sol";
5
+ import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
6
6
  // ============ External Imports ============
7
7
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
8
8
 
@@ -2,7 +2,7 @@
2
2
  pragma solidity >=0.8.0;
3
3
 
4
4
  // ============ Internal Imports ============
5
- import {IGasOracle} from "../../../interfaces/IGasOracle.sol";
5
+ import {IGasOracle} from "../../interfaces/IGasOracle.sol";
6
6
  // ============ External Imports ============
7
7
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
8
8
 
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.6.0;
3
+
4
+ import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
5
+
6
+ interface IAggregationIsm is IInterchainSecurityModule {
7
+ /**
8
+ * @notice Returns the set of modules responsible for verifying _message
9
+ * and the number of modules that must verify
10
+ * @dev Can change based on the content of _message
11
+ * @param _message Hyperlane formatted interchain message
12
+ * @return modules The array of ISM addresses
13
+ * @return threshold The number of modules needed to verify
14
+ */
15
+ function modulesAndThreshold(bytes calldata _message)
16
+ external
17
+ view
18
+ returns (address[] memory modules, uint8 threshold);
19
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+ import {IInterchainGasPaymaster} from "./IInterchainGasPaymaster.sol";
4
+ import {ISpecifiesInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
5
+ import {IMailbox} from "./IMailbox.sol";
6
+
7
+ interface IHyperlaneConnectionClient is ISpecifiesInterchainSecurityModule {
8
+ function mailbox() external view returns (IMailbox);
9
+
10
+ function interchainGasPaymaster()
11
+ external
12
+ view
13
+ returns (IInterchainGasPaymaster);
14
+
15
+ function setMailbox(address) external;
16
+
17
+ function setInterchainGasPaymaster(address) external;
18
+
19
+ function setInterchainSecurityModule(address) external;
20
+ }
@@ -2,6 +2,14 @@
2
2
  pragma solidity >=0.6.11;
3
3
 
4
4
  interface IInterchainSecurityModule {
5
+ enum Types {
6
+ UNUSED_0,
7
+ ROUTING,
8
+ AGGREGATION,
9
+ LEGACY_MULTISIG,
10
+ MULTISIG
11
+ }
12
+
5
13
  /**
6
14
  * @notice Returns an enum that represents the type of security model
7
15
  * encoded by this ISM.
@@ -0,0 +1,71 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
5
+
6
+ interface IMailbox {
7
+ // ============ Events ============
8
+ /**
9
+ * @notice Emitted when a new message is dispatched via Hyperlane
10
+ * @param sender The address that dispatched the message
11
+ * @param destination The destination domain of the message
12
+ * @param recipient The message recipient address on `destination`
13
+ * @param message Raw bytes of message
14
+ */
15
+ event Dispatch(
16
+ address indexed sender,
17
+ uint32 indexed destination,
18
+ bytes32 indexed recipient,
19
+ bytes message
20
+ );
21
+
22
+ /**
23
+ * @notice Emitted when a new message is dispatched via Hyperlane
24
+ * @param messageId The unique message identifier
25
+ */
26
+ event DispatchId(bytes32 indexed messageId);
27
+
28
+ /**
29
+ * @notice Emitted when a Hyperlane message is processed
30
+ * @param messageId The unique message identifier
31
+ */
32
+ event ProcessId(bytes32 indexed messageId);
33
+
34
+ /**
35
+ * @notice Emitted when a Hyperlane message is delivered
36
+ * @param origin The origin domain of the message
37
+ * @param sender The message sender address on `origin`
38
+ * @param recipient The address that handled the message
39
+ */
40
+ event Process(
41
+ uint32 indexed origin,
42
+ bytes32 indexed sender,
43
+ address indexed recipient
44
+ );
45
+
46
+ function localDomain() external view returns (uint32);
47
+
48
+ function delivered(bytes32 messageId) external view returns (bool);
49
+
50
+ function defaultIsm() external view returns (IInterchainSecurityModule);
51
+
52
+ function dispatch(
53
+ uint32 _destinationDomain,
54
+ bytes32 _recipientAddress,
55
+ bytes calldata _messageBody
56
+ ) external returns (bytes32);
57
+
58
+ function process(bytes calldata _metadata, bytes calldata _message)
59
+ external;
60
+
61
+ function count() external view returns (uint32);
62
+
63
+ function root() external view returns (bytes32);
64
+
65
+ function latestCheckpoint() external view returns (bytes32, uint32);
66
+
67
+ function recipientIsm(address _recipient)
68
+ external
69
+ view
70
+ returns (IInterchainSecurityModule);
71
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ interface IRouter {
5
+ function domains() external view returns (uint32[] memory);
6
+
7
+ function routers(uint32 _domain) external view returns (bytes32);
8
+
9
+ function enrollRemoteRouter(uint32 _domain, bytes32 _router) external;
10
+
11
+ function enrollRemoteRouters(
12
+ uint32[] calldata _domains,
13
+ bytes32[] calldata _routers
14
+ ) external;
15
+ }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT OR Apache-2.0
2
2
  pragma solidity >=0.6.0;
3
3
 
4
- import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
4
+ import {IInterchainSecurityModule} from "../IInterchainSecurityModule.sol";
5
5
 
6
6
  interface IMultisigIsm is IInterchainSecurityModule {
7
7
  /**
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.6.11;
3
+
4
+ import {OwnableMulticall} from "../../OwnableMulticall.sol";
5
+ import {CallLib} from "../../libs/Call.sol";
6
+
7
+ interface IInterchainAccountRouter {
8
+ function callRemote(
9
+ uint32 _destination,
10
+ address _to,
11
+ uint256 _value,
12
+ bytes calldata _data
13
+ ) external returns (bytes32);
14
+
15
+ function callRemote(uint32 _destination, CallLib.Call[] calldata calls)
16
+ external
17
+ returns (bytes32);
18
+
19
+ function callRemoteWithOverrides(
20
+ uint32 _destination,
21
+ bytes32 _router,
22
+ bytes32 _ism,
23
+ CallLib.Call[] calldata calls
24
+ ) external returns (bytes32);
25
+
26
+ function getLocalInterchainAccount(
27
+ uint32 _origin,
28
+ bytes32 _router,
29
+ bytes32 _owner,
30
+ address _ism
31
+ ) external view returns (OwnableMulticall);
32
+
33
+ function getLocalInterchainAccount(
34
+ uint32 _origin,
35
+ address _router,
36
+ address _owner,
37
+ address _ism
38
+ ) external view returns (OwnableMulticall);
39
+
40
+ function getRemoteInterchainAccount(
41
+ address _router,
42
+ address _owner,
43
+ address _ism
44
+ ) external view returns (address);
45
+
46
+ function getRemoteInterchainAccount(uint32 _destination, address _owner)
47
+ external
48
+ view
49
+ returns (address);
50
+ }
@@ -0,0 +1,18 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.6.11;
3
+
4
+ import {CallLib} from "../../libs/Call.sol";
5
+
6
+ interface IInterchainQueryRouter {
7
+ function query(
8
+ uint32 _destination,
9
+ address _to,
10
+ bytes memory _data,
11
+ bytes memory _callback
12
+ ) external returns (bytes32);
13
+
14
+ function query(
15
+ uint32 _destination,
16
+ CallLib.StaticCallWithCallback[] calldata calls
17
+ ) external returns (bytes32);
18
+ }
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ // ============ External Imports ============
5
+ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
6
+
7
+ // ============ Internal Imports ============
8
+ import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
9
+ import {IAggregationIsm} from "../../interfaces/IAggregationIsm.sol";
10
+ import {AggregationIsmMetadata} from "../../libs/isms/AggregationIsmMetadata.sol";
11
+
12
+ /**
13
+ * @title AggregationIsm
14
+ * @notice Manages per-domain m-of-n ISM sets that are used to verify
15
+ * interchain messages.
16
+ */
17
+ abstract contract AbstractAggregationIsm is IAggregationIsm {
18
+ // ============ Constants ============
19
+
20
+ uint8 public constant moduleType =
21
+ uint8(IInterchainSecurityModule.Types.MULTISIG);
22
+
23
+ // ============ Virtual Functions ============
24
+ // ======= OVERRIDE THESE TO IMPLEMENT =======
25
+
26
+ /**
27
+ * @notice Returns the set of ISMs responsible for verifying _message
28
+ * and the number of ISMs that must verify
29
+ * @dev Can change based on the content of _message
30
+ * @param _message Hyperlane formatted interchain message
31
+ * @return modules The array of ISM addresses
32
+ * @return threshold The number of ISMs needed to verify
33
+ */
34
+ function modulesAndThreshold(bytes calldata _message)
35
+ public
36
+ view
37
+ virtual
38
+ returns (address[] memory, uint8);
39
+
40
+ // ============ Public Functions ============
41
+
42
+ /**
43
+ * @notice Requires that m-of-n ISMs verify the provided interchain message.
44
+ * @param _metadata ABI encoded module metadata (see AggregationIsmMetadata.sol)
45
+ * @param _message Formatted Hyperlane message (see Message.sol).
46
+ */
47
+ function verify(bytes calldata _metadata, bytes calldata _message)
48
+ public
49
+ returns (bool)
50
+ {
51
+ (address[] memory _isms, uint8 _threshold) = modulesAndThreshold(
52
+ _message
53
+ );
54
+ uint256 _count = _isms.length;
55
+ for (uint8 i = 0; i < _count; i++) {
56
+ if (!AggregationIsmMetadata.hasMetadata(_metadata, i)) continue;
57
+ IInterchainSecurityModule _ism = IInterchainSecurityModule(
58
+ _isms[i]
59
+ );
60
+ require(
61
+ _ism.verify(
62
+ AggregationIsmMetadata.metadataAt(_metadata, i),
63
+ _message
64
+ ),
65
+ "!verify"
66
+ );
67
+ _threshold -= 1;
68
+ }
69
+ require(_threshold == 0, "!threshold");
70
+ return true;
71
+ }
72
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ // ============ Internal Imports ============
5
+ import {AbstractAggregationIsm} from "./AbstractAggregationIsm.sol";
6
+ import {AggregationIsmMetadata} from "../../libs/isms/AggregationIsmMetadata.sol";
7
+ import {MetaProxy} from "../../libs/MetaProxy.sol";
8
+
9
+ /**
10
+ * @title StaticAggregationIsm
11
+ * @notice Manages per-domain m-of-n ISM sets that are used to verify
12
+ * interchain messages.
13
+ */
14
+ contract StaticAggregationIsm is AbstractAggregationIsm {
15
+ // ============ Public Functions ============
16
+
17
+ /**
18
+ * @notice Returns the set of ISMs responsible for verifying _message
19
+ * and the number of ISMs that must verify
20
+ * @dev Can change based on the content of _message
21
+ * @return modules The array of ISM addresses
22
+ * @return threshold The number of ISMs needed to verify
23
+ */
24
+ function modulesAndThreshold(bytes calldata)
25
+ public
26
+ view
27
+ virtual
28
+ override
29
+ returns (address[] memory, uint8)
30
+ {
31
+ return abi.decode(MetaProxy.metadata(), (address[], uint8));
32
+ }
33
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+ // ============ Internal Imports ============
4
+ import {StaticAggregationIsm} from "./StaticAggregationIsm.sol";
5
+ import {StaticMOfNAddressSetFactory} from "../../libs/StaticMOfNAddressSetFactory.sol";
6
+
7
+ contract StaticAggregationIsmFactory is StaticMOfNAddressSetFactory {
8
+ function _deployImplementation()
9
+ internal
10
+ virtual
11
+ override
12
+ returns (address)
13
+ {
14
+ return address(new StaticAggregationIsm());
15
+ }
16
+ }
@@ -0,0 +1,124 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ // ============ External Imports ============
5
+ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
6
+
7
+ // ============ Internal Imports ============
8
+ import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
9
+ import {IMultisigIsm} from "../../interfaces/isms/IMultisigIsm.sol";
10
+ import {Message} from "../../libs/Message.sol";
11
+ import {MultisigIsmMetadata} from "../../libs/isms/MultisigIsmMetadata.sol";
12
+ import {CheckpointLib} from "../../libs/CheckpointLib.sol";
13
+ import {MerkleLib} from "../../libs/Merkle.sol";
14
+
15
+ /**
16
+ * @title MultisigIsm
17
+ * @notice Manages per-domain m-of-n Validator sets that are used to verify
18
+ * interchain messages.
19
+ */
20
+ abstract contract AbstractMultisigIsm is IMultisigIsm {
21
+ // ============ Constants ============
22
+
23
+ uint8 public constant moduleType =
24
+ uint8(IInterchainSecurityModule.Types.MULTISIG);
25
+
26
+ // ============ Virtual Functions ============
27
+ // ======= OVERRIDE THESE TO IMPLEMENT =======
28
+
29
+ /**
30
+ * @notice Returns the set of validators responsible for verifying _message
31
+ * and the number of signatures required
32
+ * @dev Can change based on the content of _message
33
+ * @param _message Hyperlane formatted interchain message
34
+ * @return validators The array of validator addresses
35
+ * @return threshold The number of validator signatures needed
36
+ */
37
+ function validatorsAndThreshold(bytes calldata _message)
38
+ public
39
+ view
40
+ virtual
41
+ returns (address[] memory, uint8);
42
+
43
+ // ============ Public Functions ============
44
+
45
+ /**
46
+ * @notice Requires that m-of-n validators verify a merkle root,
47
+ * and verifies a merkle proof of `_message` against that root.
48
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
49
+ * @param _message Formatted Hyperlane message (see Message.sol).
50
+ */
51
+ function verify(bytes calldata _metadata, bytes calldata _message)
52
+ public
53
+ view
54
+ returns (bool)
55
+ {
56
+ require(_verifyMerkleProof(_metadata, _message), "!merkle");
57
+ require(_verifyValidatorSignatures(_metadata, _message), "!sigs");
58
+ return true;
59
+ }
60
+
61
+ // ============ Internal Functions ============
62
+
63
+ /**
64
+ * @notice Verifies the merkle proof of `_message` against the provided
65
+ * checkpoint.
66
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
67
+ * @param _message Formatted Hyperlane message (see Message.sol).
68
+ */
69
+ function _verifyMerkleProof(
70
+ bytes calldata _metadata,
71
+ bytes calldata _message
72
+ ) internal pure returns (bool) {
73
+ // calculate the expected root based on the proof
74
+ bytes32 _calculatedRoot = MerkleLib.branchRoot(
75
+ Message.id(_message),
76
+ MultisigIsmMetadata.proof(_metadata),
77
+ Message.nonce(_message)
78
+ );
79
+ return _calculatedRoot == MultisigIsmMetadata.root(_metadata);
80
+ }
81
+
82
+ /**
83
+ * @notice Verifies that a quorum of the origin domain's validators signed
84
+ * the provided checkpoint.
85
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
86
+ * @param _message Formatted Hyperlane message (see Message.sol).
87
+ */
88
+ function _verifyValidatorSignatures(
89
+ bytes calldata _metadata,
90
+ bytes calldata _message
91
+ ) internal view returns (bool) {
92
+ (
93
+ address[] memory _validators,
94
+ uint8 _threshold
95
+ ) = validatorsAndThreshold(_message);
96
+ require(_threshold > 0, "No MultisigISM threshold present for message");
97
+ bytes32 _digest = CheckpointLib.digest(
98
+ Message.origin(_message),
99
+ MultisigIsmMetadata.originMailbox(_metadata),
100
+ MultisigIsmMetadata.root(_metadata),
101
+ MultisigIsmMetadata.index(_metadata)
102
+ );
103
+ uint256 _validatorCount = _validators.length;
104
+ uint256 _validatorIndex = 0;
105
+ // Assumes that signatures are ordered by validator
106
+ for (uint256 i = 0; i < _threshold; ++i) {
107
+ address _signer = ECDSA.recover(
108
+ _digest,
109
+ MultisigIsmMetadata.signatureAt(_metadata, i)
110
+ );
111
+ // Loop through remaining validators until we find a match
112
+ for (
113
+ ;
114
+ _validatorIndex < _validatorCount &&
115
+ _signer != _validators[_validatorIndex];
116
+ ++_validatorIndex
117
+ ) {}
118
+ // Fail if we never found a match
119
+ require(_validatorIndex < _validatorCount, "!threshold");
120
+ ++_validatorIndex;
121
+ }
122
+ return true;
123
+ }
124
+ }