@hyperlane-xyz/core 0.5.2 → 0.5.4-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 (642) hide show
  1. package/contracts/Call.sol +7 -0
  2. package/contracts/{AbacusConnectionClient.sol → HyperlaneConnectionClient.sol} +69 -56
  3. package/contracts/InterchainGasPaymaster.sol +9 -11
  4. package/contracts/Mailbox.sol +179 -44
  5. package/contracts/OwnableMulticall.sol +1 -5
  6. package/contracts/Router.sol +21 -45
  7. package/contracts/isms/MultisigIsm.sol +340 -0
  8. package/contracts/libs/Message.sol +107 -66
  9. package/contracts/libs/MultisigIsmMetadata.sol +187 -0
  10. package/contracts/middleware/InterchainAccountRouter.sol +9 -6
  11. package/contracts/middleware/InterchainQueryRouter.sol +15 -9
  12. package/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol +134 -0
  13. package/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol +246 -0
  14. package/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol +18 -0
  15. package/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.sol +12 -0
  16. package/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.sol +59 -0
  17. package/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol +38 -0
  18. package/contracts/mock/MockCircleBridge.sol +38 -0
  19. package/contracts/mock/MockCircleMessageTransmitter.sol +43 -0
  20. package/contracts/mock/MockHyperlaneEnvironment.sol +60 -0
  21. package/contracts/mock/MockInterchainAccountRouter.sol +98 -0
  22. package/contracts/mock/MockMailbox.sol +79 -0
  23. package/contracts/mock/MockToken.sol +14 -0
  24. package/contracts/test/TestHyperlaneConnectionClient.sol +14 -0
  25. package/contracts/test/TestIsm.sol +20 -0
  26. package/contracts/test/TestLiquidityLayerMessageRecipient.sol +24 -0
  27. package/contracts/test/TestMailbox.sol +34 -4
  28. package/contracts/test/TestMerkle.sol +9 -4
  29. package/contracts/test/TestMessage.sol +24 -12
  30. package/contracts/test/TestMultisigIsm.sol +23 -0
  31. package/contracts/test/TestQuerySender.sol +72 -0
  32. package/contracts/test/TestSendReceiver.sol +6 -15
  33. package/contracts/test/TestTokenRecipient.sol +44 -0
  34. package/dist/@openzeppelin/contracts/index.d.ts +2 -0
  35. package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
  36. package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts +139 -0
  37. package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts.map +1 -0
  38. package/dist/{contracts/Outbox.js → @openzeppelin/contracts/token/ERC20/IERC20.js} +1 -1
  39. package/dist/@openzeppelin/contracts/token/ERC20/IERC20.js.map +1 -0
  40. package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts +2 -0
  41. package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -0
  42. package/dist/@openzeppelin/contracts/token/ERC20/index.js +3 -0
  43. package/dist/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
  44. package/dist/@openzeppelin/contracts/token/index.d.ts +3 -0
  45. package/dist/@openzeppelin/contracts/token/index.d.ts.map +1 -0
  46. package/dist/{interfaces/IOutbox.js → @openzeppelin/contracts/token/index.js} +1 -1
  47. package/dist/@openzeppelin/contracts/token/index.js.map +1 -0
  48. package/dist/@openzeppelin/contracts-upgradeable/index.d.ts +2 -0
  49. package/dist/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -1
  50. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts +204 -0
  51. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts.map +1 -0
  52. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.js +4 -0
  53. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.js.map +1 -0
  54. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts +139 -0
  55. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts.map +1 -0
  56. package/dist/{contracts/MerkleTreeManager.js → @openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.js} +1 -1
  57. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.js.map +1 -0
  58. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts +163 -0
  59. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts.map +1 -0
  60. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.js +4 -0
  61. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.js.map +1 -0
  62. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts +2 -0
  63. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts.map +1 -0
  64. package/dist/{contracts/validator-manager → @openzeppelin/contracts-upgradeable/token/ERC20/extensions}/index.js +0 -0
  65. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js.map +1 -0
  66. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts +5 -0
  67. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts.map +1 -0
  68. package/dist/{contracts/Inbox.js → @openzeppelin/contracts-upgradeable/token/ERC20/index.js} +1 -1
  69. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.js.map +1 -0
  70. package/dist/@openzeppelin/contracts-upgradeable/token/index.d.ts +3 -0
  71. package/dist/@openzeppelin/contracts-upgradeable/token/index.d.ts.map +1 -0
  72. package/dist/{interfaces/IInbox.js → @openzeppelin/contracts-upgradeable/token/index.js} +1 -1
  73. package/dist/@openzeppelin/contracts-upgradeable/token/index.js.map +1 -0
  74. package/dist/contracts/{AbacusConnectionClient.d.ts → HyperlaneConnectionClient.d.ts} +69 -36
  75. package/dist/contracts/HyperlaneConnectionClient.d.ts.map +1 -0
  76. package/dist/contracts/HyperlaneConnectionClient.js +4 -0
  77. package/dist/contracts/HyperlaneConnectionClient.js.map +1 -0
  78. package/dist/contracts/InterchainGasPaymaster.d.ts +11 -13
  79. package/dist/contracts/InterchainGasPaymaster.d.ts.map +1 -1
  80. package/dist/contracts/Mailbox.d.ts +151 -28
  81. package/dist/contracts/Mailbox.d.ts.map +1 -1
  82. package/dist/contracts/OwnableSpecifiesISM.d.ts +134 -0
  83. package/dist/contracts/OwnableSpecifiesISM.d.ts.map +1 -0
  84. package/dist/contracts/OwnableSpecifiesISM.js +4 -0
  85. package/dist/contracts/OwnableSpecifiesISM.js.map +1 -0
  86. package/dist/contracts/Router.d.ts +65 -32
  87. package/dist/contracts/Router.d.ts.map +1 -1
  88. package/dist/contracts/index.d.ts +3 -7
  89. package/dist/contracts/index.d.ts.map +1 -1
  90. package/dist/contracts/isms/MultisigIsm.d.ts +235 -0
  91. package/dist/contracts/isms/MultisigIsm.d.ts.map +1 -0
  92. package/dist/contracts/{mock/MockOutbox.js → isms/MultisigIsm.js} +1 -1
  93. package/dist/contracts/isms/MultisigIsm.js.map +1 -0
  94. package/dist/contracts/isms/index.d.ts +2 -0
  95. package/dist/contracts/isms/index.d.ts.map +1 -0
  96. package/dist/contracts/isms/index.js +3 -0
  97. package/dist/contracts/isms/index.js.map +1 -0
  98. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +71 -38
  99. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  100. package/dist/contracts/middleware/InterchainQueryRouter.d.ts +72 -39
  101. package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
  102. package/dist/contracts/middleware/index.d.ts +2 -0
  103. package/dist/contracts/middleware/index.d.ts.map +1 -1
  104. package/dist/contracts/middleware/index.js +1 -0
  105. package/dist/contracts/middleware/index.js.map +1 -1
  106. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +324 -0
  107. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -0
  108. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.js +4 -0
  109. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.js.map +1 -0
  110. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +449 -0
  111. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -0
  112. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.js +4 -0
  113. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.js.map +1 -0
  114. package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts +2 -0
  115. package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -0
  116. package/dist/contracts/middleware/liquidity-layer/adapters/index.js +3 -0
  117. package/dist/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -0
  118. package/dist/contracts/middleware/liquidity-layer/index.d.ts +6 -0
  119. package/dist/contracts/middleware/liquidity-layer/index.d.ts.map +1 -0
  120. package/dist/contracts/middleware/liquidity-layer/index.js +4 -0
  121. package/dist/contracts/middleware/liquidity-layer/index.js.map +1 -0
  122. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.d.ts +67 -0
  123. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.d.ts.map +1 -0
  124. package/dist/contracts/{AbacusConnectionClient.js → middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.js} +1 -1
  125. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.js.map +1 -0
  126. package/dist/contracts/{test/TestValidatorManager.d.ts → middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.d.ts} +14 -21
  127. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.d.ts.map +1 -0
  128. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.js +4 -0
  129. package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.js.map +1 -0
  130. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts +78 -0
  131. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts.map +1 -0
  132. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js +4 -0
  133. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js.map +1 -0
  134. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.d.ts +59 -0
  135. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.d.ts.map +1 -0
  136. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.js +4 -0
  137. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.js.map +1 -0
  138. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts +3 -0
  139. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts.map +1 -0
  140. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.js +3 -0
  141. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.js.map +1 -0
  142. package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts +5 -0
  143. package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -0
  144. package/dist/contracts/middleware/liquidity-layer/interfaces/index.js +4 -0
  145. package/dist/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -0
  146. package/dist/contracts/mock/MockCircleBridge.d.ts +86 -0
  147. package/dist/contracts/mock/MockCircleBridge.d.ts.map +1 -0
  148. package/dist/contracts/mock/MockCircleBridge.js +4 -0
  149. package/dist/contracts/mock/MockCircleBridge.js.map +1 -0
  150. package/dist/contracts/mock/MockCircleMessageTransmitter.d.ts +77 -0
  151. package/dist/contracts/mock/MockCircleMessageTransmitter.d.ts.map +1 -0
  152. package/dist/contracts/mock/MockCircleMessageTransmitter.js +4 -0
  153. package/dist/contracts/mock/MockCircleMessageTransmitter.js.map +1 -0
  154. package/dist/contracts/mock/{MockInbox.d.ts → MockHyperlaneEnvironment.d.ts} +33 -17
  155. package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -0
  156. package/dist/contracts/{AbacusConnectionManager.js → mock/MockHyperlaneEnvironment.js} +1 -1
  157. package/dist/contracts/mock/MockHyperlaneEnvironment.js.map +1 -0
  158. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts +124 -0
  159. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts.map +1 -0
  160. package/dist/contracts/mock/MockInterchainAccountRouter.js +4 -0
  161. package/dist/contracts/mock/MockInterchainAccountRouter.js.map +1 -0
  162. package/dist/contracts/mock/MockMailbox.d.ts +185 -0
  163. package/dist/contracts/mock/MockMailbox.d.ts.map +1 -0
  164. package/dist/contracts/mock/MockMailbox.js +4 -0
  165. package/dist/contracts/mock/MockMailbox.js.map +1 -0
  166. package/dist/contracts/mock/MockToken.d.ts +236 -0
  167. package/dist/contracts/mock/MockToken.d.ts.map +1 -0
  168. package/dist/contracts/mock/{MockInbox.js → MockToken.js} +1 -1
  169. package/dist/contracts/mock/MockToken.js.map +1 -0
  170. package/dist/contracts/mock/index.d.ts +6 -2
  171. package/dist/contracts/mock/index.d.ts.map +1 -1
  172. package/dist/contracts/test/{TestAbacusConnectionClient.d.ts → TestHyperlaneConnectionClient.d.ts} +69 -52
  173. package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts.map +1 -0
  174. package/dist/contracts/test/TestHyperlaneConnectionClient.js +4 -0
  175. package/dist/contracts/test/TestHyperlaneConnectionClient.js.map +1 -0
  176. package/dist/contracts/test/TestIsm.d.ts +67 -0
  177. package/dist/contracts/test/TestIsm.d.ts.map +1 -0
  178. package/dist/contracts/test/TestIsm.js +4 -0
  179. package/dist/contracts/test/TestIsm.js.map +1 -0
  180. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts +72 -0
  181. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts.map +1 -0
  182. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.js +4 -0
  183. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.js.map +1 -0
  184. package/dist/contracts/test/TestMailbox.d.ts +164 -33
  185. package/dist/contracts/test/TestMailbox.d.ts.map +1 -1
  186. package/dist/contracts/test/TestMessage.d.ts +30 -10
  187. package/dist/contracts/test/TestMessage.d.ts.map +1 -1
  188. package/dist/contracts/test/TestMultisigIsm.d.ts +251 -0
  189. package/dist/contracts/test/TestMultisigIsm.d.ts.map +1 -0
  190. package/dist/contracts/test/TestMultisigIsm.js +4 -0
  191. package/dist/contracts/test/TestMultisigIsm.js.map +1 -0
  192. package/dist/contracts/test/TestQuerySender.d.ts +215 -0
  193. package/dist/contracts/test/TestQuerySender.d.ts.map +1 -0
  194. package/dist/contracts/test/TestQuerySender.js +4 -0
  195. package/dist/contracts/test/TestQuerySender.js.map +1 -0
  196. package/dist/contracts/test/TestRouter.d.ts +65 -32
  197. package/dist/contracts/test/TestRouter.d.ts.map +1 -1
  198. package/dist/contracts/test/TestTokenRecipient.d.ts +151 -0
  199. package/dist/contracts/test/TestTokenRecipient.d.ts.map +1 -0
  200. package/dist/contracts/test/TestTokenRecipient.js +4 -0
  201. package/dist/contracts/test/TestTokenRecipient.js.map +1 -0
  202. package/dist/contracts/test/index.d.ts +6 -5
  203. package/dist/contracts/test/index.d.ts.map +1 -1
  204. package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
  205. package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
  206. package/dist/factories/@openzeppelin/contracts/index.js +2 -1
  207. package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
  208. package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.d.ts +36 -0
  209. package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.d.ts.map +1 -0
  210. package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js +201 -0
  211. package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js.map +1 -0
  212. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts +2 -0
  213. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -0
  214. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js +9 -0
  215. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
  216. package/dist/factories/@openzeppelin/contracts/token/index.d.ts +2 -0
  217. package/dist/factories/@openzeppelin/contracts/token/index.d.ts.map +1 -0
  218. package/dist/factories/@openzeppelin/contracts/token/index.js +31 -0
  219. package/dist/factories/@openzeppelin/contracts/token/index.js.map +1 -0
  220. package/dist/factories/@openzeppelin/contracts-upgradeable/index.d.ts +1 -0
  221. package/dist/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -1
  222. package/dist/factories/@openzeppelin/contracts-upgradeable/index.js +2 -1
  223. package/dist/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -1
  224. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts +48 -0
  225. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts.map +1 -0
  226. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.js +324 -0
  227. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.js.map +1 -0
  228. package/dist/factories/{contracts/validator-manager/MultisigValidatorManager__factory.d.ts → @openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.d.ts} +5 -5
  229. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.d.ts.map +1 -0
  230. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.js +201 -0
  231. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.js.map +1 -0
  232. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.d.ts +36 -0
  233. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.d.ts.map +1 -0
  234. package/dist/factories/{contracts/validator-manager/MultisigValidatorManager__factory.js → @openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.js} +76 -122
  235. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.js.map +1 -0
  236. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts +2 -0
  237. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts.map +1 -0
  238. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js +9 -0
  239. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js.map +1 -0
  240. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts +4 -0
  241. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts.map +1 -0
  242. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.js +35 -0
  243. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.js.map +1 -0
  244. package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.d.ts +2 -0
  245. package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.d.ts.map +1 -0
  246. package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.js +31 -0
  247. package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.js.map +1 -0
  248. package/dist/factories/contracts/{AbacusConnectionClient__factory.d.ts → HyperlaneConnectionClient__factory.d.ts} +5 -5
  249. package/dist/factories/contracts/HyperlaneConnectionClient__factory.d.ts.map +1 -0
  250. package/dist/factories/contracts/{AbacusConnectionClient__factory.js → HyperlaneConnectionClient__factory.js} +61 -22
  251. package/dist/factories/contracts/HyperlaneConnectionClient__factory.js.map +1 -0
  252. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts +1 -1
  253. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts.map +1 -1
  254. package/dist/factories/contracts/InterchainGasPaymaster__factory.js +7 -18
  255. package/dist/factories/contracts/InterchainGasPaymaster__factory.js.map +1 -1
  256. package/dist/factories/contracts/Mailbox__factory.d.ts +29 -13
  257. package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
  258. package/dist/factories/contracts/Mailbox__factory.js +239 -11
  259. package/dist/factories/contracts/Mailbox__factory.js.map +1 -1
  260. package/dist/factories/contracts/OwnableMulticall__factory.d.ts +1 -1
  261. package/dist/factories/contracts/OwnableMulticall__factory.js +1 -1
  262. package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts +55 -0
  263. package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts.map +1 -0
  264. package/dist/factories/contracts/OwnableSpecifiesISM__factory.js +145 -0
  265. package/dist/factories/contracts/OwnableSpecifiesISM__factory.js.map +1 -0
  266. package/dist/factories/contracts/Router__factory.d.ts.map +1 -1
  267. package/dist/factories/contracts/Router__factory.js +65 -26
  268. package/dist/factories/contracts/Router__factory.js.map +1 -1
  269. package/dist/factories/contracts/index.d.ts +2 -6
  270. package/dist/factories/contracts/index.d.ts.map +1 -1
  271. package/dist/factories/contracts/index.js +4 -12
  272. package/dist/factories/contracts/index.js.map +1 -1
  273. package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts +55 -0
  274. package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts.map +1 -0
  275. package/dist/factories/contracts/isms/MultisigIsm__factory.js +363 -0
  276. package/dist/factories/contracts/isms/MultisigIsm__factory.js.map +1 -0
  277. package/dist/factories/contracts/isms/index.d.ts +2 -0
  278. package/dist/factories/contracts/isms/index.d.ts.map +1 -0
  279. package/dist/factories/contracts/isms/index.js +9 -0
  280. package/dist/factories/contracts/isms/index.js.map +1 -0
  281. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -12
  282. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  283. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +78 -33
  284. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  285. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -12
  286. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
  287. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +81 -30
  288. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
  289. package/dist/factories/contracts/middleware/index.d.ts +1 -0
  290. package/dist/factories/contracts/middleware/index.d.ts.map +1 -1
  291. package/dist/factories/contracts/middleware/index.js +25 -1
  292. package/dist/factories/contracts/middleware/index.js.map +1 -1
  293. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +48 -0
  294. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -0
  295. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +419 -0
  296. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -0
  297. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +48 -0
  298. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -0
  299. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +623 -0
  300. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -0
  301. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts +2 -0
  302. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -0
  303. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js +9 -0
  304. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -0
  305. package/dist/factories/contracts/middleware/liquidity-layer/index.d.ts +4 -0
  306. package/dist/factories/contracts/middleware/liquidity-layer/index.d.ts.map +1 -0
  307. package/dist/factories/contracts/middleware/liquidity-layer/index.js +34 -0
  308. package/dist/factories/contracts/middleware/liquidity-layer/index.js.map +1 -0
  309. package/dist/factories/{interfaces/IAbacusConnectionManager__factory.d.ts → contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.d.ts} +5 -5
  310. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.d.ts.map +1 -0
  311. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.js +91 -0
  312. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.js.map +1 -0
  313. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts +19 -0
  314. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts.map +1 -0
  315. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.js +51 -0
  316. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.js.map +1 -0
  317. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts +36 -0
  318. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts.map +1 -0
  319. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js +104 -0
  320. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js.map +1 -0
  321. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.d.ts +23 -0
  322. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.d.ts.map +1 -0
  323. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.js +61 -0
  324. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.js.map +1 -0
  325. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts +3 -0
  326. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts.map +1 -0
  327. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.js +11 -0
  328. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.js.map +1 -0
  329. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts +4 -0
  330. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -0
  331. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js +35 -0
  332. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -0
  333. package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts +59 -0
  334. package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts.map +1 -0
  335. package/dist/factories/contracts/mock/MockCircleBridge__factory.js +151 -0
  336. package/dist/factories/contracts/mock/MockCircleBridge__factory.js.map +1 -0
  337. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts +45 -0
  338. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts.map +1 -0
  339. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.js +142 -0
  340. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.js.map +1 -0
  341. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +45 -0
  342. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -0
  343. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +109 -0
  344. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -0
  345. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts +69 -0
  346. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts.map +1 -0
  347. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js +181 -0
  348. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js.map +1 -0
  349. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +45 -0
  350. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -0
  351. package/dist/factories/contracts/mock/MockMailbox__factory.js +252 -0
  352. package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -0
  353. package/dist/factories/contracts/mock/MockToken__factory.d.ts +48 -0
  354. package/dist/factories/contracts/mock/{MockInbox__factory.d.ts.map → MockToken__factory.d.ts.map} +1 -1
  355. package/dist/factories/contracts/mock/MockToken__factory.js +355 -0
  356. package/dist/factories/contracts/mock/MockToken__factory.js.map +1 -0
  357. package/dist/factories/contracts/mock/index.d.ts +6 -2
  358. package/dist/factories/contracts/mock/index.d.ts.map +1 -1
  359. package/dist/factories/contracts/mock/index.js +13 -5
  360. package/dist/factories/contracts/mock/index.js.map +1 -1
  361. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +55 -0
  362. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts.map +1 -0
  363. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +249 -0
  364. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js.map +1 -0
  365. package/dist/factories/contracts/test/TestIsm__factory.d.ts +35 -0
  366. package/dist/factories/contracts/test/TestIsm__factory.d.ts.map +1 -0
  367. package/dist/factories/contracts/test/TestIsm__factory.js +91 -0
  368. package/dist/factories/contracts/test/TestIsm__factory.js.map +1 -0
  369. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts +44 -0
  370. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts.map +1 -0
  371. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.js +111 -0
  372. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.js.map +1 -0
  373. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -8
  374. package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
  375. package/dist/factories/contracts/test/TestMailbox__factory.js +235 -13
  376. package/dist/factories/contracts/test/TestMailbox__factory.js.map +1 -1
  377. package/dist/factories/contracts/test/TestMerkle__factory.d.ts +1 -1
  378. package/dist/factories/contracts/test/TestMerkle__factory.js +1 -1
  379. package/dist/factories/contracts/test/TestMessage__factory.d.ts +1 -1
  380. package/dist/factories/contracts/test/TestMessage__factory.d.ts.map +1 -1
  381. package/dist/factories/contracts/test/TestMessage__factory.js +40 -7
  382. package/dist/factories/contracts/test/TestMessage__factory.js.map +1 -1
  383. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts +48 -0
  384. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts.map +1 -0
  385. package/dist/factories/contracts/test/TestMultisigIsm__factory.js +406 -0
  386. package/dist/factories/contracts/test/TestMultisigIsm__factory.js.map +1 -0
  387. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +55 -0
  388. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts.map +1 -0
  389. package/dist/factories/contracts/test/TestQuerySender__factory.js +253 -0
  390. package/dist/factories/contracts/test/TestQuerySender__factory.js.map +1 -0
  391. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  392. package/dist/factories/contracts/test/TestQuery__factory.d.ts.map +1 -1
  393. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  394. package/dist/factories/contracts/test/TestQuery__factory.js.map +1 -1
  395. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  396. package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
  397. package/dist/factories/contracts/test/TestRouter__factory.js +70 -31
  398. package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
  399. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  400. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts.map +1 -1
  401. package/dist/factories/contracts/test/TestSendReceiver__factory.js +2 -2
  402. package/dist/factories/contracts/test/TestSendReceiver__factory.js.map +1 -1
  403. package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts +55 -0
  404. package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts.map +1 -0
  405. package/dist/factories/contracts/test/TestTokenRecipient__factory.js +232 -0
  406. package/dist/factories/contracts/test/TestTokenRecipient__factory.js.map +1 -0
  407. package/dist/factories/contracts/test/index.d.ts +6 -5
  408. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  409. package/dist/factories/contracts/test/index.js +13 -11
  410. package/dist/factories/contracts/test/index.js.map +1 -1
  411. package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts +33 -0
  412. package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts.map +1 -0
  413. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js +78 -0
  414. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js.map +1 -0
  415. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
  416. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js +3 -8
  417. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
  418. package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts +33 -0
  419. package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts.map +1 -0
  420. package/dist/factories/interfaces/IInterchainQueryRouter__factory.js +100 -0
  421. package/dist/factories/interfaces/IInterchainQueryRouter__factory.js.map +1 -0
  422. package/dist/factories/interfaces/{IInbox__factory.d.ts → IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts} +10 -16
  423. package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts.map +1 -0
  424. package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js +42 -0
  425. package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js.map +1 -0
  426. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts +19 -0
  427. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts.map +1 -0
  428. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js +31 -0
  429. package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js.map +1 -0
  430. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.d.ts +3 -0
  431. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
  432. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.js +11 -0
  433. package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
  434. package/dist/factories/interfaces/IMailbox__factory.d.ts +5 -1
  435. package/dist/factories/interfaces/IMailbox__factory.d.ts.map +1 -1
  436. package/dist/factories/interfaces/IMailbox__factory.js +81 -3
  437. package/dist/factories/interfaces/IMailbox__factory.js.map +1 -1
  438. package/dist/factories/interfaces/{IOutbox__factory.d.ts → IMultisigIsm__factory.d.ts} +5 -5
  439. package/dist/factories/interfaces/IMultisigIsm__factory.d.ts.map +1 -0
  440. package/dist/factories/interfaces/{IInbox__factory.js → IMultisigIsm__factory.js} +55 -41
  441. package/dist/factories/interfaces/IMultisigIsm__factory.js.map +1 -0
  442. package/dist/factories/interfaces/index.d.ts +4 -4
  443. package/dist/factories/interfaces/index.d.ts.map +1 -1
  444. package/dist/factories/interfaces/index.js +31 -9
  445. package/dist/factories/interfaces/index.js.map +1 -1
  446. package/dist/index.d.ts +58 -38
  447. package/dist/index.d.ts.map +1 -1
  448. package/dist/index.js +60 -40
  449. package/dist/index.js.map +1 -1
  450. package/dist/interfaces/IInterchainAccountRouter.d.ts +67 -0
  451. package/dist/interfaces/IInterchainAccountRouter.d.ts.map +1 -0
  452. package/dist/interfaces/IInterchainAccountRouter.js +4 -0
  453. package/dist/interfaces/IInterchainAccountRouter.js.map +1 -0
  454. package/dist/interfaces/IInterchainGasPaymaster.d.ts +7 -7
  455. package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
  456. package/dist/interfaces/IInterchainQueryRouter.d.ts +75 -0
  457. package/dist/interfaces/IInterchainQueryRouter.d.ts.map +1 -0
  458. package/dist/interfaces/IInterchainQueryRouter.js +4 -0
  459. package/dist/interfaces/IInterchainQueryRouter.js.map +1 -0
  460. package/dist/{contracts/mock/MockOutbox.d.ts → interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts} +14 -14
  461. package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts.map +1 -0
  462. package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js +4 -0
  463. package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js.map +1 -0
  464. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts +43 -0
  465. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts.map +1 -0
  466. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js +4 -0
  467. package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js.map +1 -0
  468. package/dist/interfaces/IInterchainSecurityModule.sol/index.d.ts +3 -0
  469. package/dist/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
  470. package/dist/interfaces/IInterchainSecurityModule.sol/index.js +3 -0
  471. package/dist/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
  472. package/dist/interfaces/IMailbox.d.ts +58 -10
  473. package/dist/interfaces/IMailbox.d.ts.map +1 -1
  474. package/dist/interfaces/IMultisigIsm.d.ts +75 -0
  475. package/dist/interfaces/IMultisigIsm.d.ts.map +1 -0
  476. package/dist/interfaces/IMultisigIsm.js +4 -0
  477. package/dist/interfaces/IMultisigIsm.js.map +1 -0
  478. package/dist/interfaces/index.d.ts +5 -4
  479. package/dist/interfaces/index.d.ts.map +1 -1
  480. package/dist/interfaces/index.js +1 -0
  481. package/dist/interfaces/index.js.map +1 -1
  482. package/interfaces/IInterchainAccountRouter.sol +15 -0
  483. package/interfaces/IInterchainGasPaymaster.sol +3 -5
  484. package/interfaces/IInterchainQueryRouter.sol +18 -0
  485. package/interfaces/IInterchainSecurityModule.sol +16 -0
  486. package/interfaces/IMailbox.sol +15 -2
  487. package/interfaces/IMultisigIsm.sol +18 -0
  488. package/package.json +4 -3
  489. package/contracts/AbacusConnectionManager.sol +0 -145
  490. package/contracts/Inbox.sol +0 -148
  491. package/contracts/MerkleTreeManager.sol +0 -32
  492. package/contracts/Outbox.sol +0 -191
  493. package/contracts/mock/MockInbox.sol +0 -52
  494. package/contracts/mock/MockOutbox.sol +0 -30
  495. package/contracts/test/TestAbacusConnectionClient.sol +0 -23
  496. package/contracts/test/TestInbox.sol +0 -54
  497. package/contracts/test/TestMultisigValidatorManager.sol +0 -26
  498. package/contracts/test/TestOutbox.sol +0 -46
  499. package/contracts/test/TestValidatorManager.sol +0 -21
  500. package/contracts/validator-manager/InboxValidatorManager.sol +0 -58
  501. package/contracts/validator-manager/MultisigValidatorManager.sol +0 -271
  502. package/contracts/validator-manager/OutboxValidatorManager.sol +0 -244
  503. package/dist/contracts/AbacusConnectionClient.d.ts.map +0 -1
  504. package/dist/contracts/AbacusConnectionClient.js.map +0 -1
  505. package/dist/contracts/AbacusConnectionManager.d.ts +0 -213
  506. package/dist/contracts/AbacusConnectionManager.d.ts.map +0 -1
  507. package/dist/contracts/AbacusConnectionManager.js.map +0 -1
  508. package/dist/contracts/Inbox.d.ts +0 -207
  509. package/dist/contracts/Inbox.d.ts.map +0 -1
  510. package/dist/contracts/Inbox.js.map +0 -1
  511. package/dist/contracts/MerkleTreeManager.d.ts +0 -53
  512. package/dist/contracts/MerkleTreeManager.d.ts.map +0 -1
  513. package/dist/contracts/MerkleTreeManager.js.map +0 -1
  514. package/dist/contracts/Outbox.d.ts +0 -331
  515. package/dist/contracts/Outbox.d.ts.map +0 -1
  516. package/dist/contracts/Outbox.js.map +0 -1
  517. package/dist/contracts/mock/MockInbox.d.ts.map +0 -1
  518. package/dist/contracts/mock/MockInbox.js.map +0 -1
  519. package/dist/contracts/mock/MockOutbox.d.ts.map +0 -1
  520. package/dist/contracts/mock/MockOutbox.js.map +0 -1
  521. package/dist/contracts/test/TestAbacusConnectionClient.d.ts.map +0 -1
  522. package/dist/contracts/test/TestAbacusConnectionClient.js +0 -4
  523. package/dist/contracts/test/TestAbacusConnectionClient.js.map +0 -1
  524. package/dist/contracts/test/TestInbox.d.ts +0 -263
  525. package/dist/contracts/test/TestInbox.d.ts.map +0 -1
  526. package/dist/contracts/test/TestInbox.js +0 -4
  527. package/dist/contracts/test/TestInbox.js.map +0 -1
  528. package/dist/contracts/test/TestMultisigValidatorManager.d.ts +0 -247
  529. package/dist/contracts/test/TestMultisigValidatorManager.d.ts.map +0 -1
  530. package/dist/contracts/test/TestMultisigValidatorManager.js +0 -4
  531. package/dist/contracts/test/TestMultisigValidatorManager.js.map +0 -1
  532. package/dist/contracts/test/TestOutbox.d.ts +0 -371
  533. package/dist/contracts/test/TestOutbox.d.ts.map +0 -1
  534. package/dist/contracts/test/TestOutbox.js +0 -4
  535. package/dist/contracts/test/TestOutbox.js.map +0 -1
  536. package/dist/contracts/test/TestValidatorManager.d.ts.map +0 -1
  537. package/dist/contracts/test/TestValidatorManager.js +0 -4
  538. package/dist/contracts/test/TestValidatorManager.js.map +0 -1
  539. package/dist/contracts/validator-manager/InboxValidatorManager.d.ts +0 -263
  540. package/dist/contracts/validator-manager/InboxValidatorManager.d.ts.map +0 -1
  541. package/dist/contracts/validator-manager/InboxValidatorManager.js +0 -4
  542. package/dist/contracts/validator-manager/InboxValidatorManager.js.map +0 -1
  543. package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts +0 -239
  544. package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts.map +0 -1
  545. package/dist/contracts/validator-manager/MultisigValidatorManager.js +0 -4
  546. package/dist/contracts/validator-manager/MultisigValidatorManager.js.map +0 -1
  547. package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts +0 -335
  548. package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts.map +0 -1
  549. package/dist/contracts/validator-manager/OutboxValidatorManager.js +0 -4
  550. package/dist/contracts/validator-manager/OutboxValidatorManager.js.map +0 -1
  551. package/dist/contracts/validator-manager/index.d.ts +0 -4
  552. package/dist/contracts/validator-manager/index.d.ts.map +0 -1
  553. package/dist/contracts/validator-manager/index.js.map +0 -1
  554. package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts.map +0 -1
  555. package/dist/factories/contracts/AbacusConnectionClient__factory.js.map +0 -1
  556. package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts +0 -55
  557. package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts.map +0 -1
  558. package/dist/factories/contracts/AbacusConnectionManager__factory.js +0 -276
  559. package/dist/factories/contracts/AbacusConnectionManager__factory.js.map +0 -1
  560. package/dist/factories/contracts/Inbox__factory.d.ts +0 -59
  561. package/dist/factories/contracts/Inbox__factory.d.ts.map +0 -1
  562. package/dist/factories/contracts/Inbox__factory.js +0 -278
  563. package/dist/factories/contracts/Inbox__factory.js.map +0 -1
  564. package/dist/factories/contracts/MerkleTreeManager__factory.d.ts +0 -31
  565. package/dist/factories/contracts/MerkleTreeManager__factory.d.ts.map +0 -1
  566. package/dist/factories/contracts/MerkleTreeManager__factory.js +0 -67
  567. package/dist/factories/contracts/MerkleTreeManager__factory.js.map +0 -1
  568. package/dist/factories/contracts/Outbox__factory.d.ts +0 -59
  569. package/dist/factories/contracts/Outbox__factory.d.ts.map +0 -1
  570. package/dist/factories/contracts/Outbox__factory.js +0 -415
  571. package/dist/factories/contracts/Outbox__factory.js.map +0 -1
  572. package/dist/factories/contracts/mock/MockInbox__factory.d.ts +0 -31
  573. package/dist/factories/contracts/mock/MockInbox__factory.js +0 -76
  574. package/dist/factories/contracts/mock/MockInbox__factory.js.map +0 -1
  575. package/dist/factories/contracts/mock/MockOutbox__factory.d.ts +0 -45
  576. package/dist/factories/contracts/mock/MockOutbox__factory.d.ts.map +0 -1
  577. package/dist/factories/contracts/mock/MockOutbox__factory.js +0 -86
  578. package/dist/factories/contracts/mock/MockOutbox__factory.js.map +0 -1
  579. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts +0 -48
  580. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts.map +0 -1
  581. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js +0 -242
  582. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js.map +0 -1
  583. package/dist/factories/contracts/test/TestInbox__factory.d.ts +0 -59
  584. package/dist/factories/contracts/test/TestInbox__factory.d.ts.map +0 -1
  585. package/dist/factories/contracts/test/TestInbox__factory.js +0 -371
  586. package/dist/factories/contracts/test/TestInbox__factory.js.map +0 -1
  587. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts +0 -59
  588. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts.map +0 -1
  589. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js +0 -349
  590. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js.map +0 -1
  591. package/dist/factories/contracts/test/TestOutbox__factory.d.ts +0 -59
  592. package/dist/factories/contracts/test/TestOutbox__factory.d.ts.map +0 -1
  593. package/dist/factories/contracts/test/TestOutbox__factory.js +0 -483
  594. package/dist/factories/contracts/test/TestOutbox__factory.js.map +0 -1
  595. package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts +0 -31
  596. package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts.map +0 -1
  597. package/dist/factories/contracts/test/TestValidatorManager__factory.js +0 -79
  598. package/dist/factories/contracts/test/TestValidatorManager__factory.js.map +0 -1
  599. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts +0 -59
  600. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts.map +0 -1
  601. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js +0 -373
  602. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js.map +0 -1
  603. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts.map +0 -1
  604. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js.map +0 -1
  605. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts +0 -59
  606. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts.map +0 -1
  607. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js +0 -560
  608. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js.map +0 -1
  609. package/dist/factories/contracts/validator-manager/index.d.ts +0 -4
  610. package/dist/factories/contracts/validator-manager/index.d.ts.map +0 -1
  611. package/dist/factories/contracts/validator-manager/index.js +0 -13
  612. package/dist/factories/contracts/validator-manager/index.js.map +0 -1
  613. package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts.map +0 -1
  614. package/dist/factories/interfaces/IAbacusConnectionManager__factory.js +0 -63
  615. package/dist/factories/interfaces/IAbacusConnectionManager__factory.js.map +0 -1
  616. package/dist/factories/interfaces/IInbox__factory.d.ts.map +0 -1
  617. package/dist/factories/interfaces/IInbox__factory.js.map +0 -1
  618. package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts +0 -19
  619. package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts.map +0 -1
  620. package/dist/factories/interfaces/IMultisigValidatorManager__factory.js +0 -57
  621. package/dist/factories/interfaces/IMultisigValidatorManager__factory.js.map +0 -1
  622. package/dist/factories/interfaces/IOutbox__factory.d.ts.map +0 -1
  623. package/dist/factories/interfaces/IOutbox__factory.js +0 -155
  624. package/dist/factories/interfaces/IOutbox__factory.js.map +0 -1
  625. package/dist/interfaces/IAbacusConnectionManager.d.ts +0 -59
  626. package/dist/interfaces/IAbacusConnectionManager.d.ts.map +0 -1
  627. package/dist/interfaces/IAbacusConnectionManager.js +0 -4
  628. package/dist/interfaces/IAbacusConnectionManager.js.map +0 -1
  629. package/dist/interfaces/IInbox.d.ts +0 -83
  630. package/dist/interfaces/IInbox.d.ts.map +0 -1
  631. package/dist/interfaces/IInbox.js.map +0 -1
  632. package/dist/interfaces/IMultisigValidatorManager.d.ts +0 -59
  633. package/dist/interfaces/IMultisigValidatorManager.d.ts.map +0 -1
  634. package/dist/interfaces/IMultisigValidatorManager.js +0 -4
  635. package/dist/interfaces/IMultisigValidatorManager.js.map +0 -1
  636. package/dist/interfaces/IOutbox.d.ts +0 -148
  637. package/dist/interfaces/IOutbox.d.ts.map +0 -1
  638. package/dist/interfaces/IOutbox.js.map +0 -1
  639. package/interfaces/IAbacusConnectionManager.sol +0 -12
  640. package/interfaces/IInbox.sol +0 -16
  641. package/interfaces/IMultisigValidatorManager.sol +0 -11
  642. package/interfaces/IOutbox.sol +0 -27
@@ -0,0 +1,340 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ // ============ External Imports ============
5
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
6
+ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
7
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
8
+
9
+ // ============ Internal Imports ============
10
+ import {IMultisigIsm} from "../../interfaces/IMultisigIsm.sol";
11
+ import {Message} from "../libs/Message.sol";
12
+ import {MultisigIsmMetadata} from "../libs/MultisigIsmMetadata.sol";
13
+ import {MerkleLib} from "../libs/Merkle.sol";
14
+
15
+ /**
16
+ * @title MultisigIsm
17
+ * @notice Manages an ownable set of validators that ECDSA sign checkpoints to
18
+ * reach a quorum.
19
+ */
20
+ contract MultisigIsm is IMultisigIsm, Ownable {
21
+ // ============ Libraries ============
22
+
23
+ using EnumerableSet for EnumerableSet.AddressSet;
24
+ using Message for bytes;
25
+ using MultisigIsmMetadata for bytes;
26
+ using MerkleLib for MerkleLib.Tree;
27
+
28
+ // ============ Mutable Storage ============
29
+
30
+ /// @notice The validator threshold for each remote domain.
31
+ mapping(uint32 => uint256) public threshold;
32
+
33
+ /// @notice The validator set for each remote domain.
34
+ mapping(uint32 => EnumerableSet.AddressSet) private validatorSet;
35
+
36
+ /// @notice A succinct commitment to the validator set and threshold for each remote
37
+ /// domain.
38
+ mapping(uint32 => bytes32) public commitment;
39
+
40
+ // ============ Events ============
41
+
42
+ /**
43
+ * @notice Emitted when a validator is enrolled in a validator set.
44
+ * @param domain The remote domain of the validator set.
45
+ * @param validator The address of the validator.
46
+ * @param validatorCount The number of enrolled validators in the validator set.
47
+ * @param commitment A commitment to the validator set and threshold.
48
+ */
49
+ event ValidatorEnrolled(
50
+ uint32 indexed domain,
51
+ address indexed validator,
52
+ uint256 validatorCount,
53
+ bytes32 commitment
54
+ );
55
+
56
+ /**
57
+ * @notice Emitted when a validator is unenrolled from a validator set.
58
+ * @param domain The remote domain of the validator set.
59
+ * @param validator The address of the validator.
60
+ * @param validatorCount The number of enrolled validators in the validator set.
61
+ * @param commitment A commitment to the validator set and threshold.
62
+ */
63
+ event ValidatorUnenrolled(
64
+ uint32 indexed domain,
65
+ address indexed validator,
66
+ uint256 validatorCount,
67
+ bytes32 commitment
68
+ );
69
+
70
+ /**
71
+ * @notice Emitted when the quorum threshold is set.
72
+ * @param domain The remote domain of the validator set.
73
+ * @param threshold The new quorum threshold.
74
+ * @param commitment A commitment to the validator set and threshold.
75
+ */
76
+ event ThresholdSet(
77
+ uint32 indexed domain,
78
+ uint256 threshold,
79
+ bytes32 commitment
80
+ );
81
+
82
+ // ============ Constructor ============
83
+
84
+ // solhint-disable-next-line no-empty-blocks
85
+ constructor() Ownable() {}
86
+
87
+ // ============ External Functions ============
88
+
89
+ /**
90
+ * @notice Enrolls a validator into a validator set.
91
+ * @dev Reverts if `_validator` is already in the validator set.
92
+ * @param _domain The remote domain of the validator set.
93
+ * @param _validator The validator to add to the validator set.
94
+ */
95
+ function enrollValidator(uint32 _domain, address _validator)
96
+ external
97
+ onlyOwner
98
+ {
99
+ require(_validator != address(0), "zero address");
100
+ require(validatorSet[_domain].add(_validator), "already enrolled");
101
+ bytes32 _commitment = _updateCommitment(_domain);
102
+ emit ValidatorEnrolled(
103
+ _domain,
104
+ _validator,
105
+ validatorCount(_domain),
106
+ _commitment
107
+ );
108
+ }
109
+
110
+ /**
111
+ * @notice Unenrolls a validator from a validator set.
112
+ * @dev Reverts if `_validator` is not in the validator set.
113
+ * @param _domain The remote domain of the validator set.
114
+ * @param _validator The validator to remove from the validator set.
115
+ */
116
+ function unenrollValidator(uint32 _domain, address _validator)
117
+ external
118
+ onlyOwner
119
+ {
120
+ require(validatorSet[_domain].remove(_validator), "!enrolled");
121
+ uint256 _validatorCount = validatorCount(_domain);
122
+ require(
123
+ _validatorCount >= threshold[_domain],
124
+ "violates quorum threshold"
125
+ );
126
+ bytes32 _commitment = _updateCommitment(_domain);
127
+ emit ValidatorUnenrolled(
128
+ _domain,
129
+ _validator,
130
+ _validatorCount,
131
+ _commitment
132
+ );
133
+ }
134
+
135
+ /**
136
+ * @notice Sets the quorum threshold.
137
+ * @param _domain The remote domain of the validator set.
138
+ * @param _threshold The new quorum threshold.
139
+ */
140
+ function setThreshold(uint32 _domain, uint256 _threshold)
141
+ external
142
+ onlyOwner
143
+ {
144
+ require(
145
+ _threshold > 0 && _threshold <= validatorCount(_domain),
146
+ "!range"
147
+ );
148
+ threshold[_domain] = _threshold;
149
+ bytes32 _commitment = _updateCommitment(_domain);
150
+ emit ThresholdSet(_domain, _threshold, _commitment);
151
+ }
152
+
153
+ /**
154
+ * @notice Returns whether an address is enrolled in a validator set.
155
+ * @param _domain The remote domain of the validator set.
156
+ * @param _address The address to test for set membership.
157
+ * @return True if the address is enrolled, false otherwise.
158
+ */
159
+ function isEnrolled(uint32 _domain, address _address)
160
+ external
161
+ view
162
+ returns (bool)
163
+ {
164
+ EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
165
+ return _validatorSet.contains(_address);
166
+ }
167
+
168
+ // ============ Public Functions ============
169
+
170
+ /**
171
+ * @notice Verifies that a quorum of the origin domain's validators signed
172
+ * a checkpoint, and verifies the merkle proof of `_message` against that
173
+ * checkpoint.
174
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
175
+ * @param _message Formatted Hyperlane message (see Message.sol).
176
+ */
177
+ function verify(bytes calldata _metadata, bytes calldata _message)
178
+ public
179
+ view
180
+ returns (bool)
181
+ {
182
+ require(_verifyMerkleProof(_metadata, _message), "!merkle");
183
+ require(_verifyValidatorSignatures(_metadata, _message), "!sigs");
184
+ return true;
185
+ }
186
+
187
+ /**
188
+ * @notice Gets the current validator set
189
+ * @param _domain The remote domain of the validator set.
190
+ * @return The addresses of the validator set.
191
+ */
192
+ function validators(uint32 _domain) public view returns (address[] memory) {
193
+ EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
194
+ uint256 _validatorCount = _validatorSet.length();
195
+ address[] memory _validators = new address[](_validatorCount);
196
+ for (uint256 i = 0; i < _validatorCount; i++) {
197
+ _validators[i] = _validatorSet.at(i);
198
+ }
199
+ return _validators;
200
+ }
201
+
202
+ /**
203
+ * @notice Returns the number of validators enrolled in the validator set.
204
+ * @param _domain The remote domain of the validator set.
205
+ * @return The number of validators enrolled in the validator set.
206
+ */
207
+ function validatorCount(uint32 _domain) public view returns (uint256) {
208
+ return validatorSet[_domain].length();
209
+ }
210
+
211
+ // ============ Internal Functions ============
212
+
213
+ /**
214
+ * @notice Updates the commitment to the validator set for `_domain`.
215
+ * @param _domain The remote domain of the validator set.
216
+ * @return The commitment to the validator set for `_domain`.
217
+ */
218
+ function _updateCommitment(uint32 _domain) internal returns (bytes32) {
219
+ address[] memory _validators = validators(_domain);
220
+ uint256 _threshold = threshold[_domain];
221
+ bytes32 _commitment = keccak256(
222
+ abi.encodePacked(_threshold, _validators)
223
+ );
224
+ commitment[_domain] = _commitment;
225
+ return _commitment;
226
+ }
227
+
228
+ /**
229
+ * @notice Verifies the merkle proof of `_message` against the provided
230
+ * checkpoint.
231
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
232
+ * @param _message Formatted Hyperlane message (see Message.sol).
233
+ */
234
+ function _verifyMerkleProof(
235
+ bytes calldata _metadata,
236
+ bytes calldata _message
237
+ ) internal pure returns (bool) {
238
+ // calculate the expected root based on the proof
239
+ bytes32 _calculatedRoot = MerkleLib.branchRoot(
240
+ _message.id(),
241
+ _metadata.proof(),
242
+ _message.nonce()
243
+ );
244
+ return _calculatedRoot == _metadata.root();
245
+ }
246
+
247
+ /**
248
+ * @notice Verifies that a quorum of the origin domain's validators signed
249
+ * the provided checkpoint.
250
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
251
+ * @param _message Formatted Hyperlane message (see Message.sol).
252
+ */
253
+ function _verifyValidatorSignatures(
254
+ bytes calldata _metadata,
255
+ bytes calldata _message
256
+ ) internal view returns (bool) {
257
+ uint256 _threshold = _metadata.threshold();
258
+ bytes32 _digest;
259
+ {
260
+ uint32 _origin = _message.origin();
261
+
262
+ bytes32 _commitment = keccak256(
263
+ abi.encodePacked(_threshold, _metadata.validators())
264
+ );
265
+ // Ensures the validator set encoded in the metadata matches
266
+ // what we've stored on chain.
267
+ // NB: An empty validator set in `_metadata` will result in a
268
+ // non-zero computed commitment, and this check will fail
269
+ // as the commitment in storage will be zero.
270
+ require(_commitment == commitment[_origin], "!commitment");
271
+ _digest = _getCheckpointDigest(_metadata, _origin);
272
+ }
273
+ uint256 _validatorCount = _metadata.validatorCount();
274
+ uint256 _validatorIndex = 0;
275
+ // Assumes that signatures are ordered by validator
276
+ for (uint256 i = 0; i < _threshold; ++i) {
277
+ address _signer = ECDSA.recover(_digest, _metadata.signatureAt(i));
278
+ // Loop through remaining validators until we find a match
279
+ for (
280
+ ;
281
+ _validatorIndex < _validatorCount &&
282
+ _signer != _metadata.validatorAt(_validatorIndex);
283
+ ++_validatorIndex
284
+ ) {}
285
+ // Fail if we never found a match
286
+ require(_validatorIndex < _validatorCount, "!threshold");
287
+ ++_validatorIndex;
288
+ }
289
+ return true;
290
+ }
291
+
292
+ /**
293
+ * @notice Returns the domain hash that validators are expected to use
294
+ * when signing checkpoints.
295
+ * @param _origin The origin domain of the checkpoint.
296
+ * @param _originMailbox The address of the origin mailbox as bytes32.
297
+ * @return The domain hash.
298
+ */
299
+ function _getDomainHash(uint32 _origin, bytes32 _originMailbox)
300
+ internal
301
+ pure
302
+ returns (bytes32)
303
+ {
304
+ // Including the origin mailbox address in the signature allows the slashing
305
+ // protocol to enroll multiple mailboxes. Otherwise, a valid signature for
306
+ // mailbox A would be indistinguishable from a fraudulent signature for mailbox
307
+ // B.
308
+ // The slashing protocol should slash if validators sign attestations for
309
+ // anything other than a whitelisted mailbox.
310
+ return
311
+ keccak256(abi.encodePacked(_origin, _originMailbox, "HYPERLANE"));
312
+ }
313
+
314
+ /**
315
+ * @notice Returns the digest validators are expected to sign when signing checkpoints.
316
+ * @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
317
+ * @param _origin The origin domain of the checkpoint.
318
+ * @return The digest of the checkpoint.
319
+ */
320
+ function _getCheckpointDigest(bytes calldata _metadata, uint32 _origin)
321
+ internal
322
+ pure
323
+ returns (bytes32)
324
+ {
325
+ bytes32 _domainHash = _getDomainHash(
326
+ _origin,
327
+ _metadata.originMailbox()
328
+ );
329
+ return
330
+ ECDSA.toEthSignedMessageHash(
331
+ keccak256(
332
+ abi.encodePacked(
333
+ _domainHash,
334
+ _metadata.root(),
335
+ _metadata.index()
336
+ )
337
+ )
338
+ );
339
+ }
340
+ }
@@ -4,24 +4,35 @@ pragma solidity >=0.8.0;
4
4
  import {TypeCasts} from "./TypeCasts.sol";
5
5
 
6
6
  /**
7
- * @title Message Library
8
- * @author Celo Labs Inc.
9
- * @notice Library for formatted messages used by Outbox and Replica.
7
+ * @title Hyperlane Message Library
8
+ * @notice Library for formatted messages used by Mailbox
10
9
  **/
11
10
  library Message {
12
11
  using TypeCasts for bytes32;
13
12
 
13
+ uint256 private constant VERSION_OFFSET = 0;
14
+ uint256 private constant NONCE_OFFSET = 1;
15
+ uint256 private constant ORIGIN_OFFSET = 5;
16
+ uint256 private constant SENDER_OFFSET = 9;
17
+ uint256 private constant DESTINATION_OFFSET = 41;
18
+ uint256 private constant RECIPIENT_OFFSET = 45;
19
+ uint256 private constant BODY_OFFSET = 77;
20
+
14
21
  /**
15
- * @notice Returns formatted (packed) message with provided fields
22
+ * @notice Returns formatted (packed) Hyperlane message with provided fields
16
23
  * @dev This function should only be used in memory message construction.
17
- * @param _originDomain Domain of home chain
24
+ * @param _version The version of the origin and destination Mailboxes
25
+ * @param _nonce A nonce to uniquely identify the message on its origin chain
26
+ * @param _originDomain Domain of origin chain
18
27
  * @param _sender Address of sender as bytes32
19
28
  * @param _destinationDomain Domain of destination chain
20
29
  * @param _recipient Address of recipient on destination chain as bytes32
21
30
  * @param _messageBody Raw bytes of message body
22
31
  * @return Formatted message
23
- **/
32
+ */
24
33
  function formatMessage(
34
+ uint8 _version,
35
+ uint32 _nonce,
25
36
  uint32 _originDomain,
26
37
  bytes32 _sender,
27
38
  uint32 _destinationDomain,
@@ -30,6 +41,8 @@ library Message {
30
41
  ) internal pure returns (bytes memory) {
31
42
  return
32
43
  abi.encodePacked(
44
+ _version,
45
+ _nonce,
33
46
  _originDomain,
34
47
  _sender,
35
48
  _destinationDomain,
@@ -39,84 +52,112 @@ library Message {
39
52
  }
40
53
 
41
54
  /**
42
- * @notice Returns leaf of formatted message with provided fields.
43
- * @dev hash of abi packed message and leaf index.
44
- * @param _message Raw bytes of message contents.
45
- * @param _leafIndex Index of the message in the tree
46
- * @return Leaf (hash) of formatted message
55
+ * @notice Returns the message ID.
56
+ * @param _message ABI encoded Hyperlane message.
57
+ * @return ID of `_message`
58
+ */
59
+ function id(bytes memory _message) internal pure returns (bytes32) {
60
+ return keccak256(_message);
61
+ }
62
+
63
+ /**
64
+ * @notice Returns the message version.
65
+ * @param _message ABI encoded Hyperlane message.
66
+ * @return Version of `_message`
67
+ */
68
+ function version(bytes calldata _message) internal pure returns (uint8) {
69
+ return uint8(bytes1(_message[VERSION_OFFSET:NONCE_OFFSET]));
70
+ }
71
+
72
+ /**
73
+ * @notice Returns the message nonce.
74
+ * @param _message ABI encoded Hyperlane message.
75
+ * @return Nonce of `_message`
76
+ */
77
+ function nonce(bytes calldata _message) internal pure returns (uint32) {
78
+ return uint32(bytes4(_message[NONCE_OFFSET:ORIGIN_OFFSET]));
79
+ }
80
+
81
+ /**
82
+ * @notice Returns the message origin domain.
83
+ * @param _message ABI encoded Hyperlane message.
84
+ * @return Origin domain of `_message`
85
+ */
86
+ function origin(bytes calldata _message) internal pure returns (uint32) {
87
+ return uint32(bytes4(_message[ORIGIN_OFFSET:SENDER_OFFSET]));
88
+ }
89
+
90
+ /**
91
+ * @notice Returns the message sender as bytes32.
92
+ * @param _message ABI encoded Hyperlane message.
93
+ * @return Sender of `_message` as bytes32
94
+ */
95
+ function sender(bytes calldata _message) internal pure returns (bytes32) {
96
+ return bytes32(_message[SENDER_OFFSET:DESTINATION_OFFSET]);
97
+ }
98
+
99
+ /**
100
+ * @notice Returns the message sender as address.
101
+ * @param _message ABI encoded Hyperlane message.
102
+ * @return Sender of `_message` as address
103
+ */
104
+ function senderAddress(bytes calldata _message)
105
+ internal
106
+ pure
107
+ returns (address)
108
+ {
109
+ return sender(_message).bytes32ToAddress();
110
+ }
111
+
112
+ /**
113
+ * @notice Returns the message destination domain.
114
+ * @param _message ABI encoded Hyperlane message.
115
+ * @return Destination domain of `_message`
116
+ */
117
+ function destination(bytes calldata _message)
118
+ internal
119
+ pure
120
+ returns (uint32)
121
+ {
122
+ return uint32(bytes4(_message[DESTINATION_OFFSET:RECIPIENT_OFFSET]));
123
+ }
124
+
125
+ /**
126
+ * @notice Returns the message recipient as bytes32.
127
+ * @param _message ABI encoded Hyperlane message.
128
+ * @return Recipient of `_message` as bytes32
47
129
  */
48
- function leaf(bytes calldata _message, uint256 _leafIndex)
130
+ function recipient(bytes calldata _message)
49
131
  internal
50
132
  pure
51
133
  returns (bytes32)
52
134
  {
53
- return keccak256(abi.encodePacked(_message, _leafIndex));
135
+ return bytes32(_message[RECIPIENT_OFFSET:BODY_OFFSET]);
54
136
  }
55
137
 
56
138
  /**
57
- * @notice Decode raw message bytes into structured message fields.
58
- * @dev Efficiently slices calldata into structured message fields.
59
- * @param _message Raw bytes of message contents.
60
- * @return origin Domain of home chain
61
- * @return sender Address of sender as bytes32
62
- * @return destination Domain of destination chain
63
- * @return recipient Address of recipient on destination chain as bytes32
64
- * @return body Raw bytes of message body
139
+ * @notice Returns the message recipient as address.
140
+ * @param _message ABI encoded Hyperlane message.
141
+ * @return Recipient of `_message` as address
65
142
  */
66
- function destructure(bytes calldata _message)
143
+ function recipientAddress(bytes calldata _message)
67
144
  internal
68
145
  pure
69
- returns (
70
- uint32 origin,
71
- bytes32 sender,
72
- uint32 destination,
73
- bytes32 recipient,
74
- bytes calldata body
75
- )
146
+ returns (address)
76
147
  {
77
- return (
78
- uint32(bytes4(_message[0:4])),
79
- bytes32(_message[4:36]),
80
- uint32(bytes4(_message[36:40])),
81
- bytes32(_message[40:72]),
82
- bytes(_message[72:])
83
- );
148
+ return recipient(_message).bytes32ToAddress();
84
149
  }
85
150
 
86
151
  /**
87
- * @notice Decode raw message bytes into structured message fields.
88
- * @dev Efficiently slices calldata into structured message fields.
89
- * @param _message Raw bytes of message contents.
90
- * @return origin Domain of home chain
91
- * @return sender Address of sender as address (bytes20)
92
- * @return destination Domain of destination chain
93
- * @return recipient Address of recipient on destination chain as address (bytes20)
94
- * @return body Raw bytes of message body
152
+ * @notice Returns the message body.
153
+ * @param _message ABI encoded Hyperlane message.
154
+ * @return Body of `_message`
95
155
  */
96
- function destructureAddresses(bytes calldata _message)
156
+ function body(bytes calldata _message)
97
157
  internal
98
158
  pure
99
- returns (
100
- uint32,
101
- address,
102
- uint32,
103
- address,
104
- bytes calldata
105
- )
159
+ returns (bytes calldata)
106
160
  {
107
- (
108
- uint32 _origin,
109
- bytes32 _sender,
110
- uint32 destination,
111
- bytes32 _recipient,
112
- bytes calldata body
113
- ) = destructure(_message);
114
- return (
115
- _origin,
116
- _sender.bytes32ToAddress(),
117
- destination,
118
- _recipient.bytes32ToAddress(),
119
- body
120
- );
161
+ return bytes(_message[BODY_OFFSET:]);
121
162
  }
122
163
  }