@hyperlane-xyz/core 4.0.0-beta2 → 4.1.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 (339) hide show
  1. package/contracts/avs/ECDSAServiceManagerBase.sol +3 -2
  2. package/contracts/hooks/ArbL2ToL1Hook.sol +82 -0
  3. package/contracts/hooks/libs/AbstractMessageIdAuthHook.sol +1 -1
  4. package/contracts/hooks/warp-route/RateLimitedHook.sol +2 -1
  5. package/contracts/interfaces/IInterchainSecurityModule.sol +2 -1
  6. package/contracts/interfaces/avs/vendored/IDelegationManager.sol +5 -0
  7. package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
  8. package/contracts/interfaces/isms/IMultisigIsm.sol +1 -0
  9. package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +35 -15
  10. package/contracts/isms/hook/ArbL2ToL1Ism.sol +147 -0
  11. package/contracts/isms/multisig/AbstractMultisigIsm.sol +4 -1
  12. package/contracts/test/TestRecipient.sol +2 -0
  13. package/dist/@arbitrum/index.d.ts +3 -0
  14. package/dist/@arbitrum/index.d.ts.map +1 -0
  15. package/dist/@arbitrum/index.js +2 -0
  16. package/dist/@arbitrum/index.js.map +1 -0
  17. package/dist/@arbitrum/nitro-contracts/index.d.ts +3 -0
  18. package/dist/@arbitrum/nitro-contracts/index.d.ts.map +1 -0
  19. package/dist/@arbitrum/nitro-contracts/index.js +2 -0
  20. package/dist/@arbitrum/nitro-contracts/index.js.map +1 -0
  21. package/dist/@arbitrum/nitro-contracts/src/bridge/IBridge.d.ts +586 -0
  22. package/dist/@arbitrum/nitro-contracts/src/bridge/IBridge.d.ts.map +1 -0
  23. package/dist/@arbitrum/nitro-contracts/src/bridge/IBridge.js +2 -0
  24. package/dist/@arbitrum/nitro-contracts/src/bridge/IBridge.js.map +1 -0
  25. package/dist/@arbitrum/nitro-contracts/src/bridge/IOutbox.d.ts +504 -0
  26. package/dist/@arbitrum/nitro-contracts/src/bridge/IOutbox.d.ts.map +1 -0
  27. package/dist/@arbitrum/nitro-contracts/src/bridge/IOutbox.js +2 -0
  28. package/dist/@arbitrum/nitro-contracts/src/bridge/IOutbox.js.map +1 -0
  29. package/dist/@arbitrum/nitro-contracts/src/bridge/IOwnable.d.ts +50 -0
  30. package/dist/@arbitrum/nitro-contracts/src/bridge/IOwnable.d.ts.map +1 -0
  31. package/dist/@arbitrum/nitro-contracts/src/bridge/IOwnable.js +2 -0
  32. package/dist/@arbitrum/nitro-contracts/src/bridge/IOwnable.js.map +1 -0
  33. package/dist/@arbitrum/nitro-contracts/src/bridge/index.d.ts +4 -0
  34. package/dist/@arbitrum/nitro-contracts/src/bridge/index.d.ts.map +1 -0
  35. package/dist/@arbitrum/nitro-contracts/src/bridge/index.js +2 -0
  36. package/dist/@arbitrum/nitro-contracts/src/bridge/index.js.map +1 -0
  37. package/dist/@arbitrum/nitro-contracts/src/index.d.ts +5 -0
  38. package/dist/@arbitrum/nitro-contracts/src/index.d.ts.map +1 -0
  39. package/dist/@arbitrum/nitro-contracts/src/index.js +2 -0
  40. package/dist/@arbitrum/nitro-contracts/src/index.js.map +1 -0
  41. package/dist/@arbitrum/nitro-contracts/src/precompiles/ArbSys.d.ts +371 -0
  42. package/dist/@arbitrum/nitro-contracts/src/precompiles/ArbSys.d.ts.map +1 -0
  43. package/dist/@arbitrum/nitro-contracts/src/precompiles/ArbSys.js +2 -0
  44. package/dist/@arbitrum/nitro-contracts/src/precompiles/ArbSys.js.map +1 -0
  45. package/dist/@arbitrum/nitro-contracts/src/precompiles/index.d.ts +2 -0
  46. package/dist/@arbitrum/nitro-contracts/src/precompiles/index.d.ts.map +1 -0
  47. package/dist/@arbitrum/nitro-contracts/src/precompiles/index.js +2 -0
  48. package/dist/@arbitrum/nitro-contracts/src/precompiles/index.js.map +1 -0
  49. package/dist/@openzeppelin/contracts/vendor/arbitrum/IBridge.d.ts +607 -0
  50. package/dist/@openzeppelin/contracts/vendor/arbitrum/IBridge.d.ts.map +1 -0
  51. package/dist/@openzeppelin/contracts/vendor/arbitrum/IBridge.js +2 -0
  52. package/dist/@openzeppelin/contracts/vendor/arbitrum/IBridge.js.map +1 -0
  53. package/dist/@openzeppelin/contracts/vendor/arbitrum/IOutbox.d.ts +411 -0
  54. package/dist/@openzeppelin/contracts/vendor/arbitrum/IOutbox.d.ts.map +1 -0
  55. package/dist/@openzeppelin/contracts/vendor/arbitrum/IOutbox.js +2 -0
  56. package/dist/@openzeppelin/contracts/vendor/arbitrum/IOutbox.js.map +1 -0
  57. package/dist/@openzeppelin/contracts/vendor/arbitrum/index.d.ts +3 -0
  58. package/dist/@openzeppelin/contracts/vendor/arbitrum/index.d.ts.map +1 -0
  59. package/dist/@openzeppelin/contracts/vendor/arbitrum/index.js +2 -0
  60. package/dist/@openzeppelin/contracts/vendor/arbitrum/index.js.map +1 -0
  61. package/dist/@openzeppelin/contracts/vendor/index.d.ts +2 -0
  62. package/dist/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  63. package/dist/buildArtifact.js +1 -1
  64. package/dist/buildArtifact.json +1 -1
  65. package/dist/contracts/hooks/ArbL2ToL1Hook.d.ts +396 -0
  66. package/dist/contracts/hooks/ArbL2ToL1Hook.d.ts.map +1 -0
  67. package/dist/contracts/hooks/ArbL2ToL1Hook.js +2 -0
  68. package/dist/contracts/hooks/ArbL2ToL1Hook.js.map +1 -0
  69. package/dist/contracts/hooks/index.d.ts +1 -0
  70. package/dist/contracts/hooks/index.d.ts.map +1 -1
  71. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts +19 -3
  72. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts.map +1 -1
  73. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts +47 -1
  74. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts.map +1 -1
  75. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts +273 -0
  76. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts.map +1 -0
  77. package/dist/contracts/isms/hook/ArbL2ToL1Ism.js +2 -0
  78. package/dist/contracts/isms/hook/ArbL2ToL1Ism.js.map +1 -0
  79. package/dist/contracts/isms/hook/ERC5164Ism.d.ts +47 -1
  80. package/dist/contracts/isms/hook/ERC5164Ism.d.ts.map +1 -1
  81. package/dist/contracts/isms/hook/OPStackIsm.d.ts +47 -1
  82. package/dist/contracts/isms/hook/OPStackIsm.d.ts.map +1 -1
  83. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +47 -1
  84. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -1
  85. package/dist/contracts/isms/hook/index.d.ts +1 -0
  86. package/dist/contracts/isms/hook/index.d.ts.map +1 -1
  87. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +47 -1
  88. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -1
  89. package/dist/contracts/test/avs/TestDelegationManager.d.ts +19 -3
  90. package/dist/contracts/test/avs/TestDelegationManager.d.ts.map +1 -1
  91. package/dist/factories/@arbitrum/index.d.ts +2 -0
  92. package/dist/factories/@arbitrum/index.d.ts.map +1 -0
  93. package/dist/factories/@arbitrum/index.js +5 -0
  94. package/dist/factories/@arbitrum/index.js.map +1 -0
  95. package/dist/factories/@arbitrum/nitro-contracts/index.d.ts +2 -0
  96. package/dist/factories/@arbitrum/nitro-contracts/index.d.ts.map +1 -0
  97. package/dist/factories/@arbitrum/nitro-contracts/index.js +5 -0
  98. package/dist/factories/@arbitrum/nitro-contracts/index.js.map +1 -0
  99. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IBridge__factory.d.ts +403 -0
  100. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IBridge__factory.d.ts.map +1 -0
  101. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IBridge__factory.js +527 -0
  102. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IBridge__factory.js.map +1 -0
  103. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOutbox__factory.d.ts +347 -0
  104. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOutbox__factory.d.ts.map +1 -0
  105. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOutbox__factory.js +451 -0
  106. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOutbox__factory.js.map +1 -0
  107. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOwnable__factory.d.ts +19 -0
  108. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOwnable__factory.d.ts.map +1 -0
  109. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOwnable__factory.js +29 -0
  110. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/IOwnable__factory.js.map +1 -0
  111. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/index.d.ts +4 -0
  112. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/index.d.ts.map +1 -0
  113. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/index.js +7 -0
  114. package/dist/factories/@arbitrum/nitro-contracts/src/bridge/index.js.map +1 -0
  115. package/dist/factories/@arbitrum/nitro-contracts/src/index.d.ts +3 -0
  116. package/dist/factories/@arbitrum/nitro-contracts/src/index.d.ts.map +1 -0
  117. package/dist/factories/@arbitrum/nitro-contracts/src/index.js +6 -0
  118. package/dist/factories/@arbitrum/nitro-contracts/src/index.js.map +1 -0
  119. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/ArbSys__factory.d.ts +298 -0
  120. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/ArbSys__factory.d.ts.map +1 -0
  121. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/ArbSys__factory.js +385 -0
  122. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/ArbSys__factory.js.map +1 -0
  123. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/index.d.ts +2 -0
  124. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/index.d.ts.map +1 -0
  125. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/index.js +5 -0
  126. package/dist/factories/@arbitrum/nitro-contracts/src/precompiles/index.js.map +1 -0
  127. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IBridge__factory.d.ts +415 -0
  128. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IBridge__factory.d.ts.map +1 -0
  129. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IBridge__factory.js +543 -0
  130. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IBridge__factory.js.map +1 -0
  131. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IOutbox__factory.d.ts +325 -0
  132. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IOutbox__factory.d.ts.map +1 -0
  133. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IOutbox__factory.js +424 -0
  134. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/IOutbox__factory.js.map +1 -0
  135. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/index.d.ts +3 -0
  136. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/index.d.ts.map +1 -0
  137. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/index.js +6 -0
  138. package/dist/factories/@openzeppelin/contracts/vendor/arbitrum/index.js.map +1 -0
  139. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts +1 -0
  140. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  141. package/dist/factories/@openzeppelin/contracts/vendor/index.js +1 -0
  142. package/dist/factories/@openzeppelin/contracts/vendor/index.js.map +1 -1
  143. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  144. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  145. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
  146. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
  147. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
  148. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts.map +1 -1
  149. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
  150. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js.map +1 -1
  151. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +252 -0
  152. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts.map +1 -0
  153. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +339 -0
  154. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js.map +1 -0
  155. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
  156. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
  157. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  158. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  159. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  160. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  161. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +1 -1
  162. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
  163. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
  164. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
  165. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  166. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  167. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  168. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  169. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  170. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  171. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  172. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  173. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  174. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  175. package/dist/factories/contracts/hooks/index.js +1 -0
  176. package/dist/factories/contracts/hooks/index.js.map +1 -1
  177. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
  178. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
  179. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
  180. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
  181. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
  182. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
  183. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
  184. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
  185. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
  186. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
  187. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
  188. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
  189. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts +15 -0
  190. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts.map +1 -1
  191. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js +19 -0
  192. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js.map +1 -1
  193. package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
  194. package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
  195. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
  196. package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
  197. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
  198. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
  199. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  200. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
  201. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  202. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
  203. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts +24 -0
  204. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts.map +1 -1
  205. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js +32 -0
  206. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js.map +1 -1
  207. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +173 -0
  208. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts.map +1 -0
  209. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +239 -0
  210. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js.map +1 -0
  211. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +25 -1
  212. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts.map +1 -1
  213. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +33 -1
  214. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js.map +1 -1
  215. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +25 -1
  216. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts.map +1 -1
  217. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +33 -1
  218. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js.map +1 -1
  219. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +25 -1
  220. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -1
  221. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +33 -1
  222. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -1
  223. package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
  224. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
  225. package/dist/factories/contracts/isms/hook/index.js +1 -0
  226. package/dist/factories/contracts/isms/hook/index.js.map +1 -1
  227. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +25 -1
  228. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -1
  229. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +33 -1
  230. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -1
  231. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  232. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
  233. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  234. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
  235. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  236. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
  237. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  238. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
  239. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
  240. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
  241. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
  242. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
  243. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  244. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  245. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
  246. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
  247. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  248. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  249. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
  250. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
  251. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  252. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  253. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  254. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  255. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  256. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  257. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  258. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  259. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  260. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  261. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  262. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  263. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  264. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  265. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +4 -1
  266. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts.map +1 -1
  267. package/dist/factories/contracts/test/LightTestRecipient__factory.js +5 -1
  268. package/dist/factories/contracts/test/LightTestRecipient__factory.js.map +1 -1
  269. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  270. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  271. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  272. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  273. package/dist/factories/contracts/test/TestIsm__factory.d.ts +1 -1
  274. package/dist/factories/contracts/test/TestIsm__factory.js +1 -1
  275. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  276. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  277. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
  278. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
  279. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
  280. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
  281. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  282. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  283. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  284. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  285. package/dist/factories/contracts/test/TestRecipient__factory.d.ts +4 -1
  286. package/dist/factories/contracts/test/TestRecipient__factory.d.ts.map +1 -1
  287. package/dist/factories/contracts/test/TestRecipient__factory.js +5 -1
  288. package/dist/factories/contracts/test/TestRecipient__factory.js.map +1 -1
  289. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
  290. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
  291. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  292. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  293. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  294. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  295. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts +16 -1
  296. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts.map +1 -1
  297. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js +20 -1
  298. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js.map +1 -1
  299. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
  300. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts.map +1 -1
  301. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
  302. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js.map +1 -1
  303. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
  304. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
  305. package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
  306. package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
  307. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
  308. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
  309. package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
  310. package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
  311. package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
  312. package/dist/factories/contracts/token/HypNative__factory.js +1 -1
  313. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
  314. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
  315. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
  316. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
  317. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts +1 -1
  318. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js +1 -1
  319. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
  320. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
  321. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
  322. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
  323. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
  324. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
  325. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
  326. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
  327. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
  328. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
  329. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
  330. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
  331. package/dist/factories/index.d.ts +1 -0
  332. package/dist/factories/index.d.ts.map +1 -1
  333. package/dist/factories/index.js +1 -0
  334. package/dist/factories/index.js.map +1 -1
  335. package/dist/index.d.ts +14 -0
  336. package/dist/index.d.ts.map +1 -1
  337. package/dist/index.js +6 -0
  338. package/dist/index.js.map +1 -1
  339. package/package.json +3 -2
@@ -248,7 +248,6 @@ abstract contract ECDSAServiceManagerBase is
248
248
  uint256[] memory shares = IDelegationManager(delegationManager)
249
249
  .getOperatorShares(_operator, strategies);
250
250
 
251
- address[] memory activeStrategies = new address[](count);
252
251
  uint256 activeCount;
253
252
  for (uint256 i; i < count; i++) {
254
253
  if (shares[i] > 0) {
@@ -258,9 +257,11 @@ abstract contract ECDSAServiceManagerBase is
258
257
 
259
258
  // Resize the array to fit only the active strategies
260
259
  address[] memory restakedStrategies = new address[](activeCount);
260
+ uint256 index;
261
261
  for (uint256 j = 0; j < count; j++) {
262
262
  if (shares[j] > 0) {
263
- restakedStrategies[j] = activeStrategies[j];
263
+ restakedStrategies[index] = address(strategies[j]);
264
+ index++;
264
265
  }
265
266
  }
266
267
 
@@ -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} from "./libs/AbstractMessageIdAuthHook.sol";
18
+ import {AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
19
+ import {Mailbox} from "../Mailbox.sol";
20
+ import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
21
+ import {Message} from "../libs/Message.sol";
22
+ import {TypeCasts} from "../libs/TypeCasts.sol";
23
+ import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
24
+ import {MailboxClient} from "../client/MailboxClient.sol";
25
+
26
+ // ============ External Imports ============
27
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
28
+ import {ArbSys} from "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol";
29
+
30
+ /**
31
+ * @title ArbL2ToL1Hook
32
+ * @notice Message hook to inform the ArbL2ToL1iSM of messages published through
33
+ * the native Arbitrum bridge.
34
+ * @notice This works only for L2 -> L1 messages and has the 7 day delay as specified by the ArbSys contract.
35
+ */
36
+ contract ArbL2ToL1Hook is AbstractMessageIdAuthHook {
37
+ using StandardHookMetadata for bytes;
38
+
39
+ // ============ Constants ============
40
+
41
+ // precompile contract on L2 for sending messages to L1
42
+ ArbSys public immutable arbSys;
43
+ // Immutable quote amount
44
+ uint256 public immutable GAS_QUOTE;
45
+
46
+ // ============ Constructor ============
47
+
48
+ constructor(
49
+ address _mailbox,
50
+ uint32 _destinationDomain,
51
+ bytes32 _ism,
52
+ address _arbSys,
53
+ uint256 _gasQuote
54
+ ) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
55
+ arbSys = ArbSys(_arbSys);
56
+ GAS_QUOTE = _gasQuote;
57
+ }
58
+
59
+ function hookType() external pure override returns (uint8) {
60
+ return uint8(IPostDispatchHook.Types.ARB_L2_TO_L1);
61
+ }
62
+
63
+ function _quoteDispatch(
64
+ bytes calldata,
65
+ bytes calldata
66
+ ) internal view override returns (uint256) {
67
+ return GAS_QUOTE;
68
+ }
69
+
70
+ // ============ Internal functions ============
71
+
72
+ /// @inheritdoc AbstractMessageIdAuthHook
73
+ function _sendMessageId(
74
+ bytes calldata metadata,
75
+ bytes memory payload
76
+ ) internal override {
77
+ arbSys.sendTxToL1{value: metadata.msgValue(0)}(
78
+ TypeCasts.bytes32ToAddress(ism),
79
+ payload
80
+ );
81
+ }
82
+ }
@@ -58,7 +58,7 @@ abstract contract AbstractMessageIdAuthHook is
58
58
  }
59
59
 
60
60
  /// @inheritdoc IPostDispatchHook
61
- function hookType() external pure returns (uint8) {
61
+ function hookType() external pure virtual returns (uint8) {
62
62
  return uint8(IPostDispatchHook.Types.ID_AUTH_ISM);
63
63
  }
64
64
 
@@ -1,5 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity >=0.8.0;
3
+
3
4
  import {MailboxClient} from "contracts/client/MailboxClient.sol";
4
5
  import {IPostDispatchHook} from "contracts/interfaces/hooks/IPostDispatchHook.sol";
5
6
  import {Message} from "contracts/libs/Message.sol";
@@ -26,7 +27,7 @@ contract RateLimitedHook is IPostDispatchHook, MailboxClient, RateLimited {
26
27
 
27
28
  /// @inheritdoc IPostDispatchHook
28
29
  function hookType() external pure returns (uint8) {
29
- return uint8(IPostDispatchHook.Types.Rate_Limited_Hook);
30
+ return uint8(IPostDispatchHook.Types.RATE_LIMITED);
30
31
  }
31
32
 
32
33
  /// @inheritdoc IPostDispatchHook
@@ -10,7 +10,8 @@ interface IInterchainSecurityModule {
10
10
  MERKLE_ROOT_MULTISIG,
11
11
  MESSAGE_ID_MULTISIG,
12
12
  NULL, // used with relayer carrying no metadata
13
- CCIP_READ
13
+ CCIP_READ,
14
+ ARB_L2_TO_L1
14
15
  }
15
16
 
16
17
  /**
@@ -20,6 +20,11 @@ interface IDelegationManager {
20
20
  uint32 stakerOptOutWindowBlocks;
21
21
  }
22
22
 
23
+ event OperatorMetadataURIUpdated(
24
+ address indexed operator,
25
+ string metadataURI
26
+ );
27
+
23
28
  function registerAsOperator(
24
29
  OperatorDetails calldata registeringOperatorDetails,
25
30
  string calldata metadataURI
@@ -25,7 +25,8 @@ interface IPostDispatchHook {
25
25
  PAUSABLE,
26
26
  PROTOCOL_FEE,
27
27
  LAYER_ZERO_V1,
28
- Rate_Limited_Hook
28
+ RATE_LIMITED,
29
+ ARB_L2_TO_L1
29
30
  }
30
31
 
31
32
  /**
@@ -8,6 +8,7 @@ interface IMultisigIsm is IInterchainSecurityModule {
8
8
  * @notice Returns the set of validators responsible for verifying _message
9
9
  * and the number of signatures required
10
10
  * @dev Can change based on the content of _message
11
+ * @dev Signatures provided to `verify` must be consistent with validator ordering
11
12
  * @param _message Hyperlane formatted interchain message
12
13
  * @return validators The array of validator addresses
13
14
  * @return threshold The number of validator signatures needed
@@ -72,26 +72,41 @@ abstract contract AbstractMessageIdAuthorizedIsm is
72
72
  */
73
73
  function verify(
74
74
  bytes calldata,
75
- /*_metadata*/
75
+ /*metadata*/
76
76
  bytes calldata message
77
- ) external returns (bool) {
78
- bytes32 messageId = message.id();
77
+ ) external virtual returns (bool) {
78
+ bool verified = isVerified(message);
79
+ if (verified) {
80
+ releaseValueToRecipient(message);
81
+ }
82
+ return verified;
83
+ }
79
84
 
80
- // check for the first bit (used for verification)
81
- bool verified = verifiedMessages[messageId].isBitSet(
85
+ // ============ Public Functions ============
86
+
87
+ /**
88
+ * @notice Release the value to the recipient if the message is verified.
89
+ * @param message Message to release value for.
90
+ */
91
+ function releaseValueToRecipient(bytes calldata message) public {
92
+ bytes32 messageId = message.id();
93
+ uint256 _msgValue = verifiedMessages[messageId].clearBit(
82
94
  VERIFIED_MASK_INDEX
83
95
  );
84
- // rest 255 bits contains the msg.value passed from the hook
85
- if (verified) {
86
- uint256 _msgValue = verifiedMessages[messageId].clearBit(
87
- VERIFIED_MASK_INDEX
88
- );
89
- if (_msgValue > 0) {
90
- verifiedMessages[messageId] -= _msgValue;
91
- payable(message.recipientAddress()).sendValue(_msgValue);
92
- }
96
+ if (_msgValue > 0) {
97
+ verifiedMessages[messageId] -= _msgValue;
98
+ payable(message.recipientAddress()).sendValue(_msgValue);
93
99
  }
94
- return verified;
100
+ }
101
+
102
+ /**
103
+ * @notice Check if a message is verified through verifyMessageId first.
104
+ * @param message Message to check.
105
+ */
106
+ function isVerified(bytes calldata message) public view returns (bool) {
107
+ bytes32 messageId = message.id();
108
+ // check for the first bit (used for verification)
109
+ return verifiedMessages[messageId].isBitSet(VERIFIED_MASK_INDEX);
95
110
  }
96
111
 
97
112
  /**
@@ -113,5 +128,10 @@ abstract contract AbstractMessageIdAuthorizedIsm is
113
128
  emit ReceivedMessage(messageId);
114
129
  }
115
130
 
131
+ // ============ Internal Functions ============
132
+
133
+ /**
134
+ * @notice Check if sender is authorized to message `verifyMessageId`.
135
+ */
116
136
  function _isAuthorized() internal view virtual returns (bool);
117
137
  }
@@ -0,0 +1,147 @@
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
+
18
+ import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
19
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
20
+ import {Message} from "../../libs/Message.sol";
21
+ import {AbstractMessageIdAuthorizedIsm} from "./AbstractMessageIdAuthorizedIsm.sol";
22
+
23
+ // ============ External Imports ============
24
+
25
+ import {IOutbox} from "@arbitrum/nitro-contracts/src/bridge/IOutbox.sol";
26
+ import {CrossChainEnabledArbitrumL1} from "@openzeppelin/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol";
27
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
28
+
29
+ /**
30
+ * @title ArbL2ToL1Ism
31
+ * @notice Uses the native Arbitrum bridge to verify interchain messages from L2 to L1.
32
+ */
33
+ contract ArbL2ToL1Ism is
34
+ CrossChainEnabledArbitrumL1,
35
+ AbstractMessageIdAuthorizedIsm
36
+ {
37
+ using Message for bytes;
38
+ // ============ Constants ============
39
+
40
+ // module type for the ISM
41
+ uint8 public constant moduleType =
42
+ uint8(IInterchainSecurityModule.Types.ARB_L2_TO_L1);
43
+ // arbitrum nitro contract on L1 to forward verification
44
+ IOutbox public arbOutbox;
45
+
46
+ // ============ Constructor ============
47
+
48
+ constructor(
49
+ address _bridge,
50
+ address _outbox
51
+ ) CrossChainEnabledArbitrumL1(_bridge) {
52
+ require(
53
+ Address.isContract(_bridge),
54
+ "ArbL2ToL1Ism: invalid Arbitrum Bridge"
55
+ );
56
+ arbOutbox = IOutbox(_outbox);
57
+ }
58
+
59
+ // ============ External Functions ============
60
+
61
+ /// @inheritdoc IInterchainSecurityModule
62
+ function verify(
63
+ bytes calldata metadata,
64
+ bytes calldata message
65
+ ) external override returns (bool) {
66
+ bool verified = isVerified(message);
67
+ if (verified) {
68
+ releaseValueToRecipient(message);
69
+ }
70
+ return verified || _verifyWithOutboxCall(metadata, message);
71
+ }
72
+
73
+ // ============ Internal function ============
74
+
75
+ /**
76
+ * @notice Verify message directly using the arbOutbox.executeTransaction function.
77
+ * @dev This is a fallback in case the message is not verified by the stateful verify function first.
78
+ * @dev This function doesn't support msg.value as the ism.verify call doesn't support it either.
79
+ */
80
+ function _verifyWithOutboxCall(
81
+ bytes calldata metadata,
82
+ bytes calldata message
83
+ ) internal returns (bool) {
84
+ (
85
+ bytes32[] memory proof,
86
+ uint256 index,
87
+ address l2Sender,
88
+ address to,
89
+ uint256 l2Block,
90
+ uint256 l1Block,
91
+ uint256 l2Timestamp,
92
+ bytes memory data
93
+ ) = abi.decode(
94
+ metadata,
95
+ (
96
+ bytes32[],
97
+ uint256,
98
+ address,
99
+ address,
100
+ uint256,
101
+ uint256,
102
+ uint256,
103
+ bytes
104
+ )
105
+ );
106
+
107
+ // check if the sender of the l2 message is the authorized hook
108
+ require(
109
+ l2Sender == TypeCasts.bytes32ToAddress(authorizedHook),
110
+ "ArbL2ToL1Ism: l2Sender != authorizedHook"
111
+ );
112
+ // this data is an abi encoded call of verifyMessageId(bytes32 messageId)
113
+ require(data.length == 36, "ArbL2ToL1Ism: invalid data length");
114
+ bytes32 messageId = message.id();
115
+ bytes32 convertedBytes;
116
+ assembly {
117
+ // data = 0x[4 bytes function signature][32 bytes messageId]
118
+ convertedBytes := mload(add(data, 36))
119
+ }
120
+ // check if the parsed message id matches the message id of the message
121
+ require(
122
+ convertedBytes == messageId,
123
+ "ArbL2ToL1Ism: invalid message id"
124
+ );
125
+
126
+ // value send to 0
127
+ arbOutbox.executeTransaction(
128
+ proof,
129
+ index,
130
+ l2Sender,
131
+ to,
132
+ l2Block,
133
+ l1Block,
134
+ l2Timestamp,
135
+ 0,
136
+ data
137
+ );
138
+ // the above bridge call will revert if the verifyMessageId call fails
139
+ return true;
140
+ }
141
+
142
+ /// @inheritdoc AbstractMessageIdAuthorizedIsm
143
+ function _isAuthorized() internal view override returns (bool) {
144
+ return
145
+ _crossChainSender() == TypeCasts.bytes32ToAddress(authorizedHook);
146
+ }
147
+ }
@@ -26,6 +26,7 @@ abstract contract AbstractMultisigIsm is IMultisigIsm {
26
26
  * @notice Returns the set of validators responsible for verifying _message
27
27
  * and the number of signatures required
28
28
  * @dev Can change based on the content of _message
29
+ * @dev Signatures provided to `verify` must be consistent with validator ordering
29
30
  * @param _message Hyperlane formatted interchain message
30
31
  * @return validators The array of validator addresses
31
32
  * @return threshold The number of validator signatures needed
@@ -60,7 +61,9 @@ abstract contract AbstractMultisigIsm is IMultisigIsm {
60
61
 
61
62
  /**
62
63
  * @notice Requires that m-of-n validators verify a merkle root,
63
- * and verifies a me∑rkle proof of `_message` against that root.
64
+ * and verifies a merkle proof of `_message` against that root.
65
+ * @dev Optimization relies on the caller sorting signatures in the same order as validators.
66
+ * @dev Employs https://www.geeksforgeeks.org/two-pointers-technique/ to minimize gas usage.
64
67
  * @param _metadata ABI encoded module metadata
65
68
  * @param _message Formatted Hyperlane message (see Message.sol).
66
69
  */
@@ -46,4 +46,6 @@ contract TestRecipient is
46
46
  function setInterchainSecurityModule(address _ism) external onlyOwner {
47
47
  interchainSecurityModule = IInterchainSecurityModule(_ism);
48
48
  }
49
+
50
+ receive() external payable {}
49
51
  }
@@ -0,0 +1,3 @@
1
+ import type * as nitroContracts from "./nitro-contracts/index.js";
2
+ export type { nitroContracts };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/@arbitrum/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/@arbitrum/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type * as src from "./src/index.js";
2
+ export type { src };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../types/@arbitrum/nitro-contracts/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../types/@arbitrum/nitro-contracts/index.ts"],"names":[],"mappings":""}