@hyperlane-xyz/core 3.8.0 → 3.8.2
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/test/ERC20Test.sol +8 -0
- package/contracts/test/ERC4626/ERC4626Test.sol +13 -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/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/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 +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +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.js +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 +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +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
|
+
}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/@layerzerolabs/index.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../types/@layerzerolabs/lz-evm-protocol-v2/contracts/index.ts"],"names":[],"mappings":""}
|