@hyperlane-xyz/core 5.6.0 → 5.7.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 (423) hide show
  1. package/contracts/Mailbox.sol +2 -1
  2. package/contracts/PackageVersioned.sol +1 -1
  3. package/contracts/client/MailboxClient.sol +20 -1
  4. package/contracts/hooks/ArbL2ToL1Hook.sol +23 -12
  5. package/contracts/hooks/OPL2ToL1Hook.sol +23 -12
  6. package/contracts/hooks/OPStackHook.sol +9 -6
  7. package/contracts/hooks/PolygonPosHook.sol +10 -3
  8. package/contracts/hooks/ProtocolFee.sol +5 -0
  9. package/contracts/hooks/aggregation/ERC5164Hook.sol +13 -3
  10. package/contracts/hooks/layer-zero/LayerZeroV2Hook.sol +11 -3
  11. package/contracts/hooks/libs/AbstractMessageIdAuthHook.sol +22 -8
  12. package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +14 -7
  13. package/contracts/isms/hook/ArbL2ToL1Ism.sol +10 -3
  14. package/contracts/isms/hook/ERC5164Ism.sol +1 -1
  15. package/contracts/isms/hook/OPStackIsm.sol +1 -1
  16. package/contracts/isms/hook/PolygonPosIsm.sol +1 -1
  17. package/contracts/isms/hook/layer-zero/LayerZeroV2Ism.sol +16 -5
  18. package/contracts/libs/OPL2ToL1Metadata.sol +5 -5
  19. package/contracts/middleware/InterchainAccountRouter.sol +27 -7
  20. package/contracts/mock/MockMailbox.sol +2 -2
  21. package/contracts/test/TestPostDispatchHook.sol +5 -4
  22. package/contracts/token/extensions/HypERC4626.sol +66 -29
  23. package/dist/buildArtifact.js +1 -1
  24. package/dist/buildArtifact.json +1 -1
  25. package/dist/contracts/client/GasRouter.d.ts +20 -0
  26. package/dist/contracts/client/GasRouter.d.ts.map +1 -1
  27. package/dist/contracts/client/MailboxClient.d.ts +20 -0
  28. package/dist/contracts/client/MailboxClient.d.ts.map +1 -1
  29. package/dist/contracts/client/Router.d.ts +20 -0
  30. package/dist/contracts/client/Router.d.ts.map +1 -1
  31. package/dist/contracts/hooks/ArbL2ToL1Hook.d.ts +36 -16
  32. package/dist/contracts/hooks/ArbL2ToL1Hook.d.ts.map +1 -1
  33. package/dist/contracts/hooks/MerkleTreeHook.d.ts +20 -0
  34. package/dist/contracts/hooks/MerkleTreeHook.d.ts.map +1 -1
  35. package/dist/contracts/hooks/OPL2ToL1Hook.d.ts +51 -16
  36. package/dist/contracts/hooks/OPL2ToL1Hook.d.ts.map +1 -1
  37. package/dist/contracts/hooks/OPStackHook.d.ts +20 -0
  38. package/dist/contracts/hooks/OPStackHook.d.ts.map +1 -1
  39. package/dist/contracts/hooks/PolygonPosHook.d.ts +20 -0
  40. package/dist/contracts/hooks/PolygonPosHook.d.ts.map +1 -1
  41. package/dist/contracts/hooks/ProtocolFee.d.ts +24 -0
  42. package/dist/contracts/hooks/ProtocolFee.d.ts.map +1 -1
  43. package/dist/contracts/hooks/aggregation/ERC5164Hook.d.ts +20 -0
  44. package/dist/contracts/hooks/aggregation/ERC5164Hook.d.ts.map +1 -1
  45. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts +20 -0
  46. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts.map +1 -1
  47. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts +20 -0
  48. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts.map +1 -1
  49. package/dist/contracts/hooks/libs/AbstractMessageIdAuthHook.d.ts +20 -0
  50. package/dist/contracts/hooks/libs/AbstractMessageIdAuthHook.d.ts.map +1 -1
  51. package/dist/contracts/hooks/routing/DestinationRecipientRoutingHook.d.ts +20 -0
  52. package/dist/contracts/hooks/routing/DestinationRecipientRoutingHook.d.ts.map +1 -1
  53. package/dist/contracts/hooks/routing/DomainRoutingHook.d.ts +20 -0
  54. package/dist/contracts/hooks/routing/DomainRoutingHook.d.ts.map +1 -1
  55. package/dist/contracts/hooks/routing/FallbackDomainRoutingHook.d.ts +20 -0
  56. package/dist/contracts/hooks/routing/FallbackDomainRoutingHook.d.ts.map +1 -1
  57. package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts +20 -0
  58. package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts.map +1 -1
  59. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts +40 -38
  60. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts.map +1 -1
  61. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts +40 -38
  62. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts.map +1 -1
  63. package/dist/contracts/isms/hook/ERC5164Ism.d.ts +40 -38
  64. package/dist/contracts/isms/hook/ERC5164Ism.d.ts.map +1 -1
  65. package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts +40 -38
  66. package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts.map +1 -1
  67. package/dist/contracts/isms/hook/OPStackIsm.d.ts +40 -38
  68. package/dist/contracts/isms/hook/OPStackIsm.d.ts.map +1 -1
  69. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +39 -37
  70. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -1
  71. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +39 -37
  72. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -1
  73. package/dist/contracts/isms/multisig/ValidatorAnnounce.d.ts +20 -0
  74. package/dist/contracts/isms/multisig/ValidatorAnnounce.d.ts.map +1 -1
  75. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.d.ts +20 -0
  76. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.d.ts.map +1 -1
  77. package/dist/contracts/isms/warp-route/RateLimitedIsm.d.ts +20 -0
  78. package/dist/contracts/isms/warp-route/RateLimitedIsm.d.ts.map +1 -1
  79. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +20 -0
  80. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  81. package/dist/contracts/middleware/InterchainQueryRouter.d.ts +20 -0
  82. package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
  83. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +20 -0
  84. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -1
  85. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +20 -0
  86. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -1
  87. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts +20 -0
  88. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts.map +1 -1
  89. package/dist/contracts/mock/MockMailbox.d.ts +8 -8
  90. package/dist/contracts/mock/MockMailbox.d.ts.map +1 -1
  91. package/dist/contracts/test/TestGasRouter.d.ts +20 -0
  92. package/dist/contracts/test/TestGasRouter.d.ts.map +1 -1
  93. package/dist/contracts/test/TestMerkleTreeHook.d.ts +20 -0
  94. package/dist/contracts/test/TestMerkleTreeHook.d.ts.map +1 -1
  95. package/dist/contracts/test/TestRouter.d.ts +20 -0
  96. package/dist/contracts/test/TestRouter.d.ts.map +1 -1
  97. package/dist/contracts/token/HypERC20.d.ts +20 -0
  98. package/dist/contracts/token/HypERC20.d.ts.map +1 -1
  99. package/dist/contracts/token/HypERC20Collateral.d.ts +20 -0
  100. package/dist/contracts/token/HypERC20Collateral.d.ts.map +1 -1
  101. package/dist/contracts/token/HypERC721.d.ts +20 -0
  102. package/dist/contracts/token/HypERC721.d.ts.map +1 -1
  103. package/dist/contracts/token/HypERC721Collateral.d.ts +20 -0
  104. package/dist/contracts/token/HypERC721Collateral.d.ts.map +1 -1
  105. package/dist/contracts/token/HypNative.d.ts +20 -0
  106. package/dist/contracts/token/HypNative.d.ts.map +1 -1
  107. package/dist/contracts/token/extensions/FastHypERC20.d.ts +20 -0
  108. package/dist/contracts/token/extensions/FastHypERC20.d.ts.map +1 -1
  109. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts +20 -0
  110. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts.map +1 -1
  111. package/dist/contracts/token/extensions/HypERC4626.d.ts +46 -11
  112. package/dist/contracts/token/extensions/HypERC4626.d.ts.map +1 -1
  113. package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts +20 -0
  114. package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts.map +1 -1
  115. package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts +20 -0
  116. package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts.map +1 -1
  117. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts +20 -0
  118. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts.map +1 -1
  119. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts +20 -0
  120. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts.map +1 -1
  121. package/dist/contracts/token/extensions/HypFiatToken.d.ts +20 -0
  122. package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -1
  123. package/dist/contracts/token/extensions/HypNativeScaled.d.ts +20 -0
  124. package/dist/contracts/token/extensions/HypNativeScaled.d.ts.map +1 -1
  125. package/dist/contracts/token/extensions/HypXERC20.d.ts +20 -0
  126. package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -1
  127. package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts +20 -0
  128. package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -1
  129. package/dist/contracts/token/libs/FastTokenRouter.d.ts +20 -0
  130. package/dist/contracts/token/libs/FastTokenRouter.d.ts.map +1 -1
  131. package/dist/contracts/token/libs/TokenRouter.d.ts +20 -0
  132. package/dist/contracts/token/libs/TokenRouter.d.ts.map +1 -1
  133. package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
  134. package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
  135. package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
  136. package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
  137. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  138. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  139. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
  140. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
  141. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
  142. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
  143. package/dist/factories/contracts/client/GasRouter__factory.d.ts +20 -0
  144. package/dist/factories/contracts/client/GasRouter__factory.d.ts.map +1 -1
  145. package/dist/factories/contracts/client/GasRouter__factory.js +26 -0
  146. package/dist/factories/contracts/client/GasRouter__factory.js.map +1 -1
  147. package/dist/factories/contracts/client/MailboxClient__factory.d.ts +20 -0
  148. package/dist/factories/contracts/client/MailboxClient__factory.d.ts.map +1 -1
  149. package/dist/factories/contracts/client/MailboxClient__factory.js +26 -0
  150. package/dist/factories/contracts/client/MailboxClient__factory.js.map +1 -1
  151. package/dist/factories/contracts/client/Router__factory.d.ts +20 -0
  152. package/dist/factories/contracts/client/Router__factory.d.ts.map +1 -1
  153. package/dist/factories/contracts/client/Router__factory.js +26 -0
  154. package/dist/factories/contracts/client/Router__factory.js.map +1 -1
  155. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +34 -14
  156. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts.map +1 -1
  157. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +42 -16
  158. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js.map +1 -1
  159. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +21 -1
  160. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts.map +1 -1
  161. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +27 -1
  162. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js.map +1 -1
  163. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts +37 -7
  164. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts.map +1 -1
  165. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +48 -9
  166. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js.map +1 -1
  167. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +21 -1
  168. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts.map +1 -1
  169. package/dist/factories/contracts/hooks/OPStackHook__factory.js +27 -1
  170. package/dist/factories/contracts/hooks/OPStackHook__factory.js.map +1 -1
  171. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  172. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  173. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +21 -1
  174. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts.map +1 -1
  175. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +27 -1
  176. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js.map +1 -1
  177. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +21 -1
  178. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts.map +1 -1
  179. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +27 -1
  180. package/dist/factories/contracts/hooks/ProtocolFee__factory.js.map +1 -1
  181. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +21 -1
  182. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts.map +1 -1
  183. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +27 -1
  184. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js.map +1 -1
  185. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  186. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  187. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  188. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  189. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  190. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  191. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
  192. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
  193. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +21 -1
  194. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts.map +1 -1
  195. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +27 -1
  196. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js.map +1 -1
  197. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +21 -1
  198. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts.map +1 -1
  199. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +27 -1
  200. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js.map +1 -1
  201. package/dist/factories/contracts/hooks/libs/AbstractMessageIdAuthHook__factory.d.ts +20 -0
  202. package/dist/factories/contracts/hooks/libs/AbstractMessageIdAuthHook__factory.d.ts.map +1 -1
  203. package/dist/factories/contracts/hooks/libs/AbstractMessageIdAuthHook__factory.js +26 -0
  204. package/dist/factories/contracts/hooks/libs/AbstractMessageIdAuthHook__factory.js.map +1 -1
  205. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +21 -1
  206. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts.map +1 -1
  207. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +27 -1
  208. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js.map +1 -1
  209. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +21 -1
  210. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts.map +1 -1
  211. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +27 -1
  212. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js.map +1 -1
  213. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +21 -1
  214. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts.map +1 -1
  215. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +27 -1
  216. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js.map +1 -1
  217. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +21 -1
  218. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts.map +1 -1
  219. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +27 -1
  220. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js.map +1 -1
  221. package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
  222. package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
  223. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
  224. package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
  225. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
  226. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
  227. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  228. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
  229. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  230. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
  231. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts +19 -10
  232. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts.map +1 -1
  233. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js +24 -13
  234. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js.map +1 -1
  235. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +20 -11
  236. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts.map +1 -1
  237. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +25 -14
  238. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js.map +1 -1
  239. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +20 -11
  240. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts.map +1 -1
  241. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +25 -14
  242. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js.map +1 -1
  243. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +20 -11
  244. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts.map +1 -1
  245. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +25 -14
  246. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js.map +1 -1
  247. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +20 -11
  248. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts.map +1 -1
  249. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +25 -14
  250. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js.map +1 -1
  251. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +20 -11
  252. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -1
  253. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +25 -14
  254. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -1
  255. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +20 -11
  256. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -1
  257. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +25 -14
  258. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -1
  259. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  260. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
  261. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  262. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
  263. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  264. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
  265. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  266. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
  267. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +21 -1
  268. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts.map +1 -1
  269. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +27 -1
  270. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js.map +1 -1
  271. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
  272. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
  273. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
  274. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
  275. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
  276. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
  277. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
  278. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
  279. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +21 -1
  280. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts.map +1 -1
  281. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +27 -1
  282. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js.map +1 -1
  283. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  284. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  285. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
  286. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
  287. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  288. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  289. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +21 -1
  290. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts.map +1 -1
  291. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +27 -1
  292. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js.map +1 -1
  293. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +21 -1
  294. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  295. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +27 -1
  296. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  297. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +21 -1
  298. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
  299. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +27 -1
  300. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
  301. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +21 -1
  302. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
  303. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +27 -1
  304. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -1
  305. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +21 -1
  306. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -1
  307. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +27 -1
  308. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -1
  309. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +21 -1
  310. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts.map +1 -1
  311. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +27 -1
  312. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +1 -1
  313. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  314. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  315. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  316. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  317. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +2 -2
  318. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
  319. package/dist/factories/contracts/mock/MockMailbox__factory.js +2 -2
  320. package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -1
  321. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +21 -1
  322. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts.map +1 -1
  323. package/dist/factories/contracts/test/TestGasRouter__factory.js +27 -1
  324. package/dist/factories/contracts/test/TestGasRouter__factory.js.map +1 -1
  325. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  326. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  327. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  328. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  329. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +21 -1
  330. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts.map +1 -1
  331. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +27 -1
  332. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js.map +1 -1
  333. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
  334. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
  335. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  336. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  337. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  338. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  339. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
  340. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
  341. package/dist/factories/contracts/test/TestRouter__factory.d.ts +21 -1
  342. package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
  343. package/dist/factories/contracts/test/TestRouter__factory.js +27 -1
  344. package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
  345. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  346. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  347. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
  348. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
  349. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +21 -1
  350. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
  351. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +27 -1
  352. package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
  353. package/dist/factories/contracts/token/HypERC20__factory.d.ts +21 -1
  354. package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
  355. package/dist/factories/contracts/token/HypERC20__factory.js +27 -1
  356. package/dist/factories/contracts/token/HypERC20__factory.js.map +1 -1
  357. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +21 -1
  358. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts.map +1 -1
  359. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +27 -1
  360. package/dist/factories/contracts/token/HypERC721Collateral__factory.js.map +1 -1
  361. package/dist/factories/contracts/token/HypERC721__factory.d.ts +21 -1
  362. package/dist/factories/contracts/token/HypERC721__factory.d.ts.map +1 -1
  363. package/dist/factories/contracts/token/HypERC721__factory.js +27 -1
  364. package/dist/factories/contracts/token/HypERC721__factory.js.map +1 -1
  365. package/dist/factories/contracts/token/HypNative__factory.d.ts +21 -1
  366. package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
  367. package/dist/factories/contracts/token/HypNative__factory.js +27 -1
  368. package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
  369. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +21 -1
  370. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
  371. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +27 -1
  372. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
  373. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +21 -1
  374. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
  375. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +27 -1
  376. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
  377. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +21 -1
  378. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts.map +1 -1
  379. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +27 -1
  380. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js.map +1 -1
  381. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +21 -1
  382. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts.map +1 -1
  383. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +27 -1
  384. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js.map +1 -1
  385. package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +33 -3
  386. package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts.map +1 -1
  387. package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +42 -3
  388. package/dist/factories/contracts/token/extensions/HypERC4626__factory.js.map +1 -1
  389. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +21 -1
  390. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts.map +1 -1
  391. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +27 -1
  392. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js.map +1 -1
  393. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +21 -1
  394. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts.map +1 -1
  395. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +27 -1
  396. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js.map +1 -1
  397. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +21 -1
  398. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -1
  399. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +27 -1
  400. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -1
  401. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +21 -1
  402. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +1 -1
  403. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +27 -1
  404. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +1 -1
  405. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +21 -1
  406. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -1
  407. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +27 -1
  408. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -1
  409. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +21 -1
  410. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -1
  411. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +27 -1
  412. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -1
  413. package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +1 -1
  414. package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +1 -1
  415. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts +20 -0
  416. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts.map +1 -1
  417. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js +26 -0
  418. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js.map +1 -1
  419. package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts +20 -0
  420. package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts.map +1 -1
  421. package/dist/factories/contracts/token/libs/TokenRouter__factory.js +26 -0
  422. package/dist/factories/contracts/token/libs/TokenRouter__factory.js.map +1 -1
  423. package/package.json +2 -2
@@ -10,7 +10,7 @@ import {IInterchainSecurityModule, ISpecifiesInterchainSecurityModule} from "./i
10
10
  import {IPostDispatchHook} from "./interfaces/hooks/IPostDispatchHook.sol";
11
11
  import {IMessageRecipient} from "./interfaces/IMessageRecipient.sol";
12
12
  import {IMailbox} from "./interfaces/IMailbox.sol";
13
- import {PackageVersioned} from "contracts/PackageVersioned.sol";
13
+ import {PackageVersioned} from "./PackageVersioned.sol";
14
14
 
15
15
  // ============ External Imports ============
16
16
  import {Address} from "@openzeppelin/contracts/utils/Address.sol";
@@ -56,6 +56,7 @@ contract Mailbox is
56
56
  address processor;
57
57
  uint48 blockNumber;
58
58
  }
59
+
59
60
  mapping(bytes32 => Delivery) internal deliveries;
60
61
 
61
62
  // ============ Events ============
@@ -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.6.0";
10
+ string public constant PACKAGE_VERSION = "5.7.0";
11
11
  }
@@ -1,6 +1,18 @@
1
1
  // SPDX-License-Identifier: MIT OR Apache-2.0
2
2
  pragma solidity >=0.6.11;
3
3
 
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
4
16
  // ============ Internal Imports ============
5
17
  import {IMailbox} from "../interfaces/IMailbox.sol";
6
18
  import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
@@ -15,6 +27,9 @@ import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Own
15
27
  abstract contract MailboxClient is OwnableUpgradeable, PackageVersioned {
16
28
  using Message for bytes;
17
29
 
30
+ event HookSet(address _hook);
31
+ event IsmSet(address _ism);
32
+
18
33
  IMailbox public immutable mailbox;
19
34
 
20
35
  uint32 public immutable localDomain;
@@ -63,8 +78,11 @@ abstract contract MailboxClient is OwnableUpgradeable, PackageVersioned {
63
78
  * @notice Sets the address of the application's custom hook.
64
79
  * @param _hook The address of the hook contract.
65
80
  */
66
- function setHook(address _hook) public onlyContractOrNull(_hook) onlyOwner {
81
+ function setHook(
82
+ address _hook
83
+ ) public virtual onlyContractOrNull(_hook) onlyOwner {
67
84
  hook = IPostDispatchHook(_hook);
85
+ emit HookSet(_hook);
68
86
  }
69
87
 
70
88
  /**
@@ -75,6 +93,7 @@ abstract contract MailboxClient is OwnableUpgradeable, PackageVersioned {
75
93
  address _module
76
94
  ) public onlyContractOrNull(_module) onlyOwner {
77
95
  interchainSecurityModule = IInterchainSecurityModule(_module);
96
+ emit IsmSet(_module);
78
97
  }
79
98
 
80
99
  // ======== Initializer =========
@@ -14,17 +14,16 @@ pragma solidity >=0.8.0;
14
14
  @@@@@@@@@ @@@@@@@@*/
15
15
 
16
16
  // ============ Internal Imports ============
17
+ import {Message} from "../libs/Message.sol";
18
+ import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
17
19
  import {AbstractPostDispatchHook} from "./libs/AbstractMessageIdAuthHook.sol";
18
20
  import {AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
19
- import {Mailbox} from "../Mailbox.sol";
21
+ import {AbstractMessageIdAuthorizedIsm} from "../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
20
22
  import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
21
23
  import {Message} from "../libs/Message.sol";
22
24
  import {TypeCasts} from "../libs/TypeCasts.sol";
23
- import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
24
- import {MailboxClient} from "../client/MailboxClient.sol";
25
25
 
26
26
  // ============ External Imports ============
27
- import {Address} from "@openzeppelin/contracts/utils/Address.sol";
28
27
  import {ArbSys} from "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol";
29
28
 
30
29
  /**
@@ -35,13 +34,14 @@ import {ArbSys} from "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol";
35
34
  */
36
35
  contract ArbL2ToL1Hook is AbstractMessageIdAuthHook {
37
36
  using StandardHookMetadata for bytes;
37
+ using Message for bytes;
38
38
 
39
39
  // ============ Constants ============
40
40
 
41
41
  // precompile contract on L2 for sending messages to L1
42
42
  ArbSys public immutable arbSys;
43
- // Immutable quote amount
44
- uint256 public immutable GAS_QUOTE;
43
+ // child hook to call first
44
+ IPostDispatchHook public immutable childHook;
45
45
 
46
46
  // ============ Constructor ============
47
47
 
@@ -50,21 +50,24 @@ contract ArbL2ToL1Hook is AbstractMessageIdAuthHook {
50
50
  uint32 _destinationDomain,
51
51
  bytes32 _ism,
52
52
  address _arbSys,
53
- uint256 _gasQuote
53
+ address _childHook
54
54
  ) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
55
55
  arbSys = ArbSys(_arbSys);
56
- GAS_QUOTE = _gasQuote;
56
+ childHook = AbstractPostDispatchHook(_childHook);
57
57
  }
58
58
 
59
+ /// @inheritdoc IPostDispatchHook
59
60
  function hookType() external pure override returns (uint8) {
60
61
  return uint8(IPostDispatchHook.Types.ARB_L2_TO_L1);
61
62
  }
62
63
 
64
+ /// @inheritdoc AbstractPostDispatchHook
63
65
  function _quoteDispatch(
64
- bytes calldata,
65
- bytes calldata
66
+ bytes calldata metadata,
67
+ bytes calldata message
66
68
  ) internal view override returns (uint256) {
67
- return GAS_QUOTE;
69
+ return
70
+ metadata.msgValue(0) + childHook.quoteDispatch(metadata, message);
68
71
  }
69
72
 
70
73
  // ============ Internal functions ============
@@ -72,8 +75,16 @@ contract ArbL2ToL1Hook is AbstractMessageIdAuthHook {
72
75
  /// @inheritdoc AbstractMessageIdAuthHook
73
76
  function _sendMessageId(
74
77
  bytes calldata metadata,
75
- bytes memory payload
78
+ bytes calldata message
76
79
  ) internal override {
80
+ bytes memory payload = abi.encodeCall(
81
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
82
+ (message.id(), metadata.msgValue(0))
83
+ );
84
+
85
+ childHook.postDispatch{
86
+ value: childHook.quoteDispatch(metadata, message)
87
+ }(metadata, message);
77
88
  arbSys.sendTxToL1{value: metadata.msgValue(0)}(
78
89
  TypeCasts.bytes32ToAddress(ism),
79
90
  payload
@@ -14,10 +14,13 @@ pragma solidity >=0.8.0;
14
14
  @@@@@@@@@ @@@@@@@@*/
15
15
 
16
16
  // ============ Internal Imports ============
17
+ import {Message} from "../libs/Message.sol";
17
18
  import {AbstractPostDispatchHook, AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
19
+ import {AbstractMessageIdAuthorizedIsm} from "../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
18
20
  import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
19
21
  import {TypeCasts} from "../libs/TypeCasts.sol";
20
22
  import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
23
+ import {InterchainGasPaymaster} from "./igp/InterchainGasPaymaster.sol";
21
24
 
22
25
  // ============ External Imports ============
23
26
  import {ICrossDomainMessenger} from "../interfaces/optimism/ICrossDomainMessenger.sol";
@@ -30,13 +33,16 @@ import {ICrossDomainMessenger} from "../interfaces/optimism/ICrossDomainMessenge
30
33
  */
31
34
  contract OPL2ToL1Hook is AbstractMessageIdAuthHook {
32
35
  using StandardHookMetadata for bytes;
36
+ using Message for bytes;
33
37
 
34
38
  // ============ Constants ============
35
39
 
36
40
  // precompile contract on L2 for sending messages to L1
37
41
  ICrossDomainMessenger public immutable l2Messenger;
38
- // Immutable quote amount
39
- uint32 public immutable GAS_QUOTE;
42
+ // child hook to call first
43
+ IPostDispatchHook public immutable childHook;
44
+ // Minimum gas limit that the message can be executed with - OP specific
45
+ uint32 public constant MIN_GAS_LIMIT = 300_000;
40
46
 
41
47
  // ============ Constructor ============
42
48
 
@@ -45,10 +51,10 @@ contract OPL2ToL1Hook is AbstractMessageIdAuthHook {
45
51
  uint32 _destinationDomain,
46
52
  bytes32 _ism,
47
53
  address _l2Messenger,
48
- uint32 _gasQuote
54
+ address _childHook
49
55
  ) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
50
- GAS_QUOTE = _gasQuote;
51
56
  l2Messenger = ICrossDomainMessenger(_l2Messenger);
57
+ childHook = AbstractPostDispatchHook(_childHook);
52
58
  }
53
59
 
54
60
  /// @inheritdoc IPostDispatchHook
@@ -58,10 +64,11 @@ contract OPL2ToL1Hook is AbstractMessageIdAuthHook {
58
64
 
59
65
  /// @inheritdoc AbstractPostDispatchHook
60
66
  function _quoteDispatch(
61
- bytes calldata,
62
- bytes calldata
67
+ bytes calldata metadata,
68
+ bytes calldata message
63
69
  ) internal view override returns (uint256) {
64
- return GAS_QUOTE;
70
+ return
71
+ metadata.msgValue(0) + childHook.quoteDispatch(metadata, message);
65
72
  }
66
73
 
67
74
  // ============ Internal functions ============
@@ -69,16 +76,20 @@ contract OPL2ToL1Hook is AbstractMessageIdAuthHook {
69
76
  /// @inheritdoc AbstractMessageIdAuthHook
70
77
  function _sendMessageId(
71
78
  bytes calldata metadata,
72
- bytes memory payload
79
+ bytes calldata message
73
80
  ) internal override {
74
- require(
75
- msg.value >= metadata.msgValue(0) + GAS_QUOTE,
76
- "OPL2ToL1Hook: insufficient msg.value"
81
+ bytes memory payload = abi.encodeCall(
82
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
83
+ (message.id(), metadata.msgValue(0))
77
84
  );
85
+
86
+ childHook.postDispatch{
87
+ value: childHook.quoteDispatch(metadata, message)
88
+ }(metadata, message);
78
89
  l2Messenger.sendMessage{value: metadata.msgValue(0)}(
79
90
  TypeCasts.bytes32ToAddress(ism),
80
91
  payload,
81
- GAS_QUOTE
92
+ MIN_GAS_LIMIT
82
93
  );
83
94
  }
84
95
  }
@@ -18,6 +18,7 @@ import {AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
18
18
  import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
19
19
  import {TypeCasts} from "../libs/TypeCasts.sol";
20
20
  import {Message} from "../libs/Message.sol";
21
+ import {AbstractMessageIdAuthorizedIsm} from "../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
21
22
  import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
22
23
 
23
24
  // ============ External Imports ============
@@ -32,6 +33,7 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
32
33
  */
33
34
  contract OPStackHook is AbstractMessageIdAuthHook {
34
35
  using StandardHookMetadata for bytes;
36
+ using Message for bytes;
35
37
 
36
38
  // ============ Constants ============
37
39
 
@@ -60,21 +62,22 @@ contract OPStackHook is AbstractMessageIdAuthHook {
60
62
 
61
63
  // ============ Internal functions ============
62
64
  function _quoteDispatch(
63
- bytes calldata,
65
+ bytes calldata metadata,
64
66
  bytes calldata
65
67
  ) internal pure override returns (uint256) {
66
- return 0; // gas subsidized by the L2
68
+ return metadata.msgValue(0); // gas subsidized by the L2
67
69
  }
68
70
 
69
71
  /// @inheritdoc AbstractMessageIdAuthHook
70
72
  function _sendMessageId(
71
73
  bytes calldata metadata,
72
- bytes memory payload
74
+ bytes calldata message
73
75
  ) internal override {
74
- require(
75
- metadata.msgValue(0) < 2 ** 255,
76
- "OPStackHook: msgValue must be less than 2 ** 255"
76
+ bytes memory payload = abi.encodeCall(
77
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
78
+ (message.id(), metadata.msgValue(0))
77
79
  );
80
+
78
81
  l1Messenger.sendMessage{value: metadata.msgValue(0)}(
79
82
  TypeCasts.bytes32ToAddress(ism),
80
83
  payload,
@@ -19,6 +19,7 @@ import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
19
19
  import {TypeCasts} from "../libs/TypeCasts.sol";
20
20
  import {Message} from "../libs/Message.sol";
21
21
  import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
22
+ import {AbstractMessageIdAuthorizedIsm} from "../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
22
23
 
23
24
  // ============ External Imports ============
24
25
  import {FxBaseRootTunnel} from "fx-portal/contracts/tunnel/FxBaseRootTunnel.sol";
@@ -31,6 +32,7 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
31
32
  */
32
33
  contract PolygonPosHook is AbstractMessageIdAuthHook, FxBaseRootTunnel {
33
34
  using StandardHookMetadata for bytes;
35
+ using Message for bytes;
34
36
 
35
37
  // ============ Constructor ============
36
38
 
@@ -56,22 +58,27 @@ contract PolygonPosHook is AbstractMessageIdAuthHook, FxBaseRootTunnel {
56
58
 
57
59
  // ============ Internal functions ============
58
60
  function _quoteDispatch(
59
- bytes calldata,
61
+ bytes calldata metadata,
60
62
  bytes calldata
61
63
  ) internal pure override returns (uint256) {
62
- return 0;
64
+ return metadata.msgValue(0);
63
65
  }
64
66
 
65
67
  /// @inheritdoc AbstractMessageIdAuthHook
66
68
  function _sendMessageId(
67
69
  bytes calldata metadata,
68
- bytes memory payload
70
+ bytes calldata message
69
71
  ) internal override {
70
72
  require(
71
73
  metadata.msgValue(0) == 0,
72
74
  "PolygonPosHook: does not support msgValue"
73
75
  );
74
76
  require(msg.value == 0, "PolygonPosHook: does not support msgValue");
77
+
78
+ bytes memory payload = abi.encodeCall(
79
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
80
+ (message.id(), metadata.msgValue(0))
81
+ );
75
82
  _sendMessageToChild(payload);
76
83
  }
77
84
 
@@ -32,6 +32,9 @@ contract ProtocolFee is AbstractPostDispatchHook, Ownable {
32
32
  using Address for address payable;
33
33
  using Message for bytes;
34
34
 
35
+ event ProtocolFeeSet(uint256 protocolFee);
36
+ event BeneficiarySet(address beneficiary);
37
+
35
38
  // ============ Constants ============
36
39
 
37
40
  /// @notice The maximum protocol fee that can be set.
@@ -126,6 +129,7 @@ contract ProtocolFee is AbstractPostDispatchHook, Ownable {
126
129
  "ProtocolFee: exceeds max protocol fee"
127
130
  );
128
131
  protocolFee = _protocolFee;
132
+ emit ProtocolFeeSet(_protocolFee);
129
133
  }
130
134
 
131
135
  /**
@@ -135,5 +139,6 @@ contract ProtocolFee is AbstractPostDispatchHook, Ownable {
135
139
  function _setBeneficiary(address _beneficiary) internal {
136
140
  require(_beneficiary != address(0), "ProtocolFee: invalid beneficiary");
137
141
  beneficiary = _beneficiary;
142
+ emit BeneficiarySet(_beneficiary);
138
143
  }
139
144
  }
@@ -15,9 +15,12 @@ pragma solidity >=0.8.0;
15
15
 
16
16
  // ============ Internal Imports ============
17
17
  import {TypeCasts} from "../../libs/TypeCasts.sol";
18
+ import {Message} from "../../libs/Message.sol";
19
+ import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";
18
20
  import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
19
21
  import {IMessageDispatcher} from "../../interfaces/hooks/IMessageDispatcher.sol";
20
22
  import {AbstractMessageIdAuthHook} from "../libs/AbstractMessageIdAuthHook.sol";
23
+ import {AbstractMessageIdAuthorizedIsm} from "../../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
21
24
 
22
25
  // ============ External Imports ============
23
26
  import {Address} from "@openzeppelin/contracts/utils/Address.sol";
@@ -28,6 +31,9 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
28
31
  * any of the 5164 adapters.
29
32
  */
30
33
  contract ERC5164Hook is AbstractMessageIdAuthHook {
34
+ using StandardHookMetadata for bytes;
35
+ using Message for bytes;
36
+
31
37
  IMessageDispatcher public immutable dispatcher;
32
38
 
33
39
  constructor(
@@ -53,11 +59,15 @@ contract ERC5164Hook is AbstractMessageIdAuthHook {
53
59
  }
54
60
 
55
61
  function _sendMessageId(
56
- bytes calldata,
57
- /* metadata */
58
- bytes memory payload
62
+ bytes calldata metadata,
63
+ bytes calldata message
59
64
  ) internal override {
60
65
  require(msg.value == 0, "ERC5164Hook: no value allowed");
66
+
67
+ bytes memory payload = abi.encodeCall(
68
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
69
+ (message.id(), metadata.msgValue(0))
70
+ );
61
71
  dispatcher.dispatchMessage(
62
72
  destinationDomain,
63
73
  TypeCasts.bytes32ToAddress(ism),
@@ -18,6 +18,7 @@ import {TypeCasts} from "../../libs/TypeCasts.sol";
18
18
  import {Indexed} from "../../libs/Indexed.sol";
19
19
  import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
20
20
  import {AbstractMessageIdAuthHook} from "../libs/AbstractMessageIdAuthHook.sol";
21
+ import {AbstractMessageIdAuthorizedIsm} from "../../isms/hook/AbstractMessageIdAuthorizedIsm.sol";
21
22
  import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";
22
23
 
23
24
  struct LayerZeroV2Metadata {
@@ -55,8 +56,13 @@ contract LayerZeroV2Hook is AbstractMessageIdAuthHook {
55
56
  /// @inheritdoc AbstractMessageIdAuthHook
56
57
  function _sendMessageId(
57
58
  bytes calldata metadata,
58
- bytes memory payload
59
+ bytes calldata message
59
60
  ) internal override {
61
+ bytes memory payload = abi.encodeCall(
62
+ AbstractMessageIdAuthorizedIsm.preVerifyMessage,
63
+ (message.id(), metadata.msgValue(0))
64
+ );
65
+
60
66
  bytes calldata lZMetadata = metadata.getCustomMetadata();
61
67
  (
62
68
  uint32 eid,
@@ -72,7 +78,9 @@ contract LayerZeroV2Hook is AbstractMessageIdAuthHook {
72
78
  options,
73
79
  false // payInLzToken
74
80
  );
75
- lZEndpoint.send{value: msg.value}(msgParams, refundAddress);
81
+
82
+ uint256 quote = _quoteDispatch(metadata, message);
83
+ lZEndpoint.send{value: quote}(msgParams, refundAddress);
76
84
  }
77
85
 
78
86
  /// @dev payInZRO is hardcoded to false because zro tokens should not be directly accepted
@@ -96,7 +104,7 @@ contract LayerZeroV2Hook is AbstractMessageIdAuthHook {
96
104
  message.senderAddress()
97
105
  );
98
106
 
99
- return msgFee.nativeFee;
107
+ return metadata.msgValue(0) + msgFee.nativeFee;
100
108
  }
101
109
 
102
110
  /**
@@ -22,6 +22,9 @@ import {Message} from "../../libs/Message.sol";
22
22
  import {StandardHookMetadata} from "./StandardHookMetadata.sol";
23
23
  import {MailboxClient} from "../../client/MailboxClient.sol";
24
24
 
25
+ // ============ External Imports ============
26
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
27
+
25
28
  /**
26
29
  * @title AbstractMessageIdAuthHook
27
30
  * @notice Message hook to inform an Abstract Message ID ISM of messages published through
@@ -31,8 +34,10 @@ abstract contract AbstractMessageIdAuthHook is
31
34
  AbstractPostDispatchHook,
32
35
  MailboxClient
33
36
  {
37
+ using Address for address payable;
34
38
  using StandardHookMetadata for bytes;
35
39
  using Message for bytes;
40
+ using TypeCasts for bytes32;
36
41
 
37
42
  // ============ Constants ============
38
43
 
@@ -68,7 +73,7 @@ abstract contract AbstractMessageIdAuthHook is
68
73
  function _postDispatch(
69
74
  bytes calldata metadata,
70
75
  bytes calldata message
71
- ) internal override {
76
+ ) internal virtual override {
72
77
  bytes32 id = message.id();
73
78
  require(
74
79
  _isLatestDispatched(id),
@@ -82,20 +87,29 @@ abstract contract AbstractMessageIdAuthHook is
82
87
  metadata.msgValue(0) < 2 ** 255,
83
88
  "AbstractMessageIdAuthHook: msgValue must be less than 2 ** 255"
84
89
  );
85
- bytes memory payload = abi.encodeCall(
86
- AbstractMessageIdAuthorizedIsm.verifyMessageId,
87
- id
88
- );
89
- _sendMessageId(metadata, payload);
90
+
91
+ _sendMessageId(metadata, message);
92
+
93
+ uint256 _overpayment = msg.value - _quoteDispatch(metadata, message);
94
+ if (_overpayment > 0) {
95
+ address _refundAddress = metadata.refundAddress(
96
+ message.sender().bytes32ToAddress()
97
+ );
98
+ require(
99
+ _refundAddress != address(0),
100
+ "AbstractPostDispatchHook: no refund address"
101
+ );
102
+ payable(_refundAddress).sendValue(_overpayment);
103
+ }
90
104
  }
91
105
 
92
106
  /**
93
107
  * @notice Send a message to the ISM.
94
108
  * @param metadata The metadata for the hook caller
95
- * @param payload The payload for call to the ISM
109
+ * @param message The message to send to the ISM
96
110
  */
97
111
  function _sendMessageId(
98
112
  bytes calldata metadata,
99
- bytes memory payload
113
+ bytes calldata message
100
114
  ) internal virtual;
101
115
  }
@@ -53,7 +53,7 @@ abstract contract AbstractMessageIdAuthorizedIsm is
53
53
  // ============ Events ============
54
54
 
55
55
  /// @notice Emitted when a message is received from the external bridge
56
- event ReceivedMessage(bytes32 indexed messageId);
56
+ event ReceivedMessage(bytes32 indexed messageId, uint256 msgValue);
57
57
 
58
58
  // ============ Initializer ============
59
59
 
@@ -101,7 +101,7 @@ abstract contract AbstractMessageIdAuthorizedIsm is
101
101
  }
102
102
 
103
103
  /**
104
- * @notice Check if a message is verified through verifyMessageId first.
104
+ * @notice Check if a message is verified through preVerifyMessage first.
105
105
  * @param message Message to check.
106
106
  */
107
107
  function isVerified(bytes calldata message) public view returns (bool) {
@@ -115,24 +115,31 @@ abstract contract AbstractMessageIdAuthorizedIsm is
115
115
  * @dev Only callable by the authorized hook.
116
116
  * @param messageId Hyperlane Id of the message.
117
117
  */
118
- function verifyMessageId(bytes32 messageId) public payable virtual {
118
+ function preVerifyMessage(
119
+ bytes32 messageId,
120
+ uint256 msgValue
121
+ ) public payable virtual {
119
122
  require(
120
123
  _isAuthorized(),
121
124
  "AbstractMessageIdAuthorizedIsm: sender is not the hook"
122
125
  );
123
126
  require(
124
- msg.value < 2 ** VERIFIED_MASK_INDEX,
125
- "AbstractMessageIdAuthorizedIsm: msg.value must be less than 2^255"
127
+ msg.value < 2 ** VERIFIED_MASK_INDEX && msg.value == msgValue,
128
+ "AbstractMessageIdAuthorizedIsm: invalid msg.value"
129
+ );
130
+ require(
131
+ verifiedMessages[messageId] == 0,
132
+ "AbstractMessageIdAuthorizedIsm: message already verified"
126
133
  );
127
134
 
128
135
  verifiedMessages[messageId] = msg.value.setBit(VERIFIED_MASK_INDEX);
129
- emit ReceivedMessage(messageId);
136
+ emit ReceivedMessage(messageId, msgValue);
130
137
  }
131
138
 
132
139
  // ============ Internal Functions ============
133
140
 
134
141
  /**
135
- * @notice Check if sender is authorized to message `verifyMessageId`.
142
+ * @notice Check if sender is authorized to message `preVerifyMessage`.
136
143
  */
137
144
  function _isAuthorized() internal view virtual returns (bool);
138
145
  }
@@ -44,6 +44,10 @@ contract ArbL2ToL1Ism is
44
44
  // arbitrum nitro contract on L1 to forward verification
45
45
  IOutbox public arbOutbox;
46
46
 
47
+ uint256 private constant DATA_LENGTH = 68;
48
+
49
+ uint256 private constant MESSAGE_ID_END = 36;
50
+
47
51
  // ============ Constructor ============
48
52
 
49
53
  constructor(address _bridge) CrossChainEnabledArbitrumL1(_bridge) {
@@ -110,13 +114,16 @@ contract ArbL2ToL1Ism is
110
114
  l2Sender == TypeCasts.bytes32ToAddress(authorizedHook),
111
115
  "ArbL2ToL1Ism: l2Sender != authorizedHook"
112
116
  );
113
- // this data is an abi encoded call of verifyMessageId(bytes32 messageId)
114
- require(data.length == 36, "ArbL2ToL1Ism: invalid data length");
117
+ // this data is an abi encoded call of preVerifyMessage(bytes32 messageId)
118
+ require(
119
+ data.length == DATA_LENGTH,
120
+ "ArbL2ToL1Ism: invalid data length"
121
+ );
115
122
  bytes32 messageId = message.id();
116
123
  bytes32 convertedBytes;
117
124
  assembly {
118
125
  // data = 0x[4 bytes function signature][32 bytes messageId]
119
- convertedBytes := mload(add(data, 36))
126
+ convertedBytes := mload(add(data, MESSAGE_ID_END))
120
127
  }
121
128
  // check if the parsed message id matches the message id of the message
122
129
  require(
@@ -44,7 +44,7 @@ contract ERC5164Ism is AbstractMessageIdAuthorizedIsm {
44
44
  }
45
45
 
46
46
  /**
47
- * @notice Check if sender is authorized to message `verifyMessageId`.
47
+ * @notice Check if sender is authorized to message `preVerifyMessage`.
48
48
  */
49
49
  function _isAuthorized() internal view override returns (bool) {
50
50
  return msg.sender == executor;
@@ -49,7 +49,7 @@ contract OPStackIsm is
49
49
  // ============ Internal function ============
50
50
 
51
51
  /**
52
- * @notice Check if sender is authorized to message `verifyMessageId`.
52
+ * @notice Check if sender is authorized to message `preVerifyMessage`.
53
53
  */
54
54
  function _isAuthorized() internal view override returns (bool) {
55
55
  return
@@ -49,7 +49,7 @@ contract PolygonPosIsm is
49
49
  // ============ Internal function ============
50
50
 
51
51
  /**
52
- * @notice Check if sender is authorized to message `verifyMessageId`.
52
+ * @notice Check if sender is authorized to message `preVerifyMessage`.
53
53
  */
54
54
  function _isAuthorized() internal view override returns (bool) {
55
55
  return