@hyperlane-xyz/core 5.8.3 → 5.9.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 (219) hide show
  1. package/contracts/PackageVersioned.sol +1 -1
  2. package/contracts/client/MailboxClient.sol +1 -1
  3. package/contracts/client/Router.sol +1 -1
  4. package/contracts/hooks/README.md +58 -0
  5. package/contracts/isms/README.md +20 -0
  6. package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +17 -17
  7. package/contracts/isms/hook/ArbL2ToL1Ism.sol +1 -1
  8. package/contracts/isms/hook/OPL2ToL1Ism.sol +1 -1
  9. package/dist/buildArtifact.js +1 -1
  10. package/dist/buildArtifact.json +1 -1
  11. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts +1 -32
  12. package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts.map +1 -1
  13. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts +1 -32
  14. package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts.map +1 -1
  15. package/dist/contracts/isms/hook/ERC5164Ism.d.ts +1 -32
  16. package/dist/contracts/isms/hook/ERC5164Ism.d.ts.map +1 -1
  17. package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts +1 -32
  18. package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts.map +1 -1
  19. package/dist/contracts/isms/hook/OPStackIsm.d.ts +1 -32
  20. package/dist/contracts/isms/hook/OPStackIsm.d.ts.map +1 -1
  21. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +1 -32
  22. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -1
  23. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +1 -32
  24. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -1
  25. package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
  26. package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
  27. package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
  28. package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
  29. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  30. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  31. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
  32. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
  33. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
  34. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
  35. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
  36. package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
  37. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
  38. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
  39. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts +1 -1
  40. package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
  41. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  42. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  43. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  44. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  45. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +1 -1
  46. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
  47. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
  48. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
  49. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  50. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  51. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  52. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  53. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  54. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  55. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  56. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  57. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
  58. package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
  59. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
  60. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
  61. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
  62. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
  63. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
  64. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
  65. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
  66. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
  67. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
  68. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
  69. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
  70. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
  71. package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
  72. package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
  73. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
  74. package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
  75. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
  76. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
  77. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  78. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
  79. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  80. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
  81. package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.d.ts +1 -1
  82. package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.js +1 -1
  83. package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.d.ts +1 -1
  84. package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.js +1 -1
  85. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts +0 -10
  86. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts.map +1 -1
  87. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js +0 -13
  88. package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js.map +1 -1
  89. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -11
  90. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts.map +1 -1
  91. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -14
  92. package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js.map +1 -1
  93. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -11
  94. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts.map +1 -1
  95. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -14
  96. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js.map +1 -1
  97. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -11
  98. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts.map +1 -1
  99. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -14
  100. package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js.map +1 -1
  101. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -11
  102. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts.map +1 -1
  103. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -14
  104. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js.map +1 -1
  105. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -11
  106. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -1
  107. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -14
  108. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -1
  109. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -11
  110. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -1
  111. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -14
  112. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -1
  113. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  114. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
  115. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  116. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
  117. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  118. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
  119. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  120. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
  121. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  122. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.js +1 -1
  123. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.d.ts +1 -1
  124. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.js +1 -1
  125. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  126. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.js +1 -1
  127. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.d.ts +1 -1
  128. package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.js +1 -1
  129. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
  130. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
  131. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
  132. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
  133. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
  134. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
  135. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
  136. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
  137. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
  138. package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
  139. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
  140. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
  141. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  142. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  143. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
  144. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
  145. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  146. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  147. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
  148. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
  149. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  150. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  151. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  152. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  153. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  154. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  155. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  156. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  157. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  158. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  159. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  160. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  161. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  162. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  163. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  164. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  165. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  166. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  167. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  168. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  169. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
  170. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
  171. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
  172. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
  173. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  174. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  175. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  176. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  177. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
  178. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
  179. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  180. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  181. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  182. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  183. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
  184. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
  185. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
  186. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
  187. package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
  188. package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
  189. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
  190. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
  191. package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
  192. package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
  193. package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
  194. package/dist/factories/contracts/token/HypNative__factory.js +1 -1
  195. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
  196. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
  197. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
  198. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
  199. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +1 -1
  200. package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +1 -1
  201. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +1 -1
  202. package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +1 -1
  203. package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +1 -1
  204. package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +1 -1
  205. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
  206. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
  207. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
  208. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
  209. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
  210. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
  211. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
  212. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
  213. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
  214. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
  215. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
  216. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
  217. package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +1 -1
  218. package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +1 -1
  219. package/package.json +2 -2
@@ -7,5 +7,5 @@ pragma solidity >=0.6.11;
7
7
  **/
8
8
  abstract contract PackageVersioned {
9
9
  // GENERATED CODE - DO NOT EDIT
10
- string public constant PACKAGE_VERSION = "5.8.3";
10
+ string public constant PACKAGE_VERSION = "5.9.0";
11
11
  }
@@ -58,7 +58,7 @@ abstract contract MailboxClient is OwnableUpgradeable, PackageVersioned {
58
58
  }
59
59
 
60
60
  /**
61
- * @notice Only accept messages from an Hyperlane Mailbox contract
61
+ * @notice Only accept messages from a Hyperlane Mailbox contract
62
62
  */
63
63
  modifier onlyMailbox() {
64
64
  require(
@@ -145,7 +145,7 @@ abstract contract Router is MailboxClient, IMessageRecipient {
145
145
  }
146
146
 
147
147
  /**
148
- * @notice Assert that the given domain has a Application Router registered and return its address
148
+ * @notice Assert that the given domain has an Application Router registered and return its address
149
149
  * @param _domain The domain of the chain for which to get the Application Router
150
150
  * @return _router The address of the remote Application Router on _domain
151
151
  */
@@ -0,0 +1,58 @@
1
+ # Post-Dispatch Hooks
2
+
3
+ Post-dispatch hooks allow developers to configure additional origin chain behavior with message content dispatched via the Mailbox.
4
+
5
+ ```mermaid
6
+ flowchart TB
7
+ subgraph Origin
8
+ Sender
9
+ M_O[(Mailbox)]
10
+ Hook[IPostDispatchHook]
11
+
12
+ Sender -- "dispatch(..., metadata, hook)\n{value}" --> M_O
13
+ M_O -- "postDispatch(message, metadata)\n{value}" --> Hook
14
+ end
15
+ ```
16
+
17
+ If the `postDispatch` function receives insufficient payment, it may revert.
18
+
19
+ > [!WARNING]
20
+ > Post-Dispatch Hooks may be replayable. Developers creating custom hooks should implement safe checks to prevent this behavior. [Here](./warp-route/RateLimitedHook.sol#L16) is an example implementation.
21
+
22
+ ### Quote Dispatch (Fees)
23
+
24
+ Fees are often charged in `postDispatch` to cover costs such as destination chain transaction submission and security provisioning. To receive a quote for a corresponding `postDispatch` call, you can query the `quoteDispatch` function.
25
+
26
+ The Mailbox has a `quoteDispatch` function that returns the aggregate fee required for a `dispatch` call to be successful.
27
+
28
+ ```mermaid
29
+ flowchart TB
30
+ subgraph Origin
31
+ Sender
32
+ M_O[(Mailbox)]
33
+ R_H[RequiredHook]
34
+ Hook[Hook]
35
+
36
+ Sender -- "quoteDispatch(..., metadata, hook)" --> M_O
37
+ M_O -- "required = quoteDispatch(message, metadata)" --> R_H
38
+ M_O -- "fee = hook.quoteDispatch(message, metadata)" --> Hook
39
+ M_O -- "required + fee" --> Sender
40
+ end
41
+ ```
42
+
43
+ The custom `metadata` will be passed to the required hook's `quoteDispatch` and `postDispatch` functions, before being passed to the default hook's `postDispatch` function.
44
+
45
+ ```mermaid
46
+ flowchart LR
47
+ subgraph Origin Chain
48
+ Sender
49
+ M_O[(Mailbox)]
50
+ R_H[RequiredHook]
51
+ D_H[DefaultHook]
52
+ Sender -- "dispatch(..., metadata){value}" --> M_O
53
+
54
+ M_O -. "fee = quoteDispatch(...)" .- R_H
55
+ M_O -- "postDispatch(metadata, ...)\n{fee}" --> R_H
56
+ M_O -. "postDispatch(metadata, ...)\n{value - fee}" ..-> D_H
57
+ end
58
+ ```
@@ -0,0 +1,20 @@
1
+ # Interchain Security Modules
2
+
3
+ Interchain security modules allow developers to configure additional security checks for message content dispatched via the Mailbox.
4
+
5
+ ```mermaid
6
+ flowchart LR
7
+ subgraph Destination Chain
8
+ ISM[InterchainSecurityModule]
9
+ Recipient[Recipient]
10
+ M_D[(Mailbox)]
11
+
12
+ M_D -- "verify(metadata, message)" --> ISM
13
+ ISM -. "interchainSecurityModule()" .- Recipient
14
+ M_D -- "handle(origin, sender, body)" --> Recipient
15
+
16
+ end
17
+ ```
18
+
19
+ > [!WARNING]
20
+ > Interchain security modules may be replayable. Developers creating custom modules should include replay protection if necessary. [Here](./warp-route/RateLimitedIsm.sol#L23) is an example implementation.
@@ -27,7 +27,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
27
27
 
28
28
  /**
29
29
  * @title AbstractMessageIdAuthorizedIsm
30
- * @notice Uses external verification options to verify interchain messages which need a authorized caller
30
+ * @notice Uses external verification options to verify interchain messages which need an authorized caller
31
31
  */
32
32
  abstract contract AbstractMessageIdAuthorizedIsm is
33
33
  IInterchainSecurityModule,
@@ -78,28 +78,13 @@ abstract contract AbstractMessageIdAuthorizedIsm is
78
78
  ) external virtual returns (bool) {
79
79
  bool verified = isVerified(message);
80
80
  if (verified) {
81
- releaseValueToRecipient(message);
81
+ _releaseValueToRecipient(message);
82
82
  }
83
83
  return verified;
84
84
  }
85
85
 
86
86
  // ============ Public Functions ============
87
87
 
88
- /**
89
- * @notice Release the value to the recipient if the message is verified.
90
- * @param message Message to release value for.
91
- */
92
- function releaseValueToRecipient(bytes calldata message) public {
93
- bytes32 messageId = message.id();
94
- uint256 _msgValue = verifiedMessages[messageId].clearBit(
95
- VERIFIED_MASK_INDEX
96
- );
97
- if (_msgValue > 0) {
98
- verifiedMessages[messageId] -= _msgValue;
99
- payable(message.recipientAddress()).sendValue(_msgValue);
100
- }
101
- }
102
-
103
88
  /**
104
89
  * @notice Check if a message is verified through preVerifyMessage first.
105
90
  * @param message Message to check.
@@ -138,6 +123,21 @@ abstract contract AbstractMessageIdAuthorizedIsm is
138
123
 
139
124
  // ============ Internal Functions ============
140
125
 
126
+ /**
127
+ * @notice Release the value to the recipient if the message is verified.
128
+ * @param message Message to release value for.
129
+ */
130
+ function _releaseValueToRecipient(bytes calldata message) internal {
131
+ bytes32 messageId = message.id();
132
+ uint256 _msgValue = verifiedMessages[messageId].clearBit(
133
+ VERIFIED_MASK_INDEX
134
+ );
135
+ if (_msgValue > 0) {
136
+ verifiedMessages[messageId] -= _msgValue;
137
+ payable(message.recipientAddress()).sendValue(_msgValue);
138
+ }
139
+ }
140
+
141
141
  /**
142
142
  * @notice Check if sender is authorized to message `preVerifyMessage`.
143
143
  */
@@ -69,7 +69,7 @@ contract ArbL2ToL1Ism is
69
69
  _verifyWithOutboxCall(metadata, message);
70
70
  require(isVerified(message), "ArbL2ToL1Ism: message not verified");
71
71
  }
72
- releaseValueToRecipient(message);
72
+ _releaseValueToRecipient(message);
73
73
  return true;
74
74
  }
75
75
 
@@ -70,7 +70,7 @@ contract OPL2ToL1Ism is
70
70
  _verifyWithPortalCall(metadata, message);
71
71
  require(isVerified(message), "OPL2ToL1Ism: message not verified");
72
72
  }
73
- releaseValueToRecipient(message);
73
+ _releaseValueToRecipient(message);
74
74
  return true;
75
75
  }
76
76