@hyperlane-xyz/core 3.8.0-beta0 → 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.
- package/buildArtifact.json +1 -1
- package/contracts/hooks/layer-zero/LayerZeroV1Hook.sol +118 -0
- package/contracts/hooks/layer-zero/LayerZeroV2Hook.sol +135 -0
- package/contracts/hooks/libs/AbstractMessageIdAuthHook.sol +4 -0
- package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
- package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +1 -1
- package/contracts/isms/hook/layer-zero/LayerZeroV2Ism.sol +114 -0
- package/contracts/middleware/InterchainAccountRouter.sol +152 -8
- package/contracts/mock/MockHyperlaneEnvironment.sol +0 -3
- package/contracts/test/ERC20Test.sol +8 -0
- package/contracts/test/ERC4626/ERC4626Test.sol +13 -0
- package/contracts/test/TestInterchainGasPaymaster.sol +4 -0
- package/contracts/test/TestLayerZeroTreasury.sol +15 -0
- package/contracts/token/HypERC20Collateral.sol +1 -1
- package/contracts/token/HypERC20CollateralVaultDeposit.sol +82 -0
- package/dist/@layerzerolabs/index.d.ts +5 -0
- package/dist/@layerzerolabs/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/index.js +3 -0
- package/dist/@layerzerolabs/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.d.ts +1648 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.d.ts +694 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.d.ts +331 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.d.ts +220 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.d.ts +83 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts +6 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/index.d.ts +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-protocol-v2/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.d.ts +536 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.js +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.d.ts +169 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.js +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/index.d.ts +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/index.d.ts.map +1 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/index.js +3 -0
- package/dist/@layerzerolabs/lz-evm-v1-0.7/index.js.map +1 -0
- package/dist/@openzeppelin/contracts/interfaces/IERC4626.d.ts +666 -0
- package/dist/@openzeppelin/contracts/interfaces/IERC4626.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/interfaces/IERC4626.js +3 -0
- package/dist/@openzeppelin/contracts/interfaces/IERC4626.js.map +1 -0
- package/dist/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
- package/dist/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.d.ts +680 -0
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.js +3 -0
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.js.map +1 -0
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +1 -0
- package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +1 -1
- package/dist/contracts/hooks/index.d.ts +2 -0
- package/dist/contracts/hooks/index.d.ts.map +1 -1
- package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts +412 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.d.ts.map +1 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.js +3 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV1Hook.js.map +1 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts +469 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.d.ts.map +1 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.js +3 -0
- package/dist/contracts/hooks/layer-zero/LayerZeroV2Hook.js.map +1 -0
- package/dist/contracts/hooks/layer-zero/index.d.ts +3 -0
- package/dist/contracts/hooks/layer-zero/index.d.ts.map +1 -0
- package/dist/contracts/hooks/layer-zero/index.js +3 -0
- package/dist/contracts/hooks/layer-zero/index.js.map +1 -0
- package/dist/contracts/isms/hook/index.d.ts +2 -0
- package/dist/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +280 -0
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -0
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.js +3 -0
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.js.map +1 -0
- package/dist/contracts/isms/hook/layer-zero/index.d.ts +2 -0
- package/dist/contracts/isms/hook/layer-zero/index.d.ts.map +1 -0
- package/dist/contracts/isms/hook/layer-zero/index.js +3 -0
- package/dist/contracts/isms/hook/layer-zero/index.js.map +1 -0
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts +76 -32
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
- package/dist/contracts/test/ERC20Test.d.ts +63 -1
- package/dist/contracts/test/ERC20Test.d.ts.map +1 -1
- package/dist/contracts/test/ERC4626/ERC4626Test.d.ts +680 -0
- package/dist/contracts/test/ERC4626/ERC4626Test.d.ts.map +1 -0
- package/dist/contracts/test/ERC4626/ERC4626Test.js +3 -0
- package/dist/contracts/test/ERC4626/ERC4626Test.js.map +1 -0
- package/dist/contracts/test/ERC4626/index.d.ts +2 -0
- package/dist/contracts/test/ERC4626/index.d.ts.map +1 -0
- package/dist/contracts/test/ERC4626/index.js +3 -0
- package/dist/contracts/test/ERC4626/index.js.map +1 -0
- package/dist/contracts/test/TestInterchainGasPaymaster.d.ts +16 -1
- package/dist/contracts/test/TestInterchainGasPaymaster.d.ts.map +1 -1
- package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.d.ts +190 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.d.ts.map +1 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.js +3 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock.js.map +1 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/index.d.ts +2 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/index.d.ts.map +1 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/index.js +3 -0
- package/dist/contracts/test/TestLayerZeroTreasury.sol/index.js.map +1 -0
- package/dist/contracts/test/index.d.ts +4 -0
- package/dist/contracts/test/index.d.ts.map +1 -1
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts +705 -0
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +1 -0
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.js +3 -0
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +1 -0
- package/dist/contracts/token/index.d.ts +1 -0
- package/dist/contracts/token/index.d.ts.map +1 -1
- package/dist/factories/@layerzerolabs/index.d.ts +3 -0
- package/dist/factories/@layerzerolabs/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/index.js +32 -0
- package/dist/factories/@layerzerolabs/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts +2 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js +31 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.d.ts +1438 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.js +1853 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.d.ts +487 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.js +638 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.d.ts +270 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.js +353 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.d.ts +197 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.js +255 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.d.ts +33 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.js +51 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts +6 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js +17 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.d.ts +2 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.js +31 -0
- package/dist/factories/@layerzerolabs/lz-evm-protocol-v2/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts +2 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js +31 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.d.ts +343 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.js +456 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.d.ts +65 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.js +92 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig__factory.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts +3 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js +11 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/index.js.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.d.ts +2 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.d.ts.map +1 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.js +31 -0
- package/dist/factories/@layerzerolabs/lz-evm-v1-0.7/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.d.ts +474 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.js +632 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/IERC4626__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/interfaces/index.js +3 -1
- package/dist/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -1
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.d.ts +510 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.js +680 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC4626__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js +3 -1
- package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/hooks/index.d.ts +1 -0
- package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/index.js +2 -1
- package/dist/factories/contracts/hooks/index.js.map +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +289 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +391 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js.map +1 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +288 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +390 -0
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js.map +1 -0
- package/dist/factories/contracts/hooks/layer-zero/index.d.ts +3 -0
- package/dist/factories/contracts/hooks/layer-zero/index.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/layer-zero/index.js +11 -0
- package/dist/factories/contracts/hooks/layer-zero/index.js.map +1 -0
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
- package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/index.js +25 -1
- package/dist/factories/contracts/isms/hook/index.js.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +181 -0
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +251 -0
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -0
- package/dist/factories/contracts/isms/hook/layer-zero/index.d.ts +2 -0
- package/dist/factories/contracts/isms/hook/layer-zero/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/layer-zero/index.js +9 -0
- package/dist/factories/contracts/isms/hook/layer-zero/index.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +113 -5
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +146 -5
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test__factory.d.ts +25 -1
- package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test__factory.js +32 -1
- package/dist/factories/contracts/test/ERC20Test__factory.js.map +1 -1
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.d.ts +539 -0
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.js +724 -0
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.js.map +1 -0
- package/dist/factories/contracts/test/ERC4626/index.d.ts +2 -0
- package/dist/factories/contracts/test/ERC4626/index.d.ts.map +1 -0
- package/dist/factories/contracts/test/ERC4626/index.js +9 -0
- package/dist/factories/contracts/test/ERC4626/index.js.map +1 -0
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +11 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +14 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.d.ts +75 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.js +109 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/LayerZeroTreasuryMock__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.d.ts +2 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.js +9 -0
- package/dist/factories/contracts/test/TestLayerZeroTreasury.sol/index.js.map +1 -0
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
- package/dist/factories/contracts/test/index.d.ts +2 -0
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +26 -1
- package/dist/factories/contracts/test/index.js.map +1 -1
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +423 -0
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +563 -0
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +1 -0
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
- package/dist/factories/contracts/token/index.d.ts +1 -0
- package/dist/factories/contracts/token/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/index.js +3 -1
- package/dist/factories/contracts/token/index.js.map +1 -1
- package/dist/factories/index.d.ts +1 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +2 -1
- package/dist/factories/index.js.map +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -4
- package/dist/index.js.map +1 -1
- 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
|
|
@@ -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)
|
|
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
|
+
}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.13;
|
|
3
3
|
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
4
16
|
// ============ Internal Imports ============
|
|
5
17
|
import {OwnableMulticall} from "./libs/OwnableMulticall.sol";
|
|
6
18
|
import {InterchainAccountMessage} from "./libs/InterchainAccountMessage.sol";
|
|
7
19
|
import {CallLib} from "./libs/Call.sol";
|
|
8
20
|
import {MinimalProxy} from "../libs/MinimalProxy.sol";
|
|
9
21
|
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
22
|
+
import {StandardHookMetadata} from "../hooks/libs/StandardHookMetadata.sol";
|
|
10
23
|
import {EnumerableMapExtended} from "../libs/EnumerableMapExtended.sol";
|
|
11
24
|
import {Router} from "../client/Router.sol";
|
|
12
25
|
|
|
@@ -82,17 +95,17 @@ contract InterchainAccountRouter is Router {
|
|
|
82
95
|
|
|
83
96
|
/**
|
|
84
97
|
* @notice Initializes the contract with HyperlaneConnectionClient contracts
|
|
85
|
-
* @param
|
|
98
|
+
* @param _customHook used by the Router to set the hook to override with
|
|
86
99
|
* @param _interchainSecurityModule The address of the local ISM contract
|
|
87
100
|
* @param _owner The address with owner privileges
|
|
88
101
|
*/
|
|
89
102
|
function initialize(
|
|
90
|
-
address
|
|
103
|
+
address _customHook,
|
|
91
104
|
address _interchainSecurityModule,
|
|
92
105
|
address _owner
|
|
93
106
|
) external initializer {
|
|
94
107
|
_MailboxClient_initialize(
|
|
95
|
-
|
|
108
|
+
_customHook,
|
|
96
109
|
_interchainSecurityModule,
|
|
97
110
|
_owner
|
|
98
111
|
);
|
|
@@ -157,7 +170,7 @@ contract InterchainAccountRouter is Router {
|
|
|
157
170
|
address _to,
|
|
158
171
|
uint256 _value,
|
|
159
172
|
bytes memory _data
|
|
160
|
-
) external returns (bytes32) {
|
|
173
|
+
) external payable returns (bytes32) {
|
|
161
174
|
bytes32 _router = routers(_destination);
|
|
162
175
|
bytes32 _ism = isms[_destination];
|
|
163
176
|
bytes memory _body = InterchainAccountMessage.encode(
|
|
@@ -170,6 +183,44 @@ contract InterchainAccountRouter is Router {
|
|
|
170
183
|
return _dispatchMessage(_destination, _router, _ism, _body);
|
|
171
184
|
}
|
|
172
185
|
|
|
186
|
+
/**
|
|
187
|
+
* @notice Dispatches a single remote call to be made by an owner's
|
|
188
|
+
* interchain account on the destination domain
|
|
189
|
+
* @dev Uses the default router and ISM addresses for the destination
|
|
190
|
+
* domain, reverting if none have been configured
|
|
191
|
+
* @param _destination The remote domain of the chain to make calls on
|
|
192
|
+
* @param _to The address of the contract to call
|
|
193
|
+
* @param _value The value to include in the call
|
|
194
|
+
* @param _data The calldata
|
|
195
|
+
* @param _hookMetadata The hook metadata to override with for the hook set by the owner
|
|
196
|
+
* @return The Hyperlane message ID
|
|
197
|
+
*/
|
|
198
|
+
function callRemote(
|
|
199
|
+
uint32 _destination,
|
|
200
|
+
address _to,
|
|
201
|
+
uint256 _value,
|
|
202
|
+
bytes memory _data,
|
|
203
|
+
bytes memory _hookMetadata
|
|
204
|
+
) external payable returns (bytes32) {
|
|
205
|
+
bytes32 _router = routers(_destination);
|
|
206
|
+
bytes32 _ism = isms[_destination];
|
|
207
|
+
bytes memory _body = InterchainAccountMessage.encode(
|
|
208
|
+
msg.sender,
|
|
209
|
+
_ism,
|
|
210
|
+
_to,
|
|
211
|
+
_value,
|
|
212
|
+
_data
|
|
213
|
+
);
|
|
214
|
+
return
|
|
215
|
+
_dispatchMessageWithMetadata(
|
|
216
|
+
_destination,
|
|
217
|
+
_router,
|
|
218
|
+
_ism,
|
|
219
|
+
_body,
|
|
220
|
+
_hookMetadata
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
173
224
|
/**
|
|
174
225
|
* @notice Dispatches a sequence of remote calls to be made by an owner's
|
|
175
226
|
* interchain account on the destination domain
|
|
@@ -183,10 +234,44 @@ contract InterchainAccountRouter is Router {
|
|
|
183
234
|
function callRemote(
|
|
184
235
|
uint32 _destination,
|
|
185
236
|
CallLib.Call[] calldata _calls
|
|
186
|
-
) external returns (bytes32) {
|
|
237
|
+
) external payable returns (bytes32) {
|
|
187
238
|
bytes32 _router = routers(_destination);
|
|
188
239
|
bytes32 _ism = isms[_destination];
|
|
189
|
-
|
|
240
|
+
bytes memory _body = InterchainAccountMessage.encode(
|
|
241
|
+
msg.sender,
|
|
242
|
+
_ism,
|
|
243
|
+
_calls
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
return _dispatchMessage(_destination, _router, _ism, _body);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @notice Dispatches a sequence of remote calls to be made by an owner's
|
|
251
|
+
* interchain account on the destination domain
|
|
252
|
+
* @dev Uses the default router and ISM addresses for the destination
|
|
253
|
+
* domain, reverting if none have been configured
|
|
254
|
+
* @dev Recommend using CallLib.build to format the interchain calls.
|
|
255
|
+
* @param _destination The remote domain of the chain to make calls on
|
|
256
|
+
* @param _calls The sequence of calls to make
|
|
257
|
+
* @param _hookMetadata The hook metadata to override with for the hook set by the owner
|
|
258
|
+
* @return The Hyperlane message ID
|
|
259
|
+
*/
|
|
260
|
+
function callRemote(
|
|
261
|
+
uint32 _destination,
|
|
262
|
+
CallLib.Call[] calldata _calls,
|
|
263
|
+
bytes calldata _hookMetadata
|
|
264
|
+
) external payable returns (bytes32) {
|
|
265
|
+
bytes32 _router = routers(_destination);
|
|
266
|
+
bytes32 _ism = isms[_destination];
|
|
267
|
+
return
|
|
268
|
+
callRemoteWithOverrides(
|
|
269
|
+
_destination,
|
|
270
|
+
_router,
|
|
271
|
+
_ism,
|
|
272
|
+
_calls,
|
|
273
|
+
_hookMetadata
|
|
274
|
+
);
|
|
190
275
|
}
|
|
191
276
|
|
|
192
277
|
/**
|
|
@@ -395,7 +480,7 @@ contract InterchainAccountRouter is Router {
|
|
|
395
480
|
bytes32 _router,
|
|
396
481
|
bytes32 _ism,
|
|
397
482
|
CallLib.Call[] calldata _calls
|
|
398
|
-
) public returns (bytes32) {
|
|
483
|
+
) public payable returns (bytes32) {
|
|
399
484
|
bytes memory _body = InterchainAccountMessage.encode(
|
|
400
485
|
msg.sender,
|
|
401
486
|
_ism,
|
|
@@ -404,6 +489,39 @@ contract InterchainAccountRouter is Router {
|
|
|
404
489
|
return _dispatchMessage(_destination, _router, _ism, _body);
|
|
405
490
|
}
|
|
406
491
|
|
|
492
|
+
/**
|
|
493
|
+
* @notice Dispatches a sequence of remote calls to be made by an owner's
|
|
494
|
+
* interchain account on the destination domain
|
|
495
|
+
* @dev Recommend using CallLib.build to format the interchain calls
|
|
496
|
+
* @param _destination The remote domain of the chain to make calls on
|
|
497
|
+
* @param _router The remote router address
|
|
498
|
+
* @param _ism The remote ISM address
|
|
499
|
+
* @param _calls The sequence of calls to make
|
|
500
|
+
* @param _hookMetadata The hook metadata to override with for the hook set by the owner
|
|
501
|
+
* @return The Hyperlane message ID
|
|
502
|
+
*/
|
|
503
|
+
function callRemoteWithOverrides(
|
|
504
|
+
uint32 _destination,
|
|
505
|
+
bytes32 _router,
|
|
506
|
+
bytes32 _ism,
|
|
507
|
+
CallLib.Call[] calldata _calls,
|
|
508
|
+
bytes memory _hookMetadata
|
|
509
|
+
) public payable returns (bytes32) {
|
|
510
|
+
bytes memory _body = InterchainAccountMessage.encode(
|
|
511
|
+
msg.sender,
|
|
512
|
+
_ism,
|
|
513
|
+
_calls
|
|
514
|
+
);
|
|
515
|
+
return
|
|
516
|
+
_dispatchMessageWithMetadata(
|
|
517
|
+
_destination,
|
|
518
|
+
_router,
|
|
519
|
+
_ism,
|
|
520
|
+
_body,
|
|
521
|
+
_hookMetadata
|
|
522
|
+
);
|
|
523
|
+
}
|
|
524
|
+
|
|
407
525
|
// ============ Internal Functions ============
|
|
408
526
|
|
|
409
527
|
/**
|
|
@@ -474,7 +592,33 @@ contract InterchainAccountRouter is Router {
|
|
|
474
592
|
) private returns (bytes32) {
|
|
475
593
|
require(_router != bytes32(0), "no router specified for destination");
|
|
476
594
|
emit RemoteCallDispatched(_destination, msg.sender, _router, _ism);
|
|
477
|
-
return mailbox.dispatch(_destination, _router, _body);
|
|
595
|
+
return mailbox.dispatch{value: msg.value}(_destination, _router, _body);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* @notice Dispatches an InterchainAccountMessage to the remote router with hook metadata
|
|
600
|
+
* @param _destination The remote domain
|
|
601
|
+
* @param _router The address of the remote InterchainAccountRouter
|
|
602
|
+
* @param _ism The address of the remote ISM
|
|
603
|
+
* @param _body The InterchainAccountMessage body
|
|
604
|
+
* @param _hookMetadata The hook metadata to override with for the hook set by the owner
|
|
605
|
+
*/
|
|
606
|
+
function _dispatchMessageWithMetadata(
|
|
607
|
+
uint32 _destination,
|
|
608
|
+
bytes32 _router,
|
|
609
|
+
bytes32 _ism,
|
|
610
|
+
bytes memory _body,
|
|
611
|
+
bytes memory _hookMetadata
|
|
612
|
+
) private returns (bytes32) {
|
|
613
|
+
require(_router != bytes32(0), "no router specified for destination");
|
|
614
|
+
emit RemoteCallDispatched(_destination, msg.sender, _router, _ism);
|
|
615
|
+
return
|
|
616
|
+
mailbox.dispatch{value: msg.value}(
|
|
617
|
+
_destination,
|
|
618
|
+
_router,
|
|
619
|
+
_body,
|
|
620
|
+
_hookMetadata
|
|
621
|
+
);
|
|
478
622
|
}
|
|
479
623
|
|
|
480
624
|
/**
|
|
@@ -31,9 +31,6 @@ contract MockHyperlaneEnvironment {
|
|
|
31
31
|
originMailbox.setDefaultIsm(address(isms[originDomain]));
|
|
32
32
|
destinationMailbox.setDefaultIsm(address(isms[destinationDomain]));
|
|
33
33
|
|
|
34
|
-
igps[originDomain] = new TestInterchainGasPaymaster();
|
|
35
|
-
igps[destinationDomain] = new TestInterchainGasPaymaster();
|
|
36
|
-
|
|
37
34
|
originMailbox.transferOwnership(msg.sender);
|
|
38
35
|
destinationMailbox.transferOwnership(msg.sender);
|
|
39
36
|
|
|
@@ -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
|
+
}
|