@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,187 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /**
5
+ * Format of metadata:
6
+ * [ 0: 32] Merkle root
7
+ * [ 32: 64] Root index
8
+ * [ 64: 96] Origin mailbox address
9
+ * [ 96:1120] Merkle proof
10
+ * [1120:1152] Threshold
11
+ * [1152:????] Validator signatures, 65 bytes each, length == Threshold
12
+ * [????:????] Addresses of the entire validator set, left padded to bytes32
13
+ */
14
+ library MultisigIsmMetadata {
15
+ uint256 private constant MERKLE_ROOT_OFFSET = 0;
16
+ uint256 private constant MERKLE_INDEX_OFFSET = 32;
17
+ uint256 private constant ORIGIN_MAILBOX_OFFSET = 64;
18
+ uint256 private constant MERKLE_PROOF_OFFSET = 96;
19
+ uint256 private constant THRESHOLD_OFFSET = 1120;
20
+ uint256 private constant SIGNATURES_OFFSET = 1152;
21
+ uint256 private constant SIGNATURE_LENGTH = 65;
22
+
23
+ /**
24
+ * @notice Returns the merkle root of the signed checkpoint.
25
+ * @param _metadata ABI encoded Multisig ISM metadata.
26
+ * @return Merkle root of the signed checkpoint
27
+ */
28
+ function root(bytes calldata _metadata) internal pure returns (bytes32) {
29
+ return bytes32(_metadata[MERKLE_ROOT_OFFSET:MERKLE_INDEX_OFFSET]);
30
+ }
31
+
32
+ /**
33
+ * @notice Returns the index of the signed checkpoint.
34
+ * @param _metadata ABI encoded Multisig ISM metadata.
35
+ * @return Index of the signed checkpoint
36
+ */
37
+ function index(bytes calldata _metadata) internal pure returns (uint256) {
38
+ return
39
+ uint256(
40
+ bytes32(_metadata[MERKLE_INDEX_OFFSET:ORIGIN_MAILBOX_OFFSET])
41
+ );
42
+ }
43
+
44
+ /**
45
+ * @notice Returns the origin mailbox of the signed checkpoint as bytes32.
46
+ * @param _metadata ABI encoded Multisig ISM metadata.
47
+ * @return Origin mailbox of the signed checkpoint as bytes32
48
+ */
49
+ function originMailbox(bytes calldata _metadata)
50
+ internal
51
+ pure
52
+ returns (bytes32)
53
+ {
54
+ return bytes32(_metadata[ORIGIN_MAILBOX_OFFSET:MERKLE_PROOF_OFFSET]);
55
+ }
56
+
57
+ /**
58
+ * @notice Returns the merkle proof branch of the message.
59
+ * @dev This appears to be more gas efficient than returning a calldata
60
+ * slice and using that.
61
+ * @param _metadata ABI encoded Multisig ISM metadata.
62
+ * @return Merkle proof branch of the message.
63
+ */
64
+ function proof(bytes calldata _metadata)
65
+ internal
66
+ pure
67
+ returns (bytes32[32] memory)
68
+ {
69
+ return
70
+ abi.decode(
71
+ _metadata[MERKLE_PROOF_OFFSET:THRESHOLD_OFFSET],
72
+ (bytes32[32])
73
+ );
74
+ }
75
+
76
+ /**
77
+ * @notice Returns the number of required signatures. Verified against
78
+ * the commitment stored in the module.
79
+ * @param _metadata ABI encoded Multisig ISM metadata.
80
+ * @return The number of required signatures.
81
+ */
82
+ function threshold(bytes calldata _metadata)
83
+ internal
84
+ pure
85
+ returns (uint256)
86
+ {
87
+ return uint256(bytes32(_metadata[THRESHOLD_OFFSET:SIGNATURES_OFFSET]));
88
+ }
89
+
90
+ /**
91
+ * @notice Returns the validator ECDSA signature at `_index`.
92
+ * @dev Assumes signatures are sorted by validator
93
+ * @dev Assumes `_metadata` encodes `threshold` signatures.
94
+ * @dev Assumes `_index` is less than `threshold`
95
+ * @param _metadata ABI encoded Multisig ISM metadata.
96
+ * @param _index The index of the signature to return.
97
+ * @return The validator ECDSA signature at `_index`.
98
+ */
99
+ function signatureAt(bytes calldata _metadata, uint256 _index)
100
+ internal
101
+ pure
102
+ returns (bytes calldata)
103
+ {
104
+ uint256 _start = SIGNATURES_OFFSET + (_index * SIGNATURE_LENGTH);
105
+ uint256 _end = _start + SIGNATURE_LENGTH;
106
+ return _metadata[_start:_end];
107
+ }
108
+
109
+ /**
110
+ * @notice Returns the validator address at `_index`.
111
+ * @dev Assumes `_index` is less than the number of validators
112
+ * @param _metadata ABI encoded Multisig ISM metadata.
113
+ * @param _index The index of the validator to return.
114
+ * @return The validator address at `_index`.
115
+ */
116
+ function validatorAt(bytes calldata _metadata, uint256 _index)
117
+ internal
118
+ pure
119
+ returns (address)
120
+ {
121
+ // Validator addresses are left padded to bytes32 in order to match
122
+ // abi.encodePacked(address[]).
123
+ uint256 _start = _validatorsOffset(_metadata) + (_index * 32) + 12;
124
+ uint256 _end = _start + 20;
125
+ return address(bytes20(_metadata[_start:_end]));
126
+ }
127
+
128
+ /**
129
+ * @notice Returns the validator set encoded as bytes. Verified against the
130
+ * commitment stored in the module.
131
+ * @dev Validator addresses are encoded as tightly packed array of bytes32,
132
+ * sorted to match the enumerable set stored by the module.
133
+ * @param _metadata ABI encoded Multisig ISM metadata.
134
+ * @return The validator set encoded as bytes.
135
+ */
136
+ function validators(bytes calldata _metadata)
137
+ internal
138
+ pure
139
+ returns (bytes calldata)
140
+ {
141
+ return _metadata[_validatorsOffset(_metadata):];
142
+ }
143
+
144
+ /**
145
+ * @notice Returns the size of the validator set encoded in the metadata
146
+ * @dev Validator addresses are encoded as tightly packed array of bytes32,
147
+ * sorted to match the enumerable set stored by the module.
148
+ * @param _metadata ABI encoded Multisig ISM metadata.
149
+ * @return The size of the validator set encoded in the metadata
150
+ */
151
+ function commitment(bytes calldata _metadata)
152
+ internal
153
+ pure
154
+ returns (uint256)
155
+ {
156
+ return (_metadata.length - _validatorsOffset(_metadata)) / 32;
157
+ }
158
+
159
+ /**
160
+ * @notice Returns the size of the validator set encoded in the metadata
161
+ * @dev Validator addresses are encoded as tightly packed array of bytes32,
162
+ * sorted to match the enumerable set stored by the module.
163
+ * @param _metadata ABI encoded Multisig ISM metadata.
164
+ * @return The size of the validator set encoded in the metadata
165
+ */
166
+ function validatorCount(bytes calldata _metadata)
167
+ internal
168
+ pure
169
+ returns (uint256)
170
+ {
171
+ return (_metadata.length - _validatorsOffset(_metadata)) / 32;
172
+ }
173
+
174
+ /**
175
+ * @notice Returns the offset in bytes of the list of validators within
176
+ * `_metadata`.
177
+ * @param _metadata ABI encoded Multisig ISM metadata.
178
+ * @return The index at which the list of validators starts
179
+ */
180
+ function _validatorsOffset(bytes calldata _metadata)
181
+ private
182
+ pure
183
+ returns (uint256)
184
+ {
185
+ return SIGNATURES_OFFSET + (threshold(_metadata) * SIGNATURE_LENGTH);
186
+ }
187
+ }
@@ -1,10 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.13;
3
3
 
4
+ // ============ Internal Imports ============
4
5
  import {OwnableMulticall, Call} from "../OwnableMulticall.sol";
6
+ import {Router} from "../Router.sol";
7
+ import {IInterchainAccountRouter} from "../../interfaces/IInterchainAccountRouter.sol";
5
8
 
6
9
  // ============ External Imports ============
7
- import {Router} from "../Router.sol";
8
10
  import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
9
11
  import {Address} from "@openzeppelin/contracts/utils/Address.sol";
10
12
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
@@ -13,7 +15,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
13
15
  * @title The Hello World App
14
16
  * @dev You can use this simple app as a starting point for your own application.
15
17
  */
16
- contract InterchainAccountRouter is Router {
18
+ contract InterchainAccountRouter is Router, IInterchainAccountRouter {
17
19
  bytes constant bytecode = type(OwnableMulticall).creationCode;
18
20
  bytes32 constant bytecodeHash = bytes32(keccak256(bytecode));
19
21
 
@@ -25,21 +27,22 @@ contract InterchainAccountRouter is Router {
25
27
 
26
28
  function initialize(
27
29
  address _owner,
28
- address _abacusConnectionManager,
30
+ address _mailbox,
29
31
  address _interchainGasPaymaster
30
32
  ) public initializer {
31
33
  // Transfer ownership of the contract to deployer
32
34
  _transferOwnership(_owner);
33
- // Set the addresses for the ACM and IGP
35
+ // Set the addresses for the Mailbox and IGP
34
36
  // Alternatively, this could be done later in an initialize method
35
- _setAbacusConnectionManager(_abacusConnectionManager);
37
+ _setMailbox(_mailbox);
36
38
  _setInterchainGasPaymaster(_interchainGasPaymaster);
37
39
  }
38
40
 
39
41
  function dispatch(uint32 _destinationDomain, Call[] calldata calls)
40
42
  external
43
+ returns (bytes32)
41
44
  {
42
- _dispatch(_destinationDomain, abi.encode(msg.sender, calls));
45
+ return _dispatch(_destinationDomain, abi.encode(msg.sender, calls));
43
46
  }
44
47
 
45
48
  function getInterchainAccount(uint32 _origin, address _sender)
@@ -1,15 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.13;
3
3
 
4
+ // ============ Internal Imports ============
4
5
  import {OwnableMulticall, Call} from "../OwnableMulticall.sol";
6
+ import {Router} from "../Router.sol";
7
+ import {IInterchainQueryRouter} from "../../interfaces/IInterchainQueryRouter.sol";
5
8
 
6
9
  // ============ External Imports ============
7
- import {Router} from "../Router.sol";
8
10
  import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
9
11
  import {Address} from "@openzeppelin/contracts/utils/Address.sol";
10
12
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
11
13
 
12
- contract InterchainQueryRouter is Router, OwnableMulticall {
14
+ contract InterchainQueryRouter is
15
+ Router,
16
+ OwnableMulticall,
17
+ IInterchainQueryRouter
18
+ {
13
19
  enum Action {
14
20
  DISPATCH,
15
21
  RESOLVE
@@ -27,14 +33,14 @@ contract InterchainQueryRouter is Router, OwnableMulticall {
27
33
 
28
34
  function initialize(
29
35
  address _owner,
30
- address _abacusConnectionManager,
36
+ address _mailbox,
31
37
  address _interchainGasPaymaster
32
38
  ) public initializer {
33
39
  // Transfer ownership of the contract to deployer
34
40
  _transferOwnership(_owner);
35
- // Set the addresses for the ACM and IGP
41
+ // Set the addresses for the Mailbox and IGP
36
42
  // Alternatively, this could be done later in an initialize method
37
- _setAbacusConnectionManager(_abacusConnectionManager);
43
+ _setMailbox(_mailbox);
38
44
  _setInterchainGasPaymaster(_interchainGasPaymaster);
39
45
  }
40
46
 
@@ -47,13 +53,13 @@ contract InterchainQueryRouter is Router, OwnableMulticall {
47
53
  uint32 _destinationDomain,
48
54
  Call calldata call,
49
55
  bytes calldata callback
50
- ) external {
56
+ ) external returns (bytes32 messageId) {
51
57
  // TODO: fix this ugly arrayification
52
58
  Call[] memory calls = new Call[](1);
53
59
  calls[0] = call;
54
60
  bytes[] memory callbacks = new bytes[](1);
55
61
  callbacks[0] = callback;
56
- query(_destinationDomain, calls, callbacks);
62
+ messageId = query(_destinationDomain, calls, callbacks);
57
63
  }
58
64
 
59
65
  /**
@@ -65,12 +71,12 @@ contract InterchainQueryRouter is Router, OwnableMulticall {
65
71
  uint32 _destinationDomain,
66
72
  Call[] memory calls,
67
73
  bytes[] memory callbacks
68
- ) public {
74
+ ) public returns (bytes32 messageId) {
69
75
  require(
70
76
  calls.length == callbacks.length,
71
77
  "InterchainQueryRouter: calls and callbacks must be same length"
72
78
  );
73
- _dispatch(
79
+ messageId = _dispatch(
74
80
  _destinationDomain,
75
81
  abi.encode(Action.DISPATCH, msg.sender, calls, callbacks)
76
82
  );
@@ -0,0 +1,134 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.13;
3
+
4
+ import {Router} from "../../Router.sol";
5
+
6
+ import {IMessageRecipient} from "../../../interfaces/IMessageRecipient.sol";
7
+ import {ICircleBridge} from "./interfaces/circle/ICircleBridge.sol";
8
+ import {ICircleMessageTransmitter} from "./interfaces/circle/ICircleMessageTransmitter.sol";
9
+ import {ILiquidityLayerAdapter} from "./interfaces/ILiquidityLayerAdapter.sol";
10
+ import {ILiquidityLayerMessageRecipient} from "./interfaces/ILiquidityLayerMessageRecipient.sol";
11
+
12
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
13
+
14
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
15
+
16
+ contract LiquidityLayerRouter is Router {
17
+ // Token bridge => adapter address
18
+ mapping(string => address) public liquidityLayerAdapters;
19
+
20
+ event LiquidityLayerAdapterSet(string indexed bridge, address adapter);
21
+
22
+ function initialize(
23
+ address _owner,
24
+ address _mailbox,
25
+ address _interchainGasPaymaster
26
+ ) public initializer {
27
+ // Transfer ownership of the contract to deployer
28
+ _transferOwnership(_owner);
29
+ // Alternatively, this could be done later in an initialize method
30
+ _setMailbox(_mailbox);
31
+ _setInterchainGasPaymaster(_interchainGasPaymaster);
32
+ }
33
+
34
+ function dispatchWithTokens(
35
+ uint32 _destinationDomain,
36
+ bytes32 _recipientAddress,
37
+ bytes calldata _messageBody,
38
+ address _token,
39
+ uint256 _amount,
40
+ string calldata _bridge
41
+ ) external payable {
42
+ ILiquidityLayerAdapter _adapter = _getAdapter(_bridge);
43
+
44
+ // Transfer the tokens to the adapter
45
+ // TODO: use safeTransferFrom
46
+ // TODO: Are there scenarios where a transferFrom fails and it doesn't revert?
47
+ require(
48
+ IERC20(_token).transferFrom(msg.sender, address(_adapter), _amount),
49
+ "!transfer in"
50
+ );
51
+
52
+ // Reverts if the bridge was unsuccessful.
53
+ // Gets adapter-specific data that is encoded into the message
54
+ // ultimately sent via Hyperlane.
55
+ bytes memory _adapterData = _adapter.sendTokens(
56
+ _destinationDomain,
57
+ _recipientAddress,
58
+ _token,
59
+ _amount
60
+ );
61
+
62
+ // The user's message "wrapped" with metadata required by this middleware
63
+ bytes memory _messageWithMetadata = abi.encode(
64
+ TypeCasts.addressToBytes32(msg.sender),
65
+ _recipientAddress, // The "user" recipient
66
+ _amount, // The amount of the tokens sent over the bridge
67
+ _bridge, // The destination token bridge ID
68
+ _adapterData, // The adapter-specific data
69
+ _messageBody // The "user" message
70
+ );
71
+
72
+ // Dispatch the _messageWithMetadata to the destination's LiquidityLayerRouter.
73
+ _dispatchWithGas(_destinationDomain, _messageWithMetadata, msg.value);
74
+ }
75
+
76
+ // Handles a message from an enrolled remote LiquidityLayerRouter
77
+ function _handle(
78
+ uint32 _origin,
79
+ bytes32, // _sender, unused
80
+ bytes calldata _message
81
+ ) internal override {
82
+ // Decode the message with metadata, "unwrapping" the user's message body
83
+ (
84
+ bytes32 _originalSender,
85
+ bytes32 _userRecipientAddress,
86
+ uint256 _amount,
87
+ string memory _bridge,
88
+ bytes memory _adapterData,
89
+ bytes memory _userMessageBody
90
+ ) = abi.decode(
91
+ _message,
92
+ (bytes32, bytes32, uint256, string, bytes, bytes)
93
+ );
94
+
95
+ ILiquidityLayerMessageRecipient _userRecipient = ILiquidityLayerMessageRecipient(
96
+ TypeCasts.bytes32ToAddress(_userRecipientAddress)
97
+ );
98
+
99
+ // Reverts if the adapter hasn't received the bridged tokens yet
100
+ (address _token, uint256 _receivedAmount) = _getAdapter(_bridge)
101
+ .receiveTokens(
102
+ _origin,
103
+ address(_userRecipient),
104
+ _amount,
105
+ _adapterData
106
+ );
107
+
108
+ _userRecipient.handleWithTokens(
109
+ _origin,
110
+ _originalSender,
111
+ _userMessageBody,
112
+ _token,
113
+ _receivedAmount
114
+ );
115
+ }
116
+
117
+ function setLiquidityLayerAdapter(string calldata _bridge, address _adapter)
118
+ external
119
+ onlyOwner
120
+ {
121
+ liquidityLayerAdapters[_bridge] = _adapter;
122
+ emit LiquidityLayerAdapterSet(_bridge, _adapter);
123
+ }
124
+
125
+ function _getAdapter(string memory _bridge)
126
+ internal
127
+ view
128
+ returns (ILiquidityLayerAdapter _adapter)
129
+ {
130
+ _adapter = ILiquidityLayerAdapter(liquidityLayerAdapters[_bridge]);
131
+ // Require the adapter to have been set
132
+ require(address(_adapter) != address(0), "No adapter found for bridge");
133
+ }
134
+ }
@@ -0,0 +1,246 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.13;
3
+
4
+ import {Router} from "../../../Router.sol";
5
+
6
+ import {ICircleBridge} from "../interfaces/circle/ICircleBridge.sol";
7
+ import {ICircleMessageTransmitter} from "../interfaces/circle/ICircleMessageTransmitter.sol";
8
+ import {ILiquidityLayerAdapter} from "../interfaces/ILiquidityLayerAdapter.sol";
9
+
10
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
11
+
12
+ contract CircleBridgeAdapter is ILiquidityLayerAdapter, Router {
13
+ /// @notice The CircleBridge contract.
14
+ ICircleBridge public circleBridge;
15
+
16
+ /// @notice The Circle MessageTransmitter contract.
17
+ ICircleMessageTransmitter public circleMessageTransmitter;
18
+
19
+ /// @notice The LiquidityLayerRouter contract.
20
+ address public liquidityLayerRouter;
21
+
22
+ /// @notice Hyperlane domain => Circle domain.
23
+ /// ATM, known Circle domains are Ethereum = 0 and Avalanche = 1.
24
+ /// Note this could result in ambiguity between the Circle domain being
25
+ /// Ethereum or unknown. TODO fix?
26
+ mapping(uint32 => uint32) public hyperlaneDomainToCircleDomain;
27
+
28
+ /// @notice Token symbol => address of token on local chain.
29
+ mapping(string => IERC20) public tokenSymbolToAddress;
30
+
31
+ /// @notice Local chain token address => token symbol.
32
+ mapping(address => string) public tokenAddressToSymbol;
33
+
34
+ /**
35
+ * @notice Emits the nonce of the Circle message when a token is bridged.
36
+ * @param nonce The nonce of the Circle message.
37
+ */
38
+ event BridgedToken(uint64 nonce);
39
+
40
+ /**
41
+ * @notice Emitted when the Hyperlane domain to Circle domain mapping is updated.
42
+ * @param hyperlaneDomain The Hyperlane domain.
43
+ * @param circleDomain The Circle domain.
44
+ */
45
+ event DomainAdded(uint32 indexed hyperlaneDomain, uint32 circleDomain);
46
+
47
+ /**
48
+ * @notice Emitted when a local token and its token symbol have been added.
49
+ */
50
+ event TokenAdded(address indexed token, string indexed symbol);
51
+
52
+ /**
53
+ * @notice Emitted when a local token and its token symbol have been removed.
54
+ */
55
+ event TokenRemoved(address indexed token, string indexed symbol);
56
+
57
+ modifier onlyLiquidityLayerRouter() {
58
+ require(msg.sender == liquidityLayerRouter, "!liquidityLayerRouter");
59
+ _;
60
+ }
61
+
62
+ /**
63
+ * @param _owner The new owner.
64
+ * @param _circleBridge The CircleBridge contract.
65
+ * @param _circleMessageTransmitter The Circle MessageTransmitter contract.
66
+ * @param _liquidityLayerRouter The LiquidityLayerRouter contract.
67
+ */
68
+ function initialize(
69
+ address _owner,
70
+ address _circleBridge,
71
+ address _circleMessageTransmitter,
72
+ address _liquidityLayerRouter
73
+ ) public initializer {
74
+ // Transfer ownership of the contract to deployer
75
+ _transferOwnership(_owner);
76
+
77
+ // Set the addresses for the IGP to address(0) - it's not used.
78
+ _setInterchainGasPaymaster(address(0));
79
+
80
+ circleBridge = ICircleBridge(_circleBridge);
81
+ circleMessageTransmitter = ICircleMessageTransmitter(
82
+ _circleMessageTransmitter
83
+ );
84
+ liquidityLayerRouter = _liquidityLayerRouter;
85
+ }
86
+
87
+ function sendTokens(
88
+ uint32 _destinationDomain,
89
+ bytes32, // _recipientAddress, unused
90
+ address _token,
91
+ uint256 _amount
92
+ ) external onlyLiquidityLayerRouter returns (bytes memory) {
93
+ string memory _tokenSymbol = tokenAddressToSymbol[_token];
94
+ require(
95
+ bytes(_tokenSymbol).length > 0,
96
+ "CircleBridgeAdapter: Unknown token"
97
+ );
98
+
99
+ uint32 _circleDomain = hyperlaneDomainToCircleDomain[
100
+ _destinationDomain
101
+ ];
102
+ bytes32 _remoteRouter = routers[_destinationDomain];
103
+ require(
104
+ _remoteRouter != bytes32(0),
105
+ "CircleBridgeAdapter: No router for domain"
106
+ );
107
+
108
+ // Approve the token to Circle. We assume that the LiquidityLayerRouter
109
+ // has already transferred the token to this contract.
110
+ require(
111
+ IERC20(_token).approve(address(circleBridge), _amount),
112
+ "!approval"
113
+ );
114
+
115
+ uint64 _nonce = circleBridge.depositForBurn(
116
+ _amount,
117
+ _circleDomain,
118
+ _remoteRouter, // Mint to the remote router
119
+ _token
120
+ );
121
+
122
+ emit BridgedToken(_nonce);
123
+ return abi.encode(_nonce, _tokenSymbol);
124
+ }
125
+
126
+ // Returns the token and amount sent
127
+ function receiveTokens(
128
+ uint32 _originDomain, // Hyperlane domain
129
+ address _recipient,
130
+ uint256 _amount,
131
+ bytes calldata _adapterData // The adapter data from the message
132
+ ) external onlyLiquidityLayerRouter returns (address, uint256) {
133
+ // The origin Circle domain
134
+ uint32 _originCircleDomain = hyperlaneDomainToCircleDomain[
135
+ _originDomain
136
+ ];
137
+ // Get the token symbol and nonce of the transfer from the _adapterData
138
+ (uint64 _nonce, string memory _tokenSymbol) = abi.decode(
139
+ _adapterData,
140
+ (uint64, string)
141
+ );
142
+
143
+ // Require the circle message to have been processed
144
+ bytes32 _nonceId = _circleNonceId(_originCircleDomain, _nonce);
145
+ require(
146
+ circleMessageTransmitter.usedNonces(_nonceId),
147
+ "Circle message not processed yet"
148
+ );
149
+
150
+ IERC20 _token = tokenSymbolToAddress[_tokenSymbol];
151
+ require(
152
+ address(_token) != address(0),
153
+ "CircleBridgeAdapter: Unknown token"
154
+ );
155
+
156
+ // Transfer the token out to the recipient
157
+ // TODO: use safeTransfer
158
+ // Circle doesn't charge any fee, so we can safely transfer out the
159
+ // exact amount that was bridged over.
160
+ require(_token.transfer(_recipient, _amount), "!transfer out");
161
+
162
+ return (address(_token), _amount);
163
+ }
164
+
165
+ // This contract is only a Router to be aware of remote router addresses,
166
+ // and doesn't actually send/handle Hyperlane messages directly
167
+ function _handle(
168
+ uint32, // origin
169
+ bytes32, // sender
170
+ bytes calldata // message
171
+ ) internal pure override {
172
+ revert("No messages expected");
173
+ }
174
+
175
+ function addDomain(uint32 _hyperlaneDomain, uint32 _circleDomain)
176
+ external
177
+ onlyOwner
178
+ {
179
+ hyperlaneDomainToCircleDomain[_hyperlaneDomain] = _circleDomain;
180
+
181
+ emit DomainAdded(_hyperlaneDomain, _circleDomain);
182
+ }
183
+
184
+ function addToken(address _token, string calldata _tokenSymbol)
185
+ external
186
+ onlyOwner
187
+ {
188
+ require(
189
+ _token != address(0) && bytes(_tokenSymbol).length > 0,
190
+ "Cannot add default values"
191
+ );
192
+
193
+ // Require the token and token symbol to be unset.
194
+ address _existingToken = address(tokenSymbolToAddress[_tokenSymbol]);
195
+ require(_existingToken == address(0), "token symbol already has token");
196
+
197
+ string memory _existingSymbol = tokenAddressToSymbol[_token];
198
+ require(
199
+ bytes(_existingSymbol).length == 0,
200
+ "token already has token symbol"
201
+ );
202
+
203
+ tokenAddressToSymbol[_token] = _tokenSymbol;
204
+ tokenSymbolToAddress[_tokenSymbol] = IERC20(_token);
205
+
206
+ emit TokenAdded(_token, _tokenSymbol);
207
+ }
208
+
209
+ function removeToken(address _token, string calldata _tokenSymbol)
210
+ external
211
+ onlyOwner
212
+ {
213
+ // Require the provided token and token symbols match what's in storage.
214
+ address _existingToken = address(tokenSymbolToAddress[_tokenSymbol]);
215
+ require(_existingToken == _token, "Token mismatch");
216
+
217
+ string memory _existingSymbol = tokenAddressToSymbol[_token];
218
+ require(
219
+ keccak256(bytes(_existingSymbol)) == keccak256(bytes(_tokenSymbol)),
220
+ "Token symbol mismatch"
221
+ );
222
+
223
+ // Delete them from storage.
224
+ delete tokenSymbolToAddress[_tokenSymbol];
225
+ delete tokenAddressToSymbol[_token];
226
+
227
+ emit TokenRemoved(_token, _tokenSymbol);
228
+ }
229
+
230
+ /**
231
+ * @notice Gets the Circle nonce ID by hashing _originCircleDomain and _nonce.
232
+ * @param _originCircleDomain Domain of chain where the transfer originated
233
+ * @param _nonce The unique identifier for the message from source to
234
+ destination
235
+ * @return hash of source and nonce
236
+ */
237
+ function _circleNonceId(uint32 _originCircleDomain, uint64 _nonce)
238
+ internal
239
+ pure
240
+ returns (bytes32)
241
+ {
242
+ // The hash is of a uint256 nonce, not a uint64 one.
243
+ return
244
+ keccak256(abi.encodePacked(_originCircleDomain, uint256(_nonce)));
245
+ }
246
+ }