@hyperlane-xyz/core 3.8.0 → 3.8.1

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 (363) hide show
  1. package/buildArtifact.json +1 -1
  2. package/contracts/hooks/layer-zero/LayerZeroV1Hook.sol +118 -0
  3. package/contracts/hooks/layer-zero/LayerZeroV2Hook.sol +135 -0
  4. package/contracts/hooks/libs/AbstractMessageIdAuthHook.sol +4 -0
  5. package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
  6. package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +1 -1
  7. package/contracts/isms/hook/layer-zero/LayerZeroV2Ism.sol +114 -0
  8. package/contracts/test/ERC20Test.sol +8 -0
  9. package/contracts/test/ERC4626/ERC4626Test.sol +13 -0
  10. package/contracts/test/TestLayerZeroTreasury.sol +15 -0
  11. package/contracts/token/HypERC20Collateral.sol +1 -1
  12. package/contracts/token/HypERC20CollateralVaultDeposit.sol +82 -0
  13. package/dist/@layerzerolabs/index.d.ts +5 -0
  14. package/dist/@layerzerolabs/index.d.ts.map +1 -0
  15. package/dist/@layerzerolabs/index.js +3 -0
  16. package/dist/@layerzerolabs/index.js.map +1 -0
  17. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts +3 -0
  18. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts.map +1 -0
  19. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js +3 -0
  20. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js.map +1 -0
  21. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.d.ts +1648 -0
  22. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.d.ts.map +1 -0
  23. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.js +3 -0
  24. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.js.map +1 -0
  25. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.d.ts +694 -0
  26. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.d.ts.map +1 -0
  27. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.js +3 -0
  28. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.js.map +1 -0
  29. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.d.ts +331 -0
  30. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.d.ts.map +1 -0
  31. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.js +3 -0
  32. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.js.map +1 -0
  33. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.d.ts +220 -0
  34. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.d.ts.map +1 -0
  35. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.js +3 -0
  36. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.js.map +1 -0
  37. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.d.ts +83 -0
  38. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.d.ts.map +1 -0
  39. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.js +3 -0
  40. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.js.map +1 -0
  41. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts +6 -0
  42. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts.map +1 -0
  43. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js +3 -0
  44. package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js.map +1 -0
  45. package/dist/@layerzerolabs/lz-evm-protocol-v2/index.d.ts +3 -0
  46. package/dist/@layerzerolabs/lz-evm-protocol-v2/index.d.ts.map +1 -0
  47. package/dist/@layerzerolabs/lz-evm-protocol-v2/index.js +3 -0
  48. package/dist/@layerzerolabs/lz-evm-protocol-v2/index.js.map +1 -0
  49. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts +3 -0
  50. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts.map +1 -0
  51. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js +3 -0
  52. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js.map +1 -0
  53. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.d.ts +536 -0
  54. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.d.ts.map +1 -0
  55. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.js +3 -0
  56. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.js.map +1 -0
  57. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.d.ts +169 -0
  58. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.d.ts.map +1 -0
  59. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.js +3 -0
  60. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.js.map +1 -0
  61. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts +3 -0
  62. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts.map +1 -0
  63. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js +3 -0
  64. package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js.map +1 -0
  65. package/dist/@layerzerolabs/lz-evm-v1-0.7/index.d.ts +3 -0
  66. package/dist/@layerzerolabs/lz-evm-v1-0.7/index.d.ts.map +1 -0
  67. package/dist/@layerzerolabs/lz-evm-v1-0.7/index.js +3 -0
  68. package/dist/@layerzerolabs/lz-evm-v1-0.7/index.js.map +1 -0
  69. package/dist/@openzeppelin/contracts/interfaces/IERC4626.d.ts +666 -0
  70. package/dist/@openzeppelin/contracts/interfaces/IERC4626.d.ts.map +1 -0
  71. package/dist/@openzeppelin/contracts/interfaces/IERC4626.js +3 -0
  72. package/dist/@openzeppelin/contracts/interfaces/IERC4626.js.map +1 -0
  73. package/dist/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  74. package/dist/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
  75. package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.d.ts +680 -0
  76. package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.d.ts.map +1 -0
  77. package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.js +3 -0
  78. package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.js.map +1 -0
  79. package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +1 -0
  80. package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +1 -1
  81. package/dist/contracts/hooks/index.d.ts +2 -0
  82. package/dist/contracts/hooks/index.d.ts.map +1 -1
  83. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts +412 -0
  84. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts.map +1 -0
  85. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.js +3 -0
  86. package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.js.map +1 -0
  87. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts +469 -0
  88. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts.map +1 -0
  89. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.js +3 -0
  90. package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.js.map +1 -0
  91. package/dist/contracts/hooks/layer-zero/index.d.ts +3 -0
  92. package/dist/contracts/hooks/layer-zero/index.d.ts.map +1 -0
  93. package/dist/contracts/hooks/layer-zero/index.js +3 -0
  94. package/dist/contracts/hooks/layer-zero/index.js.map +1 -0
  95. package/dist/contracts/isms/hook/index.d.ts +2 -0
  96. package/dist/contracts/isms/hook/index.d.ts.map +1 -1
  97. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +280 -0
  98. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -0
  99. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.js +3 -0
  100. package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.js.map +1 -0
  101. package/dist/contracts/isms/hook/layer-zero/index.d.ts +2 -0
  102. package/dist/contracts/isms/hook/layer-zero/index.d.ts.map +1 -0
  103. package/dist/contracts/isms/hook/layer-zero/index.js +3 -0
  104. package/dist/contracts/isms/hook/layer-zero/index.js.map +1 -0
  105. package/dist/contracts/test/ERC20Test.d.ts +63 -1
  106. package/dist/contracts/test/ERC20Test.d.ts.map +1 -1
  107. package/dist/contracts/test/ERC4626/ERC4626Test.d.ts +680 -0
  108. package/dist/contracts/test/ERC4626/ERC4626Test.d.ts.map +1 -0
  109. package/dist/contracts/test/ERC4626/ERC4626Test.js +3 -0
  110. package/dist/contracts/test/ERC4626/ERC4626Test.js.map +1 -0
  111. package/dist/contracts/test/ERC4626/index.d.ts +2 -0
  112. package/dist/contracts/test/ERC4626/index.d.ts.map +1 -0
  113. package/dist/contracts/test/ERC4626/index.js +3 -0
  114. package/dist/contracts/test/ERC4626/index.js.map +1 -0
  115. package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.d.ts +190 -0
  116. package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.d.ts.map +1 -0
  117. package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.js +3 -0
  118. package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.js.map +1 -0
  119. package/dist/contracts/test/TestLayerZeroTreasury.sol/index.d.ts +2 -0
  120. package/dist/contracts/test/TestLayerZeroTreasury.sol/index.d.ts.map +1 -0
  121. package/dist/contracts/test/TestLayerZeroTreasury.sol/index.js +3 -0
  122. package/dist/contracts/test/TestLayerZeroTreasury.sol/index.js.map +1 -0
  123. package/dist/contracts/test/index.d.ts +4 -0
  124. package/dist/contracts/test/index.d.ts.map +1 -1
  125. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts +705 -0
  126. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +1 -0
  127. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js +3 -0
  128. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +1 -0
  129. package/dist/contracts/token/index.d.ts +1 -0
  130. package/dist/contracts/token/index.d.ts.map +1 -1
  131. package/dist/factories/@layerzerolabs/index.d.ts +3 -0
  132. package/dist/factories/@layerzerolabs/index.d.ts.map +1 -0
  133. package/dist/factories/@layerzerolabs/index.js +32 -0
  134. package/dist/factories/@layerzerolabs/index.js.map +1 -0
  135. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts +2 -0
  136. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts.map +1 -0
  137. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js +31 -0
  138. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js.map +1 -0
  139. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.d.ts +1438 -0
  140. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.d.ts.map +1 -0
  141. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.js +1853 -0
  142. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.js.map +1 -0
  143. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.d.ts +487 -0
  144. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.d.ts.map +1 -0
  145. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.js +638 -0
  146. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.js.map +1 -0
  147. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.d.ts +270 -0
  148. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.d.ts.map +1 -0
  149. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.js +353 -0
  150. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.js.map +1 -0
  151. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.d.ts +197 -0
  152. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.d.ts.map +1 -0
  153. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.js +255 -0
  154. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.js.map +1 -0
  155. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.d.ts +33 -0
  156. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.d.ts.map +1 -0
  157. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.js +51 -0
  158. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.js.map +1 -0
  159. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts +6 -0
  160. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts.map +1 -0
  161. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js +17 -0
  162. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js.map +1 -0
  163. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.d.ts +2 -0
  164. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.d.ts.map +1 -0
  165. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.js +31 -0
  166. package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.js.map +1 -0
  167. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts +2 -0
  168. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts.map +1 -0
  169. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js +31 -0
  170. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js.map +1 -0
  171. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.d.ts +343 -0
  172. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.d.ts.map +1 -0
  173. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.js +456 -0
  174. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.js.map +1 -0
  175. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.d.ts +65 -0
  176. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.d.ts.map +1 -0
  177. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.js +92 -0
  178. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.js.map +1 -0
  179. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts +3 -0
  180. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts.map +1 -0
  181. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js +11 -0
  182. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js.map +1 -0
  183. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.d.ts +2 -0
  184. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.d.ts.map +1 -0
  185. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.js +31 -0
  186. package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.js.map +1 -0
  187. package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.d.ts +474 -0
  188. package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.d.ts.map +1 -0
  189. package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.js +632 -0
  190. package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.js.map +1 -0
  191. package/dist/factories/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  192. package/dist/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
  193. package/dist/factories/@openzeppelin/contracts/interfaces/index.js +3 -1
  194. package/dist/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -1
  195. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.d.ts +510 -0
  196. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.d.ts.map +1 -0
  197. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.js +680 -0
  198. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.js.map +1 -0
  199. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +1 -0
  200. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +1 -1
  201. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js +3 -1
  202. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +1 -1
  203. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  204. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  205. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
  206. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
  207. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  208. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts.map +1 -1
  209. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  210. package/dist/factories/contracts/hooks/OPStackHook__factory.js.map +1 -1
  211. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  212. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  213. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
  214. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
  215. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  216. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts.map +1 -1
  217. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  218. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js.map +1 -1
  219. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  220. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  221. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  222. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  223. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  224. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  225. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  226. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  227. package/dist/factories/contracts/hooks/index.js +2 -1
  228. package/dist/factories/contracts/hooks/index.js.map +1 -1
  229. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +289 -0
  230. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts.map +1 -0
  231. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +391 -0
  232. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js.map +1 -0
  233. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +288 -0
  234. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts.map +1 -0
  235. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +390 -0
  236. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js.map +1 -0
  237. package/dist/factories/contracts/hooks/layer-zero/index.d.ts +3 -0
  238. package/dist/factories/contracts/hooks/layer-zero/index.d.ts.map +1 -0
  239. package/dist/factories/contracts/hooks/layer-zero/index.js +11 -0
  240. package/dist/factories/contracts/hooks/layer-zero/index.js.map +1 -0
  241. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
  242. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
  243. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
  244. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
  245. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
  246. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
  247. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
  248. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
  249. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
  250. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
  251. package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
  252. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
  253. package/dist/factories/contracts/isms/hook/index.js +25 -1
  254. package/dist/factories/contracts/isms/hook/index.js.map +1 -1
  255. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +181 -0
  256. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -0
  257. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +251 -0
  258. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -0
  259. package/dist/factories/contracts/isms/hook/layer-zero/index.d.ts +2 -0
  260. package/dist/factories/contracts/isms/hook/layer-zero/index.d.ts.map +1 -0
  261. package/dist/factories/contracts/isms/hook/layer-zero/index.js +9 -0
  262. package/dist/factories/contracts/isms/hook/layer-zero/index.js.map +1 -0
  263. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
  264. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
  265. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
  266. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
  267. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  268. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  269. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  270. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  271. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  272. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  273. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  274. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  275. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  276. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  277. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  278. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  279. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  280. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  281. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  282. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  283. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  284. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  285. package/dist/factories/contracts/test/ERC20Test__factory.d.ts +25 -1
  286. package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +1 -1
  287. package/dist/factories/contracts/test/ERC20Test__factory.js +32 -1
  288. package/dist/factories/contracts/test/ERC20Test__factory.js.map +1 -1
  289. package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.d.ts +539 -0
  290. package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.d.ts.map +1 -0
  291. package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.js +724 -0
  292. package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.js.map +1 -0
  293. package/dist/factories/contracts/test/ERC4626/index.d.ts +2 -0
  294. package/dist/factories/contracts/test/ERC4626/index.d.ts.map +1 -0
  295. package/dist/factories/contracts/test/ERC4626/index.js +9 -0
  296. package/dist/factories/contracts/test/ERC4626/index.js.map +1 -0
  297. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  298. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  299. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  300. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  301. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.d.ts +75 -0
  302. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.d.ts.map +1 -0
  303. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.js +109 -0
  304. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.js.map +1 -0
  305. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.d.ts +2 -0
  306. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.d.ts.map +1 -0
  307. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.js +9 -0
  308. package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.js.map +1 -0
  309. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  310. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  311. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
  312. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
  313. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
  314. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
  315. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  316. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  317. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  318. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  319. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  320. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  321. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  322. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  323. package/dist/factories/contracts/test/index.d.ts +2 -0
  324. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  325. package/dist/factories/contracts/test/index.js +26 -1
  326. package/dist/factories/contracts/test/index.js.map +1 -1
  327. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +423 -0
  328. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -0
  329. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +563 -0
  330. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +1 -0
  331. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
  332. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
  333. package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
  334. package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
  335. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
  336. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
  337. package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
  338. package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
  339. package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
  340. package/dist/factories/contracts/token/HypNative__factory.js +1 -1
  341. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
  342. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
  343. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
  344. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
  345. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
  346. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
  347. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
  348. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
  349. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
  350. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
  351. package/dist/factories/contracts/token/index.d.ts +1 -0
  352. package/dist/factories/contracts/token/index.d.ts.map +1 -1
  353. package/dist/factories/contracts/token/index.js +3 -1
  354. package/dist/factories/contracts/token/index.js.map +1 -1
  355. package/dist/factories/index.d.ts +1 -0
  356. package/dist/factories/index.d.ts.map +1 -1
  357. package/dist/factories/index.js +2 -1
  358. package/dist/factories/index.js.map +1 -1
  359. package/dist/index.d.ts +32 -0
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +34 -4
  362. package/dist/index.js.map +1 -1
  363. package/package.json +4 -2
@@ -0,0 +1,118 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+ import {ILayerZeroEndpoint} from "@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol";
16
+ import {Message} from "../../libs/Message.sol";
17
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
18
+ import {MailboxClient} from "../../client/MailboxClient.sol";
19
+ import {Indexed} from "../../libs/Indexed.sol";
20
+ import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
21
+ import {AbstractPostDispatchHook} from "../libs/AbstractPostDispatchHook.sol";
22
+ import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";
23
+
24
+ struct LayerZeroMetadata {
25
+ /// @dev the destination chain identifier
26
+ uint16 dstChainId;
27
+ /// @dev the user app address on this EVM chain. Contract address that calls Endpoint.send(). Used for LZ user app config lookup
28
+ address userApplication;
29
+ /// @dev if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address
30
+ address refundAddress;
31
+ /// @dev the custom message to send over LayerZero
32
+ bytes payload;
33
+ /// @dev the address on destination chain (in bytes). A 40 length byte with remote and local addresses concatenated.
34
+ bytes destination;
35
+ /// @dev parameters for the adapter service, e.g. send some dust native token to dstChain
36
+ bytes adapterParam;
37
+ }
38
+
39
+ contract LayerZeroV1Hook is AbstractPostDispatchHook, MailboxClient {
40
+ using StandardHookMetadata for bytes;
41
+ using Message for bytes;
42
+ using TypeCasts for bytes32;
43
+
44
+ ILayerZeroEndpoint public immutable lZEndpoint;
45
+
46
+ constructor(address _mailbox, address _lZEndpoint) MailboxClient(_mailbox) {
47
+ lZEndpoint = ILayerZeroEndpoint(_lZEndpoint);
48
+ }
49
+
50
+ // ============ External Functions ============
51
+
52
+ /// @inheritdoc IPostDispatchHook
53
+ function hookType() external pure override returns (uint8) {
54
+ return uint8(IPostDispatchHook.Types.LAYER_ZERO_V1);
55
+ }
56
+
57
+ /// @inheritdoc AbstractPostDispatchHook
58
+ function _postDispatch(
59
+ bytes calldata metadata,
60
+ bytes calldata message
61
+ ) internal virtual override {
62
+ // ensure hook only dispatches messages that are dispatched by the mailbox
63
+ bytes32 id = message.id();
64
+ require(_isLatestDispatched(id), "message not dispatched by mailbox");
65
+
66
+ bytes calldata lZMetadata = metadata.getCustomMetadata();
67
+ LayerZeroMetadata memory layerZeroMetadata = parseLzMetadata(
68
+ lZMetadata
69
+ );
70
+ lZEndpoint.send{value: msg.value}(
71
+ layerZeroMetadata.dstChainId,
72
+ layerZeroMetadata.destination,
73
+ layerZeroMetadata.payload,
74
+ payable(layerZeroMetadata.refundAddress),
75
+ address(0), // _zroPaymentAddress is hardcoded to addr(0) because zro tokens should not be directly accepted
76
+ layerZeroMetadata.adapterParam
77
+ );
78
+ }
79
+
80
+ /// @inheritdoc AbstractPostDispatchHook
81
+ function _quoteDispatch(
82
+ bytes calldata metadata,
83
+ bytes calldata
84
+ ) internal view virtual override returns (uint256 nativeFee) {
85
+ bytes calldata lZMetadata = metadata.getCustomMetadata();
86
+ LayerZeroMetadata memory layerZeroMetadata = parseLzMetadata(
87
+ lZMetadata
88
+ );
89
+ (nativeFee, ) = lZEndpoint.estimateFees(
90
+ layerZeroMetadata.dstChainId,
91
+ layerZeroMetadata.userApplication,
92
+ layerZeroMetadata.payload,
93
+ false, // _payInZRO is hardcoded to false because zro tokens should not be directly accepted
94
+ layerZeroMetadata.adapterParam
95
+ );
96
+ }
97
+
98
+ /**
99
+ * @notice Formats LayerZero metadata using default abi encoding
100
+ * @param layerZeroMetadata LayerZero specific metadata
101
+ * @return ABI encoded metadata
102
+ */
103
+ function formatLzMetadata(
104
+ LayerZeroMetadata calldata layerZeroMetadata
105
+ ) public pure returns (bytes memory) {
106
+ return abi.encode(layerZeroMetadata);
107
+ }
108
+
109
+ /**
110
+ * @notice Decodes LayerZero metadata. Should be used after formatLzMetadata()
111
+ * @param lZMetadata ABI encoded metadata
112
+ */
113
+ function parseLzMetadata(
114
+ bytes calldata lZMetadata
115
+ ) public pure returns (LayerZeroMetadata memory parsedLayerZeroMetadata) {
116
+ (parsedLayerZeroMetadata) = abi.decode(lZMetadata, (LayerZeroMetadata));
117
+ }
118
+ }
@@ -0,0 +1,135 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+ import {MessagingParams, MessagingFee, ILayerZeroEndpointV2} from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
16
+ import {Message} from "../../libs/Message.sol";
17
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
18
+ import {Indexed} from "../../libs/Indexed.sol";
19
+ import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
20
+ import {AbstractMessageIdAuthHook} from "../libs/AbstractMessageIdAuthHook.sol";
21
+ import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";
22
+
23
+ struct LayerZeroV2Metadata {
24
+ /// @dev the endpoint Id. prev dstChainId
25
+ uint32 eid;
26
+ /// @dev if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address
27
+ address refundAddress;
28
+ /// @dev parameters for the adapter service, e.g. send some dust native token to dstChain. prev adapterParam
29
+ bytes options;
30
+ }
31
+
32
+ contract LayerZeroV2Hook is AbstractMessageIdAuthHook {
33
+ using StandardHookMetadata for bytes;
34
+ using Message for bytes;
35
+ using TypeCasts for bytes32;
36
+
37
+ ILayerZeroEndpointV2 public immutable lZEndpoint;
38
+
39
+ /// @dev offset for Layer Zero metadata parsing
40
+ uint8 constant EID_OFFSET = 0;
41
+ uint8 constant REFUND_ADDRESS_OFFSET = 4;
42
+ uint8 constant OPTIONS_OFFSET = 24;
43
+
44
+ constructor(
45
+ address _mailbox,
46
+ uint32 _destinationDomain,
47
+ bytes32 _ism,
48
+ address _lZEndpoint
49
+ ) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
50
+ lZEndpoint = ILayerZeroEndpointV2(_lZEndpoint);
51
+ }
52
+
53
+ // ============ External Functions ============
54
+
55
+ /// @inheritdoc AbstractMessageIdAuthHook
56
+ function _sendMessageId(
57
+ bytes calldata metadata,
58
+ bytes memory payload
59
+ ) internal override {
60
+ bytes calldata lZMetadata = metadata.getCustomMetadata();
61
+ (
62
+ uint32 eid,
63
+ address refundAddress,
64
+ bytes memory options
65
+ ) = parseLzMetadata(lZMetadata);
66
+
67
+ // Build and send message
68
+ MessagingParams memory msgParams = MessagingParams(
69
+ eid,
70
+ ism,
71
+ payload,
72
+ options,
73
+ false // payInLzToken
74
+ );
75
+ lZEndpoint.send{value: msg.value}(msgParams, refundAddress);
76
+ }
77
+
78
+ /// @dev payInZRO is hardcoded to false because zro tokens should not be directly accepted
79
+ function _quoteDispatch(
80
+ bytes calldata metadata,
81
+ bytes calldata message
82
+ ) internal view virtual override returns (uint256) {
83
+ bytes calldata lZMetadata = metadata.getCustomMetadata();
84
+ (uint32 eid, , bytes memory options) = parseLzMetadata(lZMetadata);
85
+
86
+ // Build and quote message
87
+ MessagingParams memory msgParams = MessagingParams(
88
+ eid,
89
+ message.recipient(),
90
+ message.body(),
91
+ options,
92
+ false // payInLzToken
93
+ );
94
+ MessagingFee memory msgFee = lZEndpoint.quote(
95
+ msgParams,
96
+ message.senderAddress()
97
+ );
98
+
99
+ return msgFee.nativeFee;
100
+ }
101
+
102
+ /**
103
+ * @notice Formats LayerZero metadata using default abi encoding
104
+ * @param layerZeroMetadata LayerZero specific metadata
105
+ * @return ABI encoded metadata
106
+ */
107
+ function formatLzMetadata(
108
+ LayerZeroV2Metadata calldata layerZeroMetadata
109
+ ) public pure returns (bytes memory) {
110
+ return
111
+ abi.encodePacked(
112
+ layerZeroMetadata.eid,
113
+ layerZeroMetadata.refundAddress,
114
+ layerZeroMetadata.options
115
+ );
116
+ }
117
+
118
+ /**
119
+ * @notice Decodes LayerZero metadata. Should be used after formatLzMetadata()
120
+ * @param lZMetadata ABI encoded metadata
121
+ */
122
+ function parseLzMetadata(
123
+ bytes calldata lZMetadata
124
+ )
125
+ public
126
+ pure
127
+ returns (uint32 eid, address refundAddress, bytes memory options)
128
+ {
129
+ eid = uint32(bytes4(lZMetadata[EID_OFFSET:REFUND_ADDRESS_OFFSET]));
130
+ refundAddress = address(
131
+ bytes20(lZMetadata[REFUND_ADDRESS_OFFSET:OPTIONS_OFFSET])
132
+ );
133
+ options = lZMetadata[OPTIONS_OFFSET:];
134
+ }
135
+ }
@@ -78,6 +78,10 @@ abstract contract AbstractMessageIdAuthHook is
78
78
  message.destination() == destinationDomain,
79
79
  "AbstractMessageIdAuthHook: invalid destination domain"
80
80
  );
81
+ require(
82
+ metadata.msgValue(0) < 2 ** 255,
83
+ "AbstractMessageIdAuthHook: msgValue must be less than 2 ** 255"
84
+ );
81
85
  bytes memory payload = abi.encodeCall(
82
86
  AbstractMessageIdAuthorizedIsm.verifyMessageId,
83
87
  id
@@ -23,7 +23,8 @@ interface IPostDispatchHook {
23
23
  FALLBACK_ROUTING,
24
24
  ID_AUTH_ISM,
25
25
  PAUSABLE,
26
- PROTOCOL_FEE
26
+ PROTOCOL_FEE,
27
+ LAYER_ZERO_V1
27
28
  }
28
29
 
29
30
  /**
@@ -99,7 +99,7 @@ abstract contract AbstractMessageIdAuthorizedIsm is
99
99
  * @dev Only callable by the authorized hook.
100
100
  * @param messageId Hyperlane Id of the message.
101
101
  */
102
- function verifyMessageId(bytes32 messageId) external payable virtual {
102
+ function verifyMessageId(bytes32 messageId) public payable virtual {
103
103
  require(
104
104
  _isAuthorized(),
105
105
  "AbstractMessageIdAuthorizedIsm: sender is not the hook"
@@ -0,0 +1,114 @@
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 {Message} from "../../../libs/Message.sol";
20
+ import {TypeCasts} from "../../../libs/TypeCasts.sol";
21
+ import {AbstractMessageIdAuthorizedIsm} from "../AbstractMessageIdAuthorizedIsm.sol";
22
+
23
+ // ============ External Imports ============
24
+ import {Origin} from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
25
+
26
+ /**
27
+ * @title LayerZeroV2Ism
28
+ * @notice Uses LayerZero V2 deliver and verify a messages Id
29
+ */
30
+ contract LayerZeroV2Ism is AbstractMessageIdAuthorizedIsm {
31
+ using Message for bytes;
32
+ using TypeCasts for bytes32;
33
+
34
+ // Layerzero endpoint address
35
+ address public immutable endpoint;
36
+
37
+ // ============ Constants ============
38
+
39
+ uint8 public constant moduleType =
40
+ uint8(IInterchainSecurityModule.Types.NULL);
41
+
42
+ // @dev the offset of msg.data where the function parameters (as bytes) begins. 4 bytes is always used when encoding the function selector
43
+ uint8 constant FUNC_SELECTOR_OFFSET = 4;
44
+
45
+ // @dev the offset of msg.data where Origin.sender begins. 32 is always used since calldata comes in 32 bytes.
46
+ uint8 constant ORIGIN_SENDER_OFFSET = FUNC_SELECTOR_OFFSET + 32;
47
+
48
+ // ============ Constructor ============
49
+ constructor(address _endpoint) {
50
+ require(
51
+ _endpoint != address(0),
52
+ "LayerZeroV2Ism: invalid authorized endpoint"
53
+ );
54
+ endpoint = _endpoint;
55
+ }
56
+
57
+ /**
58
+ * @notice Entry point for receiving msg/packet from the LayerZero endpoint.
59
+ * @param _lzMessage The payload of the received message.
60
+ * @dev Authorization verifcation is done within verifyMessageId() -> _isAuthorized()
61
+ */
62
+ function lzReceive(
63
+ Origin calldata,
64
+ bytes32,
65
+ bytes calldata _lzMessage,
66
+ address,
67
+ bytes calldata
68
+ ) external payable {
69
+ verifyMessageId(_messageId(_lzMessage));
70
+ }
71
+
72
+ // ============ Internal function ============
73
+
74
+ /**
75
+ * @notice Slices the messageId from the message delivered from LayerZeroV2Hook
76
+ * @dev message is created as abi.encodeCall(AbstractMessageIdAuthorizedIsm.verifyMessageId, id)
77
+ * @dev _message will be 36 bytes (4 bytes for function selector, and 32 bytes for messageId)
78
+ */
79
+ function _messageId(
80
+ bytes calldata _message
81
+ ) internal pure returns (bytes32) {
82
+ return bytes32(_message[FUNC_SELECTOR_OFFSET:]);
83
+ }
84
+
85
+ /**
86
+ * @notice Validates criterias to verify a message
87
+ * @dev this is called by AbstractMessageIdAuthorizedIsm.verifyMessageId
88
+ * @dev parses msg.value to get parameters from lzReceive()
89
+ */
90
+ function _isAuthorized() internal view override returns (bool) {
91
+ require(_isAuthorizedHook(), "LayerZeroV2Ism: hook is not authorized");
92
+
93
+ require(
94
+ _isAuthorizedEndPoint(),
95
+ "LayerZeroV2Ism: endpoint is not authorized"
96
+ );
97
+
98
+ return true;
99
+ }
100
+
101
+ /**
102
+ * @notice check if origin.sender is the authorized hook
103
+ */
104
+ function _isAuthorizedHook() internal view returns (bool) {
105
+ return bytes32(msg.data[ORIGIN_SENDER_OFFSET:]) == authorizedHook;
106
+ }
107
+
108
+ /**
109
+ * @notice check if LayerZero endpoint is authorized
110
+ */
111
+ function _isAuthorizedEndPoint() internal view returns (bool) {
112
+ return msg.sender == endpoint;
113
+ }
114
+ }
@@ -19,4 +19,12 @@ contract ERC20Test is ERC20 {
19
19
  function decimals() public view override returns (uint8) {
20
20
  return _decimals;
21
21
  }
22
+
23
+ function mint(uint256 amount) public {
24
+ _mint(msg.sender, amount);
25
+ }
26
+
27
+ function mintTo(address account, uint256 amount) public {
28
+ _mint(account, amount);
29
+ }
22
30
  }
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+ import "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol";
4
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+ import "@openzeppelin/contracts/interfaces/IERC20.sol";
6
+
7
+ contract ERC4626Test is ERC4626 {
8
+ constructor(
9
+ address _asset,
10
+ string memory _name,
11
+ string memory _symbol
12
+ ) ERC4626(IERC20(_asset)) ERC20(_name, _symbol) {}
13
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+
3
+ pragma solidity ^0.8.0;
4
+
5
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
6
+
7
+ contract LayerZeroTreasuryMock is Ownable {
8
+ function withdraw() external onlyOwner {
9
+ //withdraw
10
+ }
11
+
12
+ function withdrawAlt() external onlyOwner {
13
+ //withdraw token
14
+ }
15
+ }
@@ -37,7 +37,7 @@ contract HypERC20Collateral is TokenRouter {
37
37
  */
38
38
  function _transferFromSender(
39
39
  uint256 _amount
40
- ) internal override returns (bytes memory) {
40
+ ) internal virtual override returns (bytes memory) {
41
41
  wrappedToken.safeTransferFrom(msg.sender, address(this), _amount);
42
42
  return bytes(""); // no metadata
43
43
  }
@@ -0,0 +1,82 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+ import "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol";
4
+ import {HypERC20Collateral} from "./HypERC20Collateral.sol";
5
+
6
+ /**
7
+ * @title Hyperlane ERC20 Token Collateral with deposits collateral to a vault
8
+ * @author ltyu
9
+ */
10
+ contract HypERC20CollateralVaultDeposit is HypERC20Collateral {
11
+ // Address of the ERC4626 compatible vault
12
+ ERC4626 public immutable vault;
13
+
14
+ // Internal balance of total asset deposited
15
+ uint256 public assetDeposited;
16
+
17
+ event ExcessSharesSwept(uint256 amount, uint256 assetsRedeemed);
18
+
19
+ constructor(
20
+ ERC4626 _vault,
21
+ address _mailbox
22
+ ) HypERC20Collateral(_vault.asset(), _mailbox) {
23
+ vault = _vault;
24
+ wrappedToken.approve(address(vault), type(uint256).max);
25
+ }
26
+
27
+ /**
28
+ * @dev Transfers `_amount` of `wrappedToken` from `msg.sender` to this contract, and deposit into vault
29
+ * @inheritdoc HypERC20Collateral
30
+ */
31
+ function _transferFromSender(
32
+ uint256 _amount
33
+ ) internal override returns (bytes memory metadata) {
34
+ metadata = super._transferFromSender(_amount);
35
+ _depositIntoVault(_amount);
36
+ }
37
+
38
+ /**
39
+ * @dev Deposits into the vault and increment assetDeposited
40
+ * @param _amount amount to deposit into vault
41
+ */
42
+ function _depositIntoVault(uint256 _amount) internal {
43
+ assetDeposited += _amount;
44
+ vault.deposit(_amount, address(this));
45
+ }
46
+
47
+ /**
48
+ * @dev Transfers `_amount` of `wrappedToken` from this contract to `_recipient`, and withdraws from vault
49
+ * @inheritdoc HypERC20Collateral
50
+ */
51
+ function _transferTo(
52
+ address _recipient,
53
+ uint256 _amount,
54
+ bytes calldata
55
+ ) internal virtual override {
56
+ _withdrawFromVault(_amount, _recipient);
57
+ }
58
+
59
+ /**
60
+ * @dev Withdraws from the vault and decrement assetDeposited
61
+ * @param _amount amount to withdraw from vault
62
+ * @param _recipient address to deposit withdrawn underlying to
63
+ */
64
+ function _withdrawFromVault(uint256 _amount, address _recipient) internal {
65
+ assetDeposited -= _amount;
66
+ vault.withdraw(_amount, _recipient, address(this));
67
+ }
68
+
69
+ /**
70
+ * @notice Allows the owner to redeem excess shares
71
+ */
72
+ function sweep() external onlyOwner {
73
+ uint256 excessShares = vault.maxRedeem(address(this)) -
74
+ vault.convertToShares(assetDeposited);
75
+ uint256 assetsRedeemed = vault.redeem(
76
+ excessShares,
77
+ owner(),
78
+ address(this)
79
+ );
80
+ emit ExcessSharesSwept(excessShares, assetsRedeemed);
81
+ }
82
+ }
@@ -0,0 +1,5 @@
1
+ import type * as lzEvmProtocolV2 from "./lz-evm-protocol-v2";
2
+ export type { lzEvmProtocolV2 };
3
+ import type * as lzEvmV107 from "./lz-evm-v1-0.7";
4
+ export type { lzEvmV107 };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/@layerzerolabs/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,eAAe,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,CAAC;AAChC,OAAO,KAAK,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/@layerzerolabs/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type * as interfaces from "./interfaces";
2
+ export type { interfaces };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../types/@layerzerolabs/lz-evm-protocol-v2/contracts/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../types/@layerzerolabs/lz-evm-protocol-v2/contracts/index.ts"],"names":[],"mappings":""}