@hyperlane-xyz/core 5.4.0 → 5.4.2-superchain.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 (321) hide show
  1. package/contracts/PackageVersioned.sol +1 -1
  2. package/contracts/hooks/SuperchainHook.sol +82 -0
  3. package/contracts/interfaces/IInterchainSecurityModule.sol +2 -1
  4. package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
  5. package/contracts/interfaces/optimism/ICrossL2Inbox.sol +60 -0
  6. package/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.sol +68 -0
  7. package/contracts/isms/hook/SuperchainIsm.sol +91 -0
  8. package/contracts/middleware/InterchainAccountRouter.sol +1 -1
  9. package/contracts/middleware/libs/OwnableMulticall.sol +3 -1
  10. package/contracts/mock/MockHyperlaneEnvironment.sol +4 -2
  11. package/contracts/mock/MockMailbox.sol +2 -2
  12. package/contracts/mock/MockOptimism.sol +73 -0
  13. package/dist/buildArtifact.js +1 -1
  14. package/dist/buildArtifact.json +1 -1
  15. package/dist/contracts/hooks/SuperchainHook.d.ts +411 -0
  16. package/dist/contracts/hooks/SuperchainHook.d.ts.map +1 -0
  17. package/dist/contracts/hooks/SuperchainHook.js +2 -0
  18. package/dist/contracts/hooks/SuperchainHook.js.map +1 -0
  19. package/dist/contracts/hooks/index.d.ts +1 -0
  20. package/dist/contracts/hooks/index.d.ts.map +1 -1
  21. package/dist/contracts/interfaces/optimism/ICrossL2Inbox.d.ts +233 -0
  22. package/dist/contracts/interfaces/optimism/ICrossL2Inbox.d.ts.map +1 -0
  23. package/dist/contracts/interfaces/optimism/ICrossL2Inbox.js +2 -0
  24. package/dist/contracts/interfaces/optimism/ICrossL2Inbox.js.map +1 -0
  25. package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.d.ts +209 -0
  26. package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.d.ts.map +1 -0
  27. package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.js +2 -0
  28. package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.js.map +1 -0
  29. package/dist/contracts/interfaces/optimism/index.d.ts +2 -0
  30. package/dist/contracts/interfaces/optimism/index.d.ts.map +1 -1
  31. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.d.ts +273 -0
  32. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.d.ts.map +1 -0
  33. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.js +2 -0
  34. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.js.map +1 -0
  35. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.d.ts +288 -0
  36. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.d.ts.map +1 -0
  37. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.js +2 -0
  38. package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.js.map +1 -0
  39. package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.d.ts +273 -0
  40. package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.d.ts.map +1 -0
  41. package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.js +2 -0
  42. package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.js.map +1 -0
  43. package/dist/contracts/isms/hook/SuperchainIsm.sol/index.d.ts +2 -0
  44. package/dist/contracts/isms/hook/SuperchainIsm.sol/index.d.ts.map +1 -0
  45. package/dist/contracts/isms/hook/SuperchainIsm.sol/index.js +2 -0
  46. package/dist/contracts/isms/hook/SuperchainIsm.sol/index.js.map +1 -0
  47. package/dist/contracts/isms/hook/index.d.ts +2 -0
  48. package/dist/contracts/isms/hook/index.d.ts.map +1 -1
  49. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.d.ts +110 -0
  50. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.d.ts.map +1 -0
  51. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.js +2 -0
  52. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.js.map +1 -0
  53. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.d.ts +125 -0
  54. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.d.ts.map +1 -0
  55. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.js +2 -0
  56. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.js.map +1 -0
  57. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts +3 -0
  58. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts.map +1 -0
  59. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js +2 -0
  60. package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js.map +1 -0
  61. package/dist/contracts/middleware/libs/OwnableMulticall.d.ts +9 -9
  62. package/dist/contracts/middleware/libs/OwnableMulticall.d.ts.map +1 -1
  63. package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts +9 -9
  64. package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -1
  65. package/dist/contracts/mock/MockMailbox.d.ts +8 -8
  66. package/dist/contracts/mock/MockMailbox.d.ts.map +1 -1
  67. package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.d.ts +224 -0
  68. package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.d.ts.map +1 -0
  69. package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.js +2 -0
  70. package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.js.map +1 -0
  71. package/dist/contracts/mock/MockOptimism.sol/index.d.ts +1 -0
  72. package/dist/contracts/mock/MockOptimism.sol/index.d.ts.map +1 -1
  73. package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
  74. package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
  75. package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
  76. package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
  77. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  78. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  79. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
  80. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
  81. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
  82. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
  83. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
  84. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
  85. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
  86. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
  87. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts +1 -1
  88. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
  89. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  90. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  91. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  92. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  93. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +1 -1
  94. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
  95. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
  96. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
  97. package/dist/factories/contracts/hooks/SuperchainHook__factory.d.ts +262 -0
  98. package/dist/factories/contracts/hooks/SuperchainHook__factory.d.ts.map +1 -0
  99. package/dist/factories/contracts/hooks/SuperchainHook__factory.js +352 -0
  100. package/dist/factories/contracts/hooks/SuperchainHook__factory.js.map +1 -0
  101. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  102. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  103. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  104. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  105. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  106. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  107. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  108. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  109. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
  110. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
  111. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  112. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  113. package/dist/factories/contracts/hooks/index.js +1 -0
  114. package/dist/factories/contracts/hooks/index.js.map +1 -1
  115. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
  116. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
  117. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
  118. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
  119. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
  120. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
  121. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
  122. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
  123. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
  124. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
  125. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
  126. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
  127. package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.d.ts +143 -0
  128. package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.d.ts.map +1 -0
  129. package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.js +189 -0
  130. package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.js.map +1 -0
  131. package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.d.ts +140 -0
  132. package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.d.ts.map +1 -0
  133. package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.js +185 -0
  134. package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.js.map +1 -0
  135. package/dist/factories/contracts/interfaces/optimism/index.d.ts +2 -0
  136. package/dist/factories/contracts/interfaces/optimism/index.d.ts.map +1 -1
  137. package/dist/factories/contracts/interfaces/optimism/index.js +2 -0
  138. package/dist/factories/contracts/interfaces/optimism/index.js.map +1 -1
  139. package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
  140. package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
  141. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
  142. package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
  143. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
  144. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
  145. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  146. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
  147. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  148. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
  149. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
  150. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -1
  151. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
  152. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
  153. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -1
  154. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -1
  155. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
  156. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
  157. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -1
  158. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -1
  159. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.d.ts +165 -0
  160. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.d.ts.map +1 -0
  161. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.js +229 -0
  162. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.js.map +1 -0
  163. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.d.ts +175 -0
  164. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.d.ts.map +1 -0
  165. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.js +242 -0
  166. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.js.map +1 -0
  167. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.d.ts +165 -0
  168. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.d.ts.map +1 -0
  169. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.js +229 -0
  170. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.js.map +1 -0
  171. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.d.ts +2 -0
  172. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.d.ts.map +1 -0
  173. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.js +5 -0
  174. package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.js.map +1 -0
  175. package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
  176. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
  177. package/dist/factories/contracts/isms/hook/index.js +1 -0
  178. package/dist/factories/contracts/isms/hook/index.js.map +1 -1
  179. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -1
  180. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -1
  181. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.d.ts +79 -0
  182. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.d.ts.map +1 -0
  183. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.js +109 -0
  184. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.js.map +1 -0
  185. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.d.ts +121 -0
  186. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.d.ts.map +1 -0
  187. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.js +171 -0
  188. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.js.map +1 -0
  189. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts +3 -0
  190. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts.map +1 -0
  191. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js +6 -0
  192. package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js.map +1 -0
  193. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  194. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
  195. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  196. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
  197. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  198. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
  199. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  200. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
  201. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
  202. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
  203. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
  204. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
  205. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
  206. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
  207. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
  208. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
  209. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
  210. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
  211. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
  212. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
  213. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  214. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  215. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
  216. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
  217. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  218. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  219. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
  220. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
  221. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  222. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  223. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  224. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  225. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  226. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  227. package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.d.ts +2 -2
  228. package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.d.ts.map +1 -1
  229. package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.js +2 -2
  230. package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.js.map +1 -1
  231. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  232. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  233. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  234. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  235. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  236. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  237. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +2 -2
  238. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  239. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +2 -2
  240. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  241. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +2 -2
  242. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
  243. package/dist/factories/contracts/mock/MockMailbox__factory.js +2 -2
  244. package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -1
  245. package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.d.ts +174 -0
  246. package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.d.ts.map +1 -0
  247. package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.js +237 -0
  248. package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.js.map +1 -0
  249. package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts +1 -1
  250. package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js +1 -1
  251. package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts +1 -1
  252. package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js +1 -1
  253. package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts +1 -0
  254. package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts.map +1 -1
  255. package/dist/factories/contracts/mock/MockOptimism.sol/index.js +1 -0
  256. package/dist/factories/contracts/mock/MockOptimism.sol/index.js.map +1 -1
  257. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
  258. package/dist/factories/contracts/test/LightTestRecipient__factory.js +1 -1
  259. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  260. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  261. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  262. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  263. package/dist/factories/contracts/test/TestIsm__factory.d.ts +1 -1
  264. package/dist/factories/contracts/test/TestIsm__factory.js +1 -1
  265. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  266. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  267. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
  268. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
  269. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
  270. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
  271. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  272. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  273. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  274. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  275. package/dist/factories/contracts/test/TestRecipient__factory.d.ts +1 -1
  276. package/dist/factories/contracts/test/TestRecipient__factory.js +1 -1
  277. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
  278. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
  279. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  280. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  281. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  282. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  283. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
  284. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
  285. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
  286. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
  287. package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
  288. package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
  289. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
  290. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
  291. package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
  292. package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
  293. package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
  294. package/dist/factories/contracts/token/HypNative__factory.js +1 -1
  295. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
  296. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
  297. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
  298. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
  299. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +1 -1
  300. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +1 -1
  301. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +1 -1
  302. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +1 -1
  303. package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +1 -1
  304. package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +1 -1
  305. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
  306. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
  307. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
  308. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
  309. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
  310. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
  311. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
  312. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
  313. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
  314. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
  315. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
  316. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
  317. package/dist/index.d.ts +10 -0
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +5 -0
  320. package/dist/index.js.map +1 -1
  321. package/package.json +2 -2
@@ -7,5 +7,5 @@ pragma solidity >=0.6.11;
7
7
  **/
8
8
  abstract contract PackageVersioned {
9
9
  // GENERATED CODE - DO NOT EDIT
10
- string public constant PACKAGE_VERSION = "5.4.0";
10
+ string public constant PACKAGE_VERSION = "5.4.1";
11
11
  }
@@ -0,0 +1,82 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+ import {AbstractPostDispatchHook, AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
18
+ import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
19
+ import {TypeCasts} from "../libs/TypeCasts.sol";
20
+ import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
21
+
22
+ // ============ External Imports ============
23
+ import {IL2toL2CrossDomainMessenger} from "../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
24
+
25
+ /**
26
+ * @title SuperchainHook
27
+ * @notice Message hook to send messages to L2 using the native Superchain interop.
28
+ */
29
+ contract SuperchainHook is AbstractMessageIdAuthHook {
30
+ using StandardHookMetadata for bytes;
31
+ // ============ Constants ============
32
+
33
+ // precompile contract on L2 for sending messages to L2
34
+ IL2toL2CrossDomainMessenger public immutable messenger;
35
+ // Immutable quote amount
36
+ uint32 public immutable GAS_QUOTE;
37
+
38
+ // ============ Constructor ============
39
+
40
+ constructor(
41
+ address _mailbox,
42
+ uint32 _destinationDomain,
43
+ bytes32 _ism,
44
+ address _messenger,
45
+ uint32 _gasQuote
46
+ ) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
47
+ GAS_QUOTE = _gasQuote;
48
+ messenger = IL2toL2CrossDomainMessenger(_messenger);
49
+ }
50
+
51
+ /// @inheritdoc IPostDispatchHook
52
+ function hookType() external pure override returns (uint8) {
53
+ return uint8(IPostDispatchHook.Types.SUPERCHAIN);
54
+ }
55
+
56
+ /// @inheritdoc AbstractPostDispatchHook
57
+ function _quoteDispatch(
58
+ bytes calldata,
59
+ bytes calldata
60
+ ) internal view override returns (uint256) {
61
+ // TODO: Request from a IGP as a child hook like https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/9093369186993468571b5d411e712ddd9a30c98c/solidity/contracts/hooks/ArbL2ToL1Hook.sol#L85
62
+ return GAS_QUOTE;
63
+ }
64
+
65
+ // ============ Internal functions ============
66
+
67
+ /// @inheritdoc AbstractMessageIdAuthHook
68
+ function _sendMessageId(
69
+ bytes calldata metadata,
70
+ bytes memory payload
71
+ ) internal override {
72
+ require(
73
+ msg.value >= metadata.msgValue(0) + GAS_QUOTE,
74
+ "SuperchainHook: insufficient msg.value"
75
+ );
76
+ messenger.sendMessage(
77
+ destinationDomain,
78
+ TypeCasts.bytes32ToAddress(ism),
79
+ payload
80
+ );
81
+ }
82
+ }
@@ -14,7 +14,8 @@ interface IInterchainSecurityModule {
14
14
  ARB_L2_TO_L1,
15
15
  WEIGHTED_MERKLE_ROOT_MULTISIG,
16
16
  WEIGHTED_MESSAGE_ID_MULTISIG,
17
- OP_L2_TO_L1
17
+ OP_L2_TO_L1,
18
+ SUPERCHAIN
18
19
  }
19
20
 
20
21
  /**
@@ -27,7 +27,8 @@ interface IPostDispatchHook {
27
27
  LAYER_ZERO_V1,
28
28
  RATE_LIMITED,
29
29
  ARB_L2_TO_L1,
30
- OP_L2_TO_L1
30
+ OP_L2_TO_L1,
31
+ SUPERCHAIN
31
32
  }
32
33
 
33
34
  /**
@@ -0,0 +1,60 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @title ICrossL2Inbox
5
+ /// @notice Interface for the CrossL2Inbox contract.
6
+ interface ICrossL2Inbox {
7
+ /// @notice The struct for a pointer to a message payload in a remote (or local) chain.
8
+ struct Identifier {
9
+ address origin;
10
+ uint256 blockNumber;
11
+ uint256 logIndex;
12
+ uint256 timestamp;
13
+ uint256 chainId;
14
+ }
15
+
16
+ /// @notice Returns the interop start timestamp.
17
+ /// @return interopStart_ interop start timestamp.
18
+ function interopStart() external view returns (uint256 interopStart_);
19
+
20
+ /// @notice Returns the origin address of the Identifier.
21
+ /// @return origin_ The origin address of the Identifier.
22
+ function origin() external view returns (address origin_);
23
+
24
+ /// @notice Returns the block number of the Identifier.
25
+ /// @return blockNumber_ The block number of the Identifier.
26
+ function blockNumber() external view returns (uint256 blockNumber_);
27
+
28
+ /// @notice Returns the log index of the Identifier.
29
+ /// @return logIndex_ The log index of the Identifier.
30
+ function logIndex() external view returns (uint256 logIndex_);
31
+
32
+ /// @notice Returns the timestamp of the Identifier.
33
+ /// @return timestamp_ The timestamp of the Identifier.
34
+ function timestamp() external view returns (uint256 timestamp_);
35
+
36
+ /// @notice Returns the chain ID of the Identifier.
37
+ /// @return chainId_ The chain ID of the Identifier.
38
+ function chainId() external view returns (uint256 chainId_);
39
+
40
+ /// @notice Executes a cross chain message on the destination chain.
41
+ /// @param _id An Identifier pointing to the initiating message.
42
+ /// @param _target Account that is called with _msg.
43
+ /// @param _msg The message payload, matching the initiating message.
44
+ function executeMessage(
45
+ ICrossL2Inbox.Identifier calldata _id,
46
+ address _target,
47
+ bytes calldata _msg
48
+ ) external payable;
49
+
50
+ /// @notice Validates a cross chain message on the destination chain
51
+ /// and emits an ExecutingMessage event. This function is useful
52
+ /// for applications that understand the schema of the _message payload and want to
53
+ /// process it in a custom way.
54
+ /// @param _id Identifier of the message.
55
+ /// @param _msgHash Hash of the message payload to call target with.
56
+ function validateMessage(
57
+ Identifier calldata _id,
58
+ bytes32 _msgHash
59
+ ) external;
60
+ }
@@ -0,0 +1,68 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.0;
3
+
4
+ import {ICrossL2Inbox} from "./ICrossL2Inbox.sol";
5
+
6
+ /// @title IL2ToL2CrossDomainMessenger
7
+ /// @notice Interface for the L2ToL2CrossDomainMessenger contract.
8
+ interface IL2toL2CrossDomainMessenger {
9
+ /// @notice Emitted whenever a message is sent to a destination
10
+ /// @param destination Chain ID of the destination chain.
11
+ /// @param target Target contract or wallet address.
12
+ /// @param messageNonce Nonce associated with the messsage sent
13
+ /// @param sender Address initiating this message call
14
+ /// @param message Message payload to call target with.
15
+ event SentMessage(
16
+ uint256 indexed destination,
17
+ address indexed target,
18
+ uint256 indexed messageNonce,
19
+ address sender,
20
+ bytes message
21
+ );
22
+
23
+ /// @notice Mapping of message hashes to boolean receipt values. Note that a message will only
24
+ /// be present in this mapping if it has successfully been relayed on this chain, and
25
+ /// can therefore not be relayed again.
26
+ /// @param _msgHash message hash to check.
27
+ /// @return Returns true if the message corresponding to the `_msgHash` was successfully relayed.
28
+ function successfulMessages(bytes32 _msgHash) external view returns (bool);
29
+
30
+ /// @notice Retrieves the next message nonce. Message version will be added to the upper two
31
+ /// bytes of the message nonce. Message version allows us to treat messages as having
32
+ /// different structures.
33
+ /// @return Nonce of the next message to be sent, with added message version.
34
+ function messageNonce() external view returns (uint256);
35
+
36
+ /// @notice Retrieves the sender of the current cross domain message.
37
+ /// @return sender_ Address of the sender of the current cross domain message.
38
+ function crossDomainMessageSender() external view returns (address sender_);
39
+
40
+ /// @notice Retrieves the source of the current cross domain message.
41
+ /// @return source_ Chain ID of the source of the current cross domain message.
42
+ function crossDomainMessageSource() external view returns (uint256 source_);
43
+
44
+ /// @notice Sends a message to some target address on a destination chain. Note that if the call
45
+ /// always reverts, then the message will be unrelayable, and any ETH sent will be
46
+ /// permanently locked. The same will occur if the target on the other chain is
47
+ /// considered unsafe (see the _isUnsafeTarget() function).
48
+ /// @param _destination Chain ID of the destination chain.
49
+ /// @param _target Target contract or wallet address.
50
+ /// @param _message Message to trigger the target address with.
51
+ /// @return msgHash_ The hash of the message being sent, which can be used for tracking whether
52
+ /// the message has successfully been relayed.
53
+ function sendMessage(
54
+ uint256 _destination,
55
+ address _target,
56
+ bytes calldata _message
57
+ ) external returns (bytes32 msgHash_);
58
+
59
+ /// @notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only
60
+ /// be executed via cross-chain call from the other messenger OR if the message was
61
+ /// already received once and is currently being replayed.
62
+ /// @param _id Identifier of the SentMessage event to be relayed
63
+ /// @param _sentMessage Message payload of the `SentMessage` event
64
+ function relayMessage(
65
+ ICrossL2Inbox.Identifier calldata _id,
66
+ bytes calldata _sentMessage
67
+ ) external payable;
68
+ }
@@ -0,0 +1,91 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+ import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
18
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
19
+ import {Message} from "../../libs/Message.sol";
20
+ import {AbstractMessageIdAuthorizedIsm} from "./AbstractMessageIdAuthorizedIsm.sol";
21
+
22
+ // ============ External Imports ============
23
+
24
+ import {IL2toL2CrossDomainMessenger} from "../../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
25
+ import {ICrossL2Inbox} from "../../interfaces/optimism/ICrossL2Inbox.sol";
26
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
27
+
28
+ /**
29
+ * @title SuperchainISM
30
+ * @notice Uses the native Optimism bridge to verify interchain messages from L2 to L1.
31
+ */
32
+ contract SuperchainISM is AbstractMessageIdAuthorizedIsm {
33
+ using TypeCasts for address;
34
+ using Message for bytes;
35
+
36
+ // ============ Constants ============
37
+
38
+ // module type for the ISM
39
+ uint8 public constant moduleType =
40
+ uint8(IInterchainSecurityModule.Types.SUPERCHAIN);
41
+ // L2toL2CrossDomainMessenger contract
42
+ IL2toL2CrossDomainMessenger immutable messenger;
43
+
44
+ // ============ Constructor ============
45
+
46
+ constructor(address _messenger) {
47
+ messenger = IL2toL2CrossDomainMessenger(_messenger);
48
+ require(
49
+ Address.isContract(_messenger),
50
+ "SuperchainISM: invalid L2toL2CrossDomainMessenger contract"
51
+ );
52
+ }
53
+
54
+ // ============ External Functions ============
55
+
56
+ /// @inheritdoc IInterchainSecurityModule
57
+ function verify(
58
+ bytes calldata metadata,
59
+ bytes calldata message
60
+ ) external override returns (bool) {
61
+ bool verified = isVerified(message);
62
+ if (!verified) {
63
+ _verifyWithMessenger(metadata, message);
64
+ require(isVerified(message), "SuperchainIsm: message not verified");
65
+ }
66
+ return true;
67
+ }
68
+
69
+ // ============ Internal function ============
70
+
71
+ /**
72
+ * @notice Verify message directly using the portal.finalizeWithdrawal function.
73
+ * @dev This is a fallback in case the message is not verified by the stateful verify function first.
74
+ */
75
+ function _verifyWithMessenger(
76
+ bytes calldata metadata,
77
+ bytes memory
78
+ ) internal {
79
+ (ICrossL2Inbox.Identifier memory _id, bytes memory _sentMessage) = abi
80
+ .decode(metadata, (ICrossL2Inbox.Identifier, bytes));
81
+ messenger.relayMessage(_id, _sentMessage);
82
+ }
83
+
84
+ /// @inheritdoc AbstractMessageIdAuthorizedIsm
85
+ function _isAuthorized() internal view override returns (bool) {
86
+ return
87
+ msg.sender == address(messenger) &&
88
+ messenger.crossDomainMessageSender() ==
89
+ TypeCasts.bytes32ToAddress(authorizedHook);
90
+ }
91
+ }
@@ -307,7 +307,7 @@ contract InterchainAccountRouter is Router {
307
307
  _sender,
308
308
  _ism.bytes32ToAddress()
309
309
  );
310
- _interchainAccount.multicall(_calls);
310
+ _interchainAccount.multicall{value: msg.value}(_calls);
311
311
  }
312
312
 
313
313
  /**
@@ -20,7 +20,9 @@ contract OwnableMulticall {
20
20
  _;
21
21
  }
22
22
 
23
- function multicall(CallLib.Call[] calldata calls) external onlyOwner {
23
+ function multicall(
24
+ CallLib.Call[] calldata calls
25
+ ) external payable onlyOwner {
24
26
  return CallLib.multicall(calls);
25
27
  }
26
28
 
@@ -38,8 +38,10 @@ contract MockHyperlaneEnvironment {
38
38
  mailboxes[_destinationDomain] = destinationMailbox;
39
39
  }
40
40
 
41
- function processNextPendingMessage() public {
42
- mailboxes[destinationDomain].processNextInboundMessage();
41
+ function processNextPendingMessage() public payable {
42
+ mailboxes[destinationDomain].processNextInboundMessage{
43
+ value: msg.value
44
+ }();
43
45
  }
44
46
 
45
47
  function processNextPendingMessageFromDestination() public {
@@ -72,9 +72,9 @@ contract MockMailbox is Mailbox {
72
72
  inboundUnprocessedNonce++;
73
73
  }
74
74
 
75
- function processNextInboundMessage() public {
75
+ function processNextInboundMessage() public payable {
76
76
  bytes memory _message = inboundMessages[inboundProcessedNonce];
77
- Mailbox(address(this)).process("", _message);
77
+ Mailbox(address(this)).process{value: msg.value}("", _message);
78
78
  inboundProcessedNonce++;
79
79
  }
80
80
  }
@@ -4,7 +4,10 @@ pragma solidity ^0.8.0;
4
4
  import {CallLib} from "../middleware/libs/Call.sol";
5
5
  import {TypeCasts} from "../libs/TypeCasts.sol";
6
6
  import {ICrossDomainMessenger} from "../interfaces/optimism/ICrossDomainMessenger.sol";
7
+ import {IL2toL2CrossDomainMessenger} from "../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
8
+ import {ICrossL2Inbox} from "../interfaces/optimism/ICrossL2Inbox.sol";
7
9
  import {IOptimismPortal} from "../interfaces/optimism/IOptimismPortal.sol";
10
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
8
11
 
9
12
  // for both L1 and L2
10
13
  contract MockOptimismMessenger is ICrossDomainMessenger {
@@ -59,3 +62,73 @@ contract MockOptimismPortal is IOptimismPortal {
59
62
  CallLib.call(call);
60
63
  }
61
64
  }
65
+
66
+ contract MockL2toL2CrossDomainMessenger is IL2toL2CrossDomainMessenger {
67
+ uint256 public messageNonce;
68
+ bool passMessages = true;
69
+ address originCaller;
70
+
71
+ function encodeCall(
72
+ address _originCaller,
73
+ address target,
74
+ bytes calldata call
75
+ ) public view returns (bytes memory) {
76
+ return abi.encode(_originCaller, target, call);
77
+ }
78
+
79
+ function sendMessage(
80
+ uint256 _destination,
81
+ address _target,
82
+ bytes calldata _message
83
+ ) external returns (bytes32 msgHash_) {}
84
+
85
+ /// @notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only
86
+ /// be executed via cross-chain call from the other messenger OR if the message was
87
+ /// already received once and is currently being replayed.
88
+ /// @param _id Identifier of the SentMessage event to be relayed
89
+ /// @param _sentMessage Message payload of the `SentMessage` event
90
+ function relayMessage(
91
+ ICrossL2Inbox.Identifier calldata _id,
92
+ bytes calldata _sentMessage
93
+ ) external payable {
94
+ require(
95
+ passMessages,
96
+ "MockL2toL2CrossDomainMessenger: passMessages is false"
97
+ );
98
+ (address _originCaller, address target, bytes memory call) = abi.decode(
99
+ _sentMessage,
100
+ (address, address, bytes)
101
+ );
102
+ originCaller = _originCaller;
103
+ Address.functionCall(target, call);
104
+ }
105
+
106
+ /// @notice Mapping of message hashes to boolean receipt values. Note that a message will only
107
+ /// be present in this mapping if it has successfully been relayed on this chain, and
108
+ /// can therefore not be relayed again.
109
+ /// @param _msgHash message hash to check.
110
+ /// @return Returns true if the message corresponding to the `_msgHash` was successfully relayed.
111
+ function successfulMessages(bytes32 _msgHash) external view returns (bool) {
112
+ return true;
113
+ }
114
+
115
+ /// @notice Retrieves the sender of the current cross domain message.
116
+ /// @return sender_ Address of the sender of the current cross domain message.
117
+ function crossDomainMessageSender()
118
+ external
119
+ view
120
+ returns (address sender_)
121
+ {
122
+ return originCaller;
123
+ }
124
+
125
+ /// @notice Retrieves the source of the current cross domain message.
126
+ /// @return source_ Chain ID of the source of the current cross domain message.
127
+ function crossDomainMessageSource()
128
+ external
129
+ view
130
+ returns (uint256 source_)
131
+ {
132
+ return 0;
133
+ }
134
+ }