@hyperlane-xyz/core 0.5.4-2 → 0.5.5

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 (482) hide show
  1. package/contracts/{HyperlaneConnectionClient.sol → AbacusConnectionClient.sol} +56 -69
  2. package/contracts/AbacusConnectionManager.sol +145 -0
  3. package/contracts/Inbox.sol +148 -0
  4. package/contracts/InterchainGasPaymaster.sol +11 -9
  5. package/contracts/Mailbox.sol +44 -179
  6. package/contracts/MerkleTreeManager.sol +32 -0
  7. package/contracts/Outbox.sol +191 -0
  8. package/contracts/Router.sol +45 -36
  9. package/contracts/libs/Message.sol +66 -107
  10. package/contracts/middleware/InterchainAccountRouter.sol +15 -6
  11. package/contracts/middleware/InterchainQueryRouter.sol +28 -9
  12. package/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol +3 -2
  13. package/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol +2 -1
  14. package/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol +215 -0
  15. package/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol +87 -0
  16. package/contracts/mock/MockHyperlaneEnvironment.sol +47 -10
  17. package/contracts/mock/MockInbox.sol +52 -0
  18. package/contracts/mock/MockInterchainAccountRouter.sol +18 -4
  19. package/contracts/mock/MockOutbox.sol +30 -0
  20. package/contracts/mock/MockPortalBridge.sol +89 -0
  21. package/contracts/test/TestAbacusConnectionClient.sol +23 -0
  22. package/contracts/test/TestInbox.sol +54 -0
  23. package/contracts/test/TestMailbox.sol +4 -34
  24. package/contracts/test/TestMerkle.sol +4 -9
  25. package/contracts/test/TestMessage.sol +12 -24
  26. package/contracts/test/TestMultisigValidatorManager.sol +26 -0
  27. package/contracts/test/TestOutbox.sol +46 -0
  28. package/contracts/test/TestSendReceiver.sol +15 -6
  29. package/contracts/test/TestValidatorManager.sol +21 -0
  30. package/contracts/validator-manager/InboxValidatorManager.sol +58 -0
  31. package/contracts/validator-manager/MultisigValidatorManager.sol +271 -0
  32. package/contracts/validator-manager/OutboxValidatorManager.sol +244 -0
  33. package/dist/contracts/{OwnableSpecifiesISM.d.ts → AbacusConnectionClient.d.ts} +65 -30
  34. package/dist/contracts/AbacusConnectionClient.d.ts.map +1 -0
  35. package/dist/contracts/AbacusConnectionClient.js +4 -0
  36. package/dist/contracts/AbacusConnectionClient.js.map +1 -0
  37. package/dist/contracts/AbacusConnectionManager.d.ts +213 -0
  38. package/dist/contracts/AbacusConnectionManager.d.ts.map +1 -0
  39. package/dist/contracts/AbacusConnectionManager.js +4 -0
  40. package/dist/contracts/AbacusConnectionManager.js.map +1 -0
  41. package/dist/contracts/Inbox.d.ts +207 -0
  42. package/dist/contracts/Inbox.d.ts.map +1 -0
  43. package/dist/contracts/{OwnableSpecifiesISM.js → Inbox.js} +1 -1
  44. package/dist/contracts/Inbox.js.map +1 -0
  45. package/dist/contracts/InterchainGasPaymaster.d.ts +13 -11
  46. package/dist/contracts/InterchainGasPaymaster.d.ts.map +1 -1
  47. package/dist/contracts/Mailbox.d.ts +28 -151
  48. package/dist/contracts/Mailbox.d.ts.map +1 -1
  49. package/dist/contracts/MerkleTreeManager.d.ts +53 -0
  50. package/dist/contracts/MerkleTreeManager.d.ts.map +1 -0
  51. package/dist/contracts/MerkleTreeManager.js +4 -0
  52. package/dist/contracts/MerkleTreeManager.js.map +1 -0
  53. package/dist/contracts/Outbox.d.ts +331 -0
  54. package/dist/contracts/Outbox.d.ts.map +1 -0
  55. package/dist/contracts/Outbox.js +4 -0
  56. package/dist/contracts/Outbox.js.map +1 -0
  57. package/dist/contracts/Router.d.ts +32 -81
  58. package/dist/contracts/Router.d.ts.map +1 -1
  59. package/dist/contracts/index.d.ts +7 -0
  60. package/dist/contracts/index.d.ts.map +1 -1
  61. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +56 -89
  62. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  63. package/dist/contracts/middleware/InterchainQueryRouter.d.ts +55 -88
  64. package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
  65. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +37 -86
  66. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -1
  67. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +32 -81
  68. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -1
  69. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts +378 -0
  70. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts.map +1 -0
  71. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.js +4 -0
  72. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.js.map +1 -0
  73. package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts +1 -0
  74. package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -1
  75. package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts +2 -0
  76. package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -1
  77. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts +148 -0
  78. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts.map +1 -0
  79. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.js +4 -0
  80. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.js.map +1 -0
  81. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts +2 -0
  82. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts.map +1 -0
  83. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.js +3 -0
  84. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.js.map +1 -0
  85. package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.d.ts +291 -0
  86. package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.d.ts.map +1 -0
  87. package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.js +4 -0
  88. package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.js.map +1 -0
  89. package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.d.ts +416 -0
  90. package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.d.ts.map +1 -0
  91. package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.js +4 -0
  92. package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.js.map +1 -0
  93. package/dist/contracts/middleware/token-bridge/adapters/index.d.ts +2 -0
  94. package/dist/contracts/middleware/token-bridge/adapters/index.d.ts.map +1 -0
  95. package/dist/contracts/middleware/token-bridge/adapters/index.js +3 -0
  96. package/dist/contracts/middleware/token-bridge/adapters/index.js.map +1 -0
  97. package/dist/contracts/middleware/token-bridge/index.d.ts +6 -0
  98. package/dist/contracts/middleware/token-bridge/index.d.ts.map +1 -0
  99. package/dist/contracts/middleware/token-bridge/index.js +4 -0
  100. package/dist/contracts/middleware/token-bridge/index.js.map +1 -0
  101. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.d.ts +67 -0
  102. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.d.ts.map +1 -0
  103. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.js +4 -0
  104. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.js.map +1 -0
  105. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.d.ts +51 -0
  106. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.d.ts.map +1 -0
  107. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.js +4 -0
  108. package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.js.map +1 -0
  109. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.d.ts +78 -0
  110. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.d.ts.map +1 -0
  111. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.js +4 -0
  112. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.js.map +1 -0
  113. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.d.ts +59 -0
  114. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.d.ts.map +1 -0
  115. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.js +4 -0
  116. package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.js.map +1 -0
  117. package/dist/contracts/middleware/token-bridge/interfaces/circle/index.d.ts +3 -0
  118. package/dist/contracts/middleware/token-bridge/interfaces/circle/index.d.ts.map +1 -0
  119. package/dist/contracts/middleware/token-bridge/interfaces/circle/index.js +3 -0
  120. package/dist/contracts/middleware/token-bridge/interfaces/circle/index.js.map +1 -0
  121. package/dist/contracts/middleware/token-bridge/interfaces/index.d.ts +5 -0
  122. package/dist/contracts/middleware/token-bridge/interfaces/index.d.ts.map +1 -0
  123. package/dist/contracts/middleware/token-bridge/interfaces/index.js +4 -0
  124. package/dist/contracts/middleware/token-bridge/interfaces/index.js.map +1 -0
  125. package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts +33 -9
  126. package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -1
  127. package/dist/contracts/mock/MockInbox.d.ts +67 -0
  128. package/dist/contracts/mock/MockInbox.d.ts.map +1 -0
  129. package/dist/contracts/mock/MockInbox.js +4 -0
  130. package/dist/contracts/mock/MockInbox.js.map +1 -0
  131. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts +24 -8
  132. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts.map +1 -1
  133. package/dist/contracts/mock/MockOutbox.d.ts +51 -0
  134. package/dist/contracts/mock/MockOutbox.d.ts.map +1 -0
  135. package/dist/contracts/mock/MockOutbox.js +4 -0
  136. package/dist/contracts/mock/MockOutbox.js.map +1 -0
  137. package/dist/contracts/mock/MockPortalBridge.d.ts +164 -0
  138. package/dist/contracts/mock/MockPortalBridge.d.ts.map +1 -0
  139. package/dist/contracts/mock/MockPortalBridge.js +4 -0
  140. package/dist/contracts/mock/MockPortalBridge.js.map +1 -0
  141. package/dist/contracts/mock/index.d.ts +3 -0
  142. package/dist/contracts/mock/index.d.ts.map +1 -1
  143. package/dist/contracts/test/TestAbacusConnectionClient.d.ts +209 -0
  144. package/dist/contracts/test/TestAbacusConnectionClient.d.ts.map +1 -0
  145. package/dist/contracts/test/TestAbacusConnectionClient.js +4 -0
  146. package/dist/contracts/test/TestAbacusConnectionClient.js.map +1 -0
  147. package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts +5 -5
  148. package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts.map +1 -1
  149. package/dist/contracts/test/TestInbox.d.ts +263 -0
  150. package/dist/contracts/test/TestInbox.d.ts.map +1 -0
  151. package/dist/contracts/test/TestInbox.js +4 -0
  152. package/dist/contracts/test/TestInbox.js.map +1 -0
  153. package/dist/contracts/test/TestMailbox.d.ts +33 -164
  154. package/dist/contracts/test/TestMailbox.d.ts.map +1 -1
  155. package/dist/contracts/test/TestMessage.d.ts +10 -30
  156. package/dist/contracts/test/TestMessage.d.ts.map +1 -1
  157. package/dist/contracts/test/TestMultisigValidatorManager.d.ts +247 -0
  158. package/dist/contracts/test/TestMultisigValidatorManager.d.ts.map +1 -0
  159. package/dist/contracts/test/TestMultisigValidatorManager.js +4 -0
  160. package/dist/contracts/test/TestMultisigValidatorManager.js.map +1 -0
  161. package/dist/contracts/test/TestOutbox.d.ts +371 -0
  162. package/dist/contracts/test/TestOutbox.d.ts.map +1 -0
  163. package/dist/contracts/test/TestOutbox.js +4 -0
  164. package/dist/contracts/test/TestOutbox.js.map +1 -0
  165. package/dist/contracts/test/TestRouter.d.ts +32 -81
  166. package/dist/contracts/test/TestRouter.d.ts.map +1 -1
  167. package/dist/contracts/test/TestTokenBridgeMessageRecipient.d.ts +72 -0
  168. package/dist/contracts/test/TestTokenBridgeMessageRecipient.d.ts.map +1 -0
  169. package/dist/contracts/test/TestTokenBridgeMessageRecipient.js +4 -0
  170. package/dist/contracts/test/TestTokenBridgeMessageRecipient.js.map +1 -0
  171. package/dist/contracts/test/TestValidatorManager.d.ts +58 -0
  172. package/dist/contracts/test/TestValidatorManager.d.ts.map +1 -0
  173. package/dist/contracts/test/TestValidatorManager.js +4 -0
  174. package/dist/contracts/test/TestValidatorManager.js.map +1 -0
  175. package/dist/contracts/test/index.d.ts +5 -0
  176. package/dist/contracts/test/index.d.ts.map +1 -1
  177. package/dist/contracts/validator-manager/InboxValidatorManager.d.ts +263 -0
  178. package/dist/contracts/validator-manager/InboxValidatorManager.d.ts.map +1 -0
  179. package/dist/contracts/validator-manager/InboxValidatorManager.js +4 -0
  180. package/dist/contracts/validator-manager/InboxValidatorManager.js.map +1 -0
  181. package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts +239 -0
  182. package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts.map +1 -0
  183. package/dist/contracts/validator-manager/MultisigValidatorManager.js +4 -0
  184. package/dist/contracts/validator-manager/MultisigValidatorManager.js.map +1 -0
  185. package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts +335 -0
  186. package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts.map +1 -0
  187. package/dist/contracts/validator-manager/OutboxValidatorManager.js +4 -0
  188. package/dist/contracts/validator-manager/OutboxValidatorManager.js.map +1 -0
  189. package/dist/contracts/validator-manager/index.d.ts +4 -0
  190. package/dist/contracts/validator-manager/index.d.ts.map +1 -0
  191. package/dist/contracts/validator-manager/index.js +3 -0
  192. package/dist/contracts/validator-manager/index.js.map +1 -0
  193. package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts +43 -0
  194. package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts.map +1 -0
  195. package/dist/factories/contracts/AbacusConnectionClient__factory.js +161 -0
  196. package/dist/factories/contracts/AbacusConnectionClient__factory.js.map +1 -0
  197. package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts +55 -0
  198. package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts.map +1 -0
  199. package/dist/factories/contracts/AbacusConnectionManager__factory.js +276 -0
  200. package/dist/factories/contracts/AbacusConnectionManager__factory.js.map +1 -0
  201. package/dist/factories/contracts/Inbox__factory.d.ts +59 -0
  202. package/dist/factories/contracts/Inbox__factory.d.ts.map +1 -0
  203. package/dist/factories/contracts/Inbox__factory.js +278 -0
  204. package/dist/factories/contracts/Inbox__factory.js.map +1 -0
  205. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts +1 -1
  206. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts.map +1 -1
  207. package/dist/factories/contracts/InterchainGasPaymaster__factory.js +18 -7
  208. package/dist/factories/contracts/InterchainGasPaymaster__factory.js.map +1 -1
  209. package/dist/factories/contracts/Mailbox__factory.d.ts +13 -29
  210. package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
  211. package/dist/factories/contracts/Mailbox__factory.js +11 -239
  212. package/dist/factories/contracts/Mailbox__factory.js.map +1 -1
  213. package/dist/factories/contracts/MerkleTreeManager__factory.d.ts +31 -0
  214. package/dist/factories/contracts/MerkleTreeManager__factory.d.ts.map +1 -0
  215. package/dist/factories/contracts/MerkleTreeManager__factory.js +67 -0
  216. package/dist/factories/contracts/MerkleTreeManager__factory.js.map +1 -0
  217. package/dist/factories/contracts/Outbox__factory.d.ts +59 -0
  218. package/dist/factories/contracts/Outbox__factory.d.ts.map +1 -0
  219. package/dist/factories/contracts/Outbox__factory.js +415 -0
  220. package/dist/factories/contracts/Outbox__factory.js.map +1 -0
  221. package/dist/factories/contracts/Router__factory.d.ts.map +1 -1
  222. package/dist/factories/contracts/Router__factory.js +26 -83
  223. package/dist/factories/contracts/Router__factory.js.map +1 -1
  224. package/dist/factories/contracts/index.d.ts +6 -0
  225. package/dist/factories/contracts/index.d.ts.map +1 -1
  226. package/dist/factories/contracts/index.js +12 -1
  227. package/dist/factories/contracts/index.js.map +1 -1
  228. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  229. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  230. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +58 -86
  231. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  232. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  233. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
  234. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +68 -91
  235. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
  236. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  237. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
  238. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +31 -88
  239. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -1
  240. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  241. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -1
  242. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +31 -88
  243. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -1
  244. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +48 -0
  245. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts.map +1 -0
  246. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +540 -0
  247. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +1 -0
  248. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts +1 -0
  249. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -1
  250. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js +3 -1
  251. package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -1
  252. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts +1 -0
  253. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -1
  254. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js +2 -1
  255. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -1
  256. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.d.ts +56 -0
  257. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.d.ts.map +1 -0
  258. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.js +204 -0
  259. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.js.map +1 -0
  260. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts +2 -0
  261. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts.map +1 -0
  262. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.js +9 -0
  263. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.js.map +1 -0
  264. package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.d.ts +48 -0
  265. package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.d.ts.map +1 -0
  266. package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.js +380 -0
  267. package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.js.map +1 -0
  268. package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.d.ts +48 -0
  269. package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -0
  270. package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.js +584 -0
  271. package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.js.map +1 -0
  272. package/dist/factories/contracts/middleware/token-bridge/adapters/index.d.ts +2 -0
  273. package/dist/factories/contracts/middleware/token-bridge/adapters/index.d.ts.map +1 -0
  274. package/dist/factories/contracts/middleware/token-bridge/adapters/index.js +9 -0
  275. package/dist/factories/contracts/middleware/token-bridge/adapters/index.js.map +1 -0
  276. package/dist/factories/contracts/middleware/token-bridge/index.d.ts +4 -0
  277. package/dist/factories/contracts/middleware/token-bridge/index.d.ts.map +1 -0
  278. package/dist/factories/contracts/middleware/token-bridge/index.js +34 -0
  279. package/dist/factories/contracts/middleware/token-bridge/index.js.map +1 -0
  280. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.d.ts +23 -0
  281. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.d.ts.map +1 -0
  282. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.js +91 -0
  283. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.js.map +1 -0
  284. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.d.ts +19 -0
  285. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.d.ts.map +1 -0
  286. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.js +51 -0
  287. package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.js.map +1 -0
  288. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.d.ts +36 -0
  289. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.d.ts.map +1 -0
  290. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.js +104 -0
  291. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.js.map +1 -0
  292. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.d.ts +23 -0
  293. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.d.ts.map +1 -0
  294. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.js +61 -0
  295. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.js.map +1 -0
  296. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.d.ts +3 -0
  297. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.d.ts.map +1 -0
  298. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.js +11 -0
  299. package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.js.map +1 -0
  300. package/dist/factories/contracts/middleware/token-bridge/interfaces/index.d.ts +4 -0
  301. package/dist/factories/contracts/middleware/token-bridge/interfaces/index.d.ts.map +1 -0
  302. package/dist/factories/contracts/middleware/token-bridge/interfaces/index.js +35 -0
  303. package/dist/factories/contracts/middleware/token-bridge/interfaces/index.js.map +1 -0
  304. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  305. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  306. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +60 -3
  307. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  308. package/dist/factories/contracts/mock/MockInbox__factory.d.ts +31 -0
  309. package/dist/factories/contracts/mock/MockInbox__factory.d.ts.map +1 -0
  310. package/dist/factories/contracts/mock/MockInbox__factory.js +76 -0
  311. package/dist/factories/contracts/mock/MockInbox__factory.js.map +1 -0
  312. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts +1 -1
  313. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts.map +1 -1
  314. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js +33 -4
  315. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js.map +1 -1
  316. package/dist/factories/contracts/mock/MockOutbox__factory.d.ts +45 -0
  317. package/dist/factories/contracts/mock/MockOutbox__factory.d.ts.map +1 -0
  318. package/dist/factories/contracts/mock/MockOutbox__factory.js +86 -0
  319. package/dist/factories/contracts/mock/MockOutbox__factory.js.map +1 -0
  320. package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts +79 -0
  321. package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts.map +1 -0
  322. package/dist/factories/contracts/mock/MockPortalBridge__factory.js +296 -0
  323. package/dist/factories/contracts/mock/MockPortalBridge__factory.js.map +1 -0
  324. package/dist/factories/contracts/mock/index.d.ts +3 -0
  325. package/dist/factories/contracts/mock/index.d.ts.map +1 -1
  326. package/dist/factories/contracts/mock/index.js +7 -1
  327. package/dist/factories/contracts/mock/index.js.map +1 -1
  328. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts +48 -0
  329. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts.map +1 -0
  330. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js +242 -0
  331. package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js.map +1 -0
  332. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
  333. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +2 -2
  334. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js.map +1 -1
  335. package/dist/factories/contracts/test/TestInbox__factory.d.ts +59 -0
  336. package/dist/factories/contracts/test/TestInbox__factory.d.ts.map +1 -0
  337. package/dist/factories/contracts/test/TestInbox__factory.js +371 -0
  338. package/dist/factories/contracts/test/TestInbox__factory.js.map +1 -0
  339. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +8 -1
  340. package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
  341. package/dist/factories/contracts/test/TestMailbox__factory.js +13 -235
  342. package/dist/factories/contracts/test/TestMailbox__factory.js.map +1 -1
  343. package/dist/factories/contracts/test/TestMerkle__factory.d.ts +1 -1
  344. package/dist/factories/contracts/test/TestMerkle__factory.js +1 -1
  345. package/dist/factories/contracts/test/TestMessage__factory.d.ts +1 -1
  346. package/dist/factories/contracts/test/TestMessage__factory.d.ts.map +1 -1
  347. package/dist/factories/contracts/test/TestMessage__factory.js +7 -40
  348. package/dist/factories/contracts/test/TestMessage__factory.js.map +1 -1
  349. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts +59 -0
  350. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts.map +1 -0
  351. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js +349 -0
  352. package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js.map +1 -0
  353. package/dist/factories/contracts/test/TestOutbox__factory.d.ts +59 -0
  354. package/dist/factories/contracts/test/TestOutbox__factory.d.ts.map +1 -0
  355. package/dist/factories/contracts/test/TestOutbox__factory.js +483 -0
  356. package/dist/factories/contracts/test/TestOutbox__factory.js.map +1 -0
  357. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  358. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  359. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  360. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  361. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  362. package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
  363. package/dist/factories/contracts/test/TestRouter__factory.js +31 -88
  364. package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
  365. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  366. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts.map +1 -1
  367. package/dist/factories/contracts/test/TestSendReceiver__factory.js +2 -2
  368. package/dist/factories/contracts/test/TestSendReceiver__factory.js.map +1 -1
  369. package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.d.ts +44 -0
  370. package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.d.ts.map +1 -0
  371. package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.js +111 -0
  372. package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.js.map +1 -0
  373. package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts +31 -0
  374. package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts.map +1 -0
  375. package/dist/factories/contracts/test/TestValidatorManager__factory.js +79 -0
  376. package/dist/factories/contracts/test/TestValidatorManager__factory.js.map +1 -0
  377. package/dist/factories/contracts/test/index.d.ts +5 -0
  378. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  379. package/dist/factories/contracts/test/index.js +11 -1
  380. package/dist/factories/contracts/test/index.js.map +1 -1
  381. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts +59 -0
  382. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts.map +1 -0
  383. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js +373 -0
  384. package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js.map +1 -0
  385. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts +36 -0
  386. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts.map +1 -0
  387. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js +286 -0
  388. package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js.map +1 -0
  389. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts +59 -0
  390. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts.map +1 -0
  391. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js +560 -0
  392. package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js.map +1 -0
  393. package/dist/factories/contracts/validator-manager/index.d.ts +4 -0
  394. package/dist/factories/contracts/validator-manager/index.d.ts.map +1 -0
  395. package/dist/factories/contracts/validator-manager/index.js +13 -0
  396. package/dist/factories/contracts/validator-manager/index.js.map +1 -0
  397. package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts +23 -0
  398. package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts.map +1 -0
  399. package/dist/factories/interfaces/IAbacusConnectionManager__factory.js +63 -0
  400. package/dist/factories/interfaces/IAbacusConnectionManager__factory.js.map +1 -0
  401. package/dist/factories/interfaces/IInbox__factory.d.ts +29 -0
  402. package/dist/factories/interfaces/IInbox__factory.d.ts.map +1 -0
  403. package/dist/factories/interfaces/IInbox__factory.js +90 -0
  404. package/dist/factories/interfaces/IInbox__factory.js.map +1 -0
  405. package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts.map +1 -1
  406. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js +31 -2
  407. package/dist/factories/interfaces/IInterchainAccountRouter__factory.js.map +1 -1
  408. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
  409. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js +8 -3
  410. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
  411. package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts.map +1 -1
  412. package/dist/factories/interfaces/IInterchainQueryRouter__factory.js +38 -4
  413. package/dist/factories/interfaces/IInterchainQueryRouter__factory.js.map +1 -1
  414. package/dist/factories/interfaces/IMailbox__factory.d.ts +1 -5
  415. package/dist/factories/interfaces/IMailbox__factory.d.ts.map +1 -1
  416. package/dist/factories/interfaces/IMailbox__factory.js +3 -81
  417. package/dist/factories/interfaces/IMailbox__factory.js.map +1 -1
  418. package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts +19 -0
  419. package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts.map +1 -0
  420. package/dist/factories/interfaces/IMultisigValidatorManager__factory.js +57 -0
  421. package/dist/factories/interfaces/IMultisigValidatorManager__factory.js.map +1 -0
  422. package/dist/factories/interfaces/IOutbox__factory.d.ts +23 -0
  423. package/dist/factories/interfaces/IOutbox__factory.d.ts.map +1 -0
  424. package/dist/factories/interfaces/IOutbox__factory.js +155 -0
  425. package/dist/factories/interfaces/IOutbox__factory.js.map +1 -0
  426. package/dist/factories/interfaces/index.d.ts +4 -0
  427. package/dist/factories/interfaces/index.d.ts.map +1 -1
  428. package/dist/factories/interfaces/index.js +9 -1
  429. package/dist/factories/interfaces/index.js.map +1 -1
  430. package/dist/index.d.ts +44 -0
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +46 -2
  433. package/dist/index.js.map +1 -1
  434. package/dist/interfaces/IAbacusConnectionManager.d.ts +59 -0
  435. package/dist/interfaces/IAbacusConnectionManager.d.ts.map +1 -0
  436. package/dist/interfaces/IAbacusConnectionManager.js +4 -0
  437. package/dist/interfaces/IAbacusConnectionManager.js.map +1 -0
  438. package/dist/interfaces/IInbox.d.ts +83 -0
  439. package/dist/interfaces/IInbox.d.ts.map +1 -0
  440. package/dist/interfaces/IInbox.js +4 -0
  441. package/dist/interfaces/IInbox.js.map +1 -0
  442. package/dist/interfaces/IInterchainAccountRouter.d.ts +24 -8
  443. package/dist/interfaces/IInterchainAccountRouter.d.ts.map +1 -1
  444. package/dist/interfaces/IInterchainGasPaymaster.d.ts +7 -7
  445. package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
  446. package/dist/interfaces/IInterchainQueryRouter.d.ts +19 -3
  447. package/dist/interfaces/IInterchainQueryRouter.d.ts.map +1 -1
  448. package/dist/interfaces/IMailbox.d.ts +10 -58
  449. package/dist/interfaces/IMailbox.d.ts.map +1 -1
  450. package/dist/interfaces/IMultisigValidatorManager.d.ts +59 -0
  451. package/dist/interfaces/IMultisigValidatorManager.d.ts.map +1 -0
  452. package/dist/interfaces/IMultisigValidatorManager.js +4 -0
  453. package/dist/interfaces/IMultisigValidatorManager.js.map +1 -0
  454. package/dist/interfaces/IOutbox.d.ts +148 -0
  455. package/dist/interfaces/IOutbox.d.ts.map +1 -0
  456. package/dist/interfaces/IOutbox.js +4 -0
  457. package/dist/interfaces/IOutbox.js.map +1 -0
  458. package/dist/interfaces/index.d.ts +4 -0
  459. package/dist/interfaces/index.d.ts.map +1 -1
  460. package/interfaces/IAbacusConnectionManager.sol +12 -0
  461. package/interfaces/IInbox.sol +16 -0
  462. package/interfaces/IInterchainAccountRouter.sol +7 -1
  463. package/interfaces/IInterchainGasPaymaster.sol +5 -3
  464. package/interfaces/IInterchainQueryRouter.sol +9 -2
  465. package/interfaces/IMailbox.sol +2 -15
  466. package/interfaces/IMultisigValidatorManager.sol +11 -0
  467. package/interfaces/IOutbox.sol +27 -0
  468. package/package.json +3 -4
  469. package/contracts/isms/MultisigIsm.sol +0 -340
  470. package/contracts/libs/MultisigIsmMetadata.sol +0 -187
  471. package/contracts/mock/MockMailbox.sol +0 -79
  472. package/contracts/test/TestHyperlaneConnectionClient.sol +0 -14
  473. package/contracts/test/TestIsm.sol +0 -20
  474. package/contracts/test/TestMultisigIsm.sol +0 -23
  475. package/dist/contracts/OwnableSpecifiesISM.d.ts.map +0 -1
  476. package/dist/contracts/OwnableSpecifiesISM.js.map +0 -1
  477. package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts +0 -55
  478. package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts.map +0 -1
  479. package/dist/factories/contracts/OwnableSpecifiesISM__factory.js +0 -145
  480. package/dist/factories/contracts/OwnableSpecifiesISM__factory.js.map +0 -1
  481. package/interfaces/IInterchainSecurityModule.sol +0 -16
  482. package/interfaces/IMultisigIsm.sol +0 -18
@@ -3,35 +3,30 @@ pragma solidity >=0.6.11;
3
3
 
4
4
  // ============ Internal Imports ============
5
5
  import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
6
- import {ISpecifiesInterchainSecurityModule, IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
7
- import {IMailbox} from "../interfaces/IMailbox.sol";
6
+ import {IOutbox} from "../interfaces/IOutbox.sol";
7
+ import {IAbacusConnectionManager} from "../interfaces/IAbacusConnectionManager.sol";
8
8
 
9
9
  // ============ External Imports ============
10
10
  import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
11
- import {Address} from "@openzeppelin/contracts/utils/Address.sol";
12
11
 
13
- abstract contract HyperlaneConnectionClient is
14
- OwnableUpgradeable,
15
- ISpecifiesInterchainSecurityModule
16
- {
12
+ abstract contract AbacusConnectionClient is OwnableUpgradeable {
17
13
  // ============ Mutable Storage ============
18
14
 
19
- IMailbox public mailbox;
15
+ IAbacusConnectionManager public abacusConnectionManager;
20
16
  // Interchain Gas Paymaster contract. The relayer associated with this contract
21
17
  // must be willing to relay messages dispatched from the current Outbox contract,
22
18
  // otherwise payments made to the paymaster will not result in relayed messages.
23
19
  IInterchainGasPaymaster public interchainGasPaymaster;
24
20
 
25
- IInterchainSecurityModule public interchainSecurityModule;
26
-
27
21
  uint256[48] private __GAP; // gap for upgrade safety
28
22
 
29
23
  // ============ Events ============
24
+
30
25
  /**
31
- * @notice Emitted when a new mailbox is set.
32
- * @param mailbox The address of the mailbox contract
26
+ * @notice Emitted when a new abacusConnectionManager is set.
27
+ * @param abacusConnectionManager The address of the abacusConnectionManager contract
33
28
  */
34
- event MailboxSet(address indexed mailbox);
29
+ event AbacusConnectionManagerSet(address indexed abacusConnectionManager);
35
30
 
36
31
  /**
37
32
  * @notice Emitted when a new Interchain Gas Paymaster is set.
@@ -39,64 +34,45 @@ abstract contract HyperlaneConnectionClient is
39
34
  */
40
35
  event InterchainGasPaymasterSet(address indexed interchainGasPaymaster);
41
36
 
42
- event InterchainSecurityModuleSet(address indexed module);
43
-
44
37
  // ============ Modifiers ============
45
38
 
46
39
  /**
47
- * @notice Only accept messages from an Hyperlane Mailbox contract
40
+ * @notice Only accept messages from an Abacus Inbox contract
48
41
  */
49
- modifier onlyMailbox() {
50
- require(msg.sender == address(mailbox), "!mailbox");
51
- _;
52
- }
53
-
54
- /**
55
- * @notice Only accept addresses that at least have contract code
56
- */
57
- modifier onlyContract(address _contract) {
58
- require(Address.isContract(_contract), "!contract");
42
+ modifier onlyInbox() {
43
+ require(_isInbox(msg.sender), "!inbox");
59
44
  _;
60
45
  }
61
46
 
62
47
  // ======== Initializer =========
63
48
 
64
- function __HyperlaneConnectionClient_initialize(address _mailbox)
65
- internal
66
- onlyInitializing
67
- {
68
- _setMailbox(_mailbox);
49
+ function __AbacusConnectionClient_initialize(
50
+ address _abacusConnectionManager
51
+ ) internal onlyInitializing {
52
+ _setAbacusConnectionManager(_abacusConnectionManager);
69
53
  __Ownable_init();
70
54
  }
71
55
 
72
- function __HyperlaneConnectionClient_initialize(
73
- address _mailbox,
56
+ function __AbacusConnectionClient_initialize(
57
+ address _abacusConnectionManager,
74
58
  address _interchainGasPaymaster
75
59
  ) internal onlyInitializing {
76
60
  _setInterchainGasPaymaster(_interchainGasPaymaster);
77
- __HyperlaneConnectionClient_initialize(_mailbox);
78
- }
79
-
80
- function __HyperlaneConnectionClient_initialize(
81
- address _mailbox,
82
- address _interchainGasPaymaster,
83
- address _interchainSecurityModule
84
- ) internal onlyInitializing {
85
- _setInterchainSecurityModule(_interchainSecurityModule);
86
- __HyperlaneConnectionClient_initialize(
87
- _mailbox,
88
- _interchainGasPaymaster
89
- );
61
+ __AbacusConnectionClient_initialize(_abacusConnectionManager);
90
62
  }
91
63
 
92
64
  // ============ External functions ============
93
65
 
94
66
  /**
95
- * @notice Sets the address of the application's Mailbox.
96
- * @param _mailbox The address of the Mailbox contract.
67
+ * @notice Sets the address of the application's AbacusConnectionManager.
68
+ * @param _abacusConnectionManager The address of the AbacusConnectionManager contract.
97
69
  */
98
- function setMailbox(address _mailbox) external virtual onlyOwner {
99
- _setMailbox(_mailbox);
70
+ function setAbacusConnectionManager(address _abacusConnectionManager)
71
+ external
72
+ virtual
73
+ onlyOwner
74
+ {
75
+ _setAbacusConnectionManager(_abacusConnectionManager);
100
76
  }
101
77
 
102
78
  /**
@@ -111,14 +87,6 @@ abstract contract HyperlaneConnectionClient is
111
87
  _setInterchainGasPaymaster(_interchainGasPaymaster);
112
88
  }
113
89
 
114
- function setInterchainSecurityModule(address _module)
115
- external
116
- virtual
117
- onlyOwner
118
- {
119
- _setInterchainSecurityModule(_module);
120
- }
121
-
122
90
  // ============ Internal functions ============
123
91
 
124
92
  /**
@@ -127,7 +95,6 @@ abstract contract HyperlaneConnectionClient is
127
95
  */
128
96
  function _setInterchainGasPaymaster(address _interchainGasPaymaster)
129
97
  internal
130
- onlyContract(_interchainGasPaymaster)
131
98
  {
132
99
  interchainGasPaymaster = IInterchainGasPaymaster(
133
100
  _interchainGasPaymaster
@@ -137,18 +104,38 @@ abstract contract HyperlaneConnectionClient is
137
104
 
138
105
  /**
139
106
  * @notice Modify the contract the Application uses to validate Inbox contracts
140
- * @param _mailbox The address of the mailbox contract
107
+ * @param _abacusConnectionManager The address of the abacusConnectionManager contract
141
108
  */
142
- function _setMailbox(address _mailbox) internal onlyContract(_mailbox) {
143
- mailbox = IMailbox(_mailbox);
144
- emit MailboxSet(_mailbox);
145
- }
146
-
147
- function _setInterchainSecurityModule(address _module)
109
+ function _setAbacusConnectionManager(address _abacusConnectionManager)
148
110
  internal
149
- onlyContract(_module)
150
111
  {
151
- interchainSecurityModule = IInterchainSecurityModule(_module);
152
- emit InterchainSecurityModuleSet(_module);
112
+ abacusConnectionManager = IAbacusConnectionManager(
113
+ _abacusConnectionManager
114
+ );
115
+ emit AbacusConnectionManagerSet(_abacusConnectionManager);
116
+ }
117
+
118
+ /**
119
+ * @notice Get the local Outbox contract from the abacusConnectionManager
120
+ * @return The local Outbox contract
121
+ */
122
+ function _outbox() internal view returns (IOutbox) {
123
+ return abacusConnectionManager.outbox();
124
+ }
125
+
126
+ /**
127
+ * @notice Determine whether _potentialInbox is an enrolled Inbox from the abacusConnectionManager
128
+ * @return True if _potentialInbox is an enrolled Inbox
129
+ */
130
+ function _isInbox(address _potentialInbox) internal view returns (bool) {
131
+ return abacusConnectionManager.isInbox(_potentialInbox);
132
+ }
133
+
134
+ /**
135
+ * @notice Get the local domain from the abacusConnectionManager
136
+ * @return The local domain
137
+ */
138
+ function _localDomain() internal view virtual returns (uint32) {
139
+ return abacusConnectionManager.localDomain();
153
140
  }
154
141
  }
@@ -0,0 +1,145 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+ pragma abicoder v2;
4
+
5
+ // ============ Internal Imports ============
6
+ import {IOutbox} from "../interfaces/IOutbox.sol";
7
+ import {IAbacusConnectionManager} from "../interfaces/IAbacusConnectionManager.sol";
8
+
9
+ // ============ External Imports ============
10
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
11
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
12
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
13
+
14
+ /**
15
+ * @title AbacusConnectionManager
16
+ * @author Celo Labs Inc.
17
+ * @notice Manages a registry of local Inbox contracts for remote Outbox
18
+ * domains.
19
+ */
20
+ contract AbacusConnectionManager is IAbacusConnectionManager, Ownable {
21
+ using EnumerableSet for EnumerableSet.AddressSet;
22
+
23
+ // ============ Public Storage ============
24
+
25
+ // Outbox contract
26
+ IOutbox public override outbox;
27
+ // local Inbox address => remote Outbox domain
28
+ mapping(address => uint32) public inboxToDomain;
29
+ // remote Outbox domain => local Inbox addresses
30
+ mapping(uint32 => EnumerableSet.AddressSet) domainToInboxes;
31
+
32
+ // ============ Events ============
33
+
34
+ /**
35
+ * @notice Emitted when a new Outbox is set.
36
+ * @param outbox the address of the Outbox
37
+ */
38
+ event OutboxSet(address indexed outbox);
39
+
40
+ /**
41
+ * @notice Emitted when a new Inbox is enrolled / added
42
+ * @param domain the remote domain of the Outbox contract for the Inbox
43
+ * @param inbox the address of the Inbox
44
+ */
45
+ event InboxEnrolled(uint32 indexed domain, address inbox);
46
+
47
+ /**
48
+ * @notice Emitted when a new Inbox is un-enrolled / removed
49
+ * @param domain the remote domain of the Outbox contract for the Inbox
50
+ * @param inbox the address of the Inbox
51
+ */
52
+ event InboxUnenrolled(uint32 indexed domain, address inbox);
53
+
54
+ // ============ Constructor ============
55
+
56
+ // solhint-disable-next-line no-empty-blocks
57
+ constructor() Ownable() {}
58
+
59
+ // ============ External Functions ============
60
+
61
+ /**
62
+ * @notice Sets the address of the local Outbox contract.
63
+ * @param _outbox The address of the new local Outbox contract.
64
+ */
65
+ function setOutbox(address _outbox) external onlyOwner {
66
+ require(Address.isContract(_outbox), "outbox !contract");
67
+ outbox = IOutbox(_outbox);
68
+ emit OutboxSet(_outbox);
69
+ }
70
+
71
+ /**
72
+ * @notice Allow Owner to enroll Inbox contract
73
+ * @param _domain the remote domain of the Outbox contract for the Inbox
74
+ * @param _inbox the address of the Inbox
75
+ */
76
+ function enrollInbox(uint32 _domain, address _inbox) external onlyOwner {
77
+ require(Address.isContract(_inbox), "inbox !contract");
78
+ require(!isInbox(_inbox), "already inbox");
79
+ // add inbox and domain to two-way mapping
80
+ inboxToDomain[_inbox] = _domain;
81
+ domainToInboxes[_domain].add(_inbox);
82
+ emit InboxEnrolled(_domain, _inbox);
83
+ }
84
+
85
+ /**
86
+ * @notice Allow Owner to un-enroll Inbox contract
87
+ * @param _inbox the address of the Inbox
88
+ */
89
+ function unenrollInbox(address _inbox) external onlyOwner {
90
+ _unenrollInbox(_inbox);
91
+ }
92
+
93
+ /**
94
+ * @notice Query local domain from Outbox
95
+ * @return local domain
96
+ */
97
+ function localDomain() external view override returns (uint32) {
98
+ return outbox.localDomain();
99
+ }
100
+
101
+ /**
102
+ * @notice Returns the Inbox addresses for a given remote domain
103
+ * @return inboxes An array of addresses of the Inboxes
104
+ */
105
+ function getInboxes(uint32 remoteDomain)
106
+ external
107
+ view
108
+ returns (address[] memory)
109
+ {
110
+ EnumerableSet.AddressSet storage _inboxes = domainToInboxes[
111
+ remoteDomain
112
+ ];
113
+ uint256 length = _inboxes.length();
114
+ address[] memory ret = new address[](length);
115
+ for (uint256 i = 0; i < length; i += 1) {
116
+ ret[i] = _inboxes.at(i);
117
+ }
118
+ return ret;
119
+ }
120
+
121
+ // ============ Public Functions ============
122
+
123
+ /**
124
+ * @notice Check whether _inbox is enrolled
125
+ * @param _inbox the inbox to check for enrollment
126
+ * @return TRUE iff _inbox is enrolled
127
+ */
128
+ function isInbox(address _inbox) public view override returns (bool) {
129
+ return inboxToDomain[_inbox] != 0;
130
+ }
131
+
132
+ // ============ Internal Functions ============
133
+
134
+ /**
135
+ * @notice Remove the inbox from the two-way mappings
136
+ * @param _inbox inbox to un-enroll
137
+ */
138
+ function _unenrollInbox(address _inbox) internal {
139
+ uint32 _currentDomain = inboxToDomain[_inbox];
140
+ require(domainToInboxes[_currentDomain].remove(_inbox), "not enrolled");
141
+ domainToInboxes[_currentDomain].remove(_inbox);
142
+ inboxToDomain[_inbox] = 0;
143
+ emit InboxUnenrolled(_currentDomain, _inbox);
144
+ }
145
+ }
@@ -0,0 +1,148 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ // ============ Internal Imports ============
5
+ import {Versioned} from "./upgrade/Versioned.sol";
6
+ import {Mailbox} from "./Mailbox.sol";
7
+ import {MerkleLib} from "./libs/Merkle.sol";
8
+ import {Message} from "./libs/Message.sol";
9
+ import {TypeCasts} from "./libs/TypeCasts.sol";
10
+ import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
11
+ import {IInbox} from "../interfaces/IInbox.sol";
12
+
13
+ // ============ External Imports ============
14
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
15
+
16
+ /**
17
+ * @title Inbox
18
+ * @author Celo Labs Inc.
19
+ * @notice Track root updates on Outbox, prove and dispatch messages to end
20
+ * recipients.
21
+ */
22
+ contract Inbox is IInbox, ReentrancyGuardUpgradeable, Versioned, Mailbox {
23
+ // ============ Libraries ============
24
+
25
+ using MerkleLib for MerkleLib.Tree;
26
+ using Message for bytes;
27
+ using TypeCasts for bytes32;
28
+
29
+ // ============ Enums ============
30
+
31
+ // Status of Message:
32
+ // 0 - None - message has not been processed
33
+ // 1 - Processed - message has been dispatched to recipient
34
+ enum MessageStatus {
35
+ None,
36
+ Processed
37
+ }
38
+
39
+ // ============ Public Storage ============
40
+
41
+ // Domain of outbox chain
42
+ uint32 public override remoteDomain;
43
+ // Mapping of message leaves to MessageStatus
44
+ mapping(bytes32 => MessageStatus) public messages;
45
+
46
+ // ============ Upgrade Gap ============
47
+
48
+ // gap for upgrade safety
49
+ uint256[48] private __GAP;
50
+
51
+ // ============ Events ============
52
+
53
+ /**
54
+ * @notice Emitted when message is processed
55
+ * @dev This event allows watchers to observe the merkle proof they need
56
+ * to prove fraud on the Outbox.
57
+ * @param messageHash Hash of message that was processed.
58
+ */
59
+ event Process(bytes32 indexed messageHash);
60
+
61
+ // ============ Constructor ============
62
+
63
+ // solhint-disable-next-line no-empty-blocks
64
+ constructor(uint32 _localDomain) Mailbox(_localDomain) {}
65
+
66
+ // ============ Initializer ============
67
+
68
+ function initialize(uint32 _remoteDomain, address _validatorManager)
69
+ external
70
+ initializer
71
+ {
72
+ __ReentrancyGuard_init();
73
+ __Mailbox_initialize(_validatorManager);
74
+ remoteDomain = _remoteDomain;
75
+ }
76
+
77
+ // ============ External Functions ============
78
+
79
+ /**
80
+ * @notice Attempts to process the provided formatted `message`. Performs
81
+ * verification against root of the proof
82
+ * @dev Called by the validator manager, which is responsible for verifying a
83
+ * quorum of validator signatures on the checkpoint.
84
+ * @dev Reverts if verification of the message fails.
85
+ * @param _root The merkle root of the checkpoint used to prove message inclusion.
86
+ * @param _index The index of the checkpoint used to prove message inclusion.
87
+ * @param _message Formatted message (refer to Mailbox.sol Message library)
88
+ * @param _proof Merkle proof of inclusion for message's leaf
89
+ * @param _leafIndex Index of leaf in outbox's merkle tree
90
+ */
91
+ function process(
92
+ bytes32 _root,
93
+ uint256 _index,
94
+ bytes calldata _message,
95
+ bytes32[32] calldata _proof,
96
+ uint256 _leafIndex
97
+ ) external override nonReentrant onlyValidatorManager {
98
+ require(_index >= _leafIndex, "!index");
99
+ bytes32 _messageHash = _message.leaf(_leafIndex);
100
+ // ensure that message has not been processed
101
+ require(
102
+ messages[_messageHash] == MessageStatus.None,
103
+ "!MessageStatus.None"
104
+ );
105
+ // calculate the expected root based on the proof
106
+ bytes32 _calculatedRoot = MerkleLib.branchRoot(
107
+ _messageHash,
108
+ _proof,
109
+ _leafIndex
110
+ );
111
+ // verify the merkle proof
112
+ require(_calculatedRoot == _root, "!proof");
113
+ _process(_message, _messageHash);
114
+ }
115
+
116
+ // ============ Internal Functions ============
117
+
118
+ /**
119
+ * @notice Marks a message as processed and calls handle on the recipient
120
+ * @dev Internal function that can be called by contracts like TestInbox
121
+ * @param _message Formatted message (refer to Mailbox.sol Message library)
122
+ * @param _messageHash keccak256 hash of the message
123
+ */
124
+ function _process(bytes calldata _message, bytes32 _messageHash) internal {
125
+ (
126
+ uint32 origin,
127
+ bytes32 sender,
128
+ uint32 destination,
129
+ bytes32 recipient,
130
+ bytes calldata body
131
+ ) = _message.destructure();
132
+
133
+ // ensure message came from the correct domain
134
+ require(origin == remoteDomain, "!origin");
135
+ // ensure message was meant for this domain
136
+ require(destination == localDomain, "!destination");
137
+
138
+ // update message status as processed
139
+ messages[_messageHash] = MessageStatus.Processed;
140
+
141
+ IMessageRecipient(recipient.bytes32ToAddress()).handle(
142
+ origin,
143
+ sender,
144
+ body
145
+ );
146
+ emit Process(_messageHash);
147
+ }
148
+ }
@@ -16,10 +16,11 @@ contract InterchainGasPaymaster is IInterchainGasPaymaster, OwnableUpgradeable {
16
16
 
17
17
  /**
18
18
  * @notice Emitted when a payment is made for a message's gas costs.
19
- * @param messageId The ID of the message to pay for.
19
+ * @param outbox The address of the Outbox contract.
20
+ * @param leafIndex The index of the message in the Outbox merkle tree.
20
21
  * @param amount The amount of native tokens paid.
21
22
  */
22
- event GasPayment(bytes32 indexed messageId, uint256 amount);
23
+ event GasPayment(address indexed outbox, uint256 leafIndex, uint256 amount);
23
24
 
24
25
  // ============ Constructor ============
25
26
 
@@ -37,20 +38,21 @@ contract InterchainGasPaymaster is IInterchainGasPaymaster, OwnableUpgradeable {
37
38
  /**
38
39
  * @notice Deposits msg.value as a payment for the relaying of a message
39
40
  * to its destination chain.
40
- * @param _messageId The ID of the message to pay for.
41
+ * @param _outbox The address of the Outbox contract.
42
+ * @param _leafIndex The index of the message in the Outbox merkle tree.
41
43
  * @param _destinationDomain The domain of the message's destination chain.
42
44
  */
43
- function payGasFor(bytes32 _messageId, uint32 _destinationDomain)
44
- external
45
- payable
46
- override
47
- {
45
+ function payGasFor(
46
+ address _outbox,
47
+ uint256 _leafIndex,
48
+ uint32 _destinationDomain
49
+ ) external payable override {
48
50
  // Silence compiler warning. The NatSpec @param requires the parameter to be named.
49
51
  // While not used at the moment, future versions of the paymaster may conditionally
50
52
  // forward payments depending on the destination domain.
51
53
  _destinationDomain;
52
54
 
53
- emit GasPayment(_messageId, msg.value);
55
+ emit GasPayment(_outbox, _leafIndex, msg.value);
54
56
  }
55
57
 
56
58
  /**